<?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>196465</bug_id>
          
          <creation_ts>2019-04-01 14:49:29 -0700</creation_ts>
          <short_desc>Add SaveRestoreScope, which can be used to save/restore state without direct access to member variables</short_desc>
          <delta_ts>2019-04-03 20:34:17 -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>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1523071</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-04-01 14:49:29 -0700</bug_when>
    <thetext>Add SaveRestoreScope, which can be used to save/restore state without direct access to member variables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523074</commentid>
    <comment_count>1</comment_count>
      <attachid>366426</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-04-01 14:51:31 -0700</bug_when>
    <thetext>Created attachment 366426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523076</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-04-01 14:52:23 -0700</bug_when>
    <thetext>I considered pointers to member functions, but it gets pretty ugly, and you&apos;d end up with template instantiation per class/getter/setter combination.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523077</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-04-01 14:54:09 -0700</bug_when>
    <thetext>Attachment 366426 did not pass style-queue:


ERROR: Source/WTF/wtf/SetForScope.h:73:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/SetForScope.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/SetForScope.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/SetForScope.cpp:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/SetForScope.cpp:70:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/SetForScope.cpp:83:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/SetForScope.cpp:86:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 7 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523079</commentid>
    <comment_count>4</comment_count>
      <attachid>366426</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-04-01 14:55:47 -0700</bug_when>
    <thetext>Comment on attachment 366426
Patch

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

Could you use this in WebKit in a place where SetForScope is insufficient?  Otherwise we have unused code in WTF, which is undesirable.

&gt; Source/WTF/wtf/SetForScope.h:93
&gt; +    WTF::Function&lt;void (T)&gt; m_setterFunction;

No space after void.
WTF:: is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523109</commentid>
    <comment_count>5</comment_count>
      <attachid>366432</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-04-01 15:42:30 -0700</bug_when>
    <thetext>Created attachment 366432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523111</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-04-01 15:46:12 -0700</bug_when>
    <thetext>Attachment 366432 did not pass style-queue:


ERROR: Source/WebKitLegacy/mac/WebView/WebHTMLView.mm:6888:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/SetForScope.cpp:62:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/SetForScope.cpp:70:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/SetForScope.cpp:83:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/SetForScope.cpp:86:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/SetForScope.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/FrameView.cpp:4260:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 7 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523234</commentid>
    <comment_count>7</comment_count>
      <attachid>366432</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-01 23:17:45 -0700</bug_when>
    <thetext>Comment on attachment 366432
Patch

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

&gt; Source/WTF/wtf/SetForScope.h:71
&gt; +class SaveRestoreScope {

Can we just make SetForScope also have a constructor that handles this? I prefer that name more than this

&gt; Source/WTF/wtf/SetForScope.h:73
&gt; +    SaveRestoreScope(Function&lt;T()&gt;&amp;&amp; getterFunction, Function&lt;void(T)&gt;&amp;&amp; setterFunction)

Why not “const Function&lt;T()&gt;&amp;” for the type of getter function?

&gt; Source/WTF/wtf/SetForScope.h:79
&gt; +    SaveRestoreScope(Function&lt;T()&gt;&amp;&amp; getterFunction, Function&lt;void(T)&gt;&amp;&amp; setterFunction, T newValue)

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523236</commentid>
    <comment_count>8</comment_count>
      <attachid>366432</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-04-01 23:19:41 -0700</bug_when>
    <thetext>Comment on attachment 366432
Patch

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

&gt; Source/WTF/wtf/SetForScope.h:88
&gt; +        m_setterFunction(m_originalValue);

WTFMove? Or perhaps forwarding semantics?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524137</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-04-03 20:34:17 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #7)
&gt; Comment on attachment 366432 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=366432&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/SetForScope.h:71
&gt; &gt; +class SaveRestoreScope {
&gt; 
&gt; Can we just make SetForScope also have a constructor that handles this? I
&gt; prefer that name more than this

That would bloat SetForScope with WTF::Function, but maybe that&apos;s OK. This is also a little more loosey-goosey than SetForScope because those two functors could do anything.


&gt; &gt; Source/WTF/wtf/SetForScope.h:73
&gt; &gt; +    SaveRestoreScope(Function&lt;T()&gt;&amp;&amp; getterFunction, Function&lt;void(T)&gt;&amp;&amp; setterFunction)
&gt; 
&gt; Why not “const Function&lt;T()&gt;&amp;” for the type of getter function?

I never know when to pass Functions by reference or RVF.

&gt; &gt; Source/WTF/wtf/SetForScope.h:79
&gt; &gt; +    SaveRestoreScope(Function&lt;T()&gt;&amp;&amp; getterFunction, Function&lt;void(T)&gt;&amp;&amp; setterFunction, T newValue)

&gt; WTFMove? Or perhaps forwarding semantics?

Sure, I guess? Does that add any overhead when used with small POD types?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366426</attachid>
            <date>2019-04-01 14:51:31 -0700</date>
            <delta_ts>2019-04-01 15:42:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196465-20190401145130.patch</filename>
            <type>text/plain</type>
            <size>4810</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBkYzM1NzIwMmQ3ZTI3ODc0NjUxODli
YjY1M2RjMWI0OTk2NmRiMzYuLmIzMjc2Nzk0N2FhMmE5ZmQ5OTdkYWU1YmE0MjljZDg2MjJiMTE3
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMDQtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNhdmVSZXN0b3JlU2NvcGUsIHdoaWNo
IGNhbiBiZSB1c2VkIHRvIHNhdmUvcmVzdG9yZSBzdGF0ZSB3aXRob3V0IGRpcmVjdCBhY2Nlc3Mg
dG8gbWVtYmVyIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk2NDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU2F2ZVJlc3RvcmVTY29wZSB0YWtlcyB0d28gZnVuY3RvcnMsIGV4cGVjdGlu
ZyB0aGUgZmlyc3QgdG8gYmUgYSB2YWx1ZSBnZXR0ZXIgYW5kIHRoZSBzZWNvbmQgYSB2YWx1ZSBz
ZXR0ZXIuCisgICAgICAgIFRoaXMgYWxsb3dzIGl0IHRvIGJlIHVzZWQgbGlrZSBTZXRGb3JTY29w
ZSwgYnV0IGluIGNhc2VzIHdoZXJlIHlvdSdyZSBzYXZpbmcgYW5kIHJlc3RvcmluZyBzdGF0ZSBv
biBzb21lCisgICAgICAgIG90aGVyIG9iamVjdCB2aWEgbWVtYmVyIGZ1bmN0aW9ucy4gU2VlIHRl
c3RjYXNlIGZvciBleGFtcGxlLgorCisgICAgICAgICogd3RmL1NldEZvclNjb3BlLmg6CisgICAg
ICAgIChXVEY6OlNhdmVSZXN0b3JlU2NvcGU6OlNhdmVSZXN0b3JlU2NvcGUpOgorICAgICAgICAo
V1RGOjpTYXZlUmVzdG9yZVNjb3BlOjp+U2F2ZVJlc3RvcmVTY29wZSk6CisKIDIwMTktMDQtMDEg
IE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFN0
b3AgdHJ5aW5nIHRvIHN1cHBvcnQgYnVpbGRpbmcgSlNDIHdpdGggY2xhbmcgMy44CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZXRGb3JTY29wZS5oIGIvU291cmNlL1dURi93dGYvU2V0Rm9y
U2NvcGUuaAppbmRleCA3ODVkOWNiMzRiMGQ5NWZmZWY3ODBjZGZkMDNhNjVkMTFkNjQ3ZjRlLi41
NGM1MjkzYWNhYWNiMGVhOWUwY2ZiMmU5NjI1NGUwMzI3MTAyMjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9TZXRGb3JTY29wZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NldEZvclNjb3Bl
LmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKQEAgLTY2LDYgKzY3LDMzIEBAIHByaXZhdGU6CiAgICAgVCBtX29yaWdp
bmFsVmFsdWU7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgU2F2ZVJlc3RvcmVT
Y29wZSB7CitwdWJsaWM6CisgICAgU2F2ZVJlc3RvcmVTY29wZShXVEY6OkZ1bmN0aW9uPFQgKCk+
JiYgZ2V0dGVyRnVuY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCAoVCk+JiYgc2V0dGVyRnVuY3Rp
b24pCisgICAgICAgIDogbV9vcmlnaW5hbFZhbHVlKGdldHRlckZ1bmN0aW9uKCkpCisgICAgICAg
ICwgbV9zZXR0ZXJGdW5jdGlvbihXVEZNb3ZlKHNldHRlckZ1bmN0aW9uKSkKKyAgICB7CisgICAg
fQorCisgICAgU2F2ZVJlc3RvcmVTY29wZShXVEY6OkZ1bmN0aW9uPFQgKCk+JiYgZ2V0dGVyRnVu
Y3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCAoVCk+JiYgc2V0dGVyRnVuY3Rpb24sIFQgbmV3VmFs
dWUpCisgICAgICAgIDogbV9vcmlnaW5hbFZhbHVlKGdldHRlckZ1bmN0aW9uKCkpCisgICAgICAg
ICwgbV9zZXR0ZXJGdW5jdGlvbihXVEZNb3ZlKHNldHRlckZ1bmN0aW9uKSkKKyAgICB7CisgICAg
ICAgIG1fc2V0dGVyRnVuY3Rpb24obmV3VmFsdWUpOworICAgIH0KKworICAgIH5TYXZlUmVzdG9y
ZVNjb3BlKCkKKyAgICB7CisgICAgICAgIG1fc2V0dGVyRnVuY3Rpb24obV9vcmlnaW5hbFZhbHVl
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVCBtX29yaWdpbmFsVmFsdWU7CisgICAgV1RGOjpG
dW5jdGlvbjx2b2lkIChUKT4gbV9zZXR0ZXJGdW5jdGlvbjsKK307CisKIH0KIAogdXNpbmcgV1RG
OjpTZXRGb3JTY29wZTsKK3VzaW5nIFdURjo6U2F2ZVJlc3RvcmVTY29wZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMDJlNjY5ZDVkYTc0MmIx
YTY5NjE4MzUzY2VjNzJiNGRkNGQ2NjMzLi45ZDk3NjA1ODRhZWQxODU3MWNhYzc0Yjg4Nzc4NDgx
YTgxMmI2ODYwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDQtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNhdmVSZXN0b3JlU2NvcGUsIHdoaWNoIGNh
biBiZSB1c2VkIHRvIHNhdmUvcmVzdG9yZSBzdGF0ZSB3aXRob3V0IGRpcmVjdCBhY2Nlc3MgdG8g
bWVtYmVyIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk2NDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TZXRGb3JTY29wZS5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpWYWx1ZUhvbGRlcjo6c3RhdGUgY29uc3QpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VmFsdWVIb2xkZXI6OnNldFN0YXRlKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorCiAyMDE5LTA0LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQSSB0byBjYW5vbmljYWxpemUgTlNVUkxz
IHdpdGggV1RGOjpVUkwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1NldEZvclNjb3BlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NldEZvclNj
b3BlLmNwcAppbmRleCA5MmUzNDk0ZDYxMTQ0Zjk2OGE0YmMyMmMxOTZmOGEzNDc4OTlhNjdmLi4x
NzJjNzNjNjIyMDgyMjllZGEwYjliNmI3N2FmMmQ5NWMyMjhkMDA1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TZXRGb3JTY29wZS5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU2V0Rm9yU2NvcGUuY3BwCkBAIC00NCw0ICs0NCw1MSBAQCBU
RVNUKFdURiwgU2V0Rm9yU2NvcGVOZXN0ZWQpCiAgICAgRVhQRUNUX0ZBTFNFKG9yaWdpbmFsbHlG
YWxzZSk7CiB9CiAKK2NsYXNzIFZhbHVlSG9sZGVyIHsKK3B1YmxpYzoKKyAgICBib29sIHN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorICAgIHZvaWQgc2V0U3RhdGUoYm9vbCBzdGF0
ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fc3RhdGUgeyBm
YWxzZSB9OworfTsKKworVEVTVChXVEYsIFNhdmVSZXN0b3JlU2NvcGUpCit7CisgICAgVmFsdWVI
b2xkZXIgaG9sZGVyOworICAgIEVYUEVDVF9GQUxTRShob2xkZXIuc3RhdGUoKSk7CisKKyAgICB7
CisgICAgICAgIFNhdmVSZXN0b3JlU2NvcGU8Ym9vbD4gY2hhbmdlU2NvcGUoWyZob2xkZXJdIHsg
cmV0dXJuIGhvbGRlci5zdGF0ZSgpOyB9LCBbJmhvbGRlcl0gKGF1dG8gdmFsdWUpIHsgaG9sZGVy
LnNldFN0YXRlKHZhbHVlKTsgfSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShob2xkZXIuc3RhdGUo
KSk7CisgICAgICAgIGhvbGRlci5zZXRTdGF0ZSh0cnVlKTsKKyAgICB9CisKKyAgICBFWFBFQ1Rf
RkFMU0UoaG9sZGVyLnN0YXRlKCkpOworCisgICAgeworICAgICAgICBTYXZlUmVzdG9yZVNjb3Bl
PGJvb2w+IGNoYW5nZVNjb3BlKFsmaG9sZGVyXSB7IHJldHVybiBob2xkZXIuc3RhdGUoKTsgfSwg
WyZob2xkZXJdIChhdXRvIHZhbHVlKSB7IGhvbGRlci5zZXRTdGF0ZSh2YWx1ZSk7IH0sIHRydWUp
OworICAgICAgICBFWFBFQ1RfVFJVRShob2xkZXIuc3RhdGUoKSk7CisgICAgfQorCisgICAgRVhQ
RUNUX0ZBTFNFKGhvbGRlci5zdGF0ZSgpKTsKK30KKworVEVTVChXVEYsIFNhdmVSZXN0b3JlU2Nv
cGVOZXN0ZWQpCit7CisgICAgVmFsdWVIb2xkZXIgaG9sZGVyOworICAgIEVYUEVDVF9GQUxTRSho
b2xkZXIuc3RhdGUoKSk7CisKKyAgICB7CisgICAgICAgIFNhdmVSZXN0b3JlU2NvcGU8Ym9vbD4g
Y2hhbmdlU2NvcGUoWyZob2xkZXJdIHsgcmV0dXJuIGhvbGRlci5zdGF0ZSgpOyB9LCBbJmhvbGRl
cl0gKGF1dG8gdmFsdWUpIHsgaG9sZGVyLnNldFN0YXRlKHZhbHVlKTsgfSwgdHJ1ZSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKGhvbGRlci5zdGF0ZSgpKTsKKyAgICAgICAgeworICAgICAgICAgICAg
U2F2ZVJlc3RvcmVTY29wZTxib29sPiBpbm5lckNoYW5nZVNjb3BlKFsmaG9sZGVyXSB7IHJldHVy
biBob2xkZXIuc3RhdGUoKTsgfSwgWyZob2xkZXJdIChhdXRvIHZhbHVlKSB7IGhvbGRlci5zZXRT
dGF0ZSh2YWx1ZSk7IH0sIGZhbHNlKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShob2xkZXIu
c3RhdGUoKSk7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX1RSVUUoaG9sZGVyLnN0YXRlKCkp
OworICAgIH0KKyAgICBFWFBFQ1RfRkFMU0UoaG9sZGVyLnN0YXRlKCkpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366432</attachid>
            <date>2019-04-01 15:42:30 -0700</date>
            <delta_ts>2019-04-01 15:42:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196465-20190401154230.patch</filename>
            <type>text/plain</type>
            <size>9422</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBkYzM1NzIwMmQ3ZTI3ODc0NjUxODli
YjY1M2RjMWI0OTk2NmRiMzYuLmIzMjc2Nzk0N2FhMmE5ZmQ5OTdkYWU1YmE0MjljZDg2MjJiMTE3
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMDQtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNhdmVSZXN0b3JlU2NvcGUsIHdoaWNo
IGNhbiBiZSB1c2VkIHRvIHNhdmUvcmVzdG9yZSBzdGF0ZSB3aXRob3V0IGRpcmVjdCBhY2Nlc3Mg
dG8gbWVtYmVyIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk2NDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU2F2ZVJlc3RvcmVTY29wZSB0YWtlcyB0d28gZnVuY3RvcnMsIGV4cGVjdGlu
ZyB0aGUgZmlyc3QgdG8gYmUgYSB2YWx1ZSBnZXR0ZXIgYW5kIHRoZSBzZWNvbmQgYSB2YWx1ZSBz
ZXR0ZXIuCisgICAgICAgIFRoaXMgYWxsb3dzIGl0IHRvIGJlIHVzZWQgbGlrZSBTZXRGb3JTY29w
ZSwgYnV0IGluIGNhc2VzIHdoZXJlIHlvdSdyZSBzYXZpbmcgYW5kIHJlc3RvcmluZyBzdGF0ZSBv
biBzb21lCisgICAgICAgIG90aGVyIG9iamVjdCB2aWEgbWVtYmVyIGZ1bmN0aW9ucy4gU2VlIHRl
c3RjYXNlIGZvciBleGFtcGxlLgorCisgICAgICAgICogd3RmL1NldEZvclNjb3BlLmg6CisgICAg
ICAgIChXVEY6OlNhdmVSZXN0b3JlU2NvcGU6OlNhdmVSZXN0b3JlU2NvcGUpOgorICAgICAgICAo
V1RGOjpTYXZlUmVzdG9yZVNjb3BlOjp+U2F2ZVJlc3RvcmVTY29wZSk6CisKIDIwMTktMDQtMDEg
IE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFN0
b3AgdHJ5aW5nIHRvIHN1cHBvcnQgYnVpbGRpbmcgSlNDIHdpdGggY2xhbmcgMy44CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNGRjNWU4NTI5MTA0MDQzZDM2YTk3YTI0Y2MyZTE3OTVlOWNjYzVkMS4uMDM4NjRkNDJl
NzdmMDY5Yzc2MTNkNDc0ZTk5M2U2OTRiODYwOTc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE5LTA0LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBTYXZlUmVzdG9yZVNjb3BlLCB3aGljaCBjYW4gYmUgdXNlZCB0byBzYXZl
L3Jlc3RvcmUgc3RhdGUgd2l0aG91dCBkaXJlY3QgYWNjZXNzIHRvIG1lbWJlciB2YXJpYWJsZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjQ2NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9G
cmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRz
Rm9yU25hcHNob3QpOgorCiAyMDE5LTA0LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFBsdW1iIHRocm91Z2ggYSBTY3JvbGxUeXBlIHZhbHVlIHRo
YXQgaW5kaWNhdGVzIHdoZXRoZXIgYSBzY3JvbGwgd2FzIGEgdXNlciBvciBwcm9ncmFtbWF0aWMg
c2Nyb2xsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNDJlOWZkZDYzOGY0MWQxMDRj
Mjc2YTUyM2Q0YTA2MzBiNzkxNTc0Yi4uMGExYzFiMjA3MjM2YmUwMjYxYTJkYTQxNjAyNjMwMDBk
MTlmZjUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDE5LTA0LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBTYXZlUmVzdG9yZVNjb3BlLCB3aGljaCBjYW4gYmUgdXNlZCB0byBzYXZlL3Jlc3Rv
cmUgc3RhdGUgd2l0aG91dCBkaXJlY3QgYWNjZXNzIHRvIG1lbWJlciB2YXJpYWJsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjQ2NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlldy5tbToKKyAgICAgICAgKGltYWdlRnJvbVJlY3QpOgorCiAyMDE5LTA0LTAxICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFNQ
SSB0byBjYW5vbmljYWxpemUgTlNVUkxzIHdpdGggV1RGOjpVUkwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1NldEZvclNjb3BlLmggYi9Tb3VyY2UvV1RGL3d0Zi9TZXRGb3JTY29wZS5oCmlu
ZGV4IDc4NWQ5Y2IzNGIwZDk1ZmZlZjc4MGNkZmQwM2E2NWQxMWQ2NDdmNGUuLjFlOGVlZTM4MGE1
NWZhOWU2N2UwZjUxY2NkOTZhNjczYzdjMWYzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1NldEZvclNjb3BlLmgKKysrIGIvU291cmNlL1dURi93dGYvU2V0Rm9yU2NvcGUuaApAQCAtMjYs
NiArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIApAQCAtNjYsNiArNjcsMzMgQEAgcHJpdmF0ZToKICAgICBUIG1fb3JpZ2luYWxWYWx1ZTsK
IH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBTYXZlUmVzdG9yZVNjb3BlIHsKK3B1
YmxpYzoKKyAgICBTYXZlUmVzdG9yZVNjb3BlKEZ1bmN0aW9uPFQoKT4mJiBnZXR0ZXJGdW5jdGlv
biwgRnVuY3Rpb248dm9pZChUKT4mJiBzZXR0ZXJGdW5jdGlvbikKKyAgICAgICAgOiBtX29yaWdp
bmFsVmFsdWUoZ2V0dGVyRnVuY3Rpb24oKSkKKyAgICAgICAgLCBtX3NldHRlckZ1bmN0aW9uKFdU
Rk1vdmUoc2V0dGVyRnVuY3Rpb24pKQorICAgIHsKKyAgICB9CisKKyAgICBTYXZlUmVzdG9yZVNj
b3BlKEZ1bmN0aW9uPFQoKT4mJiBnZXR0ZXJGdW5jdGlvbiwgRnVuY3Rpb248dm9pZChUKT4mJiBz
ZXR0ZXJGdW5jdGlvbiwgVCBuZXdWYWx1ZSkKKyAgICAgICAgOiBtX29yaWdpbmFsVmFsdWUoZ2V0
dGVyRnVuY3Rpb24oKSkKKyAgICAgICAgLCBtX3NldHRlckZ1bmN0aW9uKFdURk1vdmUoc2V0dGVy
RnVuY3Rpb24pKQorICAgIHsKKyAgICAgICAgbV9zZXR0ZXJGdW5jdGlvbihuZXdWYWx1ZSk7Cisg
ICAgfQorCisgICAgflNhdmVSZXN0b3JlU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9zZXR0ZXJG
dW5jdGlvbihtX29yaWdpbmFsVmFsdWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUIG1fb3Jp
Z2luYWxWYWx1ZTsKKyAgICBGdW5jdGlvbjx2b2lkIChUKT4gbV9zZXR0ZXJGdW5jdGlvbjsKK307
CisKIH0KIAogdXNpbmcgV1RGOjpTZXRGb3JTY29wZTsKK3VzaW5nIFdURjo6U2F2ZVJlc3RvcmVT
Y29wZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAxMTE1OWVlYmE4ZjY5NzcyZWU4
MGM1ZTg3YWVjYjZhMDFjMzU0ODM4Li5mY2U5NGE2MTk4OWQ5NjBhOTUyNWU5MTM2NjkwNWFkYzhj
NDMzMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00MjU3LDggKzQyNTcsNyBA
QCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdAogICAgIHVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVk
ZWRSZWN1cnNpdmUoKTsKIAogICAgIC8vIENhY2hlIHBhaW50IGJlaGF2aW9yIGFuZCBzZXQgYSBu
ZXcgYmVoYXZpb3IgYXBwcm9wcmlhdGUgZm9yIHNuYXBzaG90cy4KLSAgICBhdXRvIG9sZEJlaGF2
aW9yID0gcGFpbnRCZWhhdmlvcigpOwotICAgIHNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3Ig
fCBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9y
OjpTbmFwc2hvdHRpbmcpOworICAgIFNhdmVSZXN0b3JlU2NvcGU8T3B0aW9uU2V0PFBhaW50QmVo
YXZpb3I+PiBjaGFuZ2VTY29wZShbdGhpc10geyByZXR1cm4gcGFpbnRCZWhhdmlvcigpOyB9LCBb
dGhpc10gKGF1dG8gdmFsdWUpIHsgc2V0UGFpbnRCZWhhdmlvcih2YWx1ZSk7IH0sIHBhaW50QmVo
YXZpb3IoKSB8IFBhaW50QmVoYXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyB8IFBhaW50
QmVoYXZpb3I6OlNuYXBzaG90dGluZyk7CiAKICAgICAvLyBJZiB0aGUgc25hcHNob3Qgc2hvdWxk
IGV4Y2x1ZGUgc2VsZWN0aW9uLCB0aGVuIHdlJ2xsIGNsZWFyIHRoZSBjdXJyZW50IHNlbGVjdGlv
bgogICAgIC8vIGluIHRoZSByZW5kZXIgdHJlZSBvbmx5LiBUaGlzIHdpbGwgYWxsb3cgdXMgdG8g
cmVzdG9yZSB0aGUgc2VsZWN0aW9uIGZyb20gdGhlIERPTQpAQCAtNDI4Myw5ICs0MjgyLDYgQEAg
dm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFJlY3QKICAgICAgICAgZm9yIChhdXRvKiBmcmFtZSA9IG1fZnJh
bWUucHRyKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1fZnJh
bWUucHRyKCkpKQogICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnVwZGF0ZUFwcGVhcmFu
Y2UoKTsKICAgICB9Ci0KLSAgICAvLyBSZXN0b3JlIGNhY2hlZCBwYWludCBiZWhhdmlvci4KLSAg
ICBzZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2aW9yKTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnBh
aW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBjOWNmN2Y5ZTdmYTFkMWY2NDBjZjg1YWQy
OWEzZmFlNGJmZWQxNWYyLi4wMTdmYmZlYTE3MTEyYzllYTZjMTZhZTFhNzAyMmM5MGVkY2Q5YTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
QEAgLTE0NSw2ICsxNDUsNyBAQAogI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMuaD4KICNpbXBvcnQg
PHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNpbXBv
cnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2ltcG9ydCA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KIAog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTY4ODQsOCArNjg4NSw3IEBAIHN0YXRpYyBDR0ltYWdlUmVm
IGltYWdlRnJvbVJlY3QoRnJhbWUqIGZyYW1lLCBDR1JlY3QgcmVjdCkKICAgICAKICAgICBXZWJI
VE1MVmlldyAqdmlldyA9IChXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldzsKICAgICAKLSAgICBP
cHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4gb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lLT52aWV3KCkt
PnBhaW50QmVoYXZpb3IoKTsKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9s
ZFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMg
fCBQYWludEJlaGF2aW9yOjpTbmFwc2hvdHRpbmcpOworICAgIFNhdmVSZXN0b3JlU2NvcGU8T3B0
aW9uU2V0PFBhaW50QmVoYXZpb3I+PiBjaGFuZ2VTY29wZShbJmZyYW1lXSB7IHJldHVybiBmcmFt
ZS0+dmlldygpLT5wYWludEJlaGF2aW9yKCk7IH0sIFtdIChhdXRvIHZhbHVlKSB7IGZyYW1lLT52
aWV3KCktPnNldFBhaW50QmVoYXZpb3IodmFsdWUpOyB9LCBwYWludEJlaGF2aW9yKCkgfCBQYWlu
dEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgfCBQYWludEJlaGF2aW9yOjpTbmFw
c2hvdHRpbmcpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIApAQCAt
NjkyNywxMyArNjkyNyw5IEBAIHN0YXRpYyBDR0ltYWdlUmVmIGltYWdlRnJvbVJlY3QoRnJhbWUq
IGZyYW1lLCBDR1JlY3QgcmVjdCkKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gcmVzdWx0SW1h
Z2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHRSZWYpKTsKICAg
ICAKICAgICBXS1NldEN1cnJlbnRHcmFwaGljc0NvbnRleHQob2xkQ29udGV4dCk7Ci0gICAgZnJh
bWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKLSAgICAKICAg
ICByZXR1cm4gcmVzdWx0SW1hZ2UuYXV0b3JlbGVhc2UoKTsKICAgICAKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihv
bGRQYWludEJlaGF2aW9yKTsKICAgICByZXR1cm4gbmlsOwogfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDAyZTY2OWQ1ZGE3NDJiMWE2OTYx
ODM1M2NlYzcyYjRkZDRkNjYzMy4uOWQ5NzYwNTg0YWVkMTg1NzFjYWM3NGI4ODc3ODQ4MWE4MTJi
Njg2MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE5LTA0LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTYXZlUmVzdG9yZVNjb3BlLCB3aGljaCBjYW4gYmUg
dXNlZCB0byBzYXZlL3Jlc3RvcmUgc3RhdGUgd2l0aG91dCBkaXJlY3QgYWNjZXNzIHRvIG1lbWJl
ciB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NjQ2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2V0Rm9yU2NvcGUuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VmFsdWVIb2xkZXI6OnN0YXRlIGNvbnN0KToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlZhbHVlSG9sZGVyOjpzZXRTdGF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAxOS0wNC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTUEkgdG8gY2Fub25pY2FsaXplIE5TVVJMcyB3aXRo
IFdURjo6VVJMCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TZXRG
b3JTY29wZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TZXRGb3JTY29wZS5j
cHAKaW5kZXggOTJlMzQ5NGQ2MTE0NGY5NjhhNGJjMjJjMTk2ZjhhMzQ3ODk5YTY3Zi4uMTcyYzcz
YzYyMjA4MjI5ZWRhMGI5YjZiNzdhZjJkOTVjMjI4ZDAwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU2V0Rm9yU2NvcGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1NldEZvclNjb3BlLmNwcApAQCAtNDQsNCArNDQsNTEgQEAgVEVTVChX
VEYsIFNldEZvclNjb3BlTmVzdGVkKQogICAgIEVYUEVDVF9GQUxTRShvcmlnaW5hbGx5RmFsc2Up
OwogfQogCitjbGFzcyBWYWx1ZUhvbGRlciB7CitwdWJsaWM6CisgICAgYm9vbCBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICB2b2lkIHNldFN0YXRlKGJvb2wgc3RhdGUpIHsg
bV9zdGF0ZSA9IHN0YXRlOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3N0YXRlIHsgZmFsc2Ug
fTsKK307CisKK1RFU1QoV1RGLCBTYXZlUmVzdG9yZVNjb3BlKQoreworICAgIFZhbHVlSG9sZGVy
IGhvbGRlcjsKKyAgICBFWFBFQ1RfRkFMU0UoaG9sZGVyLnN0YXRlKCkpOworCisgICAgeworICAg
ICAgICBTYXZlUmVzdG9yZVNjb3BlPGJvb2w+IGNoYW5nZVNjb3BlKFsmaG9sZGVyXSB7IHJldHVy
biBob2xkZXIuc3RhdGUoKTsgfSwgWyZob2xkZXJdIChhdXRvIHZhbHVlKSB7IGhvbGRlci5zZXRT
dGF0ZSh2YWx1ZSk7IH0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoaG9sZGVyLnN0YXRlKCkpOwor
ICAgICAgICBob2xkZXIuc2V0U3RhdGUodHJ1ZSk7CisgICAgfQorCisgICAgRVhQRUNUX0ZBTFNF
KGhvbGRlci5zdGF0ZSgpKTsKKworICAgIHsKKyAgICAgICAgU2F2ZVJlc3RvcmVTY29wZTxib29s
PiBjaGFuZ2VTY29wZShbJmhvbGRlcl0geyByZXR1cm4gaG9sZGVyLnN0YXRlKCk7IH0sIFsmaG9s
ZGVyXSAoYXV0byB2YWx1ZSkgeyBob2xkZXIuc2V0U3RhdGUodmFsdWUpOyB9LCB0cnVlKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoaG9sZGVyLnN0YXRlKCkpOworICAgIH0KKworICAgIEVYUEVDVF9G
QUxTRShob2xkZXIuc3RhdGUoKSk7Cit9CisKK1RFU1QoV1RGLCBTYXZlUmVzdG9yZVNjb3BlTmVz
dGVkKQoreworICAgIFZhbHVlSG9sZGVyIGhvbGRlcjsKKyAgICBFWFBFQ1RfRkFMU0UoaG9sZGVy
LnN0YXRlKCkpOworCisgICAgeworICAgICAgICBTYXZlUmVzdG9yZVNjb3BlPGJvb2w+IGNoYW5n
ZVNjb3BlKFsmaG9sZGVyXSB7IHJldHVybiBob2xkZXIuc3RhdGUoKTsgfSwgWyZob2xkZXJdIChh
dXRvIHZhbHVlKSB7IGhvbGRlci5zZXRTdGF0ZSh2YWx1ZSk7IH0sIHRydWUpOworICAgICAgICBF
WFBFQ1RfVFJVRShob2xkZXIuc3RhdGUoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFNhdmVS
ZXN0b3JlU2NvcGU8Ym9vbD4gaW5uZXJDaGFuZ2VTY29wZShbJmhvbGRlcl0geyByZXR1cm4gaG9s
ZGVyLnN0YXRlKCk7IH0sIFsmaG9sZGVyXSAoYXV0byB2YWx1ZSkgeyBob2xkZXIuc2V0U3RhdGUo
dmFsdWUpOyB9LCBmYWxzZSk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaG9sZGVyLnN0YXRl
KCkpOworICAgICAgICB9CisgICAgICAgIEVYUEVDVF9UUlVFKGhvbGRlci5zdGF0ZSgpKTsKKyAg
ICB9CisgICAgRVhQRUNUX0ZBTFNFKGhvbGRlci5zdGF0ZSgpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="382820"
          type_id="1"
          status="?"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>