<?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>189075</bug_id>
          
          <creation_ts>2018-08-28 22:23:16 -0700</creation_ts>
          <short_desc>Modernize SlotAssignment</short_desc>
          <delta_ts>2018-08-29 15:23:32 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1454725</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-28 22:23:16 -0700</bug_when>
    <thetext>Modernize SlotAssignment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454727</commentid>
    <comment_count>1</comment_count>
      <attachid>348392</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-28 22:28:06 -0700</bug_when>
    <thetext>Created attachment 348392
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454731</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-28 22:39:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/43829595&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454748</commentid>
    <comment_count>3</comment_count>
      <attachid>348392</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-29 03:36:36 -0700</bug_when>
    <thetext>Comment on attachment 348392
Cleanup

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

&gt; Source/WebCore/dom/SlotAssignment.cpp:87
&gt;      const AtomicString&amp; slotName = slotNameFromAttributeValue(name);
&gt; -    auto addResult = m_slots.add(slotName, std::unique_ptr&lt;SlotInfo&gt;());
&gt; +    auto addResult = m_slots.ensure(slotName, [&amp;slotElement] {
&gt; +        return std::make_unique&lt;Slot&gt;(makeWeakPtr(slotElement));
&gt; +    });
&gt;      if (addResult.isNewEntry) {
&gt; -        addResult.iterator-&gt;value = std::make_unique&lt;SlotInfo&gt;(slotElement);
&gt; -        if (slotName == defaultSlotName()) // Because assignSlots doesn&apos;t collect nodes assigned to the default slot as an optimzation.
&gt; +        // Unlike named slots, assignSlots doesn&apos;t collect nodes assigned to the default slot
&gt; +        // to avoid always having a vector of all child nodes of a shadow host.
&gt; +        if (slotName == defaultSlotName())
&gt;              m_slotAssignmentsIsValid = false;
&gt;          return;
&gt;      }

Alternative factoring:

- Call plain constructor for Slot in ensure (just std::make_unique&lt;Slot&gt;(), you can remove the the slot element constructor)
- Move the remaining code in addResult.isNewEntry branch to the ensure lambda
- Remove the early return and let the code below handle setting the slot element and incrementing the count. It seems to do the right thing.

I think this would make the logic simpler and easier to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454909</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-29 13:38:46 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 348392 [details]
&gt; Cleanup
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=348392&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/SlotAssignment.cpp:87
&gt; &gt;      const AtomicString&amp; slotName = slotNameFromAttributeValue(name);
&gt; &gt; -    auto addResult = m_slots.add(slotName, std::unique_ptr&lt;SlotInfo&gt;());
&gt; &gt; +    auto addResult = m_slots.ensure(slotName, [&amp;slotElement] {
&gt; &gt; +        return std::make_unique&lt;Slot&gt;(makeWeakPtr(slotElement));
&gt; &gt; +    });
&gt; &gt;      if (addResult.isNewEntry) {
&gt; &gt; -        addResult.iterator-&gt;value = std::make_unique&lt;SlotInfo&gt;(slotElement);
&gt; &gt; -        if (slotName == defaultSlotName()) // Because assignSlots doesn&apos;t collect nodes assigned to the default slot as an optimzation.
&gt; &gt; +        // Unlike named slots, assignSlots doesn&apos;t collect nodes assigned to the default slot
&gt; &gt; +        // to avoid always having a vector of all child nodes of a shadow host.
&gt; &gt; +        if (slotName == defaultSlotName())
&gt; &gt;              m_slotAssignmentsIsValid = false;
&gt; &gt;          return;
&gt; &gt;      }
&gt; 
&gt; Alternative factoring:
&gt; 
&gt; - Call plain constructor for Slot in ensure (just std::make_unique&lt;Slot&gt;(),
&gt; you can remove the the slot element constructor)
&gt; - Move the remaining code in addResult.isNewEntry branch to the ensure lambda
&gt; - Remove the early return and let the code below handle setting the slot
&gt; element and incrementing the count. It seems to do the right thing.
&gt; 
&gt; I think this would make the logic simpler and easier to follow.

Sure, will do that. Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454910</commentid>
    <comment_count>5</comment_count>
      <attachid>348427</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-29 13:40:09 -0700</bug_when>
    <thetext>Created attachment 348427
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454911</commentid>
    <comment_count>6</comment_count>
      <attachid>348427</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-29 13:40:37 -0700</bug_when>
    <thetext>Comment on attachment 348427
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454953</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-29 15:23:32 -0700</bug_when>
    <thetext>Committed r235483: &lt;https://trac.webkit.org/changeset/235483&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348392</attachid>
            <date>2018-08-28 22:28:06 -0700</date>
            <delta_ts>2018-08-29 13:40:06 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-189075-20180828222805.patch</filename>
            <type>text/plain</type>
            <size>10913</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTQ1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE4LTA4LTI4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6ZSBTbG90QXNzaWdu
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
MDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9k
ZXJuaXplZCB0aGUgY29kZSByZWxhdGVkIHRvIFNsb3RBc3NpZ25tZW50LiBOYW1lbHksIHVzZSBI
YXNoTWFwPD46OmdldCBpbnN0ZWFkIG9mIEhhc2hNYXA8Pjo6ZmluZCwKKyAgICAgICAgYW5kIHVz
ZSBIYXNoTWFwPD46OmVuc3VyZSBpbnN0ZWFkIG9mIEhhc2hNYXA8Pjo6YWRkLiBBbHNvIHVzZSBX
ZWFrUHRyIHRvIGtlZXAgdHJhY2sgb2YgSFRNTFNsb3RFbGVtZW50CisgICAgICAgIGluc3RlYWQg
b2YgYSByYXcgcG9pbnRlci4KKworICAgICAgICAqIGRvbS9TbG90QXNzaWdubWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6ZmluZEFzc2lnbmVkU2xvdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OnJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpkaWRDaGFuZ2VTbG90KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpmaW5kRmlyc3RTbG90RWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6cmVzb2x2ZUFsbFNsb3RFbGVtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6YXNzaWduVG9TbG90KToKKyAgICAgICAg
KiBkb20vU2xvdEFzc2lnbm1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50
OjpTbG90OjpTbG90KTogUmVuYW1lZCBmcm9tIFNsb3RJbmZvIHNpbmNlICJJbmZvIiBkb2Vzbid0
IGFkZCBhbnkgdmFsdWUuCisgICAgICAgICogaHRtbC9IVE1MU2xvdEVsZW1lbnQuaDoKKwogMjAx
OC0wOC0yOCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAg
IENoZWNrIGZvciBudWxsIHJlbmRlcmVyIGluIGNhbkJlU2Nyb2xsZWRJbnRvVmlldwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCShyZXZpc2lvbiAyMzU0NTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NywxMiArNTcsMTEgQEAgSFRNTFNsb3RFbGVtZW50KiBTbG90QXNzaWdubWVudDo6ZmluZEFzcwog
ICAgIGlmICghaXM8VGV4dD4obm9kZSkgJiYgIWlzPEVsZW1lbnQ+KG5vZGUpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc2xvdE5hbWUgPSBzbG90TmFtZUZvckhvc3RDaGls
ZChub2RlKTsKLSAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKHNsb3ROYW1lKTsKLSAgICBpZiAo
aXQgPT0gbV9zbG90cy5lbmQoKSkKKyAgICBhdXRvKiBzbG90ID0gbV9zbG90cy5nZXQoc2xvdE5h
bWVGb3JIb3N0Q2hpbGQobm9kZSkpOworICAgIGlmICghc2xvdCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gZmluZEZpcnN0U2xvdEVsZW1lbnQoKml0LT52YWx1ZSwgc2hh
ZG93Um9vdCk7CisgICAgcmV0dXJuIGZpbmRGaXJzdFNsb3RFbGVtZW50KCpzbG90LCBzaGFkb3dS
b290KTsKIH0KIAogdm9pZCBTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFk
b3dSb290JiBzaGFkb3dSb290KQpAQCAtNzYsMjUgKzc1LDI4IEBAIHZvaWQgU2xvdEFzc2lnbm1l
bnQ6OmFkZFNsb3RFbGVtZW50QnlOYW0KICAgICBzaGFkb3dSb290Lmhvc3QoKS0+aW52YWxpZGF0
ZVN0eWxlQW5kUmVuZGVyZXJzRm9yU3VidHJlZSgpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBzbG90TmFtZSA9IHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKG5hbWUpOwotICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9zbG90cy5hZGQoc2xvdE5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxTbG90SW5m
bz4oKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nsb3RzLmVuc3VyZShzbG90TmFtZSwgWyZz
bG90RWxlbWVudF0geworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90PihtYWtl
V2Vha1B0cihzbG90RWxlbWVudCkpOworICAgIH0pOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdF
bnRyeSkgewotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTbG90SW5mbz4oc2xvdEVsZW1lbnQpOwotICAgICAgICBpZiAoc2xvdE5hbWUgPT0gZGVm
YXVsdFNsb3ROYW1lKCkpIC8vIEJlY2F1c2UgYXNzaWduU2xvdHMgZG9lc24ndCBjb2xsZWN0IG5v
ZGVzIGFzc2lnbmVkIHRvIHRoZSBkZWZhdWx0IHNsb3QgYXMgYW4gb3B0aW16YXRpb24uCisgICAg
ICAgIC8vIFVubGlrZSBuYW1lZCBzbG90cywgYXNzaWduU2xvdHMgZG9lc24ndCBjb2xsZWN0IG5v
ZGVzIGFzc2lnbmVkIHRvIHRoZSBkZWZhdWx0IHNsb3QKKyAgICAgICAgLy8gdG8gYXZvaWQgYWx3
YXlzIGhhdmluZyBhIHZlY3RvciBvZiBhbGwgY2hpbGQgbm9kZXMgb2YgYSBzaGFkb3cgaG9zdC4K
KyAgICAgICAgaWYgKHNsb3ROYW1lID09IGRlZmF1bHRTbG90TmFtZSgpKQogICAgICAgICAgICAg
bV9zbG90QXNzaWdubWVudHNJc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvJiBzbG90SW5mbyA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
IGF1dG8mIHNsb3QgPSAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIGlmICghc2xv
dEluZm8uaGFzU2xvdEVsZW1lbnRzKCkpCi0gICAgICAgIHNsb3RJbmZvLmVsZW1lbnQgPSAmc2xv
dEVsZW1lbnQ7CisgICAgaWYgKCFzbG90Lmhhc1Nsb3RFbGVtZW50cygpKQorICAgICAgICBzbG90
LmVsZW1lbnQgPSBtYWtlV2Vha1B0cihzbG90RWxlbWVudCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IHNsb3RJbmZvLmVsZW1lbnQgPSBudWxscHRyOworICAgICAgICBzbG90LmVsZW1lbnQgPSBudWxs
cHRyOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9uZWVkc1RvUmVzb2x2ZVNsb3RFbGVtZW50
cyA9IHRydWU7CiAjZW5kaWYKICAgICB9Ci0gICAgc2xvdEluZm8uZWxlbWVudENvdW50Kys7Cisg
ICAgc2xvdC5lbGVtZW50Q291bnQrKzsKIH0KIAogdm9pZCBTbG90QXNzaWdubWVudDo6cmVtb3Zl
U2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1l
bnQmIHNsb3RFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQpAQCAtMTA3LDMzICsxMDks
MzAgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6cmVtb3ZlU2xvdEVsZW1lbnRCeQogICAgIGlmIChh
dXRvKiBob3N0ID0gc2hhZG93Um9vdC5ob3N0KCkpIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJs
ZSB0byBkbyBhIHRhcmdldGVkIHJlY29uc3RydWN0aW9uLgogICAgICAgICBob3N0LT5pbnZhbGlk
YXRlU3R5bGVBbmRSZW5kZXJlcnNGb3JTdWJ0cmVlKCk7CiAKLSAgICBhdXRvIGl0ID0gbV9zbG90
cy5maW5kKHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKG5hbWUpKTsKLSAgICBSRUxFQVNFX0FT
U0VSVChpdCAhPSBtX3Nsb3RzLmVuZCgpKTsKKyAgICBhdXRvKiBzbG90ID0gbV9zbG90cy5nZXQo
c2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUobmFtZSkpOworICAgIFJFTEVBU0VfQVNTRVJUKHNs
b3QgJiYgc2xvdC0+aGFzU2xvdEVsZW1lbnRzKCkpOwogCi0gICAgYXV0byYgc2xvdEluZm8gPSAq
aXQtPnZhbHVlOwotICAgIFJFTEVBU0VfQVNTRVJUKHNsb3RJbmZvLmhhc1Nsb3RFbGVtZW50cygp
KTsKLQotICAgIHNsb3RJbmZvLmVsZW1lbnRDb3VudC0tOwotICAgIGlmIChzbG90SW5mby5lbGVt
ZW50ID09ICZzbG90RWxlbWVudCkgewotICAgICAgICBzbG90SW5mby5lbGVtZW50ID0gbnVsbHB0
cjsKKyAgICBzbG90LT5lbGVtZW50Q291bnQtLTsKKyAgICBpZiAoc2xvdC0+ZWxlbWVudCA9PSAm
c2xvdEVsZW1lbnQpIHsKKyAgICAgICAgc2xvdC0+ZWxlbWVudCA9IG51bGxwdHI7CiAjaWZuZGVm
IE5ERUJVRwogICAgICAgICBtX25lZWRzVG9SZXNvbHZlU2xvdEVsZW1lbnRzID0gdHJ1ZTsKICNl
bmRpZgogICAgIH0KLSAgICBBU1NFUlQoc2xvdEluZm8uZWxlbWVudCB8fCBtX25lZWRzVG9SZXNv
bHZlU2xvdEVsZW1lbnRzKTsKKyAgICBBU1NFUlQoc2xvdC0+ZWxlbWVudCB8fCBtX25lZWRzVG9S
ZXNvbHZlU2xvdEVsZW1lbnRzKTsKIH0KIAogdm9pZCBTbG90QXNzaWdubWVudDo6ZGlkQ2hhbmdl
U2xvdChjb25zdCBBdG9taWNTdHJpbmcmIHNsb3RBdHRyVmFsdWUsIFNoYWRvd1Jvb3QmIHNoYWRv
d1Jvb3QpCiB7CiAgICAgYXV0byYgc2xvdE5hbWUgPSBzbG90TmFtZUZyb21BdHRyaWJ1dGVWYWx1
ZShzbG90QXR0clZhbHVlKTsKLSAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKHNsb3ROYW1lKTsK
LSAgICBpZiAoaXQgPT0gbV9zbG90cy5lbmQoKSkKKyAgICBhdXRvKiBzbG90ID0gbV9zbG90cy5n
ZXQoc2xvdE5hbWUpOworICAgIGlmICghc2xvdCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IGl0LT52YWx1ZS0+YXNzaWduZWROb2Rlcy5jbGVhcigpOworICAgIHNsb3QtPmFzc2lnbmVkTm9k
ZXMuY2xlYXIoKTsKICAgICBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSBmYWxzZTsKIAotICAg
IFJlZlB0cjxIVE1MU2xvdEVsZW1lbnQ+IHNsb3RFbGVtZW50ID0gZmluZEZpcnN0U2xvdEVsZW1l
bnQoKml0LT52YWx1ZSwgc2hhZG93Um9vdCk7CisgICAgYXV0byBzbG90RWxlbWVudCA9IG1ha2VS
ZWZQdHIoZmluZEZpcnN0U2xvdEVsZW1lbnQoKnNsb3QsIHNoYWRvd1Jvb3QpKTsKICAgICBpZiAo
IXNsb3RFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTE1NCwyMSArMTUzLDIwIEBAIGNv
bnN0IFZlY3RvcjxOb2RlKj4qIFNsb3RBc3NpZ25tZW50Ojphc3MKIHsKICAgICBBU1NFUlQoc2xv
dEVsZW1lbnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKSA9PSAmc2hhZG93Um9vdCk7CiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBzbG90TmFtZSA9IHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKHNs
b3RFbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIpKTsKLSAg
ICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKHNsb3ROYW1lKTsKLSAgICBSRUxFQVNFX0FTU0VSVChp
dCAhPSBtX3Nsb3RzLmVuZCgpKTsKKyAgICBhdXRvKiBzbG90ID0gbV9zbG90cy5nZXQoc2xvdE5h
bWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHNsb3QpOwogCi0gICAgYXV0byYgc2xvdEluZm8gPSAq
aXQtPnZhbHVlOwogICAgIGlmICghbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkKQogICAgICAgICBh
c3NpZ25TbG90cyhzaGFkb3dSb290KTsKIAotICAgIGlmICghc2xvdEluZm8uYXNzaWduZWROb2Rl
cy5zaXplKCkpCisgICAgaWYgKHNsb3QtPmFzc2lnbmVkTm9kZXMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVBU0VfQVNTRVJUKHNsb3RJbmZvLmhhc1Nsb3RF
bGVtZW50cygpKTsKLSAgICBpZiAoc2xvdEluZm8uaGFzRHVwbGljYXRlZFNsb3RFbGVtZW50cygp
ICYmIGZpbmRGaXJzdFNsb3RFbGVtZW50KHNsb3RJbmZvLCBzaGFkb3dSb290KSAhPSAmc2xvdEVs
ZW1lbnQpCisgICAgUkVMRUFTRV9BU1NFUlQoc2xvdC0+aGFzU2xvdEVsZW1lbnRzKCkpOworICAg
IGlmIChzbG90LT5oYXNEdXBsaWNhdGVkU2xvdEVsZW1lbnRzKCkgJiYgZmluZEZpcnN0U2xvdEVs
ZW1lbnQoKnNsb3QsIHNoYWRvd1Jvb3QpICE9ICZzbG90RWxlbWVudCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gJnNsb3RJbmZvLmFzc2lnbmVkTm9kZXM7CisgICAgcmV0
dXJuICZzbG90LT5hc3NpZ25lZE5vZGVzOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNsb3RB
c3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QK
QEAgLTE3NiwxNyArMTc0LDE3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU2xvdEFzc2lnbm1lbnQ6
OnNsb3QKICAgICByZXR1cm4gc2xvdE5hbWVGcm9tU2xvdEF0dHJpYnV0ZShjaGlsZCk7CiB9CiAK
LUhUTUxTbG90RWxlbWVudCogU2xvdEFzc2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KFNs
b3RJbmZvJiBzbG90SW5mbywgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK0hUTUxTbG90RWxlbWVu
dCogU2xvdEFzc2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KFNsb3QmIHNsb3QsIFNoYWRv
d1Jvb3QmIHNoYWRvd1Jvb3QpCiB7Ci0gICAgaWYgKHNsb3RJbmZvLnNob3VsZFJlc29sdmVTbG90
RWxlbWVudCgpKQorICAgIGlmIChzbG90LnNob3VsZFJlc29sdmVTbG90RWxlbWVudCgpKQogICAg
ICAgICByZXNvbHZlQWxsU2xvdEVsZW1lbnRzKHNoYWRvd1Jvb3QpOwogCiAjaWZuZGVmIE5ERUJV
RwotICAgIEFTU0VSVCghc2xvdEluZm8uZWxlbWVudCB8fCBtX3Nsb3RFbGVtZW50c0ZvckNvbnNp
c3RlbmN5Q2hlY2suY29udGFpbnMoc2xvdEluZm8uZWxlbWVudCkpOwotICAgIEFTU0VSVCghIXNs
b3RJbmZvLmVsZW1lbnQgPT0gISFzbG90SW5mby5lbGVtZW50Q291bnQpOworICAgIEFTU0VSVCgh
c2xvdC5lbGVtZW50IHx8IG1fc2xvdEVsZW1lbnRzRm9yQ29uc2lzdGVuY3lDaGVjay5jb250YWlu
cyhzbG90LmVsZW1lbnQuZ2V0KCkpKTsKKyAgICBBU1NFUlQoISFzbG90LmVsZW1lbnQgPT0gISFz
bG90LmVsZW1lbnRDb3VudCk7CiAjZW5kaWYKIAotICAgIHJldHVybiBzbG90SW5mby5lbGVtZW50
OworICAgIHJldHVybiBzbG90LmVsZW1lbnQuZ2V0KCk7CiB9CiAKIHZvaWQgU2xvdEFzc2lnbm1l
bnQ6OnJlc29sdmVBbGxTbG90RWxlbWVudHMoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKQEAgLTIw
NCwxNSArMjAyLDE0IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJlc29sdmVBbGxTbG90RWxlbWUK
ICAgICBmb3IgKGF1dG8mIHNsb3RFbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTFNsb3RF
bGVtZW50PihzaGFkb3dSb290KSkgewogICAgICAgICBhdXRvJiBzbG90TmFtZSA9IHNsb3ROYW1l
RnJvbUF0dHJpYnV0ZVZhbHVlKHNsb3RFbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24obmFtZUF0dHIpKTsKIAotICAgICAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKHNsb3RO
YW1lKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXQgIT0gbV9zbG90cy5lbmQoKSk7CisgICAg
ICAgIGF1dG8qIHNsb3QgPSBtX3Nsb3RzLmdldChzbG90TmFtZSk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHNsb3QpOyAvLyBzbG90IG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBhIHNsb3Qg
d2FzIGluc2VydGVkLgogCi0gICAgICAgIFNsb3RJbmZvJiBzbG90SW5mbyA9ICppdC0+dmFsdWU7
Ci0gICAgICAgIGJvb2wgaGFzU2VlblNsb3RXaXRoU2FtZU5hbWUgPSAhIXNsb3RJbmZvLmVsZW1l
bnQ7CisgICAgICAgIGJvb2wgaGFzU2VlblNsb3RXaXRoU2FtZU5hbWUgPSAhIXNsb3QtPmVsZW1l
bnQ7CiAgICAgICAgIGlmIChoYXNTZWVuU2xvdFdpdGhTYW1lTmFtZSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIHNsb3RJbmZvLmVsZW1lbnQgPSAmc2xvdEVsZW1lbnQ7CisgICAg
ICAgIHNsb3QtPmVsZW1lbnQgPSBtYWtlV2Vha1B0cihzbG90RWxlbWVudCk7CiAgICAgICAgIHNs
b3RDb3VudC0tOwogICAgICAgICBpZiAoIXNsb3RDb3VudCkKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjQ5LDcgKzI0Niw5IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFzc2lnblRvU2xvdChOb2Rl
JiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zbG90
cy5hZGQoc2xvdE5hbWUsIHN0ZDo6bWFrZV91bmlxdWU8U2xvdEluZm8+KCkpOworICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9zbG90cy5lbnN1cmUoc2xvdE5hbWUsIFtdIHsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U2xvdD4oKTsKKyAgICB9KTsKICAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLT5hc3NpZ25lZE5vZGVzLmFwcGVuZCgmY2hpbGQpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAkocmV2aXNpb24gMjM1NDUyKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nSGFzaC5oPgogCkBAIC02MCwxMiArNjEsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNvbnN0IEVsZW1lbnQmLCBTaGFkb3dSb290Jik7
CiAKIHByaXZhdGU6Ci0gICAgc3RydWN0IFNsb3RJbmZvIHsKKyAgICBzdHJ1Y3QgU2xvdCB7CiAg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgU2xv
dEluZm8oKSB7IH0KLSAgICAgICAgU2xvdEluZm8oSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVu
dCkKLSAgICAgICAgICAgIDogZWxlbWVudCgmc2xvdEVsZW1lbnQpCisgICAgICAgIFNsb3QoKSB7
IH0KKyAgICAgICAgU2xvdChXZWFrUHRyPEhUTUxTbG90RWxlbWVudD4mJiBzbG90RWxlbWVudCkK
KyAgICAgICAgICAgIDogZWxlbWVudChXVEZNb3ZlKHNsb3RFbGVtZW50KSkKICAgICAgICAgICAg
ICwgZWxlbWVudENvdW50KDEpCiAgICAgICAgIHsgfQogCkBAIC03MywyMCArNzQsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBoYXNEdXBsaWNhdGVkU2xvdEVsZW1lbnRzKCkgeyByZXR1cm4g
ZWxlbWVudENvdW50ID4gMTsgfQogICAgICAgICBib29sIHNob3VsZFJlc29sdmVTbG90RWxlbWVu
dCgpIHsgcmV0dXJuICFlbGVtZW50ICYmIGVsZW1lbnRDb3VudDsgfQogCi0gICAgICAgIEhUTUxT
bG90RWxlbWVudCogZWxlbWVudCB7IG51bGxwdHIgfTsKKyAgICAgICAgV2Vha1B0cjxIVE1MU2xv
dEVsZW1lbnQ+IGVsZW1lbnQ7CiAgICAgICAgIHVuc2lnbmVkIGVsZW1lbnRDb3VudCB7IDAgfTsK
ICAgICAgICAgVmVjdG9yPE5vZGUqPiBhc3NpZ25lZE5vZGVzOwogICAgIH07CiAgICAgCiAgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lRm9ySG9zdENoaWxkKGNvbnN0IE5v
ZGUmKSBjb25zdDsKIAotICAgIEhUTUxTbG90RWxlbWVudCogZmluZEZpcnN0U2xvdEVsZW1lbnQo
U2xvdEluZm8mLCBTaGFkb3dSb290Jik7CisgICAgSFRNTFNsb3RFbGVtZW50KiBmaW5kRmlyc3RT
bG90RWxlbWVudChTbG90JiwgU2hhZG93Um9vdCYpOwogICAgIHZvaWQgcmVzb2x2ZUFsbFNsb3RF
bGVtZW50cyhTaGFkb3dSb290Jik7CiAKICAgICB2b2lkIGFzc2lnblNsb3RzKFNoYWRvd1Jvb3Qm
KTsKICAgICB2b2lkIGFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbWljU3RyaW5n
JiBzbG90TmFtZSk7CiAKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgc3RkOjp1bmlxdWVfcHRy
PFNsb3RJbmZvPj4gbV9zbG90czsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgc3RkOjp1bmlx
dWVfcHRyPFNsb3Q+PiBtX3Nsb3RzOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIEhhc2hTZXQ8SFRN
TFNsb3RFbGVtZW50Kj4gbV9zbG90RWxlbWVudHNGb3JDb25zaXN0ZW5jeUNoZWNrOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oCShyZXZpc2lvbiAyMzU0NTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFNsb3RFbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKK2NsYXNzIEhUTUxTbG90RWxlbWVudCBm
aW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPEhUTUxTbG90
RWxlbWVudD4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTFNsb3RFbGVtZW50KTsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxTbG90RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348427</attachid>
            <date>2018-08-29 13:40:09 -0700</date>
            <delta_ts>2018-08-29 13:40:37 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189075-20180829134008.patch</filename>
            <type>text/plain</type>
            <size>10982</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE4LTA4LTI5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6ZSBTbG90QXNzaWdu
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
MDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgTW9k
ZXJuaXplZCB0aGUgY29kZSByZWxhdGVkIHRvIFNsb3RBc3NpZ25tZW50LiBOYW1lbHksIHVzZSBI
YXNoTWFwPD46OmdldCBpbnN0ZWFkIG9mIEhhc2hNYXA8Pjo6ZmluZCwKKyAgICAgICAgYW5kIHVz
ZSBIYXNoTWFwPD46OmVuc3VyZSBpbnN0ZWFkIG9mIEhhc2hNYXA8Pjo6YWRkLiBBbHNvIHVzZSBX
ZWFrUHRyIHRvIGtlZXAgdHJhY2sgb2YgSFRNTFNsb3RFbGVtZW50CisgICAgICAgIGluc3RlYWQg
b2YgYSByYXcgcG9pbnRlci4KKworICAgICAgICAqIGRvbS9TbG90QXNzaWdubWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6ZmluZEFzc2lnbmVkU2xvdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OnJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpkaWRDaGFuZ2VTbG90KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpmaW5kRmlyc3RTbG90RWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6cmVzb2x2ZUFsbFNsb3RFbGVtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6YXNzaWduVG9TbG90KToKKyAgICAgICAg
KiBkb20vU2xvdEFzc2lnbm1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50
OjpTbG90OjpTbG90KTogUmVuYW1lZCBmcm9tIFNsb3RJbmZvIHNpbmNlICJJbmZvIiBkb2Vzbid0
IGFkZCBhbnkgdmFsdWUuCisgICAgICAgICogaHRtbC9IVE1MU2xvdEVsZW1lbnQuaDoKKwogMjAx
OC0wOC0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggY3Jhc2ggd2hlbiByZWZsZWN0aW9ucyBhbmQgYmFja2Ryb3AgZmlsdGVyIGFyZSBjb21i
aW5lZApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCShyZXZpc2lvbiAy
MzU0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NywxMiArNTcsMTEgQEAgSFRNTFNsb3RFbGVtZW50KiBTbG90QXNzaWdubWVu
dDo6ZmluZEFzcwogICAgIGlmICghaXM8VGV4dD4obm9kZSkgJiYgIWlzPEVsZW1lbnQ+KG5vZGUp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc2xvdE5hbWUgPSBzbG90TmFt
ZUZvckhvc3RDaGlsZChub2RlKTsKLSAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKHNsb3ROYW1l
KTsKLSAgICBpZiAoaXQgPT0gbV9zbG90cy5lbmQoKSkKKyAgICBhdXRvKiBzbG90ID0gbV9zbG90
cy5nZXQoc2xvdE5hbWVGb3JIb3N0Q2hpbGQobm9kZSkpOworICAgIGlmICghc2xvdCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gZmluZEZpcnN0U2xvdEVsZW1lbnQoKml0
LT52YWx1ZSwgc2hhZG93Um9vdCk7CisgICAgcmV0dXJuIGZpbmRGaXJzdFNsb3RFbGVtZW50KCpz
bG90LCBzaGFkb3dSb290KTsKIH0KIAogdm9pZCBTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1l
bnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RF
bGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQpAQCAtNzYsMjUgKzc1LDI1IEBAIHZvaWQg
U2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW0KICAgICBzaGFkb3dSb290Lmhvc3Qo
KS0+aW52YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9yU3VidHJlZSgpOwogCiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBzbG90TmFtZSA9IHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKG5hbWUp
OwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zbG90cy5hZGQoc2xvdE5hbWUsIHN0ZDo6dW5pcXVl
X3B0cjxTbG90SW5mbz4oKSk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RJbmZv
PihzbG90RWxlbWVudCk7Ci0gICAgICAgIGlmIChzbG90TmFtZSA9PSBkZWZhdWx0U2xvdE5hbWUo
KSkgLy8gQmVjYXVzZSBhc3NpZ25TbG90cyBkb2Vzbid0IGNvbGxlY3Qgbm9kZXMgYXNzaWduZWQg
dG8gdGhlIGRlZmF1bHQgc2xvdCBhcyBhbiBvcHRpbXphdGlvbi4KKyAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fc2xvdHMuZW5zdXJlKHNsb3ROYW1lLCBbJl0geworICAgICAgICAvLyBVbmxpa2UgbmFt
ZWQgc2xvdHMsIGFzc2lnblNsb3RzIGRvZXNuJ3QgY29sbGVjdCBub2RlcyBhc3NpZ25lZCB0byB0
aGUgZGVmYXVsdCBzbG90CisgICAgICAgIC8vIHRvIGF2b2lkIGFsd2F5cyBoYXZpbmcgYSB2ZWN0
b3Igb2YgYWxsIGNoaWxkIG5vZGVzIG9mIGEgc2hhZG93IGhvc3QuCisgICAgICAgIGlmIChzbG90
TmFtZSA9PSBkZWZhdWx0U2xvdE5hbWUoKSkKICAgICAgICAgICAgIG1fc2xvdEFzc2lnbm1lbnRz
SXNWYWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgYXV0byYgc2xv
dEluZm8gPSAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8U2xvdD4oKTsKKyAgICB9KTsKIAotICAgIGlmICghc2xvdEluZm8uaGFzU2xv
dEVsZW1lbnRzKCkpCi0gICAgICAgIHNsb3RJbmZvLmVsZW1lbnQgPSAmc2xvdEVsZW1lbnQ7Cisg
ICAgYXV0byYgc2xvdCA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgIGlmICghc2xv
dC5oYXNTbG90RWxlbWVudHMoKSkKKyAgICAgICAgc2xvdC5lbGVtZW50ID0gbWFrZVdlYWtQdHIo
c2xvdEVsZW1lbnQpOwogICAgIGVsc2UgewotICAgICAgICBzbG90SW5mby5lbGVtZW50ID0gbnVs
bHB0cjsKKyAgICAgICAgc2xvdC5lbGVtZW50ID0gbnVsbHB0cjsKICNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgIG1fbmVlZHNUb1Jlc29sdmVTbG90RWxlbWVudHMgPSB0cnVlOwogI2VuZGlmCiAgICAg
fQotICAgIHNsb3RJbmZvLmVsZW1lbnRDb3VudCsrOworICAgIHNsb3QuZWxlbWVudENvdW50Kys7
CiB9CiAKIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgU2hhZG93
Um9vdCYgc2hhZG93Um9vdCkKQEAgLTEwNywyMCArMTA2LDE3IEBAIHZvaWQgU2xvdEFzc2lnbm1l
bnQ6OnJlbW92ZVNsb3RFbGVtZW50QnkKICAgICBpZiAoYXV0byogaG9zdCA9IHNoYWRvd1Jvb3Qu
aG9zdCgpKSAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gYSB0YXJnZXRlZCByZWNv
bnN0cnVjdGlvbi4KICAgICAgICAgaG9zdC0+aW52YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9y
U3VidHJlZSgpOwogCi0gICAgYXV0byBpdCA9IG1fc2xvdHMuZmluZChzbG90TmFtZUZyb21BdHRy
aWJ1dGVWYWx1ZShuYW1lKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoaXQgIT0gbV9zbG90cy5lbmQo
KSk7Ci0KLSAgICBhdXRvJiBzbG90SW5mbyA9ICppdC0+dmFsdWU7Ci0gICAgUkVMRUFTRV9BU1NF
UlQoc2xvdEluZm8uaGFzU2xvdEVsZW1lbnRzKCkpOworICAgIGF1dG8qIHNsb3QgPSBtX3Nsb3Rz
LmdldChzbG90TmFtZUZyb21BdHRyaWJ1dGVWYWx1ZShuYW1lKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoc2xvdCAmJiBzbG90LT5oYXNTbG90RWxlbWVudHMoKSk7CiAKLSAgICBzbG90SW5mby5lbGVt
ZW50Q291bnQtLTsKLSAgICBpZiAoc2xvdEluZm8uZWxlbWVudCA9PSAmc2xvdEVsZW1lbnQpIHsK
LSAgICAgICAgc2xvdEluZm8uZWxlbWVudCA9IG51bGxwdHI7CisgICAgc2xvdC0+ZWxlbWVudENv
dW50LS07CisgICAgaWYgKHNsb3QtPmVsZW1lbnQgPT0gJnNsb3RFbGVtZW50KSB7CisgICAgICAg
IHNsb3QtPmVsZW1lbnQgPSBudWxscHRyOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9uZWVk
c1RvUmVzb2x2ZVNsb3RFbGVtZW50cyA9IHRydWU7CiAjZW5kaWYKICAgICB9Ci0gICAgQVNTRVJU
KHNsb3RJbmZvLmVsZW1lbnQgfHwgbV9uZWVkc1RvUmVzb2x2ZVNsb3RFbGVtZW50cyk7CisgICAg
QVNTRVJUKHNsb3QtPmVsZW1lbnQgfHwgbV9uZWVkc1RvUmVzb2x2ZVNsb3RFbGVtZW50cyk7CiB9
CiAKIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OnNsb3RGYWxsYmFja0RpZENoYW5nZShIVE1MU2xvdEVs
ZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQpAQCAtMTM2LDE0ICsx
MzIsMTQgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6c2xvdEZhbGxiYWNrRGlkQ2hhbgogdm9pZCBT
bG90QXNzaWdubWVudDo6ZGlkQ2hhbmdlU2xvdChjb25zdCBBdG9taWNTdHJpbmcmIHNsb3RBdHRy
VmFsdWUsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CiAgICAgYXV0byYgc2xvdE5hbWUgPSBz
bG90TmFtZUZyb21BdHRyaWJ1dGVWYWx1ZShzbG90QXR0clZhbHVlKTsKLSAgICBhdXRvIGl0ID0g
bV9zbG90cy5maW5kKHNsb3ROYW1lKTsKLSAgICBpZiAoaXQgPT0gbV9zbG90cy5lbmQoKSkKKyAg
ICBhdXRvKiBzbG90ID0gbV9zbG90cy5nZXQoc2xvdE5hbWUpOworICAgIGlmICghc2xvdCkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIGl0LT52YWx1ZS0+YXNzaWduZWROb2Rlcy5jbGVhcigp
OworICAgIHNsb3QtPmFzc2lnbmVkTm9kZXMuY2xlYXIoKTsKICAgICBtX3Nsb3RBc3NpZ25tZW50
c0lzVmFsaWQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxIVE1MU2xvdEVsZW1lbnQ+IHNsb3RFbGVt
ZW50ID0gZmluZEZpcnN0U2xvdEVsZW1lbnQoKml0LT52YWx1ZSwgc2hhZG93Um9vdCk7CisgICAg
YXV0byBzbG90RWxlbWVudCA9IG1ha2VSZWZQdHIoZmluZEZpcnN0U2xvdEVsZW1lbnQoKnNsb3Qs
IHNoYWRvd1Jvb3QpKTsKICAgICBpZiAoIXNsb3RFbGVtZW50KQogICAgICAgICByZXR1cm47CiAK
QEAgLTE2NCwyMSArMTYwLDIwIEBAIGNvbnN0IFZlY3RvcjxOb2RlKj4qIFNsb3RBc3NpZ25tZW50
Ojphc3MKIHsKICAgICBBU1NFUlQoc2xvdEVsZW1lbnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKSA9
PSAmc2hhZG93Um9vdCk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzbG90TmFtZSA9IHNsb3RO
YW1lRnJvbUF0dHJpYnV0ZVZhbHVlKHNsb3RFbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24obmFtZUF0dHIpKTsKLSAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKHNsb3ROYW1l
KTsKLSAgICBSRUxFQVNFX0FTU0VSVChpdCAhPSBtX3Nsb3RzLmVuZCgpKTsKKyAgICBhdXRvKiBz
bG90ID0gbV9zbG90cy5nZXQoc2xvdE5hbWUpOworICAgIFJFTEVBU0VfQVNTRVJUKHNsb3QpOwog
Ci0gICAgYXV0byYgc2xvdEluZm8gPSAqaXQtPnZhbHVlOwogICAgIGlmICghbV9zbG90QXNzaWdu
bWVudHNJc1ZhbGlkKQogICAgICAgICBhc3NpZ25TbG90cyhzaGFkb3dSb290KTsKIAotICAgIGlm
ICghc2xvdEluZm8uYXNzaWduZWROb2Rlcy5zaXplKCkpCisgICAgaWYgKHNsb3QtPmFzc2lnbmVk
Tm9kZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVBU0Vf
QVNTRVJUKHNsb3RJbmZvLmhhc1Nsb3RFbGVtZW50cygpKTsKLSAgICBpZiAoc2xvdEluZm8uaGFz
RHVwbGljYXRlZFNsb3RFbGVtZW50cygpICYmIGZpbmRGaXJzdFNsb3RFbGVtZW50KHNsb3RJbmZv
LCBzaGFkb3dSb290KSAhPSAmc2xvdEVsZW1lbnQpCisgICAgUkVMRUFTRV9BU1NFUlQoc2xvdC0+
aGFzU2xvdEVsZW1lbnRzKCkpOworICAgIGlmIChzbG90LT5oYXNEdXBsaWNhdGVkU2xvdEVsZW1l
bnRzKCkgJiYgZmluZEZpcnN0U2xvdEVsZW1lbnQoKnNsb3QsIHNoYWRvd1Jvb3QpICE9ICZzbG90
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gJnNsb3RJbmZv
LmFzc2lnbmVkTm9kZXM7CisgICAgcmV0dXJuICZzbG90LT5hc3NpZ25lZE5vZGVzOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIFNsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChj
b25zdCBOb2RlJiBjaGlsZCkgY29uc3QKQEAgLTE4NiwxNyArMTgxLDE3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgU2xvdEFzc2lnbm1lbnQ6OnNsb3QKICAgICByZXR1cm4gc2xvdE5hbWVGcm9tU2xv
dEF0dHJpYnV0ZShjaGlsZCk7CiB9CiAKLUhUTUxTbG90RWxlbWVudCogU2xvdEFzc2lnbm1lbnQ6
OmZpbmRGaXJzdFNsb3RFbGVtZW50KFNsb3RJbmZvJiBzbG90SW5mbywgU2hhZG93Um9vdCYgc2hh
ZG93Um9vdCkKK0hUTUxTbG90RWxlbWVudCogU2xvdEFzc2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RF
bGVtZW50KFNsb3QmIHNsb3QsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7Ci0gICAgaWYgKHNs
b3RJbmZvLnNob3VsZFJlc29sdmVTbG90RWxlbWVudCgpKQorICAgIGlmIChzbG90LnNob3VsZFJl
c29sdmVTbG90RWxlbWVudCgpKQogICAgICAgICByZXNvbHZlQWxsU2xvdEVsZW1lbnRzKHNoYWRv
d1Jvb3QpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVCghc2xvdEluZm8uZWxlbWVudCB8
fCBtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2suY29udGFpbnMoc2xvdEluZm8uZWxl
bWVudCkpOwotICAgIEFTU0VSVCghIXNsb3RJbmZvLmVsZW1lbnQgPT0gISFzbG90SW5mby5lbGVt
ZW50Q291bnQpOworICAgIEFTU0VSVCghc2xvdC5lbGVtZW50IHx8IG1fc2xvdEVsZW1lbnRzRm9y
Q29uc2lzdGVuY3lDaGVjay5jb250YWlucyhzbG90LmVsZW1lbnQuZ2V0KCkpKTsKKyAgICBBU1NF
UlQoISFzbG90LmVsZW1lbnQgPT0gISFzbG90LmVsZW1lbnRDb3VudCk7CiAjZW5kaWYKIAotICAg
IHJldHVybiBzbG90SW5mby5lbGVtZW50OworICAgIHJldHVybiBzbG90LmVsZW1lbnQuZ2V0KCk7
CiB9CiAKIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJlc29sdmVBbGxTbG90RWxlbWVudHMoU2hhZG93
Um9vdCYgc2hhZG93Um9vdCkKQEAgLTIxNCwxNSArMjA5LDE0IEBAIHZvaWQgU2xvdEFzc2lnbm1l
bnQ6OnJlc29sdmVBbGxTbG90RWxlbWUKICAgICBmb3IgKGF1dG8mIHNsb3RFbGVtZW50IDogZGVz
Y2VuZGFudHNPZlR5cGU8SFRNTFNsb3RFbGVtZW50PihzaGFkb3dSb290KSkgewogICAgICAgICBh
dXRvJiBzbG90TmFtZSA9IHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKHNsb3RFbGVtZW50LmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIpKTsKIAotICAgICAgICBhdXRv
IGl0ID0gbV9zbG90cy5maW5kKHNsb3ROYW1lKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXQg
IT0gbV9zbG90cy5lbmQoKSk7CisgICAgICAgIGF1dG8qIHNsb3QgPSBtX3Nsb3RzLmdldChzbG90
TmFtZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNsb3QpOyAvLyBzbG90IG11c3QgaGF2ZSBi
ZWVuIGNyZWF0ZWQgd2hlbiBhIHNsb3Qgd2FzIGluc2VydGVkLgogCi0gICAgICAgIFNsb3RJbmZv
JiBzbG90SW5mbyA9ICppdC0+dmFsdWU7Ci0gICAgICAgIGJvb2wgaGFzU2VlblNsb3RXaXRoU2Ft
ZU5hbWUgPSAhIXNsb3RJbmZvLmVsZW1lbnQ7CisgICAgICAgIGJvb2wgaGFzU2VlblNsb3RXaXRo
U2FtZU5hbWUgPSAhIXNsb3QtPmVsZW1lbnQ7CiAgICAgICAgIGlmIChoYXNTZWVuU2xvdFdpdGhT
YW1lTmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHNsb3RJbmZvLmVsZW1l
bnQgPSAmc2xvdEVsZW1lbnQ7CisgICAgICAgIHNsb3QtPmVsZW1lbnQgPSBtYWtlV2Vha1B0cihz
bG90RWxlbWVudCk7CiAgICAgICAgIHNsb3RDb3VudC0tOwogICAgICAgICBpZiAoIXNsb3RDb3Vu
dCkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU5LDcgKzI1Myw5IEBAIHZvaWQgU2xvdEFzc2ln
bm1lbnQ6OmFzc2lnblRvU2xvdChOb2RlJiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9zbG90cy5hZGQoc2xvdE5hbWUsIHN0ZDo6bWFrZV91bmlxdWU8
U2xvdEluZm8+KCkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zbG90cy5lbnN1cmUoc2xvdE5h
bWUsIFtdIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2xvdD4oKTsKKyAgICB9
KTsKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hc3NpZ25lZE5vZGVzLmFwcGVuZCgm
Y2hpbGQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAkocmV2aXNp
b24gMjM1NDc2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCkBAIC02MSwzMyArNjIsMjkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNvbnN0
IEVsZW1lbnQmLCBTaGFkb3dSb290Jik7CiAKIHByaXZhdGU6Ci0gICAgc3RydWN0IFNsb3RJbmZv
IHsKKyAgICBzdHJ1Y3QgU2xvdCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKLSAgICAgICAgU2xvdEluZm8oKSB7IH0KLSAgICAgICAgU2xvdEluZm8oSFRN
TFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCkKLSAgICAgICAgICAgIDogZWxlbWVudCgmc2xvdEVs
ZW1lbnQpCi0gICAgICAgICAgICAsIGVsZW1lbnRDb3VudCgxKQotICAgICAgICB7IH0KKyAgICAg
ICAgU2xvdCgpIHsgfQogCiAgICAgICAgIGJvb2wgaGFzU2xvdEVsZW1lbnRzKCkgeyByZXR1cm4g
ISFlbGVtZW50Q291bnQ7IH0KICAgICAgICAgYm9vbCBoYXNEdXBsaWNhdGVkU2xvdEVsZW1lbnRz
KCkgeyByZXR1cm4gZWxlbWVudENvdW50ID4gMTsgfQogICAgICAgICBib29sIHNob3VsZFJlc29s
dmVTbG90RWxlbWVudCgpIHsgcmV0dXJuICFlbGVtZW50ICYmIGVsZW1lbnRDb3VudDsgfQogCi0g
ICAgICAgIEhUTUxTbG90RWxlbWVudCogZWxlbWVudCB7IG51bGxwdHIgfTsKKyAgICAgICAgV2Vh
a1B0cjxIVE1MU2xvdEVsZW1lbnQ+IGVsZW1lbnQ7CiAgICAgICAgIHVuc2lnbmVkIGVsZW1lbnRD
b3VudCB7IDAgfTsKICAgICAgICAgVmVjdG9yPE5vZGUqPiBhc3NpZ25lZE5vZGVzOwogICAgIH07
CiAgICAgCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lRm9ySG9zdENo
aWxkKGNvbnN0IE5vZGUmKSBjb25zdDsKIAotICAgIEhUTUxTbG90RWxlbWVudCogZmluZEZpcnN0
U2xvdEVsZW1lbnQoU2xvdEluZm8mLCBTaGFkb3dSb290Jik7CisgICAgSFRNTFNsb3RFbGVtZW50
KiBmaW5kRmlyc3RTbG90RWxlbWVudChTbG90JiwgU2hhZG93Um9vdCYpOwogICAgIHZvaWQgcmVz
b2x2ZUFsbFNsb3RFbGVtZW50cyhTaGFkb3dSb290Jik7CiAKICAgICB2b2lkIGFzc2lnblNsb3Rz
KFNoYWRvd1Jvb3QmKTsKICAgICB2b2lkIGFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzbG90TmFtZSk7CiAKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3RJbmZvPj4gbV9zbG90czsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFNsb3Q+PiBtX3Nsb3RzOwogCiAjaWZuZGVmIE5ERUJVRwogICAg
IEhhc2hTZXQ8SFRNTFNsb3RFbGVtZW50Kj4gbV9zbG90RWxlbWVudHNGb3JDb25zaXN0ZW5jeUNo
ZWNrOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oCShyZXZpc2lvbiAy
MzU0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SFRNTFNsb3RFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKK2NsYXNzIEhUTUxT
bG90RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIENhbk1ha2VXZWFr
UHRyPEhUTUxTbG90RWxlbWVudD4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTFNs
b3RFbGVtZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxTbG90RWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>