<?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>142447</bug_id>
          
          <creation_ts>2015-03-07 20:21:43 -0800</creation_ts>
          <short_desc>Add some WorkQueue tests to TestWebKitAPI</short_desc>
          <delta_ts>2015-03-09 09:41:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (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>
          <dependson>142432</dependson>
          <blocked>142471</blocked>
    
    <blocked>142473</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>mrobinson</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1075334</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-07 20:21:43 -0800</bug_when>
    <thetext>WorkQueue is used heavily in WebKit2 code, but we don&apos;t really have good test coverage for it. We should exercise it as part of our normal TestWebKitAPI tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075351</commentid>
    <comment_count>1</comment_count>
      <attachid>248181</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-07 23:15:49 -0800</bug_when>
    <thetext>Created attachment 248181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075352</commentid>
    <comment_count>2</comment_count>
      <attachid>248181</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-07 23:17:35 -0800</bug_when>
    <thetext>Comment on attachment 248181
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WTF/WorkQueue.cpp:110
&gt; +    std::this_thread::sleep_for(std::chrono::nanoseconds(1000));

I&apos;m just trying to simulate some lengthy bit of work here. Maybe there&apos;s a better way?

&gt; Tools/TestWebKitAPI/Tests/WTF/WorkQueue.cpp:132
&gt; +    queue1-&gt;dispatchAfter(std::chrono::milliseconds(100), finishedTests);

I want to verify that the two queues work independently. Not sure if there is a better way to do this? Maybe more condition variables to coordinate the order of things?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075353</commentid>
    <comment_count>3</comment_count>
      <attachid>248182</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-07 23:34:01 -0800</bug_when>
    <thetext>Created attachment 248182
Patch v2 (Activate on Windows)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075354</commentid>
    <comment_count>4</comment_count>
      <attachid>248182</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-07 23:51:05 -0800</bug_when>
    <thetext>Comment on attachment 248182
Patch v2 (Activate on Windows)

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

&gt; Tools/TestWebKitAPI/Tests/WTF/WorkQueue.cpp:124
&gt; +    queue1-&gt;dispatchAfter(std::chrono::milliseconds(100), finishedTests);

I&apos;m trying to simulate two queues performing different amounts of work. Maybe there&apos;s a better way than these delays...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075418</commentid>
    <comment_count>5</comment_count>
      <attachid>248203</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-08 14:04:02 -0700</bug_when>
    <thetext>Created attachment 248203
Patch v3 (Update per weinig comments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075420</commentid>
    <comment_count>6</comment_count>
      <attachid>248203</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-03-08 14:31:04 -0700</bug_when>
    <thetext>Comment on attachment 248203
Patch v3 (Update per weinig comments)

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

&gt; Tools/TestWebKitAPI/Tests/WTF/WorkQueue.cpp:191
&gt; +    EXPECT_TRUE(done &gt;= start + std::chrono::milliseconds(500));

I am not sure how guaranteed accurate dispatchAfter is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075422</commentid>
    <comment_count>7</comment_count>
      <attachid>248203</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-03-08 14:32:43 -0700</bug_when>
    <thetext>Comment on attachment 248203
Patch v3 (Update per weinig comments)

The tests look good, though the DispatchAfter worries me that it could be flakey (as all timing depended tests are).  I would land it without testing that the actual timing matches up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075472</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-08 16:55:35 -0700</bug_when>
    <thetext>Committed r181249: &lt;http://trac.webkit.org/changeset/181249&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075474</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-08 16:58:11 -0700</bug_when>
    <thetext>EFL and GTK ports should probably add this test as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075526</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-03-08 21:53:59 -0700</bug_when>
    <thetext>The corresponding change for CMake is here: https://bugs.webkit.org/show_bug.cgi?id=142473</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075594</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-03-09 05:59:09 -0700</bug_when>
    <thetext>Attempt to fix WTF_WorkQueue.TwoQueues timeout test failure
&lt;http://trac.webkit.org/changeset/181265&gt;

Easiest to see where it started failing here:
&lt;https://build.webkit.org/builders/Apple%20Mavericks%20Debug%20WK2%20(Tests)?numbuilds=50&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075624</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-09 09:41:05 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Attempt to fix WTF_WorkQueue.TwoQueues timeout test failure
&gt; &lt;http://trac.webkit.org/changeset/181265&gt;
&gt; 
&gt; Easiest to see where it started failing here:
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20Mavericks%20Debug%20WK2%20(Tests)?numbuilds=50&gt;

Looks like that worked. Thank you for fixing that!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248181</attachid>
            <date>2015-03-07 23:15:49 -0800</date>
            <delta_ts>2015-03-07 23:33:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142447-20150307231527.patch</filename>
            <type>text/plain</type>
            <size>9237</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4MTIyMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDE1LTAzLTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzb21lIFdvcmtRdWV1ZSB0ZXN0cyB0byBUZXN0V2ViS2l0QVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI0NDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtRdWV1ZS5jcHA6IEFkZGVkLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6c2ltcGxlVGVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpsb25n
VGVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0aGlyZFRlc3QpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6ZmluaXNoZWRUZXN0cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmxvbmdUZXN0Mik6CisKIDIwMTUtMDMtMDcgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gSW5jcmVh
c2UgVGVzdFdlYktpdEFQSSBUZXN0IENvdmVyYWdlW1dpbl0gSW5jcmVhc2UgVGVzdFdlYktpdEFQ
SSBUZXN0IENvdmVyYWdlCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgx
MjE5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKIAkJNzY3MzQ5OUQx
OTMwQzVCQjAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZF9idW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzY3MzQ5OUExOTMwMTgyRTAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwICovOyB9OwogCQk3NkUxODJERDE1NDc1NjkxMDBGMUZB
REQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdp
bGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREYxNTQ3NjdFNjAw
RjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREUxNTQ3NUE4MzAwRjFGQURE
IC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi87IH07CisJCTdBQTZBMTUyMUFBQzBCMzEw
MDJCMkVEMyAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0FBNkExNTExQUFDMEIzMTAwMkIyRUQzIC8qIFdvcmtRdWV1ZS5jcHAg
Ki87IH07CiAJCTdDNDg2QkExMUFBMTI1NjcwMDNGNkY5QiAvKiBidW5kbGUtZmlsZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDg2
QkEwMUFBMTI1NEIwMDNGNkY5QiAvKiBidW5kbGUtZmlsZS5odG1sICovOyB9OwogCQk3QzU0QTRC
RTFBQTExQ0NBMDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTRBNEJDMUFBMTFDQ0EwMDM4MEY3
OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwICovOyB9OwogCQk3QzU0QTRDMTFBQTExQ0U0MDAz
ODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzU0QTRCRjFBQTExQ0U0MDAzODBGNzggLyog
V0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5jcHAgKi87IH07CkBAIC01MTUsNiArNTE2LDcgQEAK
IAkJNzZFMTgyRDkxNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lsbFNlbmRTdWJtaXRFdmVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RTE4MkRDMTU0NzU2OTEwMEYxRkFE
RCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAvKiBhdXRvLXN1
Ym1pdHRpbmctZm9ybS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImF1dG8tc3Vi
bWl0dGluZy1mb3JtLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QUE2QTE1
MTFBQUMwQjMxMDAyQjJFRDMgLyogV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDNDg2QkEwMUFBMTI1NEIwMDNGNkY5QiAvKiBidW5kbGUtZmlsZS5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gImJ1bmRsZS1maWxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzU0
QTRCQzFBQTExQ0NBMDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlRmlsZUhhbmRsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTRBNEJGMUFBMTFDRTQwMDM4MEY3OCAvKiBXS0J1
bmRsZUZpbGVIYW5kbGVfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLQnVuZGxlRmlsZUhhbmRsZV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTA0Niw2ICsxMDQ4LDcgQEAKIAkJCQlCQzU1RjVGODE0QUQ3OEVFMDA0ODRC
RTEgLyogVmVjdG9yLmNwcCAqLywKIAkJCQkyNjVBRjU0RjE1RDFFNDhBMDBCMENCNEEgLyogV1RG
U3RyaW5nLmNwcCAqLywKIAkJCQkxQ0I5QkMzNzFBNjc0ODIzMDBGRTU2NzggLyogV2Vha1B0ci5j
cHAgKi8sCisJCQkJN0FBNkExNTExQUFDMEIzMTAwMkIyRUQzIC8qIFdvcmtRdWV1ZS5jcHAgKi8s
CiAJCQkpOwogCQkJcGF0aCA9IFdURjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0x
NTQ5LDYgKzE1NTIsNyBAQAogCQkJZmlsZXMgPSAoCiAJCQkJMUNCOUJDMzgxQTY3NDgyMzAwRkU1
Njc4IC8qIFdlYWtQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU3NzY1Q0QxNkM0RDgwQTAw
QkEyQkIxIC8qIG1haW5JT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk3QUE2QTE1MjFBQUMwQjMx
MDAyQjJFRDMgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFNzc2NUNGMTZD
NEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtRdWV1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiVGVzdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1
ZXVlLmg+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHRocmVhZD4KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCisvKgorVEVTVChXVEZfV29ya1F1ZXVlLCBDb25zdHJ1Y3Rpb24p
Cit7CisgICAgYXV0byBxdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0
LlRlc3QuY29uc3RydWN0aW9uIik7CisgICAgRVhQRUNUX05PVF9OVUxMKHF1ZXVlKTsKK30KKyov
CisKK3N0YXRpYyBib29sIGNhbGxlZFNpbXBsZVRlc3QgPSBmYWxzZTsKK3N0YXRpYyBib29sIGNh
bGxlZExvbmdUZXN0ID0gZmFsc2U7CitzdGF0aWMgYm9vbCBjYWxsZWRMb25nVGVzdDIgPSBmYWxz
ZTsKK3N0YXRpYyBib29sIGNhbGxlZFRoaXJkVGVzdCA9IGZhbHNlOworCitzdGF0aWMgTXV0ZXgg
bV9sb2NrOworc3RhdGljIFRocmVhZENvbmRpdGlvbiBtX3Rlc3RDb21wbGV0ZWQ7CitzdGF0aWMg
VGhyZWFkQ29uZGl0aW9uIG1fdGVzdENvbXBsZXRlZDI7CitzdGF0aWMgVmVjdG9yPHN0ZDo6c3Ry
aW5nPiBtX2NhbGxlZE9yZGVyOworCitzdGF0aWMgdm9pZCBzaW1wbGVUZXN0KCkKK3sKKyAgICBj
YWxsZWRTaW1wbGVUZXN0ID0gdHJ1ZTsKKyAgICBtX2NhbGxlZE9yZGVyLmFwcGVuZCgic2ltcGxl
VGVzdCIpOworfQorCitzdGF0aWMgdm9pZCBsb25nVGVzdCgpCit7CisgICAgY2FsbGVkTG9uZ1Rl
c3QgPSB0cnVlOworICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNsZWVwX2ZvcihzdGQ6OmNocm9ubzo6
bmFub3NlY29uZHMoMTAwKSk7CisgICAgbV9jYWxsZWRPcmRlci5hcHBlbmQoImxvbmdUZXN0Iik7
Cit9CisKK3N0YXRpYyB2b2lkIHRoaXJkVGVzdCgpCit7CisgICAgY2FsbGVkVGhpcmRUZXN0ID0g
dHJ1ZTsKKyAgICBtX2NhbGxlZE9yZGVyLmFwcGVuZCgidGhpcmRUZXN0Iik7Cit9CisKK3N0YXRp
YyB2b2lkIGZpbmlzaGVkVGVzdHMoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2sp
OworICAgIEVYUEVDVF9UUlVFKGNhbGxlZFNpbXBsZVRlc3QpOworICAgIEVYUEVDVF9UUlVFKGNh
bGxlZExvbmdUZXN0KTsKKyAgICBFWFBFQ1RfVFJVRShjYWxsZWRUaGlyZFRlc3QpOworCisgICAg
bV90ZXN0Q29tcGxldGVkLnNpZ25hbCgpOworfQorCitURVNUKFdURl9Xb3JrUXVldWUsIFNpbXBs
ZSkKK3sKKyAgICBtX2NhbGxlZE9yZGVyLmNsZWFyKCk7CisgICAgYXV0byBxdWV1ZSA9IFdvcmtR
dWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlRlc3Quc2ltcGxlIik7CisKKyAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIHF1ZXVlLT5kaXNwYXRjaChzaW1wbGVUZXN0
KTsKKyAgICBxdWV1ZS0+ZGlzcGF0Y2gobG9uZ1Rlc3QpOworICAgIHF1ZXVlLT5kaXNwYXRjaCh0
aGlyZFRlc3QpOworICAgIHF1ZXVlLT5kaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjptaWxsaXNl
Y29uZHMoNTAwKSwgZmluaXNoZWRUZXN0cyk7CisKKyAgICBtX3Rlc3RDb21wbGV0ZWQud2FpdCht
X2xvY2spOworCisgICAgRVhQRUNUX1RSVUUoY2FsbGVkU2ltcGxlVGVzdCk7CisgICAgRVhQRUNU
X1RSVUUoY2FsbGVkTG9uZ1Rlc3QpOworICAgIEVYUEVDVF9UUlVFKGNhbGxlZFRoaXJkVGVzdCk7
CisKKyAgICBFWFBFQ1RfRVEobV9jYWxsZWRPcmRlci5zaXplKCksIHN0YXRpY19jYXN0PHNpemVf
dD4oMykpOworICAgIEVYUEVDVF9TVFJFUSgic2ltcGxlVGVzdCIsIG1fY2FsbGVkT3JkZXJbMF0u
Y19zdHIoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJsb25nVGVzdCIsIG1fY2FsbGVkT3JkZXJbMV0u
Y19zdHIoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJ0aGlyZFRlc3QiLCBtX2NhbGxlZE9yZGVyWzJd
LmNfc3RyKCkpOworfQorCitzdGF0aWMgdm9pZCBsb25nVGVzdDIoKQoreworICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNsZWVwX2ZvcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMoMTAwMCkpOworICAgIG1fY2FsbGVkT3JkZXIuYXBwZW5kKCJs
b25nVGVzdDIiKTsKKyAgICAKKyAgICBjYWxsZWRMb25nVGVzdDIgPSB0cnVlOworICAgIG1fdGVz
dENvbXBsZXRlZDIuc2lnbmFsKCk7Cit9CisKK1RFU1QoV1RGX1dvcmtRdWV1ZSwgVHdvUXVldWVz
KQoreworICAgIG1fY2FsbGVkT3JkZXIuY2xlYXIoKTsKKyAgICBjYWxsZWRTaW1wbGVUZXN0ID0g
ZmFsc2U7CisgICAgY2FsbGVkTG9uZ1Rlc3QyID0gZmFsc2U7CisgICAgY2FsbGVkVGhpcmRUZXN0
ID0gZmFsc2U7CisKKyAgICBhdXRvIHF1ZXVlMSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBw
bGUuV2ViS2l0LlRlc3QudHdvUXVldWVzMSIpOworICAgIGF1dG8gcXVldWUyID0gV29ya1F1ZXVl
OjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuVGVzdC50d29RdWV1ZXMyIik7CisKKyAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICBxdWV1ZTEtPmRpc3BhdGNoKHNpbXBs
ZVRlc3QpOworICAgIHF1ZXVlMi0+ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzKDUwMCksIGxvbmdUZXN0Mik7CisgICAgcXVldWUxLT5kaXNwYXRjaCh0aGlyZFRlc3QpOwor
ICAgIHF1ZXVlMS0+ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDEwMCks
IGZpbmlzaGVkVGVzdHMpOworICAgIAorICAgIG1fdGVzdENvbXBsZXRlZC53YWl0KG1fbG9jayk7
CisKKyAgICBFWFBFQ1RfVFJVRShjYWxsZWRTaW1wbGVUZXN0KTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Y2FsbGVkTG9uZ1Rlc3QyKTsKKyAgICBFWFBFQ1RfVFJVRShjYWxsZWRUaGlyZFRlc3QpOworCisg
ICAgbV90ZXN0Q29tcGxldGVkMi53YWl0KG1fbG9jayk7CisKKyAgICBFWFBFQ1RfVFJVRShjYWxs
ZWRMb25nVGVzdDIpOworCisgICAgRVhQRUNUX0VRKG1fY2FsbGVkT3JkZXIuc2l6ZSgpLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KDMpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpbXBsZVRlc3QiLCBtX2Nh
bGxlZE9yZGVyWzBdLmNfc3RyKCkpOworICAgIEVYUEVDVF9TVFJFUSgidGhpcmRUZXN0IiwgbV9j
YWxsZWRPcmRlclsxXS5jX3N0cigpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImxvbmdUZXN0MiIsIG1f
Y2FsbGVkT3JkZXJbMl0uY19zdHIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248182</attachid>
            <date>2015-03-07 23:34:01 -0800</date>
            <delta_ts>2015-03-08 14:03:56 -0700</delta_ts>
            <desc>Patch v2 (Activate on Windows)</desc>
            <filename>bug-142447-20150307234244.patch</filename>
            <type>text/plain</type>
            <size>10605</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4MTIyMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDE1LTAzLTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzb21lIFdvcmtRdWV1ZSB0ZXN0cyB0byBUZXN0V2ViS2l0QVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI0NDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZj
eHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Xb3JrUXVldWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNpbXBsZVRl
c3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bG9uZ1Rlc3QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6dGhpcmRUZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmZpbmlzaGVkVGVz
dHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpsb25nVGVzdDIpOgorCiAyMDE1LTAzLTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIEluY3JlYXNlIFRlc3RXZWJLaXRBUEkgVGVzdCBD
b3ZlcmFnZVtXaW5dIEluY3JlYXNlIFRlc3RXZWJLaXRBUEkgVGVzdCBDb3ZlcmFnZQpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdlYktpdEFQSS52
Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS52
Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvagkocmV2aXNpb24gMTgxMjIxKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsNiArMzM4LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXFRlc3RzXFdURlxUZW1wb3JhcnlDaGFuZ2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cVGVzdHNcV1RGXFZlY3Rvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxUZXN0c1xXVEZcV2Vha1B0ci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxUZXN0c1xXVEZcV29ya1F1ZXVlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXFRlc3RzXFdURlxXVEZTdHJpbmcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cd2luXEhvc3RXaW5kb3cuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd2lu
XG1haW4uY3BwIiAvPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZj
eHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9q
LmZpbHRlcnMJKHJldmlzaW9uIDE4MTIyMSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjYsNiArMTY2LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3Rz
XEphdmFTY3JpcHRDb3JlXFZNSW5zcGVjdG9yLmNwcCI+CiAgICAgICA8RmlsdGVyPlRlc3RzXEph
dmFTY3JpcHRDb3JlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxUZXN0c1xXVEZcV29ya1F1ZXVlLmNwcCI+CisgICAgICA8RmlsdGVyPlRlc3Rz
XFdURjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1H
cm91cD4KICAgICA8Tm9uZSBJbmNsdWRlPSJUZXN0V2ViS2l0QVBJUG9zdEJ1aWxkLmNtZCIgLz4K
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODEyMjEpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogCQk3NjczNDk5RDE5MzBDNUJCMDBFNDRERjkg
LyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjczNDk5QTE5MzAx
ODJFMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1
bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkREMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1
Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3NkUxODJEQzE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVu
dF9CdW5kbGUuY3BwICovOyB9OwogCQk3NkUxODJERjE1NDc2N0U2MDBGMUZBREQgLyogYXV0by1z
dWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0
aW5nLWZvcm0uaHRtbCAqLzsgfTsKKwkJN0FBNkExNTIxQUFDMEIzMTAwMkIyRUQzIC8qIFdvcmtR
dWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QUE2QTE1MTFBQUMwQjMxMDAyQjJFRDMgLyogV29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJN0M0ODZC
QTExQUExMjU2NzAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0ODZCQTAxQUExMjU0QjAwM0Y2
RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwgKi87IH07CiAJCTdDNTRBNEJFMUFBMTFDQ0EwMDM4MEY3
OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M1NEE0QkMxQUExMUNDQTAwMzgwRjc4IC8qIFdLQnVuZGxlRmls
ZUhhbmRsZS5jcHAgKi87IH07CiAJCTdDNTRBNEMxMUFBMTFDRTQwMDM4MEY3OCAvKiBXS0J1bmRs
ZUZpbGVIYW5kbGVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDNTRBNEJGMUFBMTFDRTQwMDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5k
bGVfQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTUxNSw2ICs1MTYsNyBAQAogCQk3NkUxODJEOTE1NDc1
NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3Vi
bWl0RXZlbnRfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBQTZBMTUxMUFBQzBCMzEwMDJCMkVE
MyAvKiBXb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0ODZCQTAxQUEx
MjU0QjAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYnVuZGxlLWZpbGUu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTRBNEJDMUFBMTFDQ0EwMDM4
MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tCdW5kbGVGaWxlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M1NEE0QkYxQUExMUNFNDAwMzgwRjc4IC8qIFdLQnVuZGxlRmlsZUhhbmRsZV9C
dW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVG
aWxlSGFuZGxlX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ2
LDYgKzEwNDgsNyBAQAogCQkJCUJDNTVGNUY4MTRBRDc4RUUwMDQ4NEJFMSAvKiBWZWN0b3IuY3Bw
ICovLAogCQkJCTI2NUFGNTRGMTVEMUU0OEEwMEIwQ0I0QSAvKiBXVEZTdHJpbmcuY3BwICovLAog
CQkJCTFDQjlCQzM3MUE2NzQ4MjMwMEZFNTY3OCAvKiBXZWFrUHRyLmNwcCAqLywKKwkJCQk3QUE2
QTE1MTFBQUMwQjMxMDAyQjJFRDMgLyogV29ya1F1ZXVlLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gV1RGOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE1NDksNiArMTU1Miw3IEBA
CiAJCQlmaWxlcyA9ICgKIAkJCQkxQ0I5QkMzODFBNjc0ODIzMDBGRTU2NzggLyogV2Vha1B0ci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTc3NjVDRDE2QzREODBBMDBCQTJCQjEgLyogbWFpbklP
Uy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdBQTZBMTUyMUFBQzBCMzEwMDJCMkVEMyAvKiBXb3Jr
UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU3NzY1Q0YxNkM0RDgxMTAwQkEyQkIxIC8q
IG1haW5NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1dvcmtRdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvV29ya1F1ZXVlLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1dvcmtRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKyNpbmNsdWRl
IDxzdHJpbmc+CisjaW5jbHVkZSA8dGhyZWFkPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK3N0YXRpYyBib29sIGNhbGxlZFNpbXBsZVRlc3QgPSBmYWxzZTsKK3N0YXRpYyBib29sIGNh
bGxlZExvbmdUZXN0ID0gZmFsc2U7CitzdGF0aWMgYm9vbCBjYWxsZWRMb25nVGVzdDIgPSBmYWxz
ZTsKK3N0YXRpYyBib29sIGNhbGxlZFRoaXJkVGVzdCA9IGZhbHNlOworCitzdGF0aWMgTXV0ZXgg
bV9sb2NrOworc3RhdGljIFRocmVhZENvbmRpdGlvbiBtX3Rlc3RDb21wbGV0ZWQ7CitzdGF0aWMg
VGhyZWFkQ29uZGl0aW9uIG1fdGVzdENvbXBsZXRlZDI7CitzdGF0aWMgVmVjdG9yPHN0ZDo6c3Ry
aW5nPiBtX2NhbGxlZE9yZGVyOworCitzdGF0aWMgdm9pZCBzaW1wbGVUZXN0KCkKK3sKKyAgICBj
YWxsZWRTaW1wbGVUZXN0ID0gdHJ1ZTsKKyAgICBtX2NhbGxlZE9yZGVyLmFwcGVuZCgic2ltcGxl
VGVzdCIpOworfQorCitzdGF0aWMgdm9pZCBsb25nVGVzdCgpCit7CisgICAgY2FsbGVkTG9uZ1Rl
c3QgPSB0cnVlOworICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNsZWVwX2ZvcihzdGQ6OmNocm9ubzo6
bmFub3NlY29uZHMoMTAwKSk7CisgICAgbV9jYWxsZWRPcmRlci5hcHBlbmQoImxvbmdUZXN0Iik7
Cit9CisKK3N0YXRpYyB2b2lkIHRoaXJkVGVzdCgpCit7CisgICAgY2FsbGVkVGhpcmRUZXN0ID0g
dHJ1ZTsKKyAgICBtX2NhbGxlZE9yZGVyLmFwcGVuZCgidGhpcmRUZXN0Iik7Cit9CisKK3N0YXRp
YyB2b2lkIGZpbmlzaGVkVGVzdHMoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2sp
OworICAgIEVYUEVDVF9UUlVFKGNhbGxlZFNpbXBsZVRlc3QpOworICAgIEVYUEVDVF9UUlVFKGNh
bGxlZExvbmdUZXN0KTsKKyAgICBFWFBFQ1RfVFJVRShjYWxsZWRUaGlyZFRlc3QpOworCisgICAg
bV90ZXN0Q29tcGxldGVkLnNpZ25hbCgpOworfQorCitURVNUKFdURl9Xb3JrUXVldWUsIFNpbXBs
ZSkKK3sKKyAgICBtX2NhbGxlZE9yZGVyLmNsZWFyKCk7CisgICAgYXV0byBxdWV1ZSA9IFdvcmtR
dWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlRlc3Quc2ltcGxlIik7CisKKyAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKworICAgIHF1ZXVlLT5kaXNwYXRjaChzaW1wbGVUZXN0
KTsKKyAgICBxdWV1ZS0+ZGlzcGF0Y2gobG9uZ1Rlc3QpOworICAgIHF1ZXVlLT5kaXNwYXRjaCh0
aGlyZFRlc3QpOworICAgIHF1ZXVlLT5kaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjptaWxsaXNl
Y29uZHMoNTAwKSwgZmluaXNoZWRUZXN0cyk7CisKKyAgICBtX3Rlc3RDb21wbGV0ZWQud2FpdCht
X2xvY2spOworCisgICAgRVhQRUNUX1RSVUUoY2FsbGVkU2ltcGxlVGVzdCk7CisgICAgRVhQRUNU
X1RSVUUoY2FsbGVkTG9uZ1Rlc3QpOworICAgIEVYUEVDVF9UUlVFKGNhbGxlZFRoaXJkVGVzdCk7
CisKKyAgICBFWFBFQ1RfRVEobV9jYWxsZWRPcmRlci5zaXplKCksIHN0YXRpY19jYXN0PHNpemVf
dD4oMykpOworICAgIEVYUEVDVF9TVFJFUSgic2ltcGxlVGVzdCIsIG1fY2FsbGVkT3JkZXJbMF0u
Y19zdHIoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJsb25nVGVzdCIsIG1fY2FsbGVkT3JkZXJbMV0u
Y19zdHIoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJ0aGlyZFRlc3QiLCBtX2NhbGxlZE9yZGVyWzJd
LmNfc3RyKCkpOworfQorCitzdGF0aWMgdm9pZCBsb25nVGVzdDIoKQoreworICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNsZWVwX2ZvcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMoMTAwMCkpOworICAgIG1fY2FsbGVkT3JkZXIuYXBwZW5kKCJs
b25nVGVzdDIiKTsKKyAgICAKKyAgICBjYWxsZWRMb25nVGVzdDIgPSB0cnVlOworICAgIG1fdGVz
dENvbXBsZXRlZDIuc2lnbmFsKCk7Cit9CisKK1RFU1QoV1RGX1dvcmtRdWV1ZSwgVHdvUXVldWVz
KQoreworICAgIG1fY2FsbGVkT3JkZXIuY2xlYXIoKTsKKyAgICBjYWxsZWRTaW1wbGVUZXN0ID0g
ZmFsc2U7CisgICAgY2FsbGVkTG9uZ1Rlc3QyID0gZmFsc2U7CisgICAgY2FsbGVkVGhpcmRUZXN0
ID0gZmFsc2U7CisKKyAgICBhdXRvIHF1ZXVlMSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBw
bGUuV2ViS2l0LlRlc3QudHdvUXVldWVzMSIpOworICAgIGF1dG8gcXVldWUyID0gV29ya1F1ZXVl
OjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuVGVzdC50d29RdWV1ZXMyIik7CisKKyAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICBxdWV1ZTEtPmRpc3BhdGNoKHNpbXBs
ZVRlc3QpOworICAgIHF1ZXVlMi0+ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzKDUwMCksIGxvbmdUZXN0Mik7CisgICAgcXVldWUxLT5kaXNwYXRjaCh0aGlyZFRlc3QpOwor
ICAgIHF1ZXVlMS0+ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDEwMCks
IGZpbmlzaGVkVGVzdHMpOworICAgIAorICAgIG1fdGVzdENvbXBsZXRlZC53YWl0KG1fbG9jayk7
CisKKyAgICBFWFBFQ1RfVFJVRShjYWxsZWRTaW1wbGVUZXN0KTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Y2FsbGVkTG9uZ1Rlc3QyKTsKKyAgICBFWFBFQ1RfVFJVRShjYWxsZWRUaGlyZFRlc3QpOworCisg
ICAgbV90ZXN0Q29tcGxldGVkMi53YWl0KG1fbG9jayk7CisKKyAgICBFWFBFQ1RfVFJVRShjYWxs
ZWRMb25nVGVzdDIpOworCisgICAgRVhQRUNUX0VRKG1fY2FsbGVkT3JkZXIuc2l6ZSgpLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KDMpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNpbXBsZVRlc3QiLCBtX2Nh
bGxlZE9yZGVyWzBdLmNfc3RyKCkpOworICAgIEVYUEVDVF9TVFJFUSgidGhpcmRUZXN0IiwgbV9j
YWxsZWRPcmRlclsxXS5jX3N0cigpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImxvbmdUZXN0MiIsIG1f
Y2FsbGVkT3JkZXJbMl0uY19zdHIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248203</attachid>
            <date>2015-03-08 14:04:02 -0700</date>
            <delta_ts>2015-03-08 14:32:43 -0700</delta_ts>
            <desc>Patch v3 (Update per weinig comments)</desc>
            <filename>bug-142447-20150308140340.patch</filename>
            <type>text/plain</type>
            <size>12753</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4MTI0NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDE1LTAzLTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzb21lIFdvcmtRdWV1ZSB0ZXN0cyB0byBUZXN0V2ViS2l0QVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI0NDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZj
eHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Xb3JrUXVldWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNpbXBsZVRl
c3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bG9uZ1Rlc3QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6dGhpcmRUZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmZpbmlzaGVkVGVz
dHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpsb25nVGVzdDIpOgorCiAyMDE1LTAzLTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgd2lsbERlc3Ryb3lGcmFtZSBpbiBX
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHBy
b2oJKHJldmlzaW9uIDE4MTI0NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM4LDYg
KzMzOCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZcVGVtcG9yYXJ5
Q2hhbmdlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdURlxWZWN0
b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RGXFdlYWtQdHIu
Y3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RGXFdvcmtRdWV1ZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZcV1RGU3RyaW5nLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdpblxIb3N0V2luZG93LmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHdpblxtYWluLmNwcCIgLz4KSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJv
ai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxODEyNDUp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0
QVBJLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2Niw5IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xKYXZhU2NyaXB0Q29yZVxWTUluc3BlY3Rv
ci5jcHAiPgogICAgICAgPEZpbHRlcj5UZXN0c1xKYXZhU2NyaXB0Q29yZTwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RGXFdvcmtR
dWV1ZS5jcHAiPgorICAgICAgPEZpbHRlcj5UZXN0c1xXVEY8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVkZT0i
VGVzdFdlYktpdEFQSVBvc3RCdWlsZC5jbWQiIC8+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTgxMjQ1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcg
QEAKIAkJNzY3MzQ5OUQxOTMwQzVCQjAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzY3MzQ5OUExOTMwMTgyRTAwRTQ0REY5IC8qIFN0b3BMb2FkaW5n
RHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwICovOyB9OwogCQk3NkUxODJE
RDE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREMxNTQ3NTY5
MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZF
MTgyREYxNTQ3NjdFNjAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREUx
NTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi87IH07CisJCTdB
QTZBMTUyMUFBQzBCMzEwMDJCMkVEMyAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBNkExNTExQUFDMEIzMTAwMkIyRUQzIC8q
IFdvcmtRdWV1ZS5jcHAgKi87IH07CiAJCTdDNDg2QkExMUFBMTI1NjcwMDNGNkY5QiAvKiBidW5k
bGUtZmlsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDNDg2QkEwMUFBMTI1NEIwMDNGNkY5QiAvKiBidW5kbGUtZmlsZS5odG1sICov
OyB9OwogCQk3QzU0QTRCRTFBQTExQ0NBMDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTRBNEJD
MUFBMTFDQ0EwMDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwICovOyB9OwogCQk3QzU0
QTRDMTFBQTExQ0U0MDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzU0QTRCRjFBQTEx
Q0U0MDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5jcHAgKi87IH07CkBAIC01
MTUsNiArNTE2LDcgQEAKIAkJNzZFMTgyRDkxNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3Vi
bWl0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lsbFNl
bmRTdWJtaXRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RTE4MkRD
MTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RTE4MkRFMTU0NzVBODMwMEYx
RkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QUE2QTE1MTFBQUMwQjMxMDAyQjJFRDMgLyogV29ya1F1ZXVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDNDg2QkEwMUFBMTI1NEIwMDNGNkY5QiAvKiBidW5kbGUtZmls
ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gImJ1bmRsZS1maWxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzU0QTRCQzFBQTExQ0NBMDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlRmlsZUhh
bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTRBNEJGMUFBMTFDRTQw
MDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGVfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlRmlsZUhhbmRsZV9CdW5kbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0Niw2ICsxMDQ4LDcgQEAKIAkJCQlCQzU1RjVG
ODE0QUQ3OEVFMDA0ODRCRTEgLyogVmVjdG9yLmNwcCAqLywKIAkJCQkyNjVBRjU0RjE1RDFFNDhB
MDBCMENCNEEgLyogV1RGU3RyaW5nLmNwcCAqLywKIAkJCQkxQ0I5QkMzNzFBNjc0ODIzMDBGRTU2
NzggLyogV2Vha1B0ci5jcHAgKi8sCisJCQkJN0FBNkExNTExQUFDMEIzMTAwMkIyRUQzIC8qIFdv
cmtRdWV1ZS5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdURjsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0xNTQ5LDYgKzE1NTIsNyBAQAogCQkJZmlsZXMgPSAoCiAJCQkJMUNCOUJD
MzgxQTY3NDgyMzAwRkU1Njc4IC8qIFdlYWtQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU3
NzY1Q0QxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk3
QUE2QTE1MjFBQUMwQjMxMDAyQjJFRDMgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJFNzc2NUNGMTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtRdWV1ZS5jcHAJKHJldmlzaW9u
IDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvV29ya1F1ZXVlLmg+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHRocmVh
ZD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgY29uc3QgY2hhciogc2lt
cGxlVGVzdExhYmVsID0gInNpbXBsZVRlc3QiOworc3RhdGljIGNvbnN0IGNoYXIqIGxvbmdUZXN0
TGFiZWwgPSAibG9uZ1Rlc3QiOworc3RhdGljIGNvbnN0IGNoYXIqIHRoaXJkVGVzdExhYmVsID0g
InRoaXJkVGVzdCI7CitzdGF0aWMgY29uc3QgY2hhciogZGlzcGF0Y2hBZnRlckxhYmVsID0gImRp
c3BhdGNoQWZ0ZXIiOworICAgIAorVEVTVChXVEZfV29ya1F1ZXVlLCBTaW1wbGUpCit7CisgICAg
TXV0ZXggbV9sb2NrOworICAgIFRocmVhZENvbmRpdGlvbiBtX3Rlc3RDb21wbGV0ZWQ7CisgICAg
VmVjdG9yPHN0ZDo6c3RyaW5nPiBtX2Z1bmN0aW9uQ2FsbE9yZGVyOworCisgICAgYm9vbCBjYWxs
ZWRTaW1wbGVUZXN0ID0gZmFsc2U7CisgICAgYm9vbCBjYWxsZWRMb25nVGVzdCA9IGZhbHNlOwor
ICAgIGJvb2wgY2FsbGVkVGhpcmRUZXN0ID0gZmFsc2U7CisKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciogc2ltcGxlVGVzdExhYmVsID0gInNpbXBsZVRlc3QiOworICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBsb25nVGVzdExhYmVsID0gImxvbmdUZXN0IjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogdGhp
cmRUZXN0TGFiZWwgPSAidGhpcmRUZXN0IjsKKworICAgIGF1dG8gcXVldWUgPSBXb3JrUXVldWU6
OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5UZXN0LnNpbXBsZSIpOworICAgIAorICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0odm9pZCkgewor
ICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVuZChzaW1wbGVUZXN0TGFiZWwpOworICAg
ICAgICBjYWxsZWRTaW1wbGVUZXN0ID0gdHJ1ZTsKKyAgICB9KTsKKyAgICAKKyAgICBxdWV1ZS0+
ZGlzcGF0Y2goWyZdKHZvaWQpIHsKKyAgICAgICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQo
bG9uZ1Rlc3RMYWJlbCk7CisgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNsZWVwX2ZvcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMoMTAwKSk7CisgICAgICAgIGNhbGxlZExvbmdUZXN0ID0gdHJ1
ZTsKKyAgICB9KTsKKworICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0odm9pZCkgeworICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9mdW5jdGlvbkNhbGxPcmRlci5h
cHBlbmQodGhpcmRUZXN0TGFiZWwpOworICAgICAgICBjYWxsZWRUaGlyZFRlc3QgPSB0cnVlOwor
CisgICAgICAgIEVYUEVDVF9UUlVFKGNhbGxlZFNpbXBsZVRlc3QpOworICAgICAgICBFWFBFQ1Rf
VFJVRShjYWxsZWRMb25nVGVzdCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGNhbGxlZFRoaXJkVGVz
dCk7CisgICAgICAgIAorICAgICAgICBtX3Rlc3RDb21wbGV0ZWQuc2lnbmFsKCk7CisgICAgfSk7
CisKKyAgICBtX3Rlc3RDb21wbGV0ZWQud2FpdChtX2xvY2spOworCisgICAgRVhQRUNUX1RSVUUo
Y2FsbGVkU2ltcGxlVGVzdCk7CisgICAgRVhQRUNUX1RSVUUoY2FsbGVkTG9uZ1Rlc3QpOworICAg
IEVYUEVDVF9UUlVFKGNhbGxlZFRoaXJkVGVzdCk7CisKKyAgICBFWFBFQ1RfRVEobV9mdW5jdGlv
bkNhbGxPcmRlci5zaXplKCksIHN0YXRpY19jYXN0PHNpemVfdD4oMykpOworICAgIEVYUEVDVF9T
VFJFUShzaW1wbGVUZXN0TGFiZWwsIG1fZnVuY3Rpb25DYWxsT3JkZXJbMF0uY19zdHIoKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKGxvbmdUZXN0TGFiZWwsIG1fZnVuY3Rpb25DYWxsT3JkZXJbMV0uY19z
dHIoKSk7CisgICAgRVhQRUNUX1NUUkVRKHRoaXJkVGVzdExhYmVsLCBtX2Z1bmN0aW9uQ2FsbE9y
ZGVyWzJdLmNfc3RyKCkpOworfQorCitURVNUKFdURl9Xb3JrUXVldWUsIFR3b1F1ZXVlcykKK3sK
KyAgICBNdXRleCBtX2xvY2s7CisgICAgVGhyZWFkQ29uZGl0aW9uIG1fdGVzdFF1ZXVlMUNvbXBs
ZXRlZCwgbV90ZXN0UXVldWUyQ29tcGxldGVkOworICAgIFZlY3RvcjxzdGQ6OnN0cmluZz4gbV9m
dW5jdGlvbkNhbGxPcmRlcjsKKworICAgIGJvb2wgY2FsbGVkU2ltcGxlVGVzdCA9IGZhbHNlOwor
ICAgIGJvb2wgY2FsbGVkTG9uZ1Rlc3QgPSBmYWxzZTsKKyAgICBib29sIGNhbGxlZFRoaXJkVGVz
dCA9IGZhbHNlOworICAgIAorICAgIGF1dG8gcXVldWUxID0gV29ya1F1ZXVlOjpjcmVhdGUoImNv
bS5hcHBsZS5XZWJLaXQuVGVzdC50d29RdWV1ZXMxIik7CisgICAgYXV0byBxdWV1ZTIgPSBXb3Jr
UXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5UZXN0LnR3b1F1ZXVlczIiKTsKKworICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAorICAgIHF1ZXVlMS0+ZGlzcGF0Y2go
WyZdKHZvaWQpIHsKKyAgICAgICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQoc2ltcGxlVGVz
dExhYmVsKTsKKyAgICAgICAgY2FsbGVkU2ltcGxlVGVzdCA9IHRydWU7CisgICAgfSk7CisKKyAg
ICBxdWV1ZTItPmRpc3BhdGNoKFsmXSh2b2lkKSB7CisgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6
OnNsZWVwX2ZvcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMoNTAwKSk7CisKKyAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBw
ZW5kKGxvbmdUZXN0TGFiZWwpOworICAgICAgICBjYWxsZWRMb25nVGVzdCA9IHRydWU7CisgICAg
ICAgIG1fdGVzdFF1ZXVlMkNvbXBsZXRlZC5zaWduYWwoKTsKKyAgICB9KTsKKworICAgIHF1ZXVl
MS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHRoaXJkVGVzdExhYmVsKTsK
KyAgICAgICAgY2FsbGVkVGhpcmRUZXN0ID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIG1fdGVz
dFF1ZXVlMUNvbXBsZXRlZC5zaWduYWwoKTsKKyAgICB9KTsKKworICAgIG1fdGVzdFF1ZXVlMUNv
bXBsZXRlZC53YWl0KG1fbG9jayk7CisKKyAgICBFWFBFQ1RfVFJVRShjYWxsZWRTaW1wbGVUZXN0
KTsKKyAgICBFWFBFQ1RfRkFMU0UoY2FsbGVkTG9uZ1Rlc3QpOworICAgIEVYUEVDVF9UUlVFKGNh
bGxlZFRoaXJkVGVzdCk7CisKKyAgICBtX3Rlc3RRdWV1ZTJDb21wbGV0ZWQud2FpdChtX2xvY2sp
OworCisgICAgRVhQRUNUX1RSVUUoY2FsbGVkU2ltcGxlVGVzdCk7CisgICAgRVhQRUNUX1RSVUUo
Y2FsbGVkTG9uZ1Rlc3QpOworICAgIEVYUEVDVF9UUlVFKGNhbGxlZFRoaXJkVGVzdCk7CisKKyAg
ICBFWFBFQ1RfRVEobV9mdW5jdGlvbkNhbGxPcmRlci5zaXplKCksIHN0YXRpY19jYXN0PHNpemVf
dD4oMykpOworICAgIEVYUEVDVF9TVFJFUShzaW1wbGVUZXN0TGFiZWwsIG1fZnVuY3Rpb25DYWxs
T3JkZXJbMF0uY19zdHIoKSk7CisgICAgRVhQRUNUX1NUUkVRKHRoaXJkVGVzdExhYmVsLCBtX2Z1
bmN0aW9uQ2FsbE9yZGVyWzFdLmNfc3RyKCkpOworICAgIEVYUEVDVF9TVFJFUShsb25nVGVzdExh
YmVsLCBtX2Z1bmN0aW9uQ2FsbE9yZGVyWzJdLmNfc3RyKCkpOworfQorCitURVNUKFdURl9Xb3Jr
UXVldWUsIERpc3BhdGNoQWZ0ZXIpCit7CisgICAgTXV0ZXggbV9sb2NrOworICAgIFRocmVhZENv
bmRpdGlvbiBtX3Rlc3RDb21wbGV0ZWQsIG1fZGlzcGF0Y2hBZnRlclRlc3RDb21wbGV0ZWQ7Cisg
ICAgVmVjdG9yPHN0ZDo6c3RyaW5nPiBtX2Z1bmN0aW9uQ2FsbE9yZGVyOworCisgICAgYm9vbCBj
YWxsZWRTaW1wbGVUZXN0ID0gZmFsc2U7CisgICAgYm9vbCBjYWxsZWREaXNwYXRjaEFmdGVyVGVz
dCA9IGZhbHNlOworCisgICAgYXV0byBxdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBw
bGUuV2ViS2l0LlRlc3QuZGlzcGF0Y2hBZnRlciIpOworCisgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CisKKyAgICBxdWV1ZS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsKKyAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBw
ZW5kKHNpbXBsZVRlc3RMYWJlbCk7CisgICAgICAgIGNhbGxlZFNpbXBsZVRlc3QgPSB0cnVlOwor
ICAgICAgICBtX3Rlc3RDb21wbGV0ZWQuc2lnbmFsKCk7CisgICAgfSk7CisKKyAgICBxdWV1ZS0+
ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDUwMCksIFsmXSh2b2lkKSB7
CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Z1bmN0aW9u
Q2FsbE9yZGVyLmFwcGVuZChkaXNwYXRjaEFmdGVyTGFiZWwpOworICAgICAgICBjYWxsZWREaXNw
YXRjaEFmdGVyVGVzdCA9IHRydWU7CisgICAgICAgIG1fZGlzcGF0Y2hBZnRlclRlc3RDb21wbGV0
ZWQuc2lnbmFsKCk7CisgICAgfSk7CisKKyAgICBzdGQ6OmNocm9ubzo6dGltZV9wb2ludDxzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrPiBzdGFydCA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
Om5vdygpOworICAgIG1fdGVzdENvbXBsZXRlZC53YWl0KG1fbG9jayk7CisKKyAgICBFWFBFQ1Rf
VFJVRShjYWxsZWRTaW1wbGVUZXN0KTsKKyAgICBFWFBFQ1RfRkFMU0UoY2FsbGVkRGlzcGF0Y2hB
ZnRlclRlc3QpOworICAgIAorICAgIG1fZGlzcGF0Y2hBZnRlclRlc3RDb21wbGV0ZWQud2FpdCht
X2xvY2spOworICAgIHN0ZDo6Y2hyb25vOjp0aW1lX3BvaW50PHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s+IGRvbmUgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKTsKKworICAgIEVY
UEVDVF9UUlVFKGNhbGxlZFNpbXBsZVRlc3QpOworICAgIEVYUEVDVF9UUlVFKGNhbGxlZERpc3Bh
dGNoQWZ0ZXJUZXN0KTsKKworICAgIEVYUEVDVF9FUShtX2Z1bmN0aW9uQ2FsbE9yZGVyLnNpemUo
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90PigyKSk7CisgICAgRVhQRUNUX1NUUkVRKHNpbXBsZVRlc3RM
YWJlbCwgbV9mdW5jdGlvbkNhbGxPcmRlclswXS5jX3N0cigpKTsKKyAgICBFWFBFQ1RfU1RSRVEo
ZGlzcGF0Y2hBZnRlckxhYmVsLCBtX2Z1bmN0aW9uQ2FsbE9yZGVyWzFdLmNfc3RyKCkpOworCisg
ICAgRVhQRUNUX1RSVUUoZG9uZSA+PSBzdGFydCArIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMo
NTAwKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="273114"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>