<?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>159238</bug_id>
          <alias>CVE-2016-4767</alias>
          <creation_ts>2016-06-28 17:17:35 -0700</creation_ts>
          <short_desc>Throw exceptions for invalid number of channels for ConvolverNode</short_desc>
          <delta_ts>2017-10-11 10:29:49 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.chromium.org/p/chromium/issues/detail?id=563379</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>159232</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jeremyj-wk</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1206232</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-06-28 17:17:35 -0700</bug_when>
    <thetext>The ConvolverNode only supports 1, 2 or 4 channels and must throw an exception for any other number of channels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206233</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-06-28 17:19:18 -0700</bug_when>
    <thetext>This causes a heap-buffer-overflow read in com.apple.WebKit.WebContent at com.apple.WebCore: WebCore::AudioArray&lt;float&gt;::copyToRange + 76 under ASan.

Application Specific Information:
================================================================
==30955==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60200030a3f4 at pc 0x00010e94734a bp 0x7fff5360ed70 sp 0x7fff5360e528
READ of size 256 at 0x60200030a3f4 thread T0
    #0 0x10e947349 in __asan_memcpy (/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.11.xctoolchain/usr/lib/clang/7.0.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib+0x39349)
    #1 0x11398935b in WebCore::AudioArray&lt;float&gt;::copyToRange(float const*, unsigned int, unsigned int) (/Users/local/OpenSource/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore+0x97f35b)
    #2 0x11503b0bf in WebCore::ReverbConvolverStage::ReverbConvolverStage(float const*, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, WebCore::ReverbAccumulationBuffer*, bool) (/Users/local/OpenSource/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore+0x20310bf)
    #3 0x11503b4b8 in WebCore::ReverbConvolverStage::ReverbConvolverStage(float const*, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, WebCore::ReverbAccumulationBuffer*, bool) (/Users/local/OpenSource/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore+0x20314b8)
    #4 0x11503921a in WebCore::ReverbConvolver::ReverbConvolver(WebCore::AudioChannel*, unsigned long, unsigned long, unsigned long, bool) (/Users/local/OpenSource/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore+0x202f21a)
    #5 0x115037bba in WebCore::Reverb::initialize(WebCore::AudioBus*, unsigned long, unsigned long, unsigned long, bool) (/Users/local/OpenSource/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore+0x202dbba)
    #6 0x1150376cc in WebCore::Reverb::Reverb(WebCore::AudioBus*, unsigned long, unsigned long, unsigned long, bool, bool) (/Users/local/OpenSource/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore+0x202d6cc)
    #7 0x115037d57 in WebCore::Reverb::Reverb(WebCore::AudioBus*, unsigned long, unsigned long, unsigned long, bool, bool) (/Users/local/OpenSource/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore+0x202dd57)
    #8 0x1133ca260 in WebCore::ConvolverNode::setBuffer(WebCore::AudioBuffer*, int&amp;) (/Users/local/OpenSource/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore+0x3c0260)
    #9 0x114073996 in WebCore::setJSConvolverNodeBuffer(JSC::ExecState*, long long, long long) (/Users/local/OpenSource/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore+0x1069996)
    #10 0x110359368 in JSC::callCustomSetter(JSC::ExecState*, bool (*)(JSC::ExecState*, long long, long long), bool, JSC::JSValue, JSC::JSValue) (/Users/local/OpenSource/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore+0x574368)
[...]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206235</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-06-28 17:20:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/27020410&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206243</commentid>
    <comment_count>3</comment_count>
      <attachid>282306</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-06-28 17:41:26 -0700</bug_when>
    <thetext>Created attachment 282306
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206245</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-06-28 17:42:31 -0700</bug_when>
    <thetext>Please note that the patch for Bug 159232 needs to land before this one since it adds support to use anonymous functions and descriptive messages with shouldNotThrow() and shouldThrow().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206249</commentid>
    <comment_count>5</comment_count>
      <attachid>282306</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-06-28 17:54:41 -0700</bug_when>
    <thetext>Comment on attachment 282306
Patch v1

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

Looks good. You&apos;ll need to land this manually, since the commit-queue doesn&apos;t process security bugs.

&gt; Source/WebCore/ChangeLog:4
&gt; +        &lt;https://webkit.org/b/159238&gt;

&lt;rdar://problem/27020410&gt;

&gt; LayoutTests/ChangeLog:4
&gt; +        &lt;https://webkit.org/b/159238&gt;

&lt;rdar://problem/27020410&gt;

&gt; LayoutTests/webaudio/convolver-channels.html:18
&gt; +    for (var count = 1; count &lt;= 32; ++count) {

Just curious: Is 32 an arbitrary value? Or do we have Audio elements that use 32 channels?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206343</commentid>
    <comment_count>6</comment_count>
      <attachid>282306</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-06-29 02:40:48 -0700</bug_when>
    <thetext>Comment on attachment 282306
Patch v1

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

&gt;&gt; LayoutTests/webaudio/convolver-channels.html:18
&gt;&gt; +    for (var count = 1; count &lt;= 32; ++count) {
&gt; 
&gt; Just curious: Is 32 an arbitrary value? Or do we have Audio elements that use 32 channels?

I suspect it was chosen as a practical limit for the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206347</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-06-29 03:20:31 -0700</bug_when>
    <thetext>Committed r202617: &lt;http://trac.webkit.org/changeset/202617&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206378</commentid>
    <comment_count>8</comment_count>
      <attachid>282306</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-06-29 07:52:14 -0700</bug_when>
    <thetext>Comment on attachment 282306
Patch v1

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

&gt; Source/WebCore/Modules/webaudio/ConvolverNode.cpp:137
&gt; +    bool isChannelCountGood = numberOfChannels == 1 || numberOfChannels == 2 || numberOfChannels == 4;

Is it safe to drop the bufferLength check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206472</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-06-29 13:16:26 -0700</bug_when>
    <thetext>This will be rolled out as the fix wasn&apos;t complete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206473</commentid>
    <comment_count>10</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-06-29 13:18:08 -0700</bug_when>
    <thetext>Reverted r202617 for reason:

The LayoutTest from this change crashes under GuardMalloc

Committed r202645: &lt;http://trac.webkit.org/changeset/202645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208064</commentid>
    <comment_count>11</comment_count>
      <attachid>282848</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-05 21:06:40 -0700</bug_when>
    <thetext>Created attachment 282848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208065</commentid>
    <comment_count>12</comment_count>
      <attachid>282848</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-05 21:08:09 -0700</bug_when>
    <thetext>Comment on attachment 282848
Patch

Re-landing after finding the corresponding Blink change to correct the buffer overrun found during our testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208066</commentid>
    <comment_count>13</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-05 21:12:20 -0700</bug_when>
    <thetext>Committed r202845: &lt;http://trac.webkit.org/changeset/202845&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282306</attachid>
            <date>2016-06-28 17:41:26 -0700</date>
            <delta_ts>2016-07-05 21:06:37 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-159238-20160628174107.patch</filename>
            <type>text/plain</type>
            <size>9911</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQxZTZlZDE3NTExYmMw
NTBmZTlmMWM2MmZjNWFkODExMzk5YTIxNy4uYzRmYzBmODY1YzQwN2M0M2QwMTVlYzNiZThjZmE0
MjAwZGFhYTdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA2LTI4ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyb3cgZXhjZXB0aW9u
cyBmb3IgaW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIENvbnZvbHZlck5vZGUKKyAgICAg
ICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1OTIzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggYmFzZWQgb24gYSBCbGluayBjaGFuZ2UgKHBh
dGNoIGJ5IDxydG95QGNocm9taXVtLm9yZz4pOgorICAgICAgICA8aHR0cHM6Ly9jaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy5naXQvKy8wY2MyNmJiYjcxNzVhZWM3NzkxMGQw
YjQ3ZmFmOWY4YzhhNjQwZmU1PgorCisgICAgICAgIFRlc3Q6IHdlYmF1ZGlvL2NvbnZvbHZlci1j
aGFubmVscy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKTogVGhyb3cg
YW4gZXhjZXB0aW9uIGZvcgorICAgICAgICBhbnl0aGluZyBidXQgMSwgMiBvciA0IGNoYW5uZWxz
LgorCiAyMDE2LTA2LTI4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgaW5jb3JyZWN0IGNvbW1lbnRzIGluIEhUTUxDYW52YXNFbGVtZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCA0
NmM2Yjg4M2Y5MGMxZDViZmQzYmQ4MTNiMzBlYjI4ZmViMDEyMjU5Li4zNWVmZGMxMjVjYjg4YzRi
YTU1OTg5MDQ4ZTVjMjQwODRiY2Q2MTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMSwxMSArMTMyLDE0IEBAIHZvaWQgQ29udm9s
dmVyTm9kZTo6c2V0QnVmZmVyKEF1ZGlvQnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMgPSBidWZmZXItPm51bWJlck9mQ2hhbm5l
bHMoKTsKICAgICBzaXplX3QgYnVmZmVyTGVuZ3RoID0gYnVmZmVyLT5sZW5ndGgoKTsKIAotICAg
IC8vIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHVwIHRvIGZvdXIgY2hhbm5l
bCBpbXB1bHNlIHJlc3BvbnNlcywgd2hpY2ggYXJlIGludGVycHJldGVkIGFzIHRydWUtc3RlcmVv
IChzZWUgUmV2ZXJiIGNsYXNzKS4KLSAgICBib29sIGlzQnVmZmVyR29vZCA9IG51bWJlck9mQ2hh
bm5lbHMgPiAwICYmIG51bWJlck9mQ2hhbm5lbHMgPD0gNCAmJiBidWZmZXJMZW5ndGg7Ci0gICAg
QVNTRVJUKGlzQnVmZmVyR29vZCk7Ci0gICAgaWYgKCFpc0J1ZmZlckdvb2QpCisgICAgLy8gVGhl
IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgb25seSAxLSwgMi0sIG9yIDQtY2hhbm5l
bCBpbXB1bHNlIHJlc3BvbnNlcywgd2l0aCB0aGUKKyAgICAvLyA0LWNoYW5uZWwgcmVzcG9uc2Ug
YmVpbmcgaW50ZXJwcmV0ZWQgYXMgdHJ1ZS1zdGVyZW8gKHNlZSBSZXZlcmIgY2xhc3MpLgorICAg
IGJvb2wgaXNDaGFubmVsQ291bnRHb29kID0gbnVtYmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJl
ck9mQ2hhbm5lbHMgPT0gMiB8fCBudW1iZXJPZkNoYW5uZWxzID09IDQ7CisKKyAgICBpZiAoIWlz
Q2hhbm5lbENvdW50R29vZCkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAg
ICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gV3JhcCB0aGUgQXVkaW9CdWZmZXIgYnkgYW4g
QXVkaW9CdXMuIEl0J3MgYW4gZWZmaWNpZW50IHBvaW50ZXIgc2V0IGFuZCBub3QgYSBtZW1jcHko
KS4KICAgICAvLyBUaGlzIG1lbW9yeSBpcyBzaW1wbHkgdXNlZCBpbiB0aGUgUmV2ZXJiIGNvbnN0
cnVjdG9yIGFuZCBubyByZWZlcmVuY2UgdG8gaXQgaXMga2VwdCBmb3IgbGF0ZXIgdXNlIGluIHRo
YXQgY2xhc3MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMzFkMjBhYzE4M2M3ZmVmMjc1YTdmMmM5ZjRmNTcyY2VkNWExZGE0
NS4uMDAzYjJlODM3MGY5YmY1NmJhYmQ1M2VkMGE5YTk5YThkMjk4OTY5ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDIyIEBACiAyMDE2LTA2LTI4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
CiAKKyAgICAgICAgVGhyb3cgZXhjZXB0aW9ucyBmb3IgaW52YWxpZCBudW1iZXIgb2YgY2hhbm5l
bHMgZm9yIENvbnZvbHZlck5vZGUKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1OTIz
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
IGJhc2VkIG9uIGEgQmxpbmsgY2hhbmdlIChwYXRjaCBieSA8cnRveUBjaHJvbWl1bS5vcmc+KToK
KyAgICAgICAgPGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMu
Z2l0LysvMGNjMjZiYmI3MTc1YWVjNzc5MTBkMGI0N2ZhZjlmOGM4YTY0MGZlNT4KKworICAgICAg
ICBjb21wYXRpYmlsaXR5LmpzIGJhc2VkIG9uIGEgQmxpbmsgY2hhbmdlIChwYXRjaCBieSA8cnRv
eUBnb29nbGUuY29tPik6CisgICAgICAgIDxodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY2hyb21pdW0vc3JjLmdpdC8rL2Y4NDZmNWE0NjFkMWZjZGJlNTE1Mjg5ODU3NmMxMjUwNTgw
NzllZDE+CisKKyAgICAgICAgKiB3ZWJhdWRpby9jb252b2x2ZXItY2hhbm5lbHMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9jb252b2x2ZXItY2hhbm5lbHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vcmVzb3VyY2VzL2NvbXBhdGliaWxpdHkuanM6IEFk
ZGVkLgorCisyMDE2LTA2LTI4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisK
ICAgICAgICAgRW5oYW5jZSBzaG91bGROb3RUaHJvdygpL3Nob3VsZFRocm93KCkgdG8gYWNjZXB0
IGZ1bmN0aW9ucyBhbmQgYSBkZXNjcmlwdGl2ZSBtZXNzYWdlCiAgICAgICAgIDxodHRwczovL3dl
YmtpdC5vcmcvYi8xNTkyMzI+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2Nv
bnZvbHZlci1jaGFubmVscy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9jb252
b2x2ZXItY2hhbm5lbHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyOWFiNTlhMDI1ZjFhOWE1
YWU1ODdhYzJjZTAyNmI1MDU3OTU1OTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9jb252b2x2ZXItY2hhbm5lbHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDEgQEAK
K1Rlc3QgU3VwcG9ydGVkIE51bWJlciBvZiBDaGFubmVscyBmb3IgQ29udm9sdmVyTm9kZQorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVm
ZmVyIG9mIDEgY2hhbm5lbHMgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIENvbnZvbHZl
ck5vZGUgd2l0aCBidWZmZXIgb2YgMiBjaGFubmVscyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAzIGNoYW5uZWxzIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgQ29u
dm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiA0IGNoYW5uZWxzIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDUgY2hhbm5lbHMgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFT
UyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDYgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2
ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDcgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBO
b3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdp
dGggYnVmZmVyIG9mIDggY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0
ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVy
IG9mIDkgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjog
RE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDEwIGNo
YW5uZWxzIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNl
cHRpb24gOS4KK1BBU1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAxMSBjaGFubmVscyB0
aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDku
CitQQVNTIENvbnZvbHZlck5vZGUgd2l0aCBidWZmZXIgb2YgMTIgY2hhbm5lbHMgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBD
b252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDEzIGNoYW5uZWxzIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgQ29udm9sdmVy
Tm9kZSB3aXRoIGJ1ZmZlciBvZiAxNCBjaGFubmVscyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5v
dFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIENvbnZvbHZlck5vZGUgd2l0
aCBidWZmZXIgb2YgMTUgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0
ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVy
IG9mIDE2IGNoYW5uZWxzIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6
IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAxNyBj
aGFubmVscyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhj
ZXB0aW9uIDkuCitQQVNTIENvbnZvbHZlck5vZGUgd2l0aCBidWZmZXIgb2YgMTggY2hhbm5lbHMg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5
LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDE5IGNoYW5uZWxzIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1Mg
Q29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAyMCBjaGFubmVscyB0aHJldyBleGNlcHRpb24g
RXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIENvbnZvbHZl
ck5vZGUgd2l0aCBidWZmZXIgb2YgMjEgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBO
b3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdp
dGggYnVmZmVyIG9mIDIyIGNoYW5uZWxzIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9y
dGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZl
ciBvZiAyMyBjaGFubmVscyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9y
OiBET00gRXhjZXB0aW9uIDkuCitQQVNTIENvbnZvbHZlck5vZGUgd2l0aCBidWZmZXIgb2YgMjQg
Y2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4
Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDI1IGNoYW5uZWxz
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24g
OS4KK1BBU1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAyNiBjaGFubmVscyB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNT
IENvbnZvbHZlck5vZGUgd2l0aCBidWZmZXIgb2YgMjcgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2
ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDI4IGNoYW5uZWxzIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
Tm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgQ29udm9sdmVyTm9kZSB3
aXRoIGJ1ZmZlciBvZiAyOSBjaGFubmVscyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBv
cnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIENvbnZvbHZlck5vZGUgd2l0aCBidWZm
ZXIgb2YgMzAgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJv
cjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDMx
IGNoYW5uZWxzIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBF
eGNlcHRpb24gOS4KK1BBU1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAzMiBjaGFubmVs
cyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9u
IDkuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vY29udm9sdmVyLWNoYW5uZWxzLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJhdWRpby9jb252b2x2ZXItY2hhbm5lbHMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYWE1YmM2NWJkYzU0ZTVhM2E0NTYwODY4MTk5NmIxYWNjZDZkMDVhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vY29udm9sdmVyLWNoYW5uZWxzLmh0bWwKQEAgLTAs
MCArMSw0MiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvY29tcGF0aWJpbGl0eS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1
ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPHRpdGxlPlRlc3QgU3VwcG9ydGVkIE51bWJlciBv
ZiBDaGFubmVscyBmb3IgQ29udm9sdmVyTm9kZTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBTdXBwb3J0ZWQgTnVtYmVyIG9mIENoYW5uZWxzIGZv
ciBDb252b2x2ZXJOb2RlIik7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKSB7CisgICAgLy8gSnVzdCBuZWVkIGEgY29udGV4dCB0byBjcmVhdGUgbm9k
ZXMgb24sIHNvIGFueSBhbGxvd2VkIGxlbmd0aCBhbmQgcmF0ZSBpcyBvay4KKyAgICB2YXIgY29u
dGV4dCA9IG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIDQ4MDAwKTsKKworICAgIGZvciAo
dmFyIGNvdW50ID0gMTsgY291bnQgPD0gMzI7ICsrY291bnQpIHsKKyAgICAgICAgdmFyIGNvbnZv
bHZlciA9IGNvbnRleHQuY3JlYXRlQ29udm9sdmVyKCk7CisgICAgICAgIHZhciBidWZmZXIgPSBj
b250ZXh0LmNyZWF0ZUJ1ZmZlcihjb3VudCwgMSwgY29udGV4dC5zYW1wbGVSYXRlKTsKKyAgICAg
ICAgdmFyIG1lc3NhZ2UgPSAiQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAiICsgY291bnQg
KyAiIGNoYW5uZWxzIjsKKworICAgICAgICBpZiAoY291bnQgPT0gMSB8fCBjb3VudCA9PSAyIHx8
IGNvdW50ID09IDQpIHsKKyAgICAgICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgb25seSB2YWxpZCBj
aGFubmVsIGNvdW50cyBmb3IgdGhlIGJ1ZmZlci4KKyAgICAgICAgICAgIHNob3VsZE5vdFRocm93
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBjb252b2x2ZXIuYnVmZmVyID0gYnVmZmVy
OworICAgICAgICAgICAgfSwgbWVzc2FnZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBzaG91bGRUaHJvdyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBjb252b2x2ZXIuYnVm
ZmVyID0gYnVmZmVyOworICAgICAgICAgICAgfSwgIidFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6
IERPTSBFeGNlcHRpb24gOSciLCBtZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJhdWRpby9yZXNvdXJjZXMvY29tcGF0aWJpbGl0eS5qcyBiL0xheW91dFRlc3RzL3dlYmF1ZGlv
L3Jlc291cmNlcy9jb21wYXRpYmlsaXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwMDJiMTZjNzA0ZjM5OTdl
NTcxNWJlYTI1ZjNiNjIzNzUwMDk4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9yZXNvdXJjZXMvY29tcGF0aWJpbGl0eS5qcwpAQCAtMCwwICsxLDggQEAKKy8vIFRo
aXMgd2lsbCBwcmV2ZW50IHdvcmsgdG8gdXBkYXRlIHRlc3RzIHRvIHVzZSB1bnByZWZpeGVkIG9i
amVjdHMgaW4KKy8vIHRoZSBmdXR1cmUuICBJdCB3bGwgYWxzbyBtYWtlIGl0IHBvc3NpYmxlIHRv
IGJpc2VjdCBidWlsZHMgdXNpbmcKKy8vIGEgV2ViS2l0IHRoYXQgb25seSBzdXBwb3J0cyBwcmVm
aXhlZCBvYmplY3RzLgorCitpZiAod2luZG93Lmhhc093blByb3BlcnR5KCd3ZWJraXRBdWRpb0Nv
bnRleHQnKSAmJiAhd2luZG93Lmhhc093blByb3BlcnR5KCdBdWRpb0NvbnRleHQnKSkgeworICAg
IHdpbmRvdy5BdWRpb0NvbnRleHQgPSB3ZWJraXRBdWRpb0NvbnRleHQ7CisgICAgd2luZG93Lk9m
ZmxpbmVBdWRpb0NvbnRleHQgPSB3ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282848</attachid>
            <date>2016-07-05 21:06:40 -0700</date>
            <delta_ts>2016-07-05 21:08:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159238-20160705210610.patch</filename>
            <type>text/plain</type>
            <size>10868</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjgzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA3LTA1ICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyb3cgZXhjZXB0aW9ucyBm
b3IgaW52YWxpZCBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIENvbnZvbHZlck5vZGUKKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1OTIzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXggYmFzZWQgb24gYSBCbGluayBjaGFuZ2UgKHBhdGNo
IGJ5IDxydG95QGNocm9taXVtLm9yZz4pOgorICAgICAgICA8aHR0cHM6Ly9jaHJvbWl1bS5nb29n
bGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy5naXQvKy8wY2MyNmJiYjcxNzVhZWM3NzkxMGQwYjQ3
ZmFmOWY4YzhhNjQwZmU1PgorCisgICAgICAgIEFsc28gaW5jbHVkZXMgYSByZWxhdGVkIGZpeCBm
b3IgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgKHBhdGNoIGJ5IDxydG95QGNocm9taXVtLm9yZz4pOgor
ICAgICAgICA8aHR0cHM6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9ibGluaz9yZXZpc2lvbj0x
NTc4MzImdmlldz1yZXZpc2lvbj4KKworICAgICAgICBUZXN0OiB3ZWJhdWRpby9jb252b2x2ZXIt
Y2hhbm5lbHMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcik6IFRocm93
IGFuIGV4Y2VwdGlvbiBmb3IKKyAgICAgICAgYW55dGhpbmcgYnV0IDEsIDIgb3IgNCBjaGFubmVs
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3Rh
Z2UpOiBEb24ndCByZWFkIHBhc3QgdGhlIGVuZCBvZgorICAgICAgICB0aGUgaW1wdWxzZVJlc3Bv
bnNlIGFycmF5LgorCiAyMDE2LTA3LTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdpbmRvd3MgYnVpbGQuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAJKHJldmlz
aW9uIDIwMjgzOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVy
Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMSwxMSArMTMyLDE0IEBAIHZvaWQgQ29udm9sdmVyTm9k
ZTo6c2V0QnVmZmVyKEF1ZGlvQnVmZmUKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzID0g
YnVmZmVyLT5udW1iZXJPZkNoYW5uZWxzKCk7CiAgICAgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IGJ1
ZmZlci0+bGVuZ3RoKCk7CiAKLSAgICAvLyBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBzdXBw
b3J0cyB1cCB0byBmb3VyIGNoYW5uZWwgaW1wdWxzZSByZXNwb25zZXMsIHdoaWNoIGFyZSBpbnRl
cnByZXRlZCBhcyB0cnVlLXN0ZXJlbyAoc2VlIFJldmVyYiBjbGFzcykuCi0gICAgYm9vbCBpc0J1
ZmZlckdvb2QgPSBudW1iZXJPZkNoYW5uZWxzID4gMCAmJiBudW1iZXJPZkNoYW5uZWxzIDw9IDQg
JiYgYnVmZmVyTGVuZ3RoOwotICAgIEFTU0VSVChpc0J1ZmZlckdvb2QpOwotICAgIGlmICghaXNC
dWZmZXJHb29kKQorICAgIC8vIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIG9u
bHkgMS0sIDItLCBvciA0LWNoYW5uZWwgaW1wdWxzZSByZXNwb25zZXMsIHdpdGggdGhlCisgICAg
Ly8gNC1jaGFubmVsIHJlc3BvbnNlIGJlaW5nIGludGVycHJldGVkIGFzIHRydWUtc3RlcmVvIChz
ZWUgUmV2ZXJiIGNsYXNzKS4KKyAgICBib29sIGlzQ2hhbm5lbENvdW50R29vZCA9IChudW1iZXJP
ZkNoYW5uZWxzID09IDEgfHwgbnVtYmVyT2ZDaGFubmVscyA9PSAyIHx8IG51bWJlck9mQ2hhbm5l
bHMgPT0gNCkgJiYgYnVmZmVyTGVuZ3RoOworCisgICAgaWYgKCFpc0NoYW5uZWxDb3VudEdvb2Qp
IHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIC8vIFdyYXAgdGhlIEF1ZGlvQnVmZmVyIGJ5IGFuIEF1ZGlvQnVzLiBJdCdzIGFu
IGVmZmljaWVudCBwb2ludGVyIHNldCBhbmQgbm90IGEgbWVtY3B5KCkuCiAgICAgLy8gVGhpcyBt
ZW1vcnkgaXMgc2ltcGx5IHVzZWQgaW4gdGhlIFJldmVyYiBjb25zdHJ1Y3RvciBhbmQgbm8gcmVm
ZXJlbmNlIHRvIGl0IGlzIGtlcHQgZm9yIGxhdGVyIHVzZSBpbiB0aGF0IGNsYXNzLgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
clN0YWdlLmNwcAkocmV2aXNpb24gMjAyODM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1
NywxMSBAQCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhCiAgICAgICAg
IG1fZmZ0S2VybmVsLT5kb1BhZGRlZEZGVChpbXB1bHNlUmVzcG9uc2UgKyBzdGFnZU9mZnNldCwg
c3RhZ2VMZW5ndGgpOwogICAgICAgICBtX2ZmdENvbnZvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RkZUQ29udm9sdmVyPihmZnRTaXplKTsKICAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoIXN0
YWdlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKHN0YWdlTGVuZ3RoIDw9IGZmdFNpemUgLyAyKTsK
KwogICAgICAgICBtX2RpcmVjdEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFy
cmF5PihmZnRTaXplIC8gMik7Ci0gICAgICAgIG1fZGlyZWN0S2VybmVsLT5jb3B5VG9SYW5nZShp
bXB1bHNlUmVzcG9uc2UgKyBzdGFnZU9mZnNldCwgMCwgZmZ0U2l6ZSAvIDIpOworICAgICAgICBt
X2RpcmVjdEtlcm5lbC0+Y29weVRvUmFuZ2UoaW1wdWxzZVJlc3BvbnNlLCAwLCBzdGFnZUxlbmd0
aCk7CiAgICAgICAgIG1fZGlyZWN0Q29udm9sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXJlY3RD
b252b2x2ZXI+KHJlbmRlclNsaWNlU2l6ZSk7CiAgICAgfQogICAgIG1fdGVtcG9yYXJ5QnVmZmVy
LmFsbG9jYXRlKHJlbmRlclNsaWNlU2l6ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDI4MzgpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAor
MjAxNi0wNy0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAg
IFRocm93IGV4Y2VwdGlvbnMgZm9yIGludmFsaWQgbnVtYmVyIG9mIGNoYW5uZWxzIGZvciBDb252
b2x2ZXJOb2RlCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTkyMzg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBiYXNlZCBvbiBh
IEJsaW5rIGNoYW5nZSAocGF0Y2ggYnkgPHJ0b3lAY2hyb21pdW0ub3JnPik6CisgICAgICAgIDxo
dHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjLmdpdC8rLzBjYzI2
YmJiNzE3NWFlYzc3OTEwZDBiNDdmYWY5ZjhjOGE2NDBmZTU+CisKKyAgICAgICAgY29tcGF0aWJp
bGl0eS5qcyBiYXNlZCBvbiBhIEJsaW5rIGNoYW5nZSAocGF0Y2ggYnkgPHJ0b3lAZ29vZ2xlLmNv
bT4pOgorICAgICAgICA8aHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt
L3NyYy5naXQvKy9mODQ2ZjVhNDYxZDFmY2RiZTUxNTI4OTg1NzZjMTI1MDU4MDc5ZWQxPgorCisg
ICAgICAgICogd2ViYXVkaW8vY29udm9sdmVyLWNoYW5uZWxzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogd2ViYXVkaW8vY29udm9sdmVyLWNoYW5uZWxzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYmF1ZGlvL3Jlc291cmNlcy9jb21wYXRpYmlsaXR5LmpzOiBBZGRlZC4KKwogMjAx
Ni0wNy0wNSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBM
YW5kIHRlc3QgZXhwZWN0YXRpb25zIGZvciByZGFyOi8vcHJvYmxlbS8yNzE4MjY4Ny4KSW5kZXg6
IExheW91dFRlc3RzL3dlYmF1ZGlvL2NvbnZvbHZlci1jaGFubmVscy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViYXVkaW8vY29udm9sdmVyLWNoYW5uZWxzLWV4cGVj
dGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJhdWRpby9jb252b2x2ZXIt
Y2hhbm5lbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKK1Rl
c3QgU3VwcG9ydGVkIE51bWJlciBvZiBDaGFubmVscyBmb3IgQ29udm9sdmVyTm9kZQorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVy
IG9mIDEgY2hhbm5lbHMgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIENvbnZvbHZlck5v
ZGUgd2l0aCBidWZmZXIgb2YgMiBjaGFubmVscyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAzIGNoYW5uZWxzIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgQ29udm9s
dmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiA0IGNoYW5uZWxzIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDUgY2hhbm5lbHMgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBD
b252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDYgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJO
b2RlIHdpdGggYnVmZmVyIG9mIDcgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RT
dXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGgg
YnVmZmVyIG9mIDggY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRF
cnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9m
IDkgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9N
IEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDEwIGNoYW5u
ZWxzIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRp
b24gOS4KK1BBU1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAxMSBjaGFubmVscyB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQ
QVNTIENvbnZvbHZlck5vZGUgd2l0aCBidWZmZXIgb2YgMTIgY2hhbm5lbHMgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252
b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDEzIGNoYW5uZWxzIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgQ29udm9sdmVyTm9k
ZSB3aXRoIGJ1ZmZlciBvZiAxNCBjaGFubmVscyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1
cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIENvbnZvbHZlck5vZGUgd2l0aCBi
dWZmZXIgb2YgMTUgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRF
cnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9m
IDE2IGNoYW5uZWxzIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERP
TSBFeGNlcHRpb24gOS4KK1BBU1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAxNyBjaGFu
bmVscyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0
aW9uIDkuCitQQVNTIENvbnZvbHZlck5vZGUgd2l0aCBidWZmZXIgb2YgMTggY2hhbm5lbHMgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5Lgor
UEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDE5IGNoYW5uZWxzIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgQ29u
dm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAyMCBjaGFubmVscyB0aHJldyBleGNlcHRpb24gRXJy
b3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIENvbnZvbHZlck5v
ZGUgd2l0aCBidWZmZXIgb2YgMjEgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RT
dXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGgg
YnVmZmVyIG9mIDIyIGNoYW5uZWxzIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVk
RXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBv
ZiAyMyBjaGFubmVscyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBE
T00gRXhjZXB0aW9uIDkuCitQQVNTIENvbnZvbHZlck5vZGUgd2l0aCBidWZmZXIgb2YgMjQgY2hh
bm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2Vw
dGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDI1IGNoYW5uZWxzIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4K
K1BBU1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAyNiBjaGFubmVscyB0aHJldyBleGNl
cHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIENv
bnZvbHZlck5vZGUgd2l0aCBidWZmZXIgb2YgMjcgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJO
b2RlIHdpdGggYnVmZmVyIG9mIDI4IGNoYW5uZWxzIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90
U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgQ29udm9sdmVyTm9kZSB3aXRo
IGJ1ZmZlciBvZiAyOSBjaGFubmVscyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRl
ZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIENvbnZvbHZlck5vZGUgd2l0aCBidWZmZXIg
b2YgMzAgY2hhbm5lbHMgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjog
RE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBDb252b2x2ZXJOb2RlIHdpdGggYnVmZmVyIG9mIDMxIGNo
YW5uZWxzIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNl
cHRpb24gOS4KK1BBU1MgQ29udm9sdmVyTm9kZSB3aXRoIGJ1ZmZlciBvZiAzMiBjaGFubmVscyB0
aHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDku
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvd2ViYXVkaW8vY29udm9sdmVyLWNoYW5uZWxzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvd2ViYXVkaW8vY29udm9sdmVyLWNoYW5uZWxzLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvd2ViYXVkaW8vY29udm9sdmVyLWNoYW5uZWxzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tcGF0aWJpbGl0eS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPHRpdGxlPlRl
c3QgU3VwcG9ydGVkIE51bWJlciBvZiBDaGFubmVscyBmb3IgQ29udm9sdmVyTm9kZTwvdGl0bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBTdXBwb3J0ZWQg
TnVtYmVyIG9mIENoYW5uZWxzIGZvciBDb252b2x2ZXJOb2RlIik7Cit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgLy8gSnVzdCBuZWVkIGEg
Y29udGV4dCB0byBjcmVhdGUgbm9kZXMgb24sIHNvIGFueSBhbGxvd2VkIGxlbmd0aCBhbmQgcmF0
ZSBpcyBvay4KKyAgICB2YXIgY29udGV4dCA9IG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEs
IDQ4MDAwKTsKKworICAgIGZvciAodmFyIGNvdW50ID0gMTsgY291bnQgPD0gMzI7ICsrY291bnQp
IHsKKyAgICAgICAgdmFyIGNvbnZvbHZlciA9IGNvbnRleHQuY3JlYXRlQ29udm9sdmVyKCk7Cisg
ICAgICAgIHZhciBidWZmZXIgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcihjb3VudCwgMSwgY29udGV4
dC5zYW1wbGVSYXRlKTsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSAiQ29udm9sdmVyTm9kZSB3aXRo
IGJ1ZmZlciBvZiAiICsgY291bnQgKyAiIGNoYW5uZWxzIjsKKworICAgICAgICBpZiAoY291bnQg
PT0gMSB8fCBjb3VudCA9PSAyIHx8IGNvdW50ID09IDQpIHsKKyAgICAgICAgICAgIC8vIFRoZXNl
IGFyZSB0aGUgb25seSB2YWxpZCBjaGFubmVsIGNvdW50cyBmb3IgdGhlIGJ1ZmZlci4KKyAgICAg
ICAgICAgIHNob3VsZE5vdFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBjb252
b2x2ZXIuYnVmZmVyID0gYnVmZmVyOworICAgICAgICAgICAgfSwgbWVzc2FnZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRUaHJvdyhmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBjb252b2x2ZXIuYnVmZmVyID0gYnVmZmVyOworICAgICAgICAgICAgfSwgIidFcnJv
cjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOSciLCBtZXNzYWdlKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CitzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29tcGF0aWJpbGl0eS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29tcGF0aWJpbGl0eS5qcwko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29tcGF0aWJp
bGl0eS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKKy8vIFRoaXMgd2lsbCBwcmV2
ZW50IHdvcmsgdG8gdXBkYXRlIHRlc3RzIHRvIHVzZSB1bnByZWZpeGVkIG9iamVjdHMgaW4KKy8v
IHRoZSBmdXR1cmUuICBJdCB3bGwgYWxzbyBtYWtlIGl0IHBvc3NpYmxlIHRvIGJpc2VjdCBidWls
ZHMgdXNpbmcKKy8vIGEgV2ViS2l0IHRoYXQgb25seSBzdXBwb3J0cyBwcmVmaXhlZCBvYmplY3Rz
LgorCitpZiAod2luZG93Lmhhc093blByb3BlcnR5KCd3ZWJraXRBdWRpb0NvbnRleHQnKSAmJiAh
d2luZG93Lmhhc093blByb3BlcnR5KCdBdWRpb0NvbnRleHQnKSkgeworICAgIHdpbmRvdy5BdWRp
b0NvbnRleHQgPSB3ZWJraXRBdWRpb0NvbnRleHQ7CisgICAgd2luZG93Lk9mZmxpbmVBdWRpb0Nv
bnRleHQgPSB3ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0OworfQo=
</data>
<flag name="review"
          id="306610"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>