<?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>204562</bug_id>
          
          <creation_ts>2019-11-24 19:34:32 -0800</creation_ts>
          <short_desc>Add DefaultHash&lt;OptionSet&lt;T&gt;&gt; and HashTrait&lt;OptionSet&lt;T&gt;&gt; specializations</short_desc>
          <delta_ts>2019-11-25 17:58:18 -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>Web Template Framework</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>
          
          <blocked>202183</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1593312</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-11-24 19:34:32 -0800</bug_when>
    <thetext>Add DefaultHash&lt;OptionSet&lt;T&gt;&gt; and HashTrait&lt;OptionSet&lt;T&gt;&gt; specializations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593315</commentid>
    <comment_count>1</comment_count>
      <attachid>384264</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-11-24 19:50:39 -0800</bug_when>
    <thetext>Created attachment 384264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593317</commentid>
    <comment_count>2</comment_count>
      <attachid>384265</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-11-24 19:51:55 -0800</bug_when>
    <thetext>Created attachment 384265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593318</commentid>
    <comment_count>3</comment_count>
      <attachid>384266</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-11-24 20:00:12 -0800</bug_when>
    <thetext>Created attachment 384266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593320</commentid>
    <comment_count>4</comment_count>
      <attachid>384268</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-11-24 20:06:06 -0800</bug_when>
    <thetext>Created attachment 384268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593323</commentid>
    <comment_count>5</comment_count>
      <attachid>384268</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-24 22:01:19 -0800</bug_when>
    <thetext>Comment on attachment 384268
Patch

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

This patch looks good. It can be made a tiny bit better by moving all the templates to a separate file, say OptionSetHash.h, that includes &lt;wtf/HashTraits.h&gt; And &lt;wtf/HashFunctions.h&gt; because:

1. It keeps this file focused on the data structure.

2. A separate header just for the hash stuff can include &lt;wtf/HashTraits.h&gt; instead of relying on that already being included.

3. Because of (2), no need to forward declare HashTraits, GenericHashTraits, etc etc, which adds noise to the implementation.

4. Putting the hash stuff in a separate file will speed up the build a tiny bit compared to not doing it since a developer will only pay the parsing cost for the hash stuff if they #include it.

&gt; Source/WTF/wtf/OptionSet.h:168
&gt; +template&lt;typename T&gt; struct DefaultHash&lt;OptionSet&lt;T&gt;&gt; {

This is ok as-is. The optimal solution would be to have this be a specialized IntHash&lt;OptionSet&lt;T&gt;&gt; and then defining a specialized DefaultHash whose Hash = IntHash&lt;OptionSet&lt;T&gt;&gt; because:

1. An OptionSet&lt;&gt; is just an unsigned integer.
2. Because of (1) it seems like a specialization of IntHash.


&gt; Source/WTF/wtf/OptionSet.h:170
&gt; +        static unsigned hash(const OptionSet&lt;T&gt;&amp; key)

This is ok as-is. It would be slightly better to take the argument by value because:

1. An OptionSet&lt;&gt; is a small value that fits in a register.
2. It avoids a deference.

&gt; Source/WTF/wtf/OptionSet.h:173
&gt; +            return DefaultHash&lt;decltype(value)&gt;::Hash::hash(value);

This is a ok as-is. The optimal solution is to implement this in terms of IntHash&lt;typename OptionSet&lt;T&gt;::StorageType&gt;.

&gt; Source/WTF/wtf/OptionSet.h:176
&gt; +        static bool equal(const OptionSet&lt;T&gt;&amp; a, const OptionSet&lt;T&gt;&amp; b)

This is ok as-is. It would be slightly better to take the arguments by value for the same reasons as above.

&gt; Source/WTF/wtf/OptionSet.h:188
&gt; +template&lt;typename T&gt; struct HashTraits&lt;OptionSet&lt;T&gt;&gt; : GenericHashTraits&lt;OptionSet&lt;T&gt;&gt; {

This is ok as-is. The optimal solution would be to have these traits be a specialized UnsignedWithZeroKeyHashTraits&lt;OptionSet&lt;T&gt;&gt; because:

1. An OptionSet&lt;&gt; is just an unsigned integer.
2. Defining under UnsignedWithZeroKeyHashTraits provides future expansion possibility for introducing an alternative, space-saving, HashTrait for OptionSet&lt;&gt; that treats the empty value as 0 (but doing so means you can never store OptionSet&lt;T&gt; {} in a hashed structure).

&gt; Source/WTF/wtf/OptionSet.h:193
&gt; +        return OptionSet&lt;T&gt;::fromRaw(std::numeric_limits&lt;StorageType&gt;::max());

This is ok as-is. The optimal solution is to implement this in terms of UnsignedWithZeroKeyHashTraits&lt;typename OptionSet&lt;T&gt;::StorageType&gt;.

&gt; Source/WTF/wtf/OptionSet.h:198
&gt; +        slot = OptionSet&lt;T&gt;::fromRaw(std::numeric_limits&lt;StorageType&gt;::max() - 1);

This is ok as-is. The optimal solution is to also implement this in terms of UnsignedWithZeroKeyHashTraits&lt;typename OptionSet&lt;T&gt;::StorageType&gt;.

&gt; Source/WTF/wtf/OptionSet.h:203
&gt; +        return value == OptionSet&lt;T&gt;::fromRaw(std::numeric_limits&lt;StorageType&gt;::max() - 1);

This is ok as-is. The optimal solution is to also implement this in terms of UnsignedWithZeroKeyHashTraits&lt;typename OptionSet&lt;T&gt;::StorageType&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593324</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-24 22:07:42 -0800</bug_when>
    <thetext>Just to clarify, **everything** I wrote above is optional. The patch is okay to land as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593335</commentid>
    <comment_count>7</comment_count>
      <attachid>384268</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-11-24 23:42:16 -0800</bug_when>
    <thetext>Comment on attachment 384268
Patch

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

&gt;&gt; Source/WTF/wtf/OptionSet.h:168
&gt;&gt; +template&lt;typename T&gt; struct DefaultHash&lt;OptionSet&lt;T&gt;&gt; {
&gt; 
&gt; This is ok as-is. The optimal solution would be to have this be a specialized IntHash&lt;OptionSet&lt;T&gt;&gt; and then defining a specialized DefaultHash whose Hash = IntHash&lt;OptionSet&lt;T&gt;&gt; because:
&gt; 
&gt; 1. An OptionSet&lt;&gt; is just an unsigned integer.
&gt; 2. Because of (1) it seems like a specialization of IntHash.

In your proposed approach, I need to specialize both IntHash and DefaultHash. It seems just unnecessary to me. I can&apos;t believe it is better.

&gt;&gt; Source/WTF/wtf/OptionSet.h:170
&gt;&gt; +        static unsigned hash(const OptionSet&lt;T&gt;&amp; key)
&gt; 
&gt; This is ok as-is. It would be slightly better to take the argument by value because:
&gt; 
&gt; 1. An OptionSet&lt;&gt; is a small value that fits in a register.
&gt; 2. It avoids a deference.

Will fix.

&gt;&gt; Source/WTF/wtf/OptionSet.h:173
&gt;&gt; +            return DefaultHash&lt;decltype(value)&gt;::Hash::hash(value);
&gt; 
&gt; This is a ok as-is. The optimal solution is to implement this in terms of IntHash&lt;typename OptionSet&lt;T&gt;::StorageType&gt;.

Will fix.

&gt;&gt; Source/WTF/wtf/OptionSet.h:176
&gt;&gt; +        static bool equal(const OptionSet&lt;T&gt;&amp; a, const OptionSet&lt;T&gt;&amp; b)
&gt; 
&gt; This is ok as-is. It would be slightly better to take the arguments by value for the same reasons as above.

Will fix.

&gt;&gt; Source/WTF/wtf/OptionSet.h:188
&gt;&gt; +template&lt;typename T&gt; struct HashTraits&lt;OptionSet&lt;T&gt;&gt; : GenericHashTraits&lt;OptionSet&lt;T&gt;&gt; {
&gt; 
&gt; This is ok as-is. The optimal solution would be to have these traits be a specialized UnsignedWithZeroKeyHashTraits&lt;OptionSet&lt;T&gt;&gt; because:
&gt; 
&gt; 1. An OptionSet&lt;&gt; is just an unsigned integer.
&gt; 2. Defining under UnsignedWithZeroKeyHashTraits provides future expansion possibility for introducing an alternative, space-saving, HashTrait for OptionSet&lt;&gt; that treats the empty value as 0 (but doing so means you can never store OptionSet&lt;T&gt; {} in a hashed structure).

In your proposed approach, I need to specialize both HashTraits and UnsignedWithZeroKeyHashTraits. It seems just unnecessary to me. I can&apos;t believe it is better.

&gt;&gt; Source/WTF/wtf/OptionSet.h:198
&gt;&gt; +        slot = OptionSet&lt;T&gt;::fromRaw(std::numeric_limits&lt;StorageType&gt;::max() - 1);
&gt; 
&gt; This is ok as-is. The optimal solution is to also implement this in terms of UnsignedWithZeroKeyHashTraits&lt;typename OptionSet&lt;T&gt;::StorageType&gt;.

Yeah, it&apos;d be nice the implementation can be shared with UnsignedWithZeroKeyHashTraits.
However, constructDeletedValue can&apos;t be implemented by using UnsignedWithZeroKeyHashTraits::constructDeletedValue because OptionSet doesn&apos;t have a method to get StorageType&amp; type.
Should I add a method just to do so?

&gt; Tools/TestWebKitAPI/Tests/WTF/OptionSet.cpp:442
&gt; +    HashSet&lt;OptionSet&lt;ExampleFlags&gt;&gt; hashSet;

I should add a test case of OptionSet&lt;T&gt; {}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593345</commentid>
    <comment_count>8</comment_count>
      <attachid>384268</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-25 00:23:42 -0800</bug_when>
    <thetext>Comment on attachment 384268
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/OptionSet.h:168
&gt;&gt;&gt; +template&lt;typename T&gt; struct DefaultHash&lt;OptionSet&lt;T&gt;&gt; {
&gt;&gt; 
&gt;&gt; This is ok as-is. The optimal solution would be to have this be a specialized IntHash&lt;OptionSet&lt;T&gt;&gt; and then defining a specialized DefaultHash whose Hash = IntHash&lt;OptionSet&lt;T&gt;&gt; because:
&gt;&gt; 
&gt;&gt; 1. An OptionSet&lt;&gt; is just an unsigned integer.
&gt;&gt; 2. Because of (1) it seems like a specialization of IntHash.
&gt; 
&gt; In your proposed approach, I need to specialize both IntHash and DefaultHash. It seems just unnecessary to me. I can&apos;t believe it is better.

Well, that&apos;s my strong opinion. It&apos;s weakly held. So, you can do what you want.

&gt;&gt;&gt; Source/WTF/wtf/OptionSet.h:188
&gt;&gt;&gt; +template&lt;typename T&gt; struct HashTraits&lt;OptionSet&lt;T&gt;&gt; : GenericHashTraits&lt;OptionSet&lt;T&gt;&gt; {
&gt;&gt; 
&gt;&gt; This is ok as-is. The optimal solution would be to have these traits be a specialized UnsignedWithZeroKeyHashTraits&lt;OptionSet&lt;T&gt;&gt; because:
&gt;&gt; 
&gt;&gt; 1. An OptionSet&lt;&gt; is just an unsigned integer.
&gt;&gt; 2. Defining under UnsignedWithZeroKeyHashTraits provides future expansion possibility for introducing an alternative, space-saving, HashTrait for OptionSet&lt;&gt; that treats the empty value as 0 (but doing so means you can never store OptionSet&lt;T&gt; {} in a hashed structure).
&gt; 
&gt; In your proposed approach, I need to specialize both HashTraits and UnsignedWithZeroKeyHashTraits. It seems just unnecessary to me. I can&apos;t believe it is better.

Well, that&apos;s my strong opinion. It&apos;s weakly held. So, you can do what you want.

&gt;&gt;&gt; Source/WTF/wtf/OptionSet.h:198
&gt;&gt;&gt; +        slot = OptionSet&lt;T&gt;::fromRaw(std::numeric_limits&lt;StorageType&gt;::max() - 1);
&gt;&gt; 
&gt;&gt; This is ok as-is. The optimal solution is to also implement this in terms of UnsignedWithZeroKeyHashTraits&lt;typename OptionSet&lt;T&gt;::StorageType&gt;.
&gt; 
&gt; Yeah, it&apos;d be nice the implementation can be shared with UnsignedWithZeroKeyHashTraits.
&gt; However, constructDeletedValue can&apos;t be implemented by using UnsignedWithZeroKeyHashTraits::constructDeletedValue because OptionSet doesn&apos;t have a method to get StorageType&amp; type.
&gt; Should I add a method just to do so?

My strong opinion. weakly held is no, adding a lvalue reference getter is not needed. It is possible to implement it using UnsignedWithZero... here&apos;s two ways off the top of my head:

1. Use a local.
2. Friend this struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593375</commentid>
    <comment_count>9</comment_count>
      <attachid>384268</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-11-25 02:29:35 -0800</bug_when>
    <thetext>Comment on attachment 384268
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/OptionSet.h:198
&gt;&gt;&gt;&gt; +        slot = OptionSet&lt;T&gt;::fromRaw(std::numeric_limits&lt;StorageType&gt;::max() - 1);
&gt;&gt;&gt; 
&gt;&gt;&gt; This is ok as-is. The optimal solution is to also implement this in terms of UnsignedWithZeroKeyHashTraits&lt;typename OptionSet&lt;T&gt;::StorageType&gt;.
&gt;&gt; 
&gt;&gt; Yeah, it&apos;d be nice the implementation can be shared with UnsignedWithZeroKeyHashTraits.
&gt;&gt; However, constructDeletedValue can&apos;t be implemented by using UnsignedWithZeroKeyHashTraits::constructDeletedValue because OptionSet doesn&apos;t have a method to get StorageType&amp; type.
&gt;&gt; Should I add a method just to do so?
&gt; 
&gt; My strong opinion. weakly held is no, adding a lvalue reference getter is not needed. It is possible to implement it using UnsignedWithZero... here&apos;s two ways off the top of my head:
&gt; 
&gt; 1. Use a local.
&gt; 2. Friend this struct.

Oh, right. Will take #1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593376</commentid>
    <comment_count>10</comment_count>
      <attachid>384283</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-11-25 02:32:14 -0800</bug_when>
    <thetext>Created attachment 384283
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593539</commentid>
    <comment_count>11</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-11-25 17:57:20 -0800</bug_when>
    <thetext>Committed r252870: &lt;https://trac.webkit.org/changeset/252870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593540</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-25 17:58:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/57480055&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384264</attachid>
            <date>2019-11-24 19:50:39 -0800</date>
            <delta_ts>2019-11-24 19:51:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204562-20191125125038.patch</filename>
            <type>text/plain</type>
            <size>4917</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQxZWZjYWQ2YTE5MzkwNGQxMzA2NWU0
Y2ZjNTQzNzg2YzA4NTA5YTcuLjU1ZTA1NGYwMjA4MDhhNThiM2VmZDE0YmRkOTBjZTFlYWViZjFk
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMTEtMjQgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgQWRkIERlZmF1bHRIYXNoPE9wdGlvblNl
dDxUPj4gYW5kIEhhc2hUcmFpdDxPcHRpb25TZXQ8VD4+IHNwZWNpYWxpemF0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvT3B0aW9uU2V0
Lmg6IE1hZGUgU3RvcmFnZVR5cGUgcHVibGljLgorICAgICAgICBBZGRlZCBEZWZhdWx0SGFzaDxP
cHRpb25TZXQ8VD4+LgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPE9wdGlvblNldDxUPj46OmVt
cHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPE9wdGlvblNldDxUPj46OmNvbnN0
cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8T3B0aW9uU2V0PFQ+
Pjo6aXNEZWxldGVkVmFsdWUpOgorCiAyMDE5LTExLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBUcnkgdG8gZml4IHRo
ZSBHVEsgV2ViRHJpdmVyIHRlc3RzIGluIHRoZSBib3RzIGFmdGVyIHIyNTI3NzAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uU2V0
LmgKaW5kZXggZjNmNTkwMzNiZjdlNGJkYjRkYTM4MGYwMGI4MTNiNDc1MjQxZTVmZS4uMGMzMTMy
NTRjYmUxMzhkY2M2ZWRiNzBmMWQ2MDRjNGM3NjhlZmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvT3B0aW9uU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgKQEAgLTM5
LDkgKzM5LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3Mg
T3B0aW9uU2V0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfZW51bTxUPjo6dmFsdWUsICJUIGlzIG5vdCBhbiBlbnVtIHR5cGUiKTsKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDx0eXBlbmFtZSBzdGQ6OnVuZGVy
bHlpbmdfdHlwZTxUPjo6dHlwZT46OnR5cGUgU3RvcmFnZVR5cGU7CiAKIHB1YmxpYzoKKyAgICB1
c2luZyBTdG9yYWdlVHlwZSA9IHN0ZDo6bWFrZV91bnNpZ25lZF90PHN0ZDo6dW5kZXJseWluZ190
eXBlX3Q8VD4+OworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RvcmFnZVR5cGU+IGNsYXNzIEl0
ZXJhdG9yIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpA
QCAtMTYyLDYgKzE2Myw0NSBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VUeXBlIG1fc3RvcmFnZSB7
IDAgfTsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPcHRpb25TZXQ8VD4+IHsKKyAg
ICB1c2luZyBIYXNoID0gc3RydWN0IHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgT3B0aW9uU2V0PFQ+JiBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUg
PSBrZXkudG9SYXcoKTsKKyAgICAgICAgICAgIHJldHVybiBEZWZhdWx0SGFzaDxkZWNsdHlwZSh2
YWx1ZSk+OjpIYXNoOjpoYXNoKHZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IE9wdGlvblNldDxUPiYgYSwgY29uc3QgT3B0aW9uU2V0PFQ+JiBiKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAgICAgICB9CisKKyAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsKKyAgICB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIYXNoVHJhaXRz
OwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0czsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8T3B0aW9uU2V0PFQ+PiA6IEdlbmVyaWNI
YXNoVHJhaXRzPE9wdGlvblNldDxUPj4geworICAgIHN0YXRpYyBPcHRpb25TZXQ8VD4gZW1wdHlW
YWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gT3B0aW9uU2V0PFQ+Ojpmcm9tUmF3KHN0ZDo6
bnVtZXJpY19saW1pdHM8T3B0aW9uU2V0PFQ+OjpTdG9yYWdlVHlwZT46Om1heCgpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoT3B0aW9uU2V0PFQ+JiBz
bG90KQorICAgIHsKKyAgICAgICAgc2xvdCA9IE9wdGlvblNldDxUPjo6ZnJvbVJhdyhzdGQ6Om51
bWVyaWNfbGltaXRzPE9wdGlvblNldDxUPjo6U3RvcmFnZVR5cGU+OjptYXgoKSAtIDEpOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKE9wdGlvblNldDxUPiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZSA9PSBPcHRpb25TZXQ8VD46OmZyb21SYXcoc3Rk
OjpudW1lcmljX2xpbWl0czxPcHRpb25TZXQ8VD46OlN0b3JhZ2VUeXBlPjo6bWF4KCkgLSAxKTsK
KyAgICB9Cit9OworCiB9CiAKIHVzaW5nIFdURjo6T3B0aW9uU2V0OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJjNzQzNTU5N2Y0MzdjMTg2ZGE0
NTMzMWE5NzA1MWQ1OTA1NzNiOWYuLmYwY2I2ZGUyYTMwNTA2YjY4NDlkMTBhMTE3MjNlYmI4ODE1
YWE4ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAxOS0xMS0yNCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5G
dWppaUBzb255LmNvbT4KKworICAgICAgICBBZGQgRGVmYXVsdEhhc2g8T3B0aW9uU2V0PFQ+PiBh
bmQgSGFzaFRyYWl0PE9wdGlvblNldDxUPj4gc3BlY2lhbGl6YXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ1NjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL09wdGlvblNldC5jcHA6CisgICAgICAgIEFkZGVkIGEgbmV3IHRlc3QgV1RGX09wdGlvblNl
dC5IYXNoU2V0IHRvIHRlc3QgSGFzaFNldDxPcHRpb25TZXQ8VD4+LgorCisyMDE5LTExLTI0ICBG
dWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBE
ZWZhdWx0SGFzaDxPcHRpb25TZXQ8VD4+IGFuZCBIYXNoVHJhaXQ8T3B0aW9uU2V0PFQ+PiBzcGVj
aWFsaXphdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNDU2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE5LTExLTIzICBKb2huIFdpbGFuZGVyICA8d2lsYW5k
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogQWxsb3cg
bXVsdGlwbGUgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIHNldHRpbmdzCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAppbmRleCA0OTNlYzI1YzA2ZjU2OWNk
NTQzOWM0MDFmODI2NTRjZjdiN2MyYjliLi4wZDcyZmEyODEyYjA1YjM2N2Y0MWE1YjY2NDJjZWM4
MDdhNWFlNjVmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRp
b25TZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlRl
c3QuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQu
aD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNDM2LDQgKzQzNywxMyBAQCBURVNU
KFdURl9PcHRpb25TZXQsIENvbnRhaW5zQWxsKQogICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFp
bnNBbGwoeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpD
IH0pKTsKIH0KIAorVEVTVChXVEZfT3B0aW9uU2V0LCBIYXNoU2V0KQoreworICAgIEhhc2hTZXQ8
T3B0aW9uU2V0PEV4YW1wbGVGbGFncz4+IGhhc2hTZXQ7CisgICAgRVhQRUNUX1RSVUUoaGFzaFNl
dC5hZGQoeyBFeGFtcGxlRmxhZ3M6OkEgfSkuaXNOZXdFbnRyeSk7CisgICAgRVhQRUNUX1RSVUUo
aGFzaFNldC5hZGQoeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6QiB9KS5pc05ld0Vu
dHJ5KTsKKyAgICBFWFBFQ1RfRkFMU0UoaGFzaFNldC5hZGQoeyBFeGFtcGxlRmxhZ3M6OkEgfSku
aXNOZXdFbnRyeSk7CisgICAgRVhQRUNUX0ZBTFNFKGhhc2hTZXQuYWRkKHsgRXhhbXBsZUZsYWdz
OjpBLCBFeGFtcGxlRmxhZ3M6OkIgfSkuaXNOZXdFbnRyeSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384265</attachid>
            <date>2019-11-24 19:51:55 -0800</date>
            <delta_ts>2019-11-24 19:59:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204562-20191125125154.patch</filename>
            <type>text/plain</type>
            <size>4596</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQxZWZjYWQ2YTE5MzkwNGQxMzA2NWU0
Y2ZjNTQzNzg2YzA4NTA5YTcuLjU1ZTA1NGYwMjA4MDhhNThiM2VmZDE0YmRkOTBjZTFlYWViZjFk
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMTEtMjQgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgQWRkIERlZmF1bHRIYXNoPE9wdGlvblNl
dDxUPj4gYW5kIEhhc2hUcmFpdDxPcHRpb25TZXQ8VD4+IHNwZWNpYWxpemF0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvT3B0aW9uU2V0
Lmg6IE1hZGUgU3RvcmFnZVR5cGUgcHVibGljLgorICAgICAgICBBZGRlZCBEZWZhdWx0SGFzaDxP
cHRpb25TZXQ8VD4+LgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPE9wdGlvblNldDxUPj46OmVt
cHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPE9wdGlvblNldDxUPj46OmNvbnN0
cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8T3B0aW9uU2V0PFQ+
Pjo6aXNEZWxldGVkVmFsdWUpOgorCiAyMDE5LTExLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBUcnkgdG8gZml4IHRo
ZSBHVEsgV2ViRHJpdmVyIHRlc3RzIGluIHRoZSBib3RzIGFmdGVyIHIyNTI3NzAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uU2V0
LmgKaW5kZXggZjNmNTkwMzNiZjdlNGJkYjRkYTM4MGYwMGI4MTNiNDc1MjQxZTVmZS4uMGMzMTMy
NTRjYmUxMzhkY2M2ZWRiNzBmMWQ2MDRjNGM3NjhlZmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvT3B0aW9uU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgKQEAgLTM5
LDkgKzM5LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3Mg
T3B0aW9uU2V0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfZW51bTxUPjo6dmFsdWUsICJUIGlzIG5vdCBhbiBlbnVtIHR5cGUiKTsKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDx0eXBlbmFtZSBzdGQ6OnVuZGVy
bHlpbmdfdHlwZTxUPjo6dHlwZT46OnR5cGUgU3RvcmFnZVR5cGU7CiAKIHB1YmxpYzoKKyAgICB1
c2luZyBTdG9yYWdlVHlwZSA9IHN0ZDo6bWFrZV91bnNpZ25lZF90PHN0ZDo6dW5kZXJseWluZ190
eXBlX3Q8VD4+OworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RvcmFnZVR5cGU+IGNsYXNzIEl0
ZXJhdG9yIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpA
QCAtMTYyLDYgKzE2Myw0NSBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VUeXBlIG1fc3RvcmFnZSB7
IDAgfTsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPcHRpb25TZXQ8VD4+IHsKKyAg
ICB1c2luZyBIYXNoID0gc3RydWN0IHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgT3B0aW9uU2V0PFQ+JiBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUg
PSBrZXkudG9SYXcoKTsKKyAgICAgICAgICAgIHJldHVybiBEZWZhdWx0SGFzaDxkZWNsdHlwZSh2
YWx1ZSk+OjpIYXNoOjpoYXNoKHZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IE9wdGlvblNldDxUPiYgYSwgY29uc3QgT3B0aW9uU2V0PFQ+JiBiKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAgICAgICB9CisKKyAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsKKyAgICB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIYXNoVHJhaXRz
OwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0czsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8T3B0aW9uU2V0PFQ+PiA6IEdlbmVyaWNI
YXNoVHJhaXRzPE9wdGlvblNldDxUPj4geworICAgIHN0YXRpYyBPcHRpb25TZXQ8VD4gZW1wdHlW
YWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gT3B0aW9uU2V0PFQ+Ojpmcm9tUmF3KHN0ZDo6
bnVtZXJpY19saW1pdHM8T3B0aW9uU2V0PFQ+OjpTdG9yYWdlVHlwZT46Om1heCgpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoT3B0aW9uU2V0PFQ+JiBz
bG90KQorICAgIHsKKyAgICAgICAgc2xvdCA9IE9wdGlvblNldDxUPjo6ZnJvbVJhdyhzdGQ6Om51
bWVyaWNfbGltaXRzPE9wdGlvblNldDxUPjo6U3RvcmFnZVR5cGU+OjptYXgoKSAtIDEpOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKE9wdGlvblNldDxUPiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZSA9PSBPcHRpb25TZXQ8VD46OmZyb21SYXcoc3Rk
OjpudW1lcmljX2xpbWl0czxPcHRpb25TZXQ8VD46OlN0b3JhZ2VUeXBlPjo6bWF4KCkgLSAxKTsK
KyAgICB9Cit9OworCiB9CiAKIHVzaW5nIFdURjo6T3B0aW9uU2V0OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJjNzQzNTU5N2Y0MzdjMTg2ZGE0
NTMzMWE5NzA1MWQ1OTA1NzNiOWYuLmQxN2UwNjQ0YjQ4YjVkYzZmYTZhMGY0NDVhYzcyMmRjYTYz
NWVlODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMS0yNCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5G
dWppaUBzb255LmNvbT4KKworICAgICAgICBBZGQgRGVmYXVsdEhhc2g8T3B0aW9uU2V0PFQ+PiBh
bmQgSGFzaFRyYWl0PE9wdGlvblNldDxUPj4gc3BlY2lhbGl6YXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ1NjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL09wdGlvblNldC5jcHA6CisgICAgICAgIEFkZGVkIGEgbmV3IHRlc3QgV1RGX09wdGlvblNl
dC5IYXNoU2V0IHRvIHRlc3QgSGFzaFNldDxPcHRpb25TZXQ8VD4+LgorCiAyMDE5LTExLTIzICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNlIExv
YWQgU3RhdGlzdGljczogQWxsb3cgbXVsdGlwbGUgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5n
IHNldHRpbmdzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRp
b25TZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcApp
bmRleCA0OTNlYzI1YzA2ZjU2OWNkNTQzOWM0MDFmODI2NTRjZjdiN2MyYjliLi4wZDcyZmEyODEy
YjA1YjM2N2Y0MWE1YjY2NDJjZWM4MDdhNWFlNjVmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL09wdGlvblNldC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKIAogI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAt
NDM2LDQgKzQzNywxMyBAQCBURVNUKFdURl9PcHRpb25TZXQsIENvbnRhaW5zQWxsKQogICAgIEVY
UEVDVF9GQUxTRShzZXQuY29udGFpbnNBbGwoeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFn
czo6QiwgRXhhbXBsZUZsYWdzOjpDIH0pKTsKIH0KIAorVEVTVChXVEZfT3B0aW9uU2V0LCBIYXNo
U2V0KQoreworICAgIEhhc2hTZXQ8T3B0aW9uU2V0PEV4YW1wbGVGbGFncz4+IGhhc2hTZXQ7Cisg
ICAgRVhQRUNUX1RSVUUoaGFzaFNldC5hZGQoeyBFeGFtcGxlRmxhZ3M6OkEgfSkuaXNOZXdFbnRy
eSk7CisgICAgRVhQRUNUX1RSVUUoaGFzaFNldC5hZGQoeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1w
bGVGbGFnczo6QiB9KS5pc05ld0VudHJ5KTsKKyAgICBFWFBFQ1RfRkFMU0UoaGFzaFNldC5hZGQo
eyBFeGFtcGxlRmxhZ3M6OkEgfSkuaXNOZXdFbnRyeSk7CisgICAgRVhQRUNUX0ZBTFNFKGhhc2hT
ZXQuYWRkKHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkIgfSkuaXNOZXdFbnRyeSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384266</attachid>
            <date>2019-11-24 20:00:12 -0800</date>
            <delta_ts>2019-11-24 20:05:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204562-20191125130011.patch</filename>
            <type>text/plain</type>
            <size>4858</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQxZWZjYWQ2YTE5MzkwNGQxMzA2NWU0
Y2ZjNTQzNzg2YzA4NTA5YTcuLjU1ZTA1NGYwMjA4MDhhNThiM2VmZDE0YmRkOTBjZTFlYWViZjFk
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMTEtMjQgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgQWRkIERlZmF1bHRIYXNoPE9wdGlvblNl
dDxUPj4gYW5kIEhhc2hUcmFpdDxPcHRpb25TZXQ8VD4+IHNwZWNpYWxpemF0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvT3B0aW9uU2V0
Lmg6IE1hZGUgU3RvcmFnZVR5cGUgcHVibGljLgorICAgICAgICBBZGRlZCBEZWZhdWx0SGFzaDxP
cHRpb25TZXQ8VD4+LgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPE9wdGlvblNldDxUPj46OmVt
cHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPE9wdGlvblNldDxUPj46OmNvbnN0
cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8T3B0aW9uU2V0PFQ+
Pjo6aXNEZWxldGVkVmFsdWUpOgorCiAyMDE5LTExLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBUcnkgdG8gZml4IHRo
ZSBHVEsgV2ViRHJpdmVyIHRlc3RzIGluIHRoZSBib3RzIGFmdGVyIHIyNTI3NzAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uU2V0
LmgKaW5kZXggZjNmNTkwMzNiZjdlNGJkYjRkYTM4MGYwMGI4MTNiNDc1MjQxZTVmZS4uMDkyZGYx
MTM0YWMzZDRjZjQzM2E1NGI0ZTVjYWUyOGJmNTBjY2VlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvT3B0aW9uU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgKQEAgLTM5
LDkgKzM5LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3Mg
T3B0aW9uU2V0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfZW51bTxUPjo6dmFsdWUsICJUIGlzIG5vdCBhbiBlbnVtIHR5cGUiKTsKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDx0eXBlbmFtZSBzdGQ6OnVuZGVy
bHlpbmdfdHlwZTxUPjo6dHlwZT46OnR5cGUgU3RvcmFnZVR5cGU7CiAKIHB1YmxpYzoKKyAgICB1
c2luZyBTdG9yYWdlVHlwZSA9IHN0ZDo6bWFrZV91bnNpZ25lZF90PHN0ZDo6dW5kZXJseWluZ190
eXBlX3Q8VD4+OworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RvcmFnZVR5cGU+IGNsYXNzIEl0
ZXJhdG9yIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpA
QCAtMTYyLDYgKzE2Myw0NSBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VUeXBlIG1fc3RvcmFnZSB7
IDAgfTsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPcHRpb25TZXQ8VD4+IHsKKyAg
ICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE9wdGlv
blNldDxUPiYga2V5KQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0ga2V5LnRv
UmF3KCk7CisgICAgICAgICAgICByZXR1cm4gRGVmYXVsdEhhc2g8ZGVjbHR5cGUodmFsdWUpPjo6
SGFzaDo6aGFzaCh2YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBPcHRpb25TZXQ8VD4mIGEsIGNvbnN0IE9wdGlvblNldDxUPiYgYikKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cisg
ICAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHM7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPE9wdGlvblNldDxUPj4gOiBHZW5lcmljSGFzaFRyYWl0
czxPcHRpb25TZXQ8VD4+IHsKKyAgICBzdGF0aWMgT3B0aW9uU2V0PFQ+IGVtcHR5VmFsdWUoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE9wdGlvblNldDxUPjo6ZnJvbVJhdyhzdGQ6Om51bWVyaWNf
bGltaXRzPE9wdGlvblNldDxUPjo6U3RvcmFnZVR5cGU+OjptYXgoKSk7CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKE9wdGlvblNldDxUPiYgc2xvdCkKKyAg
ICB7CisgICAgICAgIHNsb3QgPSBPcHRpb25TZXQ8VD46OmZyb21SYXcoc3RkOjpudW1lcmljX2xp
bWl0czxPcHRpb25TZXQ8VD46OlN0b3JhZ2VUeXBlPjo6bWF4KCkgLSAxKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShPcHRpb25TZXQ8VD4gdmFsdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gdmFsdWUgPT0gT3B0aW9uU2V0PFQ+Ojpmcm9tUmF3KHN0ZDo6bnVtZXJp
Y19saW1pdHM8T3B0aW9uU2V0PFQ+OjpTdG9yYWdlVHlwZT46Om1heCgpIC0gMSk7CisgICAgfQor
fTsKKwogfQogCiB1c2luZyBXVEY6Ok9wdGlvblNldDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYzc0MzU1OTdmNDM3YzE4NmRhNDUzMzFhOTcw
NTFkNTkwNTczYjlmLi5kMTdlMDY0NGI0OGI1ZGM2ZmE2YTBmNDQ1YWM3MjJkY2E2MzVlZTg3IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTktMTEtMjQgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29u
eS5jb20+CisKKyAgICAgICAgQWRkIERlZmF1bHRIYXNoPE9wdGlvblNldDxUPj4gYW5kIEhhc2hU
cmFpdDxPcHRpb25TZXQ8VD4+IHNwZWNpYWxpemF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRp
b25TZXQuY3BwOgorICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0IFdURl9PcHRpb25TZXQuSGFzaFNl
dCB0byB0ZXN0IEhhc2hTZXQ8T3B0aW9uU2V0PFQ+Pi4KKwogMjAxOS0xMS0yMyAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRp
c3RpY3M6IEFsbG93IG11bHRpcGxlIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBzZXR0aW5n
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAKaW5kZXggNDkz
ZWMyNWMwNmY1NjljZDU0MzljNDAxZjgyNjU0Y2Y3YjdjMmI5Yi4uMmExYjgxZDIwMDNjNWMxMTNj
NmM3MDI0ZDgwZjczZjA2MTU2YjI5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9PcHRpb25TZXQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvT3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKQEAgLTQzNiw0ICs0
MzcsMTcgQEAgVEVTVChXVEZfT3B0aW9uU2V0LCBDb250YWluc0FsbCkKICAgICBFWFBFQ1RfRkFM
U0Uoc2V0LmNvbnRhaW5zQWxsKHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkIsIEV4
YW1wbGVGbGFnczo6QyB9KSk7CiB9CiAKK1RFU1QoV1RGX09wdGlvblNldCwgSGFzaFNldCkKK3sK
KyAgICBIYXNoU2V0PE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+PiBoYXNoU2V0OworICAgIEVYUEVD
VF9UUlVFKGhhc2hTZXQuYWRkKHsgRXhhbXBsZUZsYWdzOjpBIH0pLmlzTmV3RW50cnkpOworICAg
IEVYUEVDVF9UUlVFKGhhc2hTZXQuYWRkKHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6
OkIgfSkuaXNOZXdFbnRyeSk7CisgICAgRVhQRUNUX0ZBTFNFKGhhc2hTZXQuYWRkKHsgRXhhbXBs
ZUZsYWdzOjpBIH0pLmlzTmV3RW50cnkpOworICAgIEVYUEVDVF9GQUxTRShoYXNoU2V0LmFkZCh7
IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpCIH0pLmlzTmV3RW50cnkpOworICAgIEVY
UEVDVF9UUlVFKGhhc2hTZXQucmVtb3ZlKHsgRXhhbXBsZUZsYWdzOjpBIH0pKTsKKyAgICBFWFBF
Q1RfVFJVRShoYXNoU2V0LnJlbW92ZSh7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpC
IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShoYXNoU2V0LmFkZCh7IEV4YW1wbGVGbGFnczo6QSB9KS5p
c05ld0VudHJ5KTsKKyAgICBFWFBFQ1RfVFJVRShoYXNoU2V0LmFkZCh7IEV4YW1wbGVGbGFnczo6
QSwgRXhhbXBsZUZsYWdzOjpCIH0pLmlzTmV3RW50cnkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384268</attachid>
            <date>2019-11-24 20:06:06 -0800</date>
            <delta_ts>2019-11-25 02:31:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204562-20191125130605.patch</filename>
            <type>text/plain</type>
            <size>4722</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQxZWZjYWQ2YTE5MzkwNGQxMzA2NWU0
Y2ZjNTQzNzg2YzA4NTA5YTcuLjIyMWIxNTdmMTlhYTRiZTAzM2Q3YmRlMDIyZWNkMGYyNjZkYjUy
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTEtMjQgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgQWRkIERlZmF1bHRIYXNoPE9wdGlvblNl
dDxUPj4gYW5kIEhhc2hUcmFpdDxPcHRpb25TZXQ8VD4+IHNwZWNpYWxpemF0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvT3B0aW9uU2V0
Lmg6IE1hZGUgU3RvcmFnZVR5cGUgcHVibGljLCBhbmQgdXNlIEMrKzE0IHR5cGVzLgorICAgICAg
ICBBZGRlZCBEZWZhdWx0SGFzaDxPcHRpb25TZXQ8VD4+IGFuZCBIYXNoVHJhaXRzPE9wdGlvblNl
dDxUPj4uCisKIDIwMTktMTEtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFRyeSB0byBmaXggdGhlIEdUSyBXZWJEcml2
ZXIgdGVzdHMgaW4gdGhlIGJvdHMgYWZ0ZXIgcjI1Mjc3MApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvT3B0aW9uU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAppbmRleCBmM2Y1
OTAzM2JmN2U0YmRiNGRhMzgwZjAwYjgxM2I0NzUyNDFlNWZlLi4xNGVhOThlNzMzMjMwM2I0NzMx
OGVhZGI1NDZlYjNkN2YwZjk4YWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25T
ZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaApAQCAtMzksOSArMzksMTAgQEAg
bmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBPcHRpb25TZXQgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19l
bnVtPFQ+Ojp2YWx1ZSwgIlQgaXMgbm90IGFuIGVudW0gdHlwZSIpOwotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPFQ+
Ojp0eXBlPjo6dHlwZSBTdG9yYWdlVHlwZTsKIAogcHVibGljOgorICAgIHVzaW5nIFN0b3JhZ2VU
eXBlID0gc3RkOjptYWtlX3Vuc2lnbmVkX3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxUPj47CisK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yYWdlVHlwZT4gY2xhc3MgSXRlcmF0b3IgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CkBAIC0xNjIsNiArMTYz
LDQ3IEBAIHByaXZhdGU6CiAgICAgU3RvcmFnZVR5cGUgbV9zdG9yYWdlIHsgMCB9OwogfTsKIAor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEZWZhdWx0SGFzaDsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IERlZmF1bHRIYXNoPE9wdGlvblNldDxUPj4geworICAgIHN0cnVjdCBIYXNo
IHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgT3B0aW9uU2V0PFQ+JiBrZXkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBrZXkudG9SYXcoKTsKKyAgICAg
ICAgICAgIHJldHVybiBEZWZhdWx0SGFzaDxkZWNsdHlwZSh2YWx1ZSk+OjpIYXNoOjpoYXNoKHZh
bHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE9wdGlv
blNldDxUPiYgYSwgY29uc3QgT3B0aW9uU2V0PFQ+JiBiKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gYSA9PSBiOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICB9OworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0czsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEhhc2hUcmFpdHM8T3B0aW9uU2V0PFQ+PiA6IEdlbmVyaWNIYXNoVHJhaXRzPE9wdGlvblNldDxU
Pj4geworICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gdHlwZW5hbWUgT3B0aW9uU2V0PFQ+OjpTdG9y
YWdlVHlwZTsKKworICAgIHN0YXRpYyBPcHRpb25TZXQ8VD4gZW1wdHlWYWx1ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gT3B0aW9uU2V0PFQ+Ojpmcm9tUmF3KHN0ZDo6bnVtZXJpY19saW1pdHM8
U3RvcmFnZVR5cGU+OjptYXgoKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKE9wdGlvblNldDxUPiYgc2xvdCkKKyAgICB7CisgICAgICAgIHNsb3QgPSBP
cHRpb25TZXQ8VD46OmZyb21SYXcoc3RkOjpudW1lcmljX2xpbWl0czxTdG9yYWdlVHlwZT46Om1h
eCgpIC0gMSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoT3B0aW9u
U2V0PFQ+IHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlID09IE9wdGlvblNldDxU
Pjo6ZnJvbVJhdyhzdGQ6Om51bWVyaWNfbGltaXRzPFN0b3JhZ2VUeXBlPjo6bWF4KCkgLSAxKTsK
KyAgICB9Cit9OworCiB9CiAKIHVzaW5nIFdURjo6T3B0aW9uU2V0OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJjNzQzNTU5N2Y0MzdjMTg2ZGE0
NTMzMWE5NzA1MWQ1OTA1NzNiOWYuLmI3MGY1NGNiMTA3MDQ0NWMwNzNmNGFkZmU4MjNjOTAzZjhk
MWRjYmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMS0yNCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5G
dWppaUBzb255LmNvbT4KKworICAgICAgICBBZGQgRGVmYXVsdEhhc2g8T3B0aW9uU2V0PFQ+PiBh
bmQgSGFzaFRyYWl0PE9wdGlvblNldDxUPj4gc3BlY2lhbGl6YXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ1NjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL09wdGlvblNldC5jcHA6CisgICAgICAgIEFkZGVkIGEgbmV3IHRlc3QgV1RGX09wdGlvblNl
dC5IYXNoU2V0LgorCiAyMDE5LTExLTIzICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogQWxsb3cgbXVsdGlwbGUg
dGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIHNldHRpbmdzCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAppbmRleCA0OTNlYzI1YzA2ZjU2OWNkNTQzOWM0MDFm
ODI2NTRjZjdiN2MyYjliLi4yYTFiODFkMjAwM2M1YzExM2M2YzcwMjRkODBmNzNmMDYxNTZiMjlm
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlRlc3QuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNDM2LDQgKzQzNywxNyBAQCBURVNUKFdURl9PcHRp
b25TZXQsIENvbnRhaW5zQWxsKQogICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnNBbGwoeyBF
eGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpDIH0pKTsKIH0K
IAorVEVTVChXVEZfT3B0aW9uU2V0LCBIYXNoU2V0KQoreworICAgIEhhc2hTZXQ8T3B0aW9uU2V0
PEV4YW1wbGVGbGFncz4+IGhhc2hTZXQ7CisgICAgRVhQRUNUX1RSVUUoaGFzaFNldC5hZGQoeyBF
eGFtcGxlRmxhZ3M6OkEgfSkuaXNOZXdFbnRyeSk7CisgICAgRVhQRUNUX1RSVUUoaGFzaFNldC5h
ZGQoeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6QiB9KS5pc05ld0VudHJ5KTsKKyAg
ICBFWFBFQ1RfRkFMU0UoaGFzaFNldC5hZGQoeyBFeGFtcGxlRmxhZ3M6OkEgfSkuaXNOZXdFbnRy
eSk7CisgICAgRVhQRUNUX0ZBTFNFKGhhc2hTZXQuYWRkKHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFt
cGxlRmxhZ3M6OkIgfSkuaXNOZXdFbnRyeSk7CisgICAgRVhQRUNUX1RSVUUoaGFzaFNldC5yZW1v
dmUoeyBFeGFtcGxlRmxhZ3M6OkEgfSkpOworICAgIEVYUEVDVF9UUlVFKGhhc2hTZXQucmVtb3Zl
KHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkIgfSkpOworICAgIEVYUEVDVF9UUlVF
KGhhc2hTZXQuYWRkKHsgRXhhbXBsZUZsYWdzOjpBIH0pLmlzTmV3RW50cnkpOworICAgIEVYUEVD
VF9UUlVFKGhhc2hTZXQuYWRkKHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkIgfSku
aXNOZXdFbnRyeSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384283</attachid>
            <date>2019-11-25 02:32:14 -0800</date>
            <delta_ts>2019-11-25 02:32:14 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-204562-20191125193213.patch</filename>
            <type>text/plain</type>
            <size>9265</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM2MWZjNzE3NDRmYzYyYmZjZTUxMDY3
YTRkMGU1MTc3MjRkODFlMWEuLjQzYjVhYzM4NDI5MjFkMTE5ZmUxMTRhYTkxMzk4MDg0NTZlMWQ0
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMTEtMjUgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgQWRkIERlZmF1bHRIYXNoPE9wdGlvblNl
dDxUPj4gYW5kIEhhc2hUcmFpdDxPcHRpb25TZXQ8VD4+IHNwZWNpYWxpemF0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFuaWVsIEJhdGVzLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IEFkZGVkIE9wdGlvblNldEhhc2guaAorICAgICAgICAqIHd0Zi9DTWFr
ZUxpc3RzLnR4dDogRGl0dG8uCisgICAgICAgICogd3RmL09wdGlvblNldC5oOiBNYWRlIFN0b3Jh
Z2VUeXBlIHB1YmxpYywgYW5kIHVzZSBDKysxNCB0eXBlcy4KKyAgICAgICAgKiB3dGYvT3B0aW9u
U2V0SGFzaC5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8T3B0aW9uU2V0PFQ+
Pjo6SGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPE9wdGlvblNldDxUPj46
Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxPcHRpb25TZXQ8VD4+Ojpl
bXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxPcHRpb25TZXQ8VD4+Ojpjb25z
dHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPE9wdGlvblNldDxU
Pj46OmlzRGVsZXRlZFZhbHVlKToKKwogMjAxOS0xMS0yNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJv
bm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBSYW4gc29ydC1YY29kZS1wcm9qZWN0LWZp
bGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOTE3MzY5
NDE1MGZlNzVmOTQxNjhiZmEwYWZjYWY5ZDdhZjU3NjRkLi45ZGU4NGVjYjVmNmJkMzkyMTQ2NWI1
ZTQ3NjRiNzJmNzg1OGE1ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTMzMCw2ICszMzAsNyBAQAogCQkyNjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyog
SW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI2Mjk5QjZEMTdBOUU1QjgwMEFERUJFNSAvKiBSZWYuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2
ODRENDM1MUMwMDBENDAwMDgxRDY2MyAvKiBJbmRleFNwYXJzZVNldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleFNwYXJzZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyNzVERkI2QjIzOEJERjcyMDAxMjMwRTIgLyogT3B0aW9uU2V0SGFzaC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25TZXRIYXNoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJDMDUzODUzMTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3Jp
YW5EYXRlVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmVnb3JpYW5E
YXRlVGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQ0NEODkyOTE1QzAzOTAy
MDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JlZ29yaWFuRGF0ZVRpbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQ0RFRDBFRTE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bkxvb3BDRi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDY5LDYgKzEwNzAsNyBAQAogCQkJCTgzQThBQzNEMUZB
QkJFOTQwMDIwNjRBQyAvKiBPYmplY3RJZGVudGlmaWVyLmggKi8sCiAJCQkJMUFGREU2NTIxOTUz
QjIzRDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmggKi8sCiAJCQkJMUE0NjU2MTgxQzdGQzY4RTAwRjU5
MjBGIC8qIE9wdGlvblNldC5oICovLAorCQkJCTI3NURGQjZCMjM4QkRGNzIwMDEyMzBFMiAvKiBP
cHRpb25TZXRIYXNoLmggKi8sCiAJCQkJMEY5NDk1ODMxQzU3MUNDOTAwNDEzQTQ4IC8qIE9yZGVy
TWFrZXIuaCAqLywKIAkJCQlBOEE0NzJENzE1MUE4MjVCMDA0MTIzRkYgLyogT1NBbGxvY2F0b3Iu
aCAqLywKIAkJCQk3Q0JCQTA3MzE5QkI3RkRDMDBCQkYwMjUgLyogT1NPYmplY3RQdHIuaCAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggYTEwY2Y5ZGFhOWYyNmFjOWZjYmUxMTM3Yjk0Y2U2YzVj
NjAwYmNkMi4uZmY1ZDI3MmU1ZDBjODU1YmM3MGIyZDk2MWIxYTliODIyYTFjZjNlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQKQEAgLTE1MSw2ICsxNTEsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJT
CiAgICAgT2JqQ1J1bnRpbWVFeHRyYXMuaAogICAgIE9iamVjdElkZW50aWZpZXIuaAogICAgIE9w
dGlvblNldC5oCisgICAgT3B0aW9uU2V0SGFzaC5oCiAgICAgT3B0aW9uYWwuaAogICAgIE9yZGVy
TWFrZXIuaAogICAgIFBhY2tlZC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25T
ZXQuaCBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCmluZGV4IGYzZjU5MDMzYmY3ZTRiZGI0
ZGEzODBmMDBiODEzYjQ3NTI0MWU1ZmUuLjNhNmU3ODE2ZGIzYjRhYmQzNzM1ZGU1OGE3N2M1ZjUw
ODE0MWZmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL09wdGlvblNldC5oCkBAIC0zOSw5ICszOSwxMCBAQCBuYW1lc3BhY2UgV1RG
IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE9wdGlvblNldCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2VudW08VD46OnZhbHVl
LCAiVCBpcyBub3QgYW4gZW51bSB0eXBlIik7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Om1h
a2VfdW5zaWduZWQ8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGU+Ojp0eXBl
IFN0b3JhZ2VUeXBlOwogCiBwdWJsaWM6CisgICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBzdGQ6Om1h
a2VfdW5zaWduZWRfdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PFQ+PjsKKwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFN0b3JhZ2VUeXBlPiBjbGFzcyBJdGVyYXRvciB7CiAgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L09wdGlvblNldEhhc2guaCBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldEhhc2guaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNTg4NTQzODlmOTIxMjI2NGY5MGEyNjY0ZjQ4NjMzNTkwYTNmMjM5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvT3B0aW9uU2V0SGFzaC5oCkBAIC0wLDAgKzEsNzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPcHRpb25TZXQ8VD4+IHsKKyAg
ICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKE9wdGlvblNldDxU
PiBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBJbnRIYXNoPHR5cGVuYW1lIE9w
dGlvblNldDxUPjo6U3RvcmFnZVR5cGU+OjpoYXNoKGtleS50b1JhdygpKTsKKyAgICAgICAgfQor
CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKE9wdGlvblNldDxUPiBhLCBPcHRpb25TZXQ8VD4g
YikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IHRydWU7CisgICAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNo
VHJhaXRzPE9wdGlvblNldDxUPj4gOiBHZW5lcmljSGFzaFRyYWl0czxPcHRpb25TZXQ8VD4+IHsK
KyAgICB1c2luZyBTdG9yYWdlVHJhaXRzID0gVW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dHlwZW5hbWUgT3B0aW9uU2V0PFQ+OjpTdG9yYWdlVHlwZT47CisKKyAgICBzdGF0aWMgT3B0aW9u
U2V0PFQ+IGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9wdGlvblNldDxUPjo6
ZnJvbVJhdyhTdG9yYWdlVHJhaXRzOjplbXB0eVZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShPcHRpb25TZXQ8VD4mIHNsb3QpCisgICAgewor
ICAgICAgICB0eXBlbmFtZSBPcHRpb25TZXQ8VD46OlN0b3JhZ2VUeXBlIHN0b3JhZ2U7CisgICAg
ICAgIFN0b3JhZ2VUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzdG9yYWdlKTsKKyAgICAg
ICAgc2xvdCA9IE9wdGlvblNldDxUPjo6ZnJvbVJhdyhzdG9yYWdlKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShPcHRpb25TZXQ8VD4gdmFsdWUpCisgICAgeworICAg
ICAgICByZXR1cm4gU3RvcmFnZVRyYWl0czo6aXNEZWxldGVkVmFsdWUodmFsdWUudG9SYXcoKSk7
CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWM5YzJjYmI2ZmRkZDJlY2RmODY4ZjRmN2Ri
ZTYyZjc5MTg1ZjIzOS4uNGQxMDQzZjVmYmYyNzViOGNhYWZhOGRkYzk4ZjUyMmY4ZDBhNzUxMSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDE5LTExLTI1ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgorCisgICAgICAgIEFkZCBEZWZhdWx0SGFzaDxPcHRpb25TZXQ8VD4+IGFuZCBIYXNo
VHJhaXQ8T3B0aW9uU2V0PFQ+PiBzcGVjaWFsaXphdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDU2MgorCisgICAgICAgIFJldmlld2VkIGJ5
IERhbmllbCBCYXRlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlv
blNldC5jcHA6CisgICAgICAgIEFkZGVkIGEgbmV3IHRlc3QgV1RGX09wdGlvblNldC5IYXNoU2V0
LgorCiAyMDE5LTExLTI1ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXVtXUEVdIGxpYmdwZy1lcnJvciBmYWlscyB0byBidWlsZCB3aXRoIGdhd2sg
NQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvblNldC5jcHAKaW5kZXggNDkz
ZWMyNWMwNmY1NjljZDU0MzljNDAxZjgyNjU0Y2Y3YjdjMmI5Yi4uNDc1OWYzODFmYzg1ZTNjNDMx
OTg1OTYwMmU3ODZhMzM1OGIxNzQxZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9PcHRpb25TZXQuY3BwCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldEhhc2guaD4KIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC00MzYsNCArNDM4LDIxIEBAIFRFU1QoV1RGX09wdGlv
blNldCwgQ29udGFpbnNBbGwpCiAgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWluc0FsbCh7IEV4
YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSkpOwogfQog
CitURVNUKFdURl9PcHRpb25TZXQsIEhhc2hTZXQpCit7CisgICAgSGFzaFNldDxPcHRpb25TZXQ8
RXhhbXBsZUZsYWdzPj4gaGFzaFNldDsKKyAgICBFWFBFQ1RfVFJVRShoYXNoU2V0LmFkZChPcHRp
b25TZXQ8RXhhbXBsZUZsYWdzPigpKS5pc05ld0VudHJ5KTsKKyAgICBFWFBFQ1RfVFJVRShoYXNo
U2V0LmFkZCh7IEV4YW1wbGVGbGFnczo6QSB9KS5pc05ld0VudHJ5KTsKKyAgICBFWFBFQ1RfVFJV
RShoYXNoU2V0LmFkZCh7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpCIH0pLmlzTmV3
RW50cnkpOworICAgIEVYUEVDVF9GQUxTRShoYXNoU2V0LmFkZChPcHRpb25TZXQ8RXhhbXBsZUZs
YWdzPigpKS5pc05ld0VudHJ5KTsKKyAgICBFWFBFQ1RfRkFMU0UoaGFzaFNldC5hZGQoeyBFeGFt
cGxlRmxhZ3M6OkEgfSkuaXNOZXdFbnRyeSk7CisgICAgRVhQRUNUX0ZBTFNFKGhhc2hTZXQuYWRk
KHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkIgfSkuaXNOZXdFbnRyeSk7CisgICAg
RVhQRUNUX1RSVUUoaGFzaFNldC5yZW1vdmUoT3B0aW9uU2V0PEV4YW1wbGVGbGFncz4oKSkpOwor
ICAgIEVYUEVDVF9UUlVFKGhhc2hTZXQucmVtb3ZlKHsgRXhhbXBsZUZsYWdzOjpBIH0pKTsKKyAg
ICBFWFBFQ1RfVFJVRShoYXNoU2V0LnJlbW92ZSh7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZs
YWdzOjpCIH0pKTsKKyAgICBFWFBFQ1RfVFJVRShoYXNoU2V0LmFkZChPcHRpb25TZXQ8RXhhbXBs
ZUZsYWdzPigpKS5pc05ld0VudHJ5KTsKKyAgICBFWFBFQ1RfVFJVRShoYXNoU2V0LmFkZCh7IEV4
YW1wbGVGbGFnczo6QSB9KS5pc05ld0VudHJ5KTsKKyAgICBFWFBFQ1RfVFJVRShoYXNoU2V0LmFk
ZCh7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpCIH0pLmlzTmV3RW50cnkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>