<?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>164096</bug_id>
          
          <creation_ts>2016-10-27 16:57:20 -0700</creation_ts>
          <short_desc>[DOM] Add JSEventType</short_desc>
          <delta_ts>2016-10-28 11:31:39 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>164137</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1245347</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-27 16:57:20 -0700</bug_when>
    <thetext>I&apos;ve found that Event is frequently touched in Speedometer. And I think it is frequently touched in the real Web.
But, if you touch the accessors of Event interface, you always need to perform jsDynamicCast&lt;Event*&gt;.
It is costly because the typical event instance is not direct instance of the Event class. For example,

MouseEvent -&gt; UIEvent -&gt; Event

Event resides in higher position in the hierarchy. But it has many accessors and they are used (currentTarget, type, target etc.)
So it&apos;s worth introducing JSEventType (similar to JSDocumentWrapperType) and jsEventCast.

Current my policy is, &quot;If the jsDynamicCast&lt;XXX&gt;() is so frequently called and it always walks many classes, we should consider introducing some JSType.&quot;.
For example, CanvasWebGLContext thing does not require it because jsDynamicCast&lt;....Context&gt;() typically succeeds with the first ClassInfo.
But it is not for Event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245366</commentid>
    <comment_count>1</comment_count>
      <attachid>293086</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-27 17:29:45 -0700</bug_when>
    <thetext>Created attachment 293086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245370</commentid>
    <comment_count>2</comment_count>
      <attachid>293089</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-27 17:37:27 -0700</bug_when>
    <thetext>Created attachment 293089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245373</commentid>
    <comment_count>3</comment_count>
      <attachid>293091</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-27 17:44:23 -0700</bug_when>
    <thetext>Created attachment 293091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245377</commentid>
    <comment_count>4</comment_count>
      <attachid>293092</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-27 18:01:48 -0700</bug_when>
    <thetext>Created attachment 293092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245426</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-27 20:59:46 -0700</bug_when>
    <thetext>Committed r208028: &lt;http://trac.webkit.org/changeset/208028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245664</commentid>
    <comment_count>6</comment_count>
      <attachid>293092</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-28 11:00:11 -0700</bug_when>
    <thetext>Comment on attachment 293092
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2531
&gt;      return &quot;jsElementCast&quot; if $interfaceName eq &quot;Element&quot;;
&gt;      return &quot;jsDocumentCast&quot; if $interfaceName eq &quot;Document&quot;;
&gt;      return &quot;jsEventTargetCast&quot; if $interfaceName eq &quot;EventTarget&quot;;
&gt; +    return &quot;jsEventCast&quot; if $interfaceName eq &quot;Event&quot;;
&gt;      return &quot;jsDynamicCast&lt;JS$interfaceName*&gt;&quot;;

I think we should consider putting all these optimizations into specializations of the jsDynamicCast function. Then we can remove all these special cases from the code generator, and programmers can’t ever make the mistake of using the slow version by accident.

Any reason not to do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245674</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-28 11:23:15 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 293092 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=293092&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2531
&gt; &gt;      return &quot;jsElementCast&quot; if $interfaceName eq &quot;Element&quot;;
&gt; &gt;      return &quot;jsDocumentCast&quot; if $interfaceName eq &quot;Document&quot;;
&gt; &gt;      return &quot;jsEventTargetCast&quot; if $interfaceName eq &quot;EventTarget&quot;;
&gt; &gt; +    return &quot;jsEventCast&quot; if $interfaceName eq &quot;Event&quot;;
&gt; &gt;      return &quot;jsDynamicCast&lt;JS$interfaceName*&gt;&quot;;
&gt; 
&gt; I think we should consider putting all these optimizations into
&gt; specializations of the jsDynamicCast function. Then we can remove all these
&gt; special cases from the code generator, and programmers can’t ever make the
&gt; mistake of using the slow version by accident.
&gt; 
&gt; Any reason not to do that?

Definitely we should do that.
One concern is that we have a bad time if we forget to include the header that specializes jsDynamicCast.
It is serious because it will not cause any compile errors but will cause performance regression.

I think we should add a helper function in WebCore, like the following.

template&lt;typename To, typename From&gt;
ALWAYS_INLINE To jsDowncast(From from)
{
    return jsDynamicCast&lt;To&gt;(from);
}

template&lt;&gt;
template&lt;typename From&gt;
ALWAYS_INLINE jsDowncast&lt;Node*&gt;(From from)
{
    return jsNodeCast(from);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245680</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-28 11:31:39 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Comment on attachment 293092 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=293092&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2531
&gt; &gt; &gt;      return &quot;jsElementCast&quot; if $interfaceName eq &quot;Element&quot;;
&gt; &gt; &gt;      return &quot;jsDocumentCast&quot; if $interfaceName eq &quot;Document&quot;;
&gt; &gt; &gt;      return &quot;jsEventTargetCast&quot; if $interfaceName eq &quot;EventTarget&quot;;
&gt; &gt; &gt; +    return &quot;jsEventCast&quot; if $interfaceName eq &quot;Event&quot;;
&gt; &gt; &gt;      return &quot;jsDynamicCast&lt;JS$interfaceName*&gt;&quot;;
&gt; &gt; 
&gt; &gt; I think we should consider putting all these optimizations into
&gt; &gt; specializations of the jsDynamicCast function. Then we can remove all these
&gt; &gt; special cases from the code generator, and programmers can’t ever make the
&gt; &gt; mistake of using the slow version by accident.
&gt; &gt; 
&gt; &gt; Any reason not to do that?
&gt; 
&gt; Definitely we should do that.
&gt; One concern is that we have a bad time if we forget to include the header
&gt; that specializes jsDynamicCast.
&gt; It is serious because it will not cause any compile errors but will cause
&gt; performance regression.
&gt; 
&gt; I think we should add a helper function in WebCore, like the following.
&gt; 
&gt; template&lt;typename To, typename From&gt;
&gt; ALWAYS_INLINE To jsDowncast(From from)
&gt; {
&gt;     return jsDynamicCast&lt;To&gt;(from);
&gt; }
&gt; 
&gt; template&lt;&gt;
&gt; template&lt;typename From&gt;
&gt; ALWAYS_INLINE jsDowncast&lt;Node*&gt;(From from)
&gt; {
&gt;     return jsNodeCast(from);
&gt; }

I&apos;ve opened the issue. https://bugs.webkit.org/show_bug.cgi?id=164137
And soon I&apos;ll upload the patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293086</attachid>
            <date>2016-10-27 17:29:45 -0700</date>
            <delta_ts>2016-10-27 17:37:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164096-20161027172556.patch</filename>
            <type>text/plain</type>
            <size>9418</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDllODFmMjI4MWM3NWYw
YjcyMTE3OTI5ODJiNGNhNTg1OTJlMTk3Zi4uN2RmMmQ5YjFkNGY5ZjAxMGI3YjQ2OTRjYzRhNDAw
NGE5Zjk4Yzg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTEwLTI3ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01dIEFkZCBK
U0V2ZW50VHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY0MDk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRXZlbnQgaXMgaW5oZXJpdGVkIGJ5IG1hbnkgRXZlbnQgY2xhc3Nlcy4gQnV0LCBFdmVudCdz
IGFjY2Vzc29ycyBhbmQgaW50ZXJmYWNlcyBhcmUKKyAgICAgICAgZnJlcXVlbnRseSBjYWxsZWQu
IEZvciBleGFtcGxlLCBldmVudC57dHlwZSwgdGFyZ2V0LCBzcmNFbGVtZW50fSBmb3IgYWNjZXNz
b3JzLiBBbmQKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgYW5kIGV2ZW50LnByZXZl
bnREZWZhdWx0KCkgZnVuY3Rpb25zLgorCisgICAgICAgIEhvd2V2ZXIsIHNpbmNlIHRoZSB1c2Vy
LXZpc2libGUgZXZlbnQgaW5zdGFuY2UgaXMgdHlwaWNhbGx5IHRoZSBpbnN0YW5jZSBvZiB0aGUg
c3ViY2xhc3MsCisgICAgICAgIGpzRHluYW1pY0Nhc3Q8SlNFdmVudCo+KCkgd2Fsa3Mgc2V2ZXJh
bCBjbGFzc2VzIGJlZm9yZSBpdCBzdWNjZWVkcy4gSXQgaXMgY29zdGx5LgorCisgICAgICAgIElu
IHRoaXMgcGF0Y2gsIHdlIGFkZCBhIG5ldyBXZWJDb3JlIEpTVHlwZSBKU0V2ZW50VHlwZSBmb3Ig
SlNFdmVudCBhbmQgYWRkIGEgbmV3CisgICAgICAgIGZ1bmN0aW9uIGpzRXZlbnRDYXN0LiBUaGF0
IHN1cHBvcnRzIGEgc3VwZXIgZmFzdCBjYXN0IG9wZXJhdGlvbi4gQW5kIGl0IHBhdmVzIHRoZSB3
YXkKKyAgICAgICAgZm9yIGltcGxlbWVudGluZyBET00gYWNjZXNzb3JzIG9mIEV2ZW50IGluIERP
TUpJVC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpq
c0V2ZW50Q2FzdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChHZXRKU1R5cGVGb3JOb2RlKToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKyAgICAgICAgKEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KToKKyAgICAgICAgKiBk
b20vRXZlbnQuaWRsOgorICAgICAgICAqIGRvbWppdC9ET01KSVRIZWxwZXJzLmg6CisgICAgICAg
IChXZWJDb3JlOjpET01KSVQ6OmJyYW5jaElmRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
SklUOjpicmFuY2hJZk5vdEV2ZW50KToKKwogMjAxNi0xMC0yNyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0ICJpbnNlcnRGcm9tRHJvcCIg
YW5kICJkZWxldGVCeURyYWciIGZvciB0aGUgSW5wdXRFdmVudCBzcGVjCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IDMxOWM3NzViZGNiYzBhNWQ4NjZmODNj
NDUxMGViNjE1ZGYzOGVlZjIuLjM4NTI5YmI2MWZkNDUyNWJiOTc1NThiYThkZjNjN2RkZTEzYjc1
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC0zMCwx
MyArMzAsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSlNET01XaW5kb3c7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi0vLyBXZSBlbmNvZGUgTm9kZSB0eXBlIGludG8g
SlNUeXBlLiBUaGUgZm9ybWF0IGlzIHRoZSBmb2xsb3dpbmcuCi0vLyBvZmZzZXQgfCA3IHwgNiA1
IDQgfCAzIDIgMSAwICB8Ci0vLyB2YWx1ZSAgfCAxIHwgS2luZCAgfCBOb2RlVHlwZSB8CisvLyBK
U0MgYWxsb3dzIHVzIHRvIGV4dGVuZCBKU1R5cGUuIElmIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQs
IHdlIGNhbiBhZGQgYW55IE9iamVjdCB0eXBlcyBhbmQgdGhleSBhcmUKKy8vIHJlY29nbml6ZWQg
YXMgT3RoZXJPYmogaW4gSlNDLiBBbmQgd2UgZW5jb2RlIE5vZGUgdHlwZSBpbnRvIEpTVHlwZSBp
ZiB0aGUgZ2l2ZW4gSlNUeXBlIGlzIHN1YmNsYXNzIG9mIE5vZGUuCisvLyBvZmZzZXQgfCA3IHwg
NiB8IDUgICA0IHwgMyAgIDIgICAxICAgMCAgfAorLy8gdmFsdWUgIHwgMSB8IDAgfCAgTm9uLW5v
ZGUgRE9NIHR5cGVzICAgIHwKKy8vIElmIHRoZSBnaXZlbiBKU1R5cGUgaXMgYSBzdWJjbGFzcyBv
ZiBOb2RlLCB0aGUgZm9ybWF0IGlzIHRoZSBmb2xsb3dpbmcuCisvLyBvZmZzZXQgfCA3IHwgNiB8
IDUgICA0IHwgMyAgIDIgICAxICAgMCAgfAorLy8gdmFsdWUgIHwgMSB8IDEgfCAgS2luZCB8ICAg
ICAgIE5vZGVUeXBlIHwKIHN0YXRpYyBjb25zdCB1aW50OF90IEpTTm9kZVR5cGVNYXNrICAgICAg
ICAgICAgICAgICAgPSAwYjAwMDAxMTExOwogCiBzdGF0aWMgY29uc3QgdWludDhfdCBKU0RPTVdy
YXBwZXJUeXBlICAgICAgICAgICAgICAgID0gMGIxMDAwMDAwMDsKLXN0YXRpYyBjb25zdCB1aW50
OF90IEpTTm9kZVR5cGUgICAgICAgICAgICAgICAgICAgICAgPSAwYjEwMDEwMDAwOworc3RhdGlj
IGNvbnN0IHVpbnQ4X3QgSlNFdmVudFR5cGUgICAgICAgICAgICAgICAgICAgICA9IDBiMTAwMDAw
MDE7CitzdGF0aWMgY29uc3QgdWludDhfdCBKU05vZGVUeXBlICAgICAgICAgICAgICAgICAgICAg
ID0gMGIxMTAwMDAwMDsKIHN0YXRpYyBjb25zdCB1aW50OF90IEpTVGV4dE5vZGVUeXBlICAgICAg
ICAgICAgICAgICAgPSBKU05vZGVUeXBlIHwgTm9kZUNvbnN0YW50czo6VEVYVF9OT0RFOwogc3Rh
dGljIGNvbnN0IHVpbnQ4X3QgSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25Ob2RlVHlwZSA9IEpTTm9k
ZVR5cGUgfCBOb2RlQ29uc3RhbnRzOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU7CiBzdGF0
aWMgY29uc3QgdWludDhfdCBKU0RvY3VtZW50VHlwZU5vZGVUeXBlICAgICAgICAgID0gSlNOb2Rl
VHlwZSB8IE5vZGVDb25zdGFudHM6OkRPQ1VNRU5UX1RZUEVfTk9ERTsKQEAgLTQ1LDcgKzUwLDcg
QEAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNEb2N1bWVudFdyYXBwZXJUeXBlICAgICAgICAgICA9
IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnQKIHN0YXRpYyBjb25zdCB1aW50OF90IEpTQ29tbWVu
dE5vZGVUeXBlICAgICAgICAgICAgICAgPSBKU05vZGVUeXBlIHwgTm9kZUNvbnN0YW50czo6Q09N
TUVOVF9OT0RFOwogc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNDREFUQVNlY3Rpb25Ob2RlVHlwZSAg
ICAgICAgICA9IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnRzOjpDREFUQV9TRUNUSU9OX05PREU7
CiBzdGF0aWMgY29uc3QgdWludDhfdCBKU0F0dHJOb2RlVHlwZSAgICAgICAgICAgICAgICAgID0g
SlNOb2RlVHlwZSB8IE5vZGVDb25zdGFudHM6OkFUVFJJQlVURV9OT0RFOwotc3RhdGljIGNvbnN0
IHVpbnQ4X3QgSlNFbGVtZW50VHlwZSAgICAgICAgICAgICAgICAgICA9IDBiMTAxMDAwMDAgfCBO
b2RlQ29uc3RhbnRzOjpFTEVNRU5UX05PREU7CitzdGF0aWMgY29uc3QgdWludDhfdCBKU0VsZW1l
bnRUeXBlICAgICAgICAgICAgICAgICAgID0gMGIxMTAxMDAwMCB8IE5vZGVDb25zdGFudHM6OkVM
RU1FTlRfTk9ERTsKIAogc3RhdGljX2Fzc2VydChKU0RPTVdyYXBwZXJUeXBlID4gSlNDOjpMYXN0
SlNDT2JqZWN0VHlwZSwgIkpTQzo6SlNUeXBlIG9mZmVycyB0aGUgaGlnaGVzdCBiaXQuIik7CiBz
dGF0aWNfYXNzZXJ0KE5vZGVDb25zdGFudHM6Okxhc3ROb2RlVHlwZSA8PSBKU05vZGVUeXBlTWFz
aywgIk5vZGVUeXBlIHNob3VsZCBiZSByZXByZXNlbnRlZCBpbiA0Yml0LiIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1OTlmNGMxZjE5
NzNkNGEzZjM1ZWM4N2UyMTIwMGYwMTkxY2MwOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmgKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQUxX
QVlTX0lOTElORSBKU0V2ZW50KiBqc0V2ZW50Q2FzdChKU0M6OkpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEpTRXZlbnRUeXBlID8gSlND
Ojpqc0Nhc3Q8SlNFdmVudCo+KHZhbHVlKSA6IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggNzBmZWY3ZjgxOTRlNjJhYTVlZWExODhiN2MyZDA5ZmJmNDcwMWNi
My4uN2IyOWFmNjczOTAzMzY0MWU1YmExNmZkYWNiNzYwZWNiNTRmNTNlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTEy
NTMsNyArMTI1Myw3IEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcmllc0ltcGxlbWVudGF0aW9uQ29u
dGVudAogCiBzdWIgR2V0SlNUeXBlRm9yTm9kZQogewotICAgIG15ICgkY29kZUdlbmVyYXRvciwg
JGludGVyZmFjZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSkgPSBAXzsKIAogICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIkRvY3VtZW50Iikp
IHsKICAgICAgICAgcmV0dXJuICJKU0RvY3VtZW50V3JhcHBlclR5cGUiOwpAQCAtMTQ4Myw4ICsx
NDgzLDEwIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIGlmIChJc0RPTUdsb2JhbE9iamVjdCgk
aW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpHbG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7XG4iKTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2Uo
JGludGVyZmFjZSwgIk5vZGUiKSkgewotICAgICAgICBteSAkdHlwZSA9IEdldEpTVHlwZUZvck5v
ZGUoJGNvZGVHZW5lcmF0b3IsICRpbnRlcmZhY2UpOworICAgICAgICBteSAkdHlwZSA9IEdldEpT
VHlwZUZvck5vZGUoJGludGVyZmFjZSk7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6OkpTVHlwZSgkdHlwZSksIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTtcbiIpOworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0lu
dGVyZmFjZSgkaW50ZXJmYWNlLCAiRXZlbnQiKSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpKU1R5cGUoSlNFdmVudFR5cGUpLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7XG4iKTsKICAgICB9CkBAIC0yNTI1LDYgKzI1Mjcs
NyBAQCBzdWIgR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QKICAgICByZXR1cm4gImpzRWxl
bWVudENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFbGVtZW50IjsKICAgICByZXR1cm4gImpz
RG9jdW1lbnRDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1lbnQiOwogICAgIHJldHVy
biAianNFdmVudFRhcmdldENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVudFRhcmdldCI7
CisgICAgcmV0dXJuICJqc0V2ZW50Q2FzdCIgaWYgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50IjsK
ICAgICByZXR1cm4gImpzRHluYW1pY0Nhc3Q8SlMkaW50ZXJmYWNlTmFtZSo+IjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudC5pZGwKaW5kZXggNjM3ZDRjZjU1NzBiZGUwM2RkYTljNmEzOTVkZDMwYzE1YzkxMjQ3
Yy4uNDlmZjUzY2ZhM2I1Y2QwNzI1NTI0YTNmM2ViODAyNzVkM2YzMmE3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuaWRsCkBAIC0yNyw2ICsyNyw3IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIERPTVRp
bWVTdGFtcDsKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1bmN0
aW9uLAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAorICAgIEpTQ3VzdG9tSGVhZGVyLAog
XSBpbnRlcmZhY2UgRXZlbnQgewogICAgIC8vIFBoYXNlVHlwZQogICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IE5PTkUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJ
VEhlbHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKaW5kZXgg
MmI0YjAwM2RmNjJkNmM2MGY0NzJiNzMzZTE2YWVhYTUzYTZlMDE4OC4uZjFjMWE4OTI2YzYwOGE1
YTc4YjAxNjQ1YWE5M2JlOThjMTA3ZmUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
aml0L0RPTUpJVEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVs
cGVycy5oCkBAIC05OCw2ICs5OCwxNiBAQCBpbmxpbmUgQ0NhbGxIZWxwZXJzOjpKdW1wIGJyYW5j
aElmTm90RE9NV3JhcHBlcihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHRhcmdldAogICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlwZShKU0RPTVdyYXBwZXJUeXBl
KSkpOwogfQogCitpbmxpbmUgQ0NhbGxIZWxwZXJzOjpKdW1wIGJyYW5jaElmRXZlbnQoQ0NhbGxI
ZWxwZXJzJiBqaXQsIEdQUlJlZyB0YXJnZXQpCit7CisgICAgcmV0dXJuIGppdC5icmFuY2hJZlR5
cGUodGFyZ2V0LCBKU0M6OkpTVHlwZShKU0V2ZW50VHlwZSkpOworfQorCitpbmxpbmUgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGJyYW5jaElmTm90RXZlbnQoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyB0
YXJnZXQpCit7CisgICAgcmV0dXJuIGppdC5icmFuY2hJZk5vdFR5cGUodGFyZ2V0LCBKU0M6OkpT
VHlwZShKU0V2ZW50VHlwZSkpOworfQorCiBpbmxpbmUgQ0NhbGxIZWxwZXJzOjpKdW1wIGJyYW5j
aElmTm9kZShDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHRhcmdldCkKIHsKICAgICByZXR1cm4g
aml0LmJyYW5jaDgoCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293089</attachid>
            <date>2016-10-27 17:37:27 -0700</date>
            <delta_ts>2016-10-27 17:44:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164096-20161027173337.patch</filename>
            <type>text/plain</type>
            <size>10462</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDllODFmMjI4MWM3NWYw
YjcyMTE3OTI5ODJiNGNhNTg1OTJlMTk3Zi4uOTY4ODEwZjU2NTc4YTAwZDg0ZDE5YWU3ZWU0YzI0
OTU5Yzc2YzlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTEwLTI3ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01dIEFkZCBK
U0V2ZW50VHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY0MDk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRXZlbnQgaXMgaW5oZXJpdGVkIGJ5IG1hbnkgRXZlbnQgY2xhc3Nlcy4gQnV0LCBFdmVudCdz
IGFjY2Vzc29ycyBhbmQgaW50ZXJmYWNlcyBhcmUKKyAgICAgICAgZnJlcXVlbnRseSBjYWxsZWQu
IEZvciBleGFtcGxlLCBldmVudC57dHlwZSwgdGFyZ2V0LCBzcmNFbGVtZW50fSBmb3IgYWNjZXNz
b3JzLiBBbmQKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgYW5kIGV2ZW50LnByZXZl
bnREZWZhdWx0KCkgZnVuY3Rpb25zLgorCisgICAgICAgIEhvd2V2ZXIsIHNpbmNlIHRoZSB1c2Vy
LXZpc2libGUgZXZlbnQgaW5zdGFuY2UgaXMgdHlwaWNhbGx5IHRoZSBpbnN0YW5jZSBvZiB0aGUg
c3ViY2xhc3MsCisgICAgICAgIGpzRHluYW1pY0Nhc3Q8SlNFdmVudCo+KCkgd2Fsa3Mgc2V2ZXJh
bCBjbGFzc2VzIGJlZm9yZSBpdCBzdWNjZWVkcy4gSXQgaXMgY29zdGx5LgorCisgICAgICAgIElu
IHRoaXMgcGF0Y2gsIHdlIGFkZCBhIG5ldyBXZWJDb3JlIEpTVHlwZSBKU0V2ZW50VHlwZSBmb3Ig
SlNFdmVudCBhbmQgYWRkIGEgbmV3CisgICAgICAgIGZ1bmN0aW9uIGpzRXZlbnRDYXN0LiBUaGF0
IHN1cHBvcnRzIGEgc3VwZXIgZmFzdCBjYXN0IG9wZXJhdGlvbi4gQW5kIGl0IHBhdmVzIHRoZSB3
YXkKKyAgICAgICAgZm9yIGltcGxlbWVudGluZyBET00gYWNjZXNzb3JzIG9mIEV2ZW50IGluIERP
TUpJVC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpq
c0V2ZW50Q2FzdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChHZXRKU1R5cGVGb3JOb2RlKToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKyAgICAgICAgKEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKiBkb20vRXZlbnQuaWRsOgorICAgICAgICAqIGRvbWppdC9ET01KSVRIZWxwZXJzLmg6
CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OmJyYW5jaElmRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSklUOjpicmFuY2hJZk5vdEV2ZW50KToKKwogMjAxNi0xMC0yNyAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0ICJpbnNlcnRG
cm9tRHJvcCIgYW5kICJkZWxldGVCeURyYWciIGZvciB0aGUgSW5wdXRFdmVudCBzcGVjCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCmluZGV4IDMxOWM3NzViZGNiYzBh
NWQ4NjZmODNjNDUxMGViNjE1ZGYzOGVlZjIuLjM4NTI5YmI2MWZkNDUyNWJiOTc1NThiYThkZjNj
N2RkZTEzYjc1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5o
CkBAIC0zMCwxMyArMzAsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSlNET01XaW5k
b3c7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi0vLyBXZSBlbmNvZGUgTm9kZSB0
eXBlIGludG8gSlNUeXBlLiBUaGUgZm9ybWF0IGlzIHRoZSBmb2xsb3dpbmcuCi0vLyBvZmZzZXQg
fCA3IHwgNiA1IDQgfCAzIDIgMSAwICB8Ci0vLyB2YWx1ZSAgfCAxIHwgS2luZCAgfCBOb2RlVHlw
ZSB8CisvLyBKU0MgYWxsb3dzIHVzIHRvIGV4dGVuZCBKU1R5cGUuIElmIHRoZSBoaWdoZXN0IGJp
dCBpcyBzZXQsIHdlIGNhbiBhZGQgYW55IE9iamVjdCB0eXBlcyBhbmQgdGhleSBhcmUKKy8vIHJl
Y29nbml6ZWQgYXMgT3RoZXJPYmogaW4gSlNDLiBBbmQgd2UgZW5jb2RlIE5vZGUgdHlwZSBpbnRv
IEpTVHlwZSBpZiB0aGUgZ2l2ZW4gSlNUeXBlIGlzIHN1YmNsYXNzIG9mIE5vZGUuCisvLyBvZmZz
ZXQgfCA3IHwgNiB8IDUgICA0IHwgMyAgIDIgICAxICAgMCAgfAorLy8gdmFsdWUgIHwgMSB8IDAg
fCAgTm9uLW5vZGUgRE9NIHR5cGVzICAgIHwKKy8vIElmIHRoZSBnaXZlbiBKU1R5cGUgaXMgYSBz
dWJjbGFzcyBvZiBOb2RlLCB0aGUgZm9ybWF0IGlzIHRoZSBmb2xsb3dpbmcuCisvLyBvZmZzZXQg
fCA3IHwgNiB8IDUgICA0IHwgMyAgIDIgICAxICAgMCAgfAorLy8gdmFsdWUgIHwgMSB8IDEgfCAg
S2luZCB8ICAgICAgIE5vZGVUeXBlIHwKIHN0YXRpYyBjb25zdCB1aW50OF90IEpTTm9kZVR5cGVN
YXNrICAgICAgICAgICAgICAgICAgPSAwYjAwMDAxMTExOwogCiBzdGF0aWMgY29uc3QgdWludDhf
dCBKU0RPTVdyYXBwZXJUeXBlICAgICAgICAgICAgICAgID0gMGIxMDAwMDAwMDsKLXN0YXRpYyBj
b25zdCB1aW50OF90IEpTTm9kZVR5cGUgICAgICAgICAgICAgICAgICAgICAgPSAwYjEwMDEwMDAw
Oworc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNFdmVudFR5cGUgICAgICAgICAgICAgICAgICAgICA9
IDBiMTAwMDAwMDE7CitzdGF0aWMgY29uc3QgdWludDhfdCBKU05vZGVUeXBlICAgICAgICAgICAg
ICAgICAgICAgID0gMGIxMTAwMDAwMDsKIHN0YXRpYyBjb25zdCB1aW50OF90IEpTVGV4dE5vZGVU
eXBlICAgICAgICAgICAgICAgICAgPSBKU05vZGVUeXBlIHwgTm9kZUNvbnN0YW50czo6VEVYVF9O
T0RFOwogc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25Ob2RlVHlw
ZSA9IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnRzOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05P
REU7CiBzdGF0aWMgY29uc3QgdWludDhfdCBKU0RvY3VtZW50VHlwZU5vZGVUeXBlICAgICAgICAg
ID0gSlNOb2RlVHlwZSB8IE5vZGVDb25zdGFudHM6OkRPQ1VNRU5UX1RZUEVfTk9ERTsKQEAgLTQ1
LDcgKzUwLDcgQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNEb2N1bWVudFdyYXBwZXJUeXBlICAg
ICAgICAgICA9IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnQKIHN0YXRpYyBjb25zdCB1aW50OF90
IEpTQ29tbWVudE5vZGVUeXBlICAgICAgICAgICAgICAgPSBKU05vZGVUeXBlIHwgTm9kZUNvbnN0
YW50czo6Q09NTUVOVF9OT0RFOwogc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNDREFUQVNlY3Rpb25O
b2RlVHlwZSAgICAgICAgICA9IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnRzOjpDREFUQV9TRUNU
SU9OX05PREU7CiBzdGF0aWMgY29uc3QgdWludDhfdCBKU0F0dHJOb2RlVHlwZSAgICAgICAgICAg
ICAgICAgID0gSlNOb2RlVHlwZSB8IE5vZGVDb25zdGFudHM6OkFUVFJJQlVURV9OT0RFOwotc3Rh
dGljIGNvbnN0IHVpbnQ4X3QgSlNFbGVtZW50VHlwZSAgICAgICAgICAgICAgICAgICA9IDBiMTAx
MDAwMDAgfCBOb2RlQ29uc3RhbnRzOjpFTEVNRU5UX05PREU7CitzdGF0aWMgY29uc3QgdWludDhf
dCBKU0VsZW1lbnRUeXBlICAgICAgICAgICAgICAgICAgID0gMGIxMTAxMDAwMCB8IE5vZGVDb25z
dGFudHM6OkVMRU1FTlRfTk9ERTsKIAogc3RhdGljX2Fzc2VydChKU0RPTVdyYXBwZXJUeXBlID4g
SlNDOjpMYXN0SlNDT2JqZWN0VHlwZSwgIkpTQzo6SlNUeXBlIG9mZmVycyB0aGUgaGlnaGVzdCBi
aXQuIik7CiBzdGF0aWNfYXNzZXJ0KE5vZGVDb25zdGFudHM6Okxhc3ROb2RlVHlwZSA8PSBKU05v
ZGVUeXBlTWFzaywgIk5vZGVUeXBlIHNob3VsZCBiZSByZXByZXNlbnRlZCBpbiA0Yml0LiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1
OTlmNGMxZjE5NzNkNGEzZjM1ZWM4N2UyMTIwMGYwMTkxY2MwOWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmgKQEAgLTAsMCArMSwz
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQUxXQVlTX0lOTElORSBKU0V2ZW50KiBqc0V2ZW50Q2FzdChKU0M6OkpTVmFsdWUgdmFs
dWUpCit7CisgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEpTRXZlbnRU
eXBlID8gSlNDOjpqc0Nhc3Q8SlNFdmVudCo+KHZhbHVlKSA6IG51bGxwdHI7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNzBmZWY3ZjgxOTRlNjJhYTVlZWExODhiN2MyZDA5
ZmJmNDcwMWNiMy4uN2IyOWFmNjczOTAzMzY0MWU1YmExNmZkYWNiNzYwZWNiNTRmNTNlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KQEAgLTEyNTMsNyArMTI1Myw3IEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcmllc0ltcGxlbWVu
dGF0aW9uQ29udGVudAogCiBzdWIgR2V0SlNUeXBlRm9yTm9kZQogewotICAgIG15ICgkY29kZUdl
bmVyYXRvciwgJGludGVyZmFjZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSkgPSBAXzsKIAog
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIkRv
Y3VtZW50IikpIHsKICAgICAgICAgcmV0dXJuICJKU0RvY3VtZW50V3JhcHBlclR5cGUiOwpAQCAt
MTQ4Myw4ICsxNDgzLDEwIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIGlmIChJc0RPTUdsb2Jh
bE9iamVjdCgkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpHbG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7XG4iKTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJ
bnRlcmZhY2UoJGludGVyZmFjZSwgIk5vZGUiKSkgewotICAgICAgICBteSAkdHlwZSA9IEdldEpT
VHlwZUZvck5vZGUoJGNvZGVHZW5lcmF0b3IsICRpbnRlcmZhY2UpOworICAgICAgICBteSAkdHlw
ZSA9IEdldEpTVHlwZUZvck5vZGUoJGludGVyZmFjZSk7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6OkpTVHlwZSgkdHlwZSksIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTtcbiIpOworICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5J
bmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiRXZlbnQiKSkgeworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpKU1R5cGUoSlNFdmVu
dFR5cGUpLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7XG4iKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7XG4iKTsKICAgICB9CkBAIC0yNTI1
LDYgKzI1MjcsNyBAQCBzdWIgR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QKICAgICByZXR1
cm4gImpzRWxlbWVudENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFbGVtZW50IjsKICAgICBy
ZXR1cm4gImpzRG9jdW1lbnRDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1lbnQiOwog
ICAgIHJldHVybiAianNFdmVudFRhcmdldENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVu
dFRhcmdldCI7CisgICAgcmV0dXJuICJqc0V2ZW50Q2FzdCIgaWYgJGludGVyZmFjZU5hbWUgZXEg
IkV2ZW50IjsKICAgICByZXR1cm4gImpzRHluYW1pY0Nhc3Q8SlMkaW50ZXJmYWNlTmFtZSo+IjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggNDhhNWM0NGZhNDYwNjI1
MzFhNzg2NGU2ZjU3NTQxNDFmNWUwOTVkZi4uYTNhNmQ0ZTRhZjVhMTgxOGNkMjA0Mzc1ZWY0MTlk
YzJmY2VjMDcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC00NCw3ICs0
NCw3IEBAIGNsYXNzIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IgOiBwdWJsaWMgSlNFdmVudCB7CiAK
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpKU1R5cGUo
SlNFdmVudFR5cGUpLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKaW5kZXggNjM3ZDRjZjU1NzBiZGUwM2RkYTlj
NmEzOTVkZDMwYzE1YzkxMjQ3Yy4uNDlmZjUzY2ZhM2I1Y2QwNzI1NTI0YTNmM2ViODAyNzVkM2Yz
MmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCkBAIC0yNyw2ICsyNyw3IEBAIHR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBsb25nIERPTVRpbWVTdGFtcDsKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIEV4
cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAorICAg
IEpTQ3VzdG9tSGVhZGVyLAogXSBpbnRlcmZhY2UgRXZlbnQgewogICAgIC8vIFBoYXNlVHlwZQog
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PTkUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRIZWxwZXJzLmgKaW5kZXggMmI0YjAwM2RmNjJkNmM2MGY0NzJiNzMzZTE2YWVhYTUzYTZlMDE4
OC4uZjFjMWE4OTI2YzYwOGE1YTc4YjAxNjQ1YWE5M2JlOThjMTA3ZmUzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUSGVscGVycy5oCkBAIC05OCw2ICs5OCwxNiBAQCBpbmxpbmUgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGJyYW5jaElmTm90RE9NV3JhcHBlcihDQ2FsbEhlbHBlcnMmIGppdCwgR1BS
UmVnIHRhcmdldAogICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlw
ZShKU0RPTVdyYXBwZXJUeXBlKSkpOwogfQogCitpbmxpbmUgQ0NhbGxIZWxwZXJzOjpKdW1wIGJy
YW5jaElmRXZlbnQoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyB0YXJnZXQpCit7CisgICAgcmV0
dXJuIGppdC5icmFuY2hJZlR5cGUodGFyZ2V0LCBKU0M6OkpTVHlwZShKU0V2ZW50VHlwZSkpOwor
fQorCitpbmxpbmUgQ0NhbGxIZWxwZXJzOjpKdW1wIGJyYW5jaElmTm90RXZlbnQoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEdQUlJlZyB0YXJnZXQpCit7CisgICAgcmV0dXJuIGppdC5icmFuY2hJZk5vdFR5
cGUodGFyZ2V0LCBKU0M6OkpTVHlwZShKU0V2ZW50VHlwZSkpOworfQorCiBpbmxpbmUgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGJyYW5jaElmTm9kZShDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHRhcmdl
dCkKIHsKICAgICByZXR1cm4gaml0LmJyYW5jaDgoCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293091</attachid>
            <date>2016-10-27 17:44:23 -0700</date>
            <delta_ts>2016-10-27 18:01:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164096-20161027174033.patch</filename>
            <type>text/plain</type>
            <size>12706</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDllODFmMjI4MWM3NWYw
YjcyMTE3OTI5ODJiNGNhNTg1OTJlMTk3Zi4uNjhhZDBhNmIwNTI2NDI3ZmZlNDk1YzRlYzJiYjIz
NmI4YjBjNjkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTEwLTI3ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01dIEFkZCBK
U0V2ZW50VHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY0MDk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRXZlbnQgaXMgaW5oZXJpdGVkIGJ5IG1hbnkgRXZlbnQgY2xhc3Nlcy4gQnV0LCBFdmVudCdz
IGFjY2Vzc29ycyBhbmQgaW50ZXJmYWNlcyBhcmUKKyAgICAgICAgZnJlcXVlbnRseSBjYWxsZWQu
IEZvciBleGFtcGxlLCBldmVudC57dHlwZSwgdGFyZ2V0LCBzcmNFbGVtZW50fSBmb3IgYWNjZXNz
b3JzLiBBbmQKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgYW5kIGV2ZW50LnByZXZl
bnREZWZhdWx0KCkgZnVuY3Rpb25zLgorCisgICAgICAgIEhvd2V2ZXIsIHNpbmNlIHRoZSB1c2Vy
LXZpc2libGUgZXZlbnQgaW5zdGFuY2UgaXMgdHlwaWNhbGx5IHRoZSBpbnN0YW5jZSBvZiB0aGUg
c3ViY2xhc3MsCisgICAgICAgIGpzRHluYW1pY0Nhc3Q8SlNFdmVudCo+KCkgd2Fsa3Mgc2V2ZXJh
bCBjbGFzc2VzIGJlZm9yZSBpdCBzdWNjZWVkcy4gSXQgaXMgY29zdGx5LgorCisgICAgICAgIElu
IHRoaXMgcGF0Y2gsIHdlIGFkZCBhIG5ldyBXZWJDb3JlIEpTVHlwZSBKU0V2ZW50VHlwZSBmb3Ig
SlNFdmVudCBhbmQgYWRkIGEgbmV3CisgICAgICAgIGZ1bmN0aW9uIGpzRXZlbnRDYXN0LiBUaGF0
IHN1cHBvcnRzIGEgc3VwZXIgZmFzdCBjYXN0IG9wZXJhdGlvbi4gQW5kIGl0IHBhdmVzIHRoZSB3
YXkKKyAgICAgICAgZm9yIGltcGxlbWVudGluZyBET00gYWNjZXNzb3JzIG9mIEV2ZW50IGluIERP
TUpJVC4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
cmFwcGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdldEpTVHlwZUZvck5vZGUpOgorICAg
ICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRvbS9FdmVudC5pZGw6CisgICAgICAgICogZG9t
aml0L0RPTUpJVEhlbHBlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6YnJhbmNoSWZF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OmJyYW5jaElmTm90RXZlbnQpOgorCiAy
MDE2LTEwLTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFN1cHBvcnQgImluc2VydEZyb21Ecm9wIiBhbmQgImRlbGV0ZUJ5RHJhZyIgZm9yIHRoZSBJ
bnB1dEV2ZW50IHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA0MTM4Y2RkMDA1MmViNjcyNTJiMWY4YzBiNGQyYTk5N2QwODgy
YWY3Li4zNjNkNTE4OGVmMmRlNjBlODAxY2IyNGM0MmI1N2IzZDA2MGYyYzFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDAz
MSw2ICsxNDAzMSw3IEBACiAJCUUxRkY4RjZBMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
cnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxRkY4RjZCMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIg
LyogRE9NSklUSGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01K
SVRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNEVFNDlGMURDMkQ1
NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRXZlbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1
Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUNBMTRDMURC
QzNBM0MwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8q
IFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjE2MDksNiArMjE2MTAsNyBAQAogCQkJCTY1RTBFOTQzMTEzM0M4OUYwMEI0Q0IxMCAvKiBK
U0RPTVdyYXBwZXIuaCAqLywKIAkJCQlGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJv
ckhhbmRsZXIuY3BwICovLAogCQkJCUYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9y
SGFuZGxlci5oICovLAorCQkJCUUzNEVFNDlGMURDMkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3Vz
dG9tLmggKi8sCiAJCQkJQkM2MDkwMUUwRTkxQjhFQzAwMEM2OEI1IC8qIEpTRXZlbnRUYXJnZXRD
dXN0b20uY3BwICovLAogCQkJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFy
Z2V0Q3VzdG9tLmggKi8sCiAJCQkJMzMxNEFDRTkxMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0
aW9uQmFzZS5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5o
CmluZGV4IDMxOWM3NzViZGNiYzBhNWQ4NjZmODNjNDUxMGViNjE1ZGYzOGVlZjIuLjM4NTI5YmI2
MWZkNDUyNWJiOTc1NThiYThkZjNjN2RkZTEzYjc1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV3JhcHBlci5oCkBAIC0zMCwxMyArMzAsMTggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgSlNET01XaW5kb3c7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
Ci0vLyBXZSBlbmNvZGUgTm9kZSB0eXBlIGludG8gSlNUeXBlLiBUaGUgZm9ybWF0IGlzIHRoZSBm
b2xsb3dpbmcuCi0vLyBvZmZzZXQgfCA3IHwgNiA1IDQgfCAzIDIgMSAwICB8Ci0vLyB2YWx1ZSAg
fCAxIHwgS2luZCAgfCBOb2RlVHlwZSB8CisvLyBKU0MgYWxsb3dzIHVzIHRvIGV4dGVuZCBKU1R5
cGUuIElmIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQsIHdlIGNhbiBhZGQgYW55IE9iamVjdCB0eXBl
cyBhbmQgdGhleSBhcmUKKy8vIHJlY29nbml6ZWQgYXMgT3RoZXJPYmogaW4gSlNDLiBBbmQgd2Ug
ZW5jb2RlIE5vZGUgdHlwZSBpbnRvIEpTVHlwZSBpZiB0aGUgZ2l2ZW4gSlNUeXBlIGlzIHN1YmNs
YXNzIG9mIE5vZGUuCisvLyBvZmZzZXQgfCA3IHwgNiB8IDUgICA0IHwgMyAgIDIgICAxICAgMCAg
fAorLy8gdmFsdWUgIHwgMSB8IDAgfCAgTm9uLW5vZGUgRE9NIHR5cGVzICAgIHwKKy8vIElmIHRo
ZSBnaXZlbiBKU1R5cGUgaXMgYSBzdWJjbGFzcyBvZiBOb2RlLCB0aGUgZm9ybWF0IGlzIHRoZSBm
b2xsb3dpbmcuCisvLyBvZmZzZXQgfCA3IHwgNiB8IDUgICA0IHwgMyAgIDIgICAxICAgMCAgfAor
Ly8gdmFsdWUgIHwgMSB8IDEgfCAgS2luZCB8ICAgICAgIE5vZGVUeXBlIHwKIHN0YXRpYyBjb25z
dCB1aW50OF90IEpTTm9kZVR5cGVNYXNrICAgICAgICAgICAgICAgICAgPSAwYjAwMDAxMTExOwog
CiBzdGF0aWMgY29uc3QgdWludDhfdCBKU0RPTVdyYXBwZXJUeXBlICAgICAgICAgICAgICAgID0g
MGIxMDAwMDAwMDsKLXN0YXRpYyBjb25zdCB1aW50OF90IEpTTm9kZVR5cGUgICAgICAgICAgICAg
ICAgICAgICAgPSAwYjEwMDEwMDAwOworc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNFdmVudFR5cGUg
ICAgICAgICAgICAgICAgICAgICA9IDBiMTAwMDAwMDE7CitzdGF0aWMgY29uc3QgdWludDhfdCBK
U05vZGVUeXBlICAgICAgICAgICAgICAgICAgICAgID0gMGIxMTAwMDAwMDsKIHN0YXRpYyBjb25z
dCB1aW50OF90IEpTVGV4dE5vZGVUeXBlICAgICAgICAgICAgICAgICAgPSBKU05vZGVUeXBlIHwg
Tm9kZUNvbnN0YW50czo6VEVYVF9OT0RFOwogc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb25Ob2RlVHlwZSA9IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnRzOjpQUk9D
RVNTSU5HX0lOU1RSVUNUSU9OX05PREU7CiBzdGF0aWMgY29uc3QgdWludDhfdCBKU0RvY3VtZW50
VHlwZU5vZGVUeXBlICAgICAgICAgID0gSlNOb2RlVHlwZSB8IE5vZGVDb25zdGFudHM6OkRPQ1VN
RU5UX1RZUEVfTk9ERTsKQEAgLTQ1LDcgKzUwLDcgQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNE
b2N1bWVudFdyYXBwZXJUeXBlICAgICAgICAgICA9IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnQK
IHN0YXRpYyBjb25zdCB1aW50OF90IEpTQ29tbWVudE5vZGVUeXBlICAgICAgICAgICAgICAgPSBK
U05vZGVUeXBlIHwgTm9kZUNvbnN0YW50czo6Q09NTUVOVF9OT0RFOwogc3RhdGljIGNvbnN0IHVp
bnQ4X3QgSlNDREFUQVNlY3Rpb25Ob2RlVHlwZSAgICAgICAgICA9IEpTTm9kZVR5cGUgfCBOb2Rl
Q29uc3RhbnRzOjpDREFUQV9TRUNUSU9OX05PREU7CiBzdGF0aWMgY29uc3QgdWludDhfdCBKU0F0
dHJOb2RlVHlwZSAgICAgICAgICAgICAgICAgID0gSlNOb2RlVHlwZSB8IE5vZGVDb25zdGFudHM6
OkFUVFJJQlVURV9OT0RFOwotc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNFbGVtZW50VHlwZSAgICAg
ICAgICAgICAgICAgICA9IDBiMTAxMDAwMDAgfCBOb2RlQ29uc3RhbnRzOjpFTEVNRU5UX05PREU7
CitzdGF0aWMgY29uc3QgdWludDhfdCBKU0VsZW1lbnRUeXBlICAgICAgICAgICAgICAgICAgID0g
MGIxMTAxMDAwMCB8IE5vZGVDb25zdGFudHM6OkVMRU1FTlRfTk9ERTsKIAogc3RhdGljX2Fzc2Vy
dChKU0RPTVdyYXBwZXJUeXBlID4gSlNDOjpMYXN0SlNDT2JqZWN0VHlwZSwgIkpTQzo6SlNUeXBl
IG9mZmVycyB0aGUgaGlnaGVzdCBiaXQuIik7CiBzdGF0aWNfYXNzZXJ0KE5vZGVDb25zdGFudHM6
Okxhc3ROb2RlVHlwZSA8PSBKU05vZGVUeXBlTWFzaywgIk5vZGVUeXBlIHNob3VsZCBiZSByZXBy
ZXNlbnRlZCBpbiA0Yml0LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1
c3RvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU1OTlmNGMxZjE5NzNkNGEzZjM1ZWM4N2UyMTIwMGYwMTkxY2Mw
OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
Q3VzdG9tLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQUxXQVlTX0lOTElORSBKU0V2ZW50KiBqc0V2ZW50
Q2FzdChKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0Nl
bGwoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiB2YWx1ZS5hc0NlbGwo
KS0+dHlwZSgpID09IEpTRXZlbnRUeXBlID8gSlNDOjpqc0Nhc3Q8SlNFdmVudCo+KHZhbHVlKSA6
IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNzBmZWY3Zjgx
OTRlNjJhYTVlZWExODhiN2MyZDA5ZmJmNDcwMWNiMy4uN2IyOWFmNjczOTAzMzY0MWU1YmExNmZk
YWNiNzYwZWNiNTRmNTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTEyNTMsNyArMTI1Myw3IEBAIHN1YiBHZW5lcmF0
ZURpY3Rpb25hcmllc0ltcGxlbWVudGF0aW9uQ29udGVudAogCiBzdWIgR2V0SlNUeXBlRm9yTm9k
ZQogewotICAgIG15ICgkY29kZUdlbmVyYXRvciwgJGludGVyZmFjZSkgPSBAXzsKKyAgICBteSAo
JGludGVyZmFjZSkgPSBAXzsKIAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRl
cmZhY2UoJGludGVyZmFjZSwgIkRvY3VtZW50IikpIHsKICAgICAgICAgcmV0dXJuICJKU0RvY3Vt
ZW50V3JhcHBlclR5cGUiOwpAQCAtMTQ4Myw4ICsxNDgzLDEwIEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgIGlmIChJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpHbG9iYWxPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7XG4iKTsKICAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIk5vZGUiKSkgewotICAg
ICAgICBteSAkdHlwZSA9IEdldEpTVHlwZUZvck5vZGUoJGNvZGVHZW5lcmF0b3IsICRpbnRlcmZh
Y2UpOworICAgICAgICBteSAkdHlwZSA9IEdldEpTVHlwZUZvck5vZGUoJGludGVyZmFjZSk7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
OkpTVHlwZSgkdHlwZSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTtcbiIpOworICAgIH0gZWxz
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiRXZlbnQi
KSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpKU1R5cGUoSlNFdmVudFR5cGUpLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7XG4i
KTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
XG4iKTsKICAgICB9CkBAIC0yNTI1LDYgKzI1MjcsNyBAQCBzdWIgR2V0Q2FzdGluZ0hlbHBlckZv
clRoaXNPYmplY3QKICAgICByZXR1cm4gImpzRWxlbWVudENhc3QiIGlmICRpbnRlcmZhY2VOYW1l
IGVxICJFbGVtZW50IjsKICAgICByZXR1cm4gImpzRG9jdW1lbnRDYXN0IiBpZiAkaW50ZXJmYWNl
TmFtZSBlcSAiRG9jdW1lbnQiOwogICAgIHJldHVybiAianNFdmVudFRhcmdldENhc3QiIGlmICRp
bnRlcmZhY2VOYW1lIGVxICJFdmVudFRhcmdldCI7CisgICAgcmV0dXJuICJqc0V2ZW50Q2FzdCIg
aWYgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50IjsKICAgICByZXR1cm4gImpzRHluYW1pY0Nhc3Q8
SlMkaW50ZXJmYWNlTmFtZSo+IjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgK
aW5kZXggNDhhNWM0NGZhNDYwNjI1MzFhNzg2NGU2ZjU3NTQxNDFmNWUwOTVkZi4uYTNhNmQ0ZTRh
ZjVhMTgxOGNkMjA0Mzc1ZWY0MTlkYzJmY2VjMDcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEpTVGVzdEV2ZW50Q29uc3RydWN0b3Ig
OiBwdWJsaWMgSlNFdmVudCB7CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpKU1R5cGUoSlNFdmVudFR5cGUpLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKaW5kZXgg
NjM3ZDRjZjU1NzBiZGUwM2RkYTljNmEzOTVkZDMwYzE1YzkxMjQ3Yy4uNDlmZjUzY2ZhM2I1Y2Qw
NzI1NTI0YTNmM2ViODAyNzVkM2YzMmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCkBAIC0yNyw2ICsy
Nyw3IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIERPTVRpbWVTdGFtcDsKICAgICBDdXN0
b21Ub0pTT2JqZWN0LAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAogICAgIEV4cG9zZWQ9
KFdpbmRvdyxXb3JrZXIpLAorICAgIEpTQ3VzdG9tSGVhZGVyLAogXSBpbnRlcmZhY2UgRXZlbnQg
ewogICAgIC8vIFBoYXNlVHlwZQogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PTkUgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKaW5kZXggMmI0YjAwM2RmNjJkNmM2MGY0
NzJiNzMzZTE2YWVhYTUzYTZlMDE4OC4uZjFjMWE4OTI2YzYwOGE1YTc4YjAxNjQ1YWE5M2JlOThj
MTA3ZmUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCkBAIC05OCw2ICs5
OCwxNiBAQCBpbmxpbmUgQ0NhbGxIZWxwZXJzOjpKdW1wIGJyYW5jaElmTm90RE9NV3JhcHBlcihD
Q2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHRhcmdldAogICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihKU0M6OkpTVHlwZShKU0RPTVdyYXBwZXJUeXBlKSkpOwogfQogCitpbmxpbmUg
Q0NhbGxIZWxwZXJzOjpKdW1wIGJyYW5jaElmRXZlbnQoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJl
ZyB0YXJnZXQpCit7CisgICAgcmV0dXJuIGppdC5icmFuY2hJZlR5cGUodGFyZ2V0LCBKU0M6OkpT
VHlwZShKU0V2ZW50VHlwZSkpOworfQorCitpbmxpbmUgQ0NhbGxIZWxwZXJzOjpKdW1wIGJyYW5j
aElmTm90RXZlbnQoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyB0YXJnZXQpCit7CisgICAgcmV0
dXJuIGppdC5icmFuY2hJZk5vdFR5cGUodGFyZ2V0LCBKU0M6OkpTVHlwZShKU0V2ZW50VHlwZSkp
OworfQorCiBpbmxpbmUgQ0NhbGxIZWxwZXJzOjpKdW1wIGJyYW5jaElmTm9kZShDQ2FsbEhlbHBl
cnMmIGppdCwgR1BSUmVnIHRhcmdldCkKIHsKICAgICByZXR1cm4gaml0LmJyYW5jaDgoCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293092</attachid>
            <date>2016-10-27 18:01:48 -0700</date>
            <delta_ts>2016-10-27 20:24:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164096-20161027175759.patch</filename>
            <type>text/plain</type>
            <size>14430</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDllODFmMjI4MWM3NWYw
YjcyMTE3OTI5ODJiNGNhNTg1OTJlMTk3Zi4uNjhhZDBhNmIwNTI2NDI3ZmZlNDk1YzRlYzJiYjIz
NmI4YjBjNjkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTEwLTI3ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01dIEFkZCBK
U0V2ZW50VHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY0MDk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRXZlbnQgaXMgaW5oZXJpdGVkIGJ5IG1hbnkgRXZlbnQgY2xhc3Nlcy4gQnV0LCBFdmVudCdz
IGFjY2Vzc29ycyBhbmQgaW50ZXJmYWNlcyBhcmUKKyAgICAgICAgZnJlcXVlbnRseSBjYWxsZWQu
IEZvciBleGFtcGxlLCBldmVudC57dHlwZSwgdGFyZ2V0LCBzcmNFbGVtZW50fSBmb3IgYWNjZXNz
b3JzLiBBbmQKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgYW5kIGV2ZW50LnByZXZl
bnREZWZhdWx0KCkgZnVuY3Rpb25zLgorCisgICAgICAgIEhvd2V2ZXIsIHNpbmNlIHRoZSB1c2Vy
LXZpc2libGUgZXZlbnQgaW5zdGFuY2UgaXMgdHlwaWNhbGx5IHRoZSBpbnN0YW5jZSBvZiB0aGUg
c3ViY2xhc3MsCisgICAgICAgIGpzRHluYW1pY0Nhc3Q8SlNFdmVudCo+KCkgd2Fsa3Mgc2V2ZXJh
bCBjbGFzc2VzIGJlZm9yZSBpdCBzdWNjZWVkcy4gSXQgaXMgY29zdGx5LgorCisgICAgICAgIElu
IHRoaXMgcGF0Y2gsIHdlIGFkZCBhIG5ldyBXZWJDb3JlIEpTVHlwZSBKU0V2ZW50VHlwZSBmb3Ig
SlNFdmVudCBhbmQgYWRkIGEgbmV3CisgICAgICAgIGZ1bmN0aW9uIGpzRXZlbnRDYXN0LiBUaGF0
IHN1cHBvcnRzIGEgc3VwZXIgZmFzdCBjYXN0IG9wZXJhdGlvbi4gQW5kIGl0IHBhdmVzIHRoZSB3
YXkKKyAgICAgICAgZm9yIGltcGxlbWVudGluZyBET00gYWNjZXNzb3JzIG9mIEV2ZW50IGluIERP
TUpJVC4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
cmFwcGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdldEpTVHlwZUZvck5vZGUpOgorICAg
ICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRvbS9FdmVudC5pZGw6CisgICAgICAgICogZG9t
aml0L0RPTUpJVEhlbHBlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6YnJhbmNoSWZF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OmJyYW5jaElmTm90RXZlbnQpOgorCiAy
MDE2LTEwLTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFN1cHBvcnQgImluc2VydEZyb21Ecm9wIiBhbmQgImRlbGV0ZUJ5RHJhZyIgZm9yIHRoZSBJ
bnB1dEV2ZW50IHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA0MTM4Y2RkMDA1MmViNjcyNTJiMWY4YzBiNGQyYTk5N2QwODgy
YWY3Li5jZGExYTA3OTVhOTRmMzc1M2MyMzEyM2EwZThmNWJjYTY3YThkODUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjAx
LDYgKzYyMDEsNyBAQAogCQlFMUZGOEY2RDE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxRkY4RjZCMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5o
ICovOyB9OwogCQlFMzE1MEVBNjFEQTcyMTkwMDAxOTQwMTIgLyogSlNOb2RlRE9NSklULmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQUZBOTY0MURB
NkU5MDgwMDI4NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovOyB9OwogCQlFMzE1MEVBNzFEQTcy
MTkzMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhl
bHBlcnMuaCAqLzsgfTsKKwkJRTM1NjVCN0IxREMyRDZDOTAwMjE3REJEIC8qIEpTRXZlbnRDdXN0
b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVF
NDlGMURDMkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1Q0ExNEQxREJDM0EzRjAwRjgzNTE2
IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovOyB9OwogCQlFMzVDQTE0RTFEQkMzQTQy
MDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2
IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLzsgfTsKIAkJRTM3N0ZFNEQxREFE
RTE2NTAwQ0REMDI1IC8qIE5vZGVDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDA0OTkzMURBREMwNDUwMDcxOEYzQyAvKiBOb2RlQ29u
c3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE0MDMxLDYgKzE0MDMyLDcgQEAKIAkJRTFGRjhGNkExODBEQjVCRTAwMTMyNjc0IC8qIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTUwRUE1MURBNzIxOEQw
MDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTUpJVEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0RUU0
OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNFdmVudEN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1
Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NDFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTYwOSw2ICsyMTYxMSw3IEBACiAJCQkJNjVFMEU5NDMxMTMzQzg5RjAwQjRD
QjEwIC8qIEpTRE9NV3JhcHBlci5oICovLAogCQkJCUYzRDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAv
KiBKU0Vycm9ySGFuZGxlci5jcHAgKi8sCiAJCQkJRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8q
IEpTRXJyb3JIYW5kbGVyLmggKi8sCisJCQkJRTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpT
RXZlbnRDdXN0b20uaCAqLywKIAkJCQlCQzYwOTAxRTBFOTFCOEVDMDAwQzY4QjUgLyogSlNFdmVu
dFRhcmdldEN1c3RvbS5jcHAgKi8sCiAJCQkJNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpT
RXZlbnRUYXJnZXRDdXN0b20uaCAqLywKIAkJCQkzMzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyog
SlNFeGNlcHRpb25CYXNlLmNwcCAqLywKQEAgLTI1NTA2LDYgKzI1NTA5LDcgQEAKIAkJCQlCODg1
RThENTExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9y
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QTBFOTczMzA4MDAyNjZFMDcgLyog
SW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1NjVCN0IxREMyRDZD
OTAwMjE3REJEIC8qIEpTRXZlbnRDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCTgyQUIxNzQ0
MTI0Qjk5RUMwMEM1MDY5RCAvKiBJbnNwZWN0b3JDU1NBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNEE5Q0M4MjExNkJGOUJCNDAwRUM2NDVBIC8qIEluc3BlY3RvckNTU09NV3JhcHBlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTdBQjBCMUMxMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmgKaW5kZXggMzE5Yzc3NWJkY2JjMGE1ZDg2NmY4M2M0NTEwZWI2MTVkZjM4
ZWVmMi4uMzg1MjliYjYxZmQ0NTI1YmI5NzU1OGJhOGRmM2M3ZGRlMTNiNzU4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKQEAgLTMwLDEzICszMCwxOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBKU0RPTVdpbmRvdzsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKLS8vIFdlIGVuY29kZSBOb2RlIHR5cGUgaW50byBKU1R5cGUuIFRoZSBm
b3JtYXQgaXMgdGhlIGZvbGxvd2luZy4KLS8vIG9mZnNldCB8IDcgfCA2IDUgNCB8IDMgMiAxIDAg
IHwKLS8vIHZhbHVlICB8IDEgfCBLaW5kICB8IE5vZGVUeXBlIHwKKy8vIEpTQyBhbGxvd3MgdXMg
dG8gZXh0ZW5kIEpTVHlwZS4gSWYgdGhlIGhpZ2hlc3QgYml0IGlzIHNldCwgd2UgY2FuIGFkZCBh
bnkgT2JqZWN0IHR5cGVzIGFuZCB0aGV5IGFyZQorLy8gcmVjb2duaXplZCBhcyBPdGhlck9iaiBp
biBKU0MuIEFuZCB3ZSBlbmNvZGUgTm9kZSB0eXBlIGludG8gSlNUeXBlIGlmIHRoZSBnaXZlbiBK
U1R5cGUgaXMgc3ViY2xhc3Mgb2YgTm9kZS4KKy8vIG9mZnNldCB8IDcgfCA2IHwgNSAgIDQgfCAz
ICAgMiAgIDEgICAwICB8CisvLyB2YWx1ZSAgfCAxIHwgMCB8ICBOb24tbm9kZSBET00gdHlwZXMg
ICAgfAorLy8gSWYgdGhlIGdpdmVuIEpTVHlwZSBpcyBhIHN1YmNsYXNzIG9mIE5vZGUsIHRoZSBm
b3JtYXQgaXMgdGhlIGZvbGxvd2luZy4KKy8vIG9mZnNldCB8IDcgfCA2IHwgNSAgIDQgfCAzICAg
MiAgIDEgICAwICB8CisvLyB2YWx1ZSAgfCAxIHwgMSB8ICBLaW5kIHwgICAgICAgTm9kZVR5cGUg
fAogc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNOb2RlVHlwZU1hc2sgICAgICAgICAgICAgICAgICA9
IDBiMDAwMDExMTE7CiAKIHN0YXRpYyBjb25zdCB1aW50OF90IEpTRE9NV3JhcHBlclR5cGUgICAg
ICAgICAgICAgICAgPSAwYjEwMDAwMDAwOwotc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNOb2RlVHlw
ZSAgICAgICAgICAgICAgICAgICAgICA9IDBiMTAwMTAwMDA7CitzdGF0aWMgY29uc3QgdWludDhf
dCBKU0V2ZW50VHlwZSAgICAgICAgICAgICAgICAgICAgID0gMGIxMDAwMDAwMTsKK3N0YXRpYyBj
b25zdCB1aW50OF90IEpTTm9kZVR5cGUgICAgICAgICAgICAgICAgICAgICAgPSAwYjExMDAwMDAw
Owogc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNUZXh0Tm9kZVR5cGUgICAgICAgICAgICAgICAgICA9
IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnRzOjpURVhUX05PREU7CiBzdGF0aWMgY29uc3QgdWlu
dDhfdCBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbk5vZGVUeXBlID0gSlNOb2RlVHlwZSB8IE5vZGVD
b25zdGFudHM6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTsKIHN0YXRpYyBjb25zdCB1aW50
OF90IEpTRG9jdW1lbnRUeXBlTm9kZVR5cGUgICAgICAgICAgPSBKU05vZGVUeXBlIHwgTm9kZUNv
bnN0YW50czo6RE9DVU1FTlRfVFlQRV9OT0RFOwpAQCAtNDUsNyArNTAsNyBAQCBzdGF0aWMgY29u
c3QgdWludDhfdCBKU0RvY3VtZW50V3JhcHBlclR5cGUgICAgICAgICAgID0gSlNOb2RlVHlwZSB8
IE5vZGVDb25zdGFudAogc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNDb21tZW50Tm9kZVR5cGUgICAg
ICAgICAgICAgICA9IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnRzOjpDT01NRU5UX05PREU7CiBz
dGF0aWMgY29uc3QgdWludDhfdCBKU0NEQVRBU2VjdGlvbk5vZGVUeXBlICAgICAgICAgID0gSlNO
b2RlVHlwZSB8IE5vZGVDb25zdGFudHM6OkNEQVRBX1NFQ1RJT05fTk9ERTsKIHN0YXRpYyBjb25z
dCB1aW50OF90IEpTQXR0ck5vZGVUeXBlICAgICAgICAgICAgICAgICAgPSBKU05vZGVUeXBlIHwg
Tm9kZUNvbnN0YW50czo6QVRUUklCVVRFX05PREU7Ci1zdGF0aWMgY29uc3QgdWludDhfdCBKU0Vs
ZW1lbnRUeXBlICAgICAgICAgICAgICAgICAgID0gMGIxMDEwMDAwMCB8IE5vZGVDb25zdGFudHM6
OkVMRU1FTlRfTk9ERTsKK3N0YXRpYyBjb25zdCB1aW50OF90IEpTRWxlbWVudFR5cGUgICAgICAg
ICAgICAgICAgICAgPSAwYjExMDEwMDAwIHwgTm9kZUNvbnN0YW50czo6RUxFTUVOVF9OT0RFOwog
CiBzdGF0aWNfYXNzZXJ0KEpTRE9NV3JhcHBlclR5cGUgPiBKU0M6Okxhc3RKU0NPYmplY3RUeXBl
LCAiSlNDOjpKU1R5cGUgb2ZmZXJzIHRoZSBoaWdoZXN0IGJpdC4iKTsKIHN0YXRpY19hc3NlcnQo
Tm9kZUNvbnN0YW50czo6TGFzdE5vZGVUeXBlIDw9IEpTTm9kZVR5cGVNYXNrLCAiTm9kZVR5cGUg
c2hvdWxkIGJlIHJlcHJlc2VudGVkIGluIDRiaXQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50Q3VzdG9tLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTU5OWY0YzFmMTk3M2Q0YTNmMzVlYzg3
ZTIxMjAwZjAxOTFjYzA5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRDdXN0b20uaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBTFdBWVNfSU5MSU5FIEpT
RXZlbnQqIGpzRXZlbnRDYXN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoVU5MSUtF
TFkoIXZhbHVlLmlzQ2VsbCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNFdmVudFR5cGUgPyBKU0M6OmpzQ2FzdDxKU0V2
ZW50Kj4odmFsdWUpIDogbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCA3MGZlZjdmODE5NGU2MmFhNWVlYTE4OGI3YzJkMDlmYmY0NzAxY2IzLi43YjI5YWY2NzM5
MDMzNjQxZTViYTE2ZmRhY2I3NjBlY2I1NGY1M2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTI1Myw3ICsxMjUzLDcg
QEAgc3ViIEdlbmVyYXRlRGljdGlvbmFyaWVzSW1wbGVtZW50YXRpb25Db250ZW50CiAKIHN1YiBH
ZXRKU1R5cGVGb3JOb2RlCiB7Ci0gICAgbXkgKCRjb2RlR2VuZXJhdG9yLCAkaW50ZXJmYWNlKSA9
IEBfOworICAgIG15ICgkaW50ZXJmYWNlKSA9IEBfOwogCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiRG9jdW1lbnQiKSkgewogICAgICAgICBy
ZXR1cm4gIkpTRG9jdW1lbnRXcmFwcGVyVHlwZSI7CkBAIC0xNDgzLDggKzE0ODMsMTAgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAgICAgaWYgKElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Okdsb2JhbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTtcbiIpOwogICAg
IH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAi
Tm9kZSIpKSB7Ci0gICAgICAgIG15ICR0eXBlID0gR2V0SlNUeXBlRm9yTm9kZSgkY29kZUdlbmVy
YXRvciwgJGludGVyZmFjZSk7CisgICAgICAgIG15ICR0eXBlID0gR2V0SlNUeXBlRm9yTm9kZSgk
aW50ZXJmYWNlKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6SlNUeXBlKCR0eXBlKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpO1xu
Iik7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRl
cmZhY2UsICJFdmVudCIpKSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6OkpTVHlwZShKU0V2ZW50VHlwZSksIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTtcbiIpOwogICAgIH0KQEAgLTI1MjUsNiArMjUyNyw3IEBAIHN1YiBHZXRD
YXN0aW5nSGVscGVyRm9yVGhpc09iamVjdAogICAgIHJldHVybiAianNFbGVtZW50Q2FzdCIgaWYg
JGludGVyZmFjZU5hbWUgZXEgIkVsZW1lbnQiOwogICAgIHJldHVybiAianNEb2N1bWVudENhc3Qi
IGlmICRpbnRlcmZhY2VOYW1lIGVxICJEb2N1bWVudCI7CiAgICAgcmV0dXJuICJqc0V2ZW50VGFy
Z2V0Q2FzdCIgaWYgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50VGFyZ2V0IjsKKyAgICByZXR1cm4g
ImpzRXZlbnRDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnQiOwogICAgIHJldHVybiAi
anNEeW5hbWljQ2FzdDxKUyRpbnRlcmZhY2VOYW1lKj4iOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuaAppbmRleCA0OGE1YzQ0ZmE0NjA2MjUzMWE3ODY0ZTZmNTc1NDE0MWY1ZTA5
NWRmLi5hM2E2ZDRlNGFmNWExODE4Y2QyMDQzNzVlZjQxOWRjMmZjZWMwNzA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU0V2ZW50IHsKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6OkpTVHlwZShKU0V2ZW50VHlwZSksIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmlkbAppbmRleCA2MzdkNGNmNTU3MGJkZTAzZGRhOWM2YTM5NWRkMzBjMTVjOTEyNDdjLi40
OWZmNTNjZmEzYjVjZDA3MjU1MjRhM2YzZWI4MDI3NWQzZjMyYTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5p
ZGwKQEAgLTI3LDYgKzI3LDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgRE9NVGltZVN0
YW1wOwogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRXhwb3J0VG9XcmFwcGVkRnVuY3Rpb24s
CiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCisgICAgSlNDdXN0b21IZWFkZXIsCiBdIGlu
dGVyZmFjZSBFdmVudCB7CiAgICAgLy8gUGhhc2VUeXBlCiAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgTk9ORSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVs
cGVycy5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaAppbmRleCAyYjRi
MDAzZGY2MmQ2YzYwZjQ3MmI3MzNlMTZhZWFhNTNhNmUwMTg4Li5mMWMxYTg5MjZjNjA4YTVhNzhi
MDE2NDVhYTkzYmU5OGMxMDdmZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
RE9NSklUSGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJz
LmgKQEAgLTk4LDYgKzk4LDE2IEBAIGlubGluZSBDQ2FsbEhlbHBlcnM6Okp1bXAgYnJhbmNoSWZO
b3RET01XcmFwcGVyKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgdGFyZ2V0CiAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTQzo6SlNUeXBlKEpTRE9NV3JhcHBlclR5cGUpKSk7
CiB9CiAKK2lubGluZSBDQ2FsbEhlbHBlcnM6Okp1bXAgYnJhbmNoSWZFdmVudChDQ2FsbEhlbHBl
cnMmIGppdCwgR1BSUmVnIHRhcmdldCkKK3sKKyAgICByZXR1cm4gaml0LmJyYW5jaElmVHlwZSh0
YXJnZXQsIEpTQzo6SlNUeXBlKEpTRXZlbnRUeXBlKSk7Cit9CisKK2lubGluZSBDQ2FsbEhlbHBl
cnM6Okp1bXAgYnJhbmNoSWZOb3RFdmVudChDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHRhcmdl
dCkKK3sKKyAgICByZXR1cm4gaml0LmJyYW5jaElmTm90VHlwZSh0YXJnZXQsIEpTQzo6SlNUeXBl
KEpTRXZlbnRUeXBlKSk7Cit9CisKIGlubGluZSBDQ2FsbEhlbHBlcnM6Okp1bXAgYnJhbmNoSWZO
b2RlKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgdGFyZ2V0KQogewogICAgIHJldHVybiBqaXQu
YnJhbmNoOCgK
</data>
<flag name="review"
          id="316030"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>