<?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>131902</bug_id>
          
          <creation_ts>2014-04-19 17:12:32 -0700</creation_ts>
          <short_desc>[Mac] don&apos;t ask for AVAssetTrack properties before they are available</short_desc>
          <delta_ts>2014-04-24 14:46:52 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>131993</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1002305</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-19 17:12:32 -0700</bug_when>
    <thetext>Like other AVFoundation object properties, asking for AVAssetTrack properties before they have are available will block until the data is available. AVAssetTrack implements statusOfValueForKey:error, so we should use that to ask it to load the properties we know we use, and not ask for them until they are available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002306</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-19 17:12:56 -0700</bug_when>
    <thetext>&lt;rdar://16505076&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002549</commentid>
    <comment_count>2</comment_count>
      <attachid>229804</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-21 10:32:05 -0700</bug_when>
    <thetext>Created attachment 229804
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002651</commentid>
    <comment_count>3</comment_count>
      <attachid>229804</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-04-21 13:42:05 -0700</bug_when>
    <thetext>Comment on attachment 229804
Proposed patch

nice! r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002877</commentid>
    <comment_count>4</comment_count>
      <attachid>229804</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-22 07:07:08 -0700</bug_when>
    <thetext>Comment on attachment 229804
Proposed patch

Clearing flags on attachment: 229804

Committed r167658: &lt;http://trac.webkit.org/changeset/167658&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002878</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-22 07:07:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002931</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-22 09:49:57 -0700</bug_when>
    <thetext>This caused many crashes on tests:

0   libobjc.A.dylib               	0x00007fff93636250 objc_msgSend + 16
1   com.apple.WebCore             	0x000000010e3d1344 ___ZN7WebCore34MediaPlayerPrivateAVFoundationObjC20beginLoadingMetadataEv_block_invoke97 + 52 (MediaPlayerPrivateAVFoundationObjC.mm:803)
2   libdispatch.dylib             	0x00007fff9715cf01 _dispatch_call_block_and_release + 15
3   libdispatch.dylib             	0x00007fff971590b6 _dispatch_client_callout + 8
4   libdispatch.dylib             	0x00007fff9715e0c8 _dispatch_main_queue_callback_4CF + 275
5   com.apple.CoreFoundation      	0x00007fff902b6b4c __CFRunLoopRun + 1644
6   com.apple.CoreFoundation      	0x00007fff902b60e2 CFRunLoopRunSpecific + 290
7   DumpRenderTree                	0x000000010aa9c335 runTest(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;) + 4853 (DumpRenderTree.mm:1822)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002934</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-22 09:52:30 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 131993</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003421</commentid>
    <comment_count>8</comment_count>
      <attachid>230017</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-23 16:18:42 -0700</bug_when>
    <thetext>Created attachment 230017
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003650</commentid>
    <comment_count>9</comment_count>
      <attachid>230017</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-04-24 09:10:41 -0700</bug_when>
    <thetext>Comment on attachment 230017
Updated patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003651</commentid>
    <comment_count>10</comment_count>
      <attachid>230017</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-24 09:13:51 -0700</bug_when>
    <thetext>Comment on attachment 230017
Updated patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:809
&gt; +    dispatch_group_notify(metadataLoadingGroup, dispatch_get_main_queue(), ^{
&gt; +        callOnMainThread([weakThis, metadataLoadingGroup] {

I’m a little puzzled about the combination of main queue and main thread here. Won’t something dispatched on the main queue already be on the main thread?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:813
&gt; +            dispatch_release(metadataLoadingGroup);

What guarantees that this runs after the completion handler? It looks like we could release metadataLoadingGroup before we are done with it. Maybe that’s impossible because of the enter/leave calls above?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1167
&gt; +    return m_cachedTotalBytes;

Can this value ever total 0? If so, then we’ll keep recomputing it over and over again. Maybe the validity should be tracked separately rather than using &quot;0&quot; as a magic value? Or maybe the magic value could be -1?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2465
&gt; +NSArray* assetTrackMetadataKeyNames()
&gt; +{
&gt; +    static NSArray* keys;
&gt; +    if (!keys)
&gt; +        keys = [[NSArray alloc] initWithObjects:@&quot;totalSampleDataLength&quot;, @&quot;mediaType&quot;, nil];
&gt; +
&gt; +    return keys;
&gt; +}

No need for the if statement. Depending on the minimum compiler version guaranteed this could be either:

    NSArray *assetTrackMetadataKeyNames()
    {
        static NSArray* keys = [[NSArray alloc] initWithObjects:@&quot;totalSampleDataLength&quot;, @&quot;mediaType&quot;, nil];
        return keys;
    }

or:

    NSArray *assetTrackMetadataKeyNames()
    {
        return @[@&quot;totalSampleDataLength&quot;, @&quot;mediaType&quot;];
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003702</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-04-24 10:24:00 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 230017 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=230017&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:809
&gt; &gt; +    dispatch_group_notify(metadataLoadingGroup, dispatch_get_main_queue(), ^{
&gt; &gt; +        callOnMainThread([weakThis, metadataLoadingGroup] {
&gt; 
&gt; I’m a little puzzled about the combination of main queue and main thread here. Won’t something dispatched on the main queue already be on the main thread?

(Since this was my idea, I&apos;ll answer Darin&apos;s question.)

On iOS, the main queue isn&apos;t on the web thread, and the (misnamed) callOnMainThread() will actually dispatch to the web thread, not the main thread.

This became a problem because WeakPtr::get() will assert if called from a different thread than its creation thread.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:813
&gt; &gt; +            dispatch_release(metadataLoadingGroup);
&gt; 
&gt; What guarantees that this runs after the completion handler? It looks like we could release metadataLoadingGroup before we are done with it. Maybe that’s impossible because of the enter/leave calls above?

This is a good point.  This notify handler will get called after the dispatch_group_leave() on line 805, not after all the dispatch_group_leave()s on line 799.  The one on line 805 should be moved inside the callOnMainThread() block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003767</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-24 14:07:18 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 230017 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=230017&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1167
&gt; &gt; +    return m_cachedTotalBytes;
&gt; 
&gt; Can this value ever total 0? If so, then we’ll keep recomputing it over and over again. Maybe the validity should be tracked separately rather than using &quot;0&quot; as a magic value? Or maybe the magic value could be -1?
&gt; 
  The total size should never be 0 once metaDataAvailable() returns true. 

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2465
&gt; &gt; +NSArray* assetTrackMetadataKeyNames()
&gt; &gt; +{
&gt; &gt; +    static NSArray* keys;
&gt; &gt; +    if (!keys)
&gt; &gt; +        keys = [[NSArray alloc] initWithObjects:@&quot;totalSampleDataLength&quot;, @&quot;mediaType&quot;, nil];
&gt; &gt; +
&gt; &gt; +    return keys;
&gt; &gt; +}
&gt; 
&gt; No need for the if statement. Depending on the minimum compiler version guaranteed this could be either:
&gt; 

  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003770</commentid>
    <comment_count>13</comment_count>
      <attachid>230104</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-24 14:10:26 -0700</bug_when>
    <thetext>Created attachment 230104
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003784</commentid>
    <comment_count>14</comment_count>
      <attachid>230104</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-24 14:46:52 -0700</bug_when>
    <thetext>Comment on attachment 230104
Patch for landing.

Clearing flags on attachment: 230104

Committed r167776: &lt;http://trac.webkit.org/changeset/167776&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229804</attachid>
            <date>2014-04-21 10:32:05 -0700</date>
            <delta_ts>2014-04-23 16:18:42 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_3.txt</filename>
            <type>text/plain</type>
            <size>5613</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzU5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA0LTIxICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIGRvbid0IGFz
ayBmb3IgQVZBc3NldFRyYWNrIHByb3BlcnRpZXMgYmVmb3JlIHRoZXkgYXJlIGF2YWlsYWJsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxOTAyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjUwNTA3Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHRoZSBiZWhhdmlvciB0aGlz
IGNoYW5nZXMgY2FuIG5vdCBiZSB0ZXN0ZWQgd2l0aCBhIGxheW91dCB0ZXN0LgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDKTogSW5pdGlhbGl6ZQorICAgICAgICAgICAgbV9jYWNo
ZWRUb3RhbEJ5dGVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEpOiBEb24ndCByZXBvcnQgdGhhdAorICAg
ICAgICAgICAgbWV0YWRhdGEgaGFzIGJlZW4gbG9hZGVkIHVudGlsIHRoZSB0cmFjayBwcm9wZXJ0
aWVzIHdlIG5lZWQgaGF2ZSBiZWVuIGxvYWRlZCB0b28uCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0b3RhbEJ5dGVzKTogQ2FjaGUgdG90YWxC
eXRlcyBpbnN0ZWFkCisgICAgICAgICAgICBvZiByZWNhbGN1bGF0aW5nIGl0IGV2ZXJ5IHRpbWUu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0
cmFja3NEaWRDaGFuZ2UpOiBJbnZhbGlkYXRlIGNhY2hlZAorICAgICAgICAgICAgdG90YWwgYnl0
ZXMuCisgICAgICAgIChXZWJDb3JlOjphc3NldFRyYWNrTWV0YWRhdGFLZXlOYW1lcyk6IEFycmF5
IG9mIEFWQXNzZXRUcmFjayBwcm9wZXJ0aWVzIHdlIHVzZS4KKwogMjAxNC0wNC0yMSAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgaU9TIGFuZCBub24taU9T
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKCkgZnVuY3Rpb25zIHNob3VsZCB1c2Ugc3Rk
OjptYWtlX3VuaXF1ZTw+KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgJKHJldmlzaW9uIDE2
NzU5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzExLDYgKzMxMSw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRTaXplIG1fY2FjaGVkUHJlc2Vu
dGF0aW9uU2l6ZTsKICAgICBkb3VibGUgbV9jYWNoZWREdXJhdGlvbjsKICAgICBkb3VibGUgbV9j
YWNoZWRSYXRlOworICAgIG11dGFibGUgbG9uZyBsb25nIG1fY2FjaGVkVG90YWxCeXRlczsKICAg
ICB1bnNpZ25lZCBtX3BlbmRpbmdTdGF0dXNDaGFuZ2VzOwogICAgIGludCBtX2NhY2hlZEl0ZW1T
dGF0dXM7CiAgICAgYm9vbCBtX2NhY2hlZExpa2VseVRvS2VlcFVwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCShyZXZpc2lvbiAxNjc1OTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgTlNBcnJheSAqYXNzZXRNZXRhZGF0YUtleU5hbWVzKCk7CiBzdGF0
aWMgTlNBcnJheSAqaXRlbUtWT1Byb3BlcnRpZXMoKTsKK3N0YXRpYyBOU0FycmF5KiBhc3NldFRy
YWNrTWV0YWRhdGFLZXlOYW1lcygpOwogCiAjaWYgIUxPR19ESVNBQkxFRAogc3RhdGljIGNvbnN0
IGNoYXIgKmJvb2xTdHJpbmcoYm9vbCB2YWwpCkBAIC0zNDYsNiArMzQ3LDcgQEAgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaQogICAgICwgbV9jdXJyZW50VHJhY2soMCkK
ICAgICAsIG1fY2FjaGVkRHVyYXRpb24oTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpCiAgICAg
LCBtX2NhY2hlZFJhdGUoMCkKKyAgICAsIG1fY2FjaGVkVG90YWxCeXRlcygwKQogICAgICwgbV9w
ZW5kaW5nU3RhdHVzQ2hhbmdlcygwKQogICAgICwgbV9jYWNoZWRJdGVtU3RhdHVzKE1lZGlhUGxh
eWVyQVZQbGF5ZXJJdGVtU3RhdHVzRG9lc05vdEV4aXN0KQogICAgICwgbV9jYWNoZWRMaWtlbHlU
b0tlZXBVcChmYWxzZSkKQEAgLTc2NCw5ICs3NjYsMjMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOgogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpiZWdpbkxvYWRpbmdNZXRhZGF0YSgpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEoJXApIC0gcmVx
dWVzdGluZyBtZXRhZGF0YSBsb2FkaW5nIiwgdGhpcyk7CisgICAgZGlzcGF0Y2hfZ3JvdXBfdCBt
ZXRhZGF0YUxvYWRpbmdHcm91cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpOworICAgIGRpc3Bh
dGNoX2dyb3VwX2VudGVyKG1ldGFkYXRhTG9hZGluZ0dyb3VwKTsKICAgICBbbV9hdkFzc2V0Lmdl
dCgpIGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6W2Fzc2V0TWV0YWRhdGFLZXlOYW1l
cygpIHJldGFpbl0gY29tcGxldGlvbkhhbmRsZXI6XnsKLSAgICAgICAgW21fb2JqY09ic2VydmVy
LmdldCgpIG1ldGFkYXRhTG9hZGVkXTsKKyAgICAgICAgaWYgKFttX2F2QXNzZXQuZ2V0KCkgc3Rh
dHVzT2ZWYWx1ZUZvcktleTpAInRyYWNrcyIgZXJyb3I6bmlsXSA9PSBBVktleVZhbHVlU3RhdHVz
TG9hZGVkKSB7CisgICAgICAgICAgICBmb3IgKEFWQXNzZXRUcmFjayAqdHJhY2sgaW4gW21fYXZB
c3NldC5nZXQoKSB0cmFja3NdKSB7CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfZW50
ZXIobWV0YWRhdGFMb2FkaW5nR3JvdXApOworICAgICAgICAgICAgICAgIFt0cmFjayBsb2FkVmFs
dWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOlthc3NldFRyYWNrTWV0YWRhdGFLZXlOYW1lcygpIHJl
dGFpbl0gY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hf
Z3JvdXBfbGVhdmUobWV0YWRhdGFMb2FkaW5nR3JvdXApOworICAgICAgICAgICAgICAgIH1dOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRpc3BhdGNoX2dyb3VwX2xlYXZlKG1l
dGFkYXRhTG9hZGluZ0dyb3VwKTsKICAgICB9XTsKKyAgICBkaXNwYXRjaF9ncm91cF9ub3RpZnko
bWV0YWRhdGFMb2FkaW5nR3JvdXAsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ICAgIFttX29iamNPYnNlcnZlci5nZXQoKSBtZXRhZGF0YUxvYWRlZF07CisgICAgfSk7CisgICAg
ZGlzcGF0Y2hfcmVsZWFzZShtZXRhZGF0YUxvYWRpbmdHcm91cCk7CiB9CiAKIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbjo6SXRlbVN0YXR1cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpwbGF5ZXJJdGVtU3RhdHVzKCkgY29uc3QKQEAgLTExMDgsMTEgKzExMjQsMTMg
QEAgdW5zaWduZWQgbG9uZyBsb25nIE1lZGlhUGxheWVyUHJpdmF0ZUFWRgogICAgIGlmICghbWV0
YURhdGFBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBsb25nIGxvbmcgdG90
YWxNZWRpYVNpemUgPSAwOworICAgIGlmIChtX2NhY2hlZFRvdGFsQnl0ZXMpCisgICAgICAgIHJl
dHVybiBtX2NhY2hlZFRvdGFsQnl0ZXM7CisKICAgICBmb3IgKEFWUGxheWVySXRlbVRyYWNrICp0
aGlzVHJhY2sgaW4gbV9jYWNoZWRUcmFja3MuZ2V0KCkpCi0gICAgICAgIHRvdGFsTWVkaWFTaXpl
ICs9IFtbdGhpc1RyYWNrIGFzc2V0VHJhY2tdIHRvdGFsU2FtcGxlRGF0YUxlbmd0aF07CisgICAg
ICAgIG1fY2FjaGVkVG90YWxCeXRlcyArPSBbW3RoaXNUcmFjayBhc3NldFRyYWNrXSB0b3RhbFNh
bXBsZURhdGFMZW5ndGhdOwogCi0gICAgcmV0dXJuIHRvdGFsTWVkaWFTaXplOworICAgIHJldHVy
biBtX2NhY2hlZFRvdGFsQnl0ZXM7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2V0QXNzZXQoaWQgYXNzZXQpCkBAIC0yMjQ1LDYgKzIyNjMsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnRyYWNrc0RpZENoYW5nZShSZXRhaW5QdHI8TlNBcnJheT4g
dHJhY2tzKQogewogICAgIG1fY2FjaGVkVHJhY2tzID0gdHJhY2tzOworICAgIG1fY2FjaGVkVG90
YWxCeXRlcyA9IDA7CiAKICAgICB0cmFja3NDaGFuZ2VkKCk7CiAgICAgdXBkYXRlU3RhdGVzKCk7
CkBAIC0yMzI2LDYgKzIzNDUsMTUgQEAgTlNBcnJheSogaXRlbUtWT1Byb3BlcnRpZXMoKQogICAg
IHJldHVybiBrZXlzOwogfQogCitOU0FycmF5KiBhc3NldFRyYWNrTWV0YWRhdGFLZXlOYW1lcygp
Cit7CisgICAgc3RhdGljIE5TQXJyYXkqIGtleXM7CisgICAgaWYgKCFrZXlzKQorICAgICAgICBr
ZXlzID0gQFtAInRvdGFsU2FtcGxlRGF0YUxlbmd0aCIsIEAibWVkaWFUeXBlIl07CisKKyAgICBy
ZXR1cm4ga2V5czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBAaW1wbGVtZW50YXRp
b24gV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230017</attachid>
            <date>2014-04-23 16:18:42 -0700</date>
            <delta_ts>2014-04-24 09:13:50 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_5.txt</filename>
            <type>text/plain</type>
            <size>6004</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzY2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA0LTIyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIGRvbid0IGFz
ayBmb3IgQVZBc3NldFRyYWNrIHByb3BlcnRpZXMgYmVmb3JlIHRoZXkgYXJlIGF2YWlsYWJsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxOTAyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjUwNTA3Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHRoZSBiZWhhdmlvciB0aGlz
IGNoYW5nZXMgY2FuIG5vdCBiZSB0ZXN0ZWQgd2l0aCBhIGxheW91dCB0ZXN0LgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDKTogSW5pdGlhbGl6ZQorICAgICAgICAgICAgbV9jYWNo
ZWRUb3RhbEJ5dGVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEpOiBEb24ndCByZXBvcnQgdGhhdAorICAg
ICAgICAgICAgbWV0YWRhdGEgaGFzIGJlZW4gbG9hZGVkIHVudGlsIHRoZSB0cmFjayBwcm9wZXJ0
aWVzIHdlIG5lZWQgaGF2ZSBiZWVuIGxvYWRlZCB0b28uCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0b3RhbEJ5dGVzKTogQ2FjaGUgdG90YWxC
eXRlcyBpbnN0ZWFkCisgICAgICAgICAgICBvZiByZWNhbGN1bGF0aW5nIGl0IGV2ZXJ5IHRpbWUu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0
cmFja3NEaWRDaGFuZ2UpOiBJbnZhbGlkYXRlIGNhY2hlZAorICAgICAgICAgICAgdG90YWwgYnl0
ZXMuCisgICAgICAgIChXZWJDb3JlOjphc3NldFRyYWNrTWV0YWRhdGFLZXlOYW1lcyk6IEFycmF5
IG9mIEFWQXNzZXRUcmFjayBwcm9wZXJ0aWVzIHdlIHVzZS4KKwogMjAxNC0wNC0yMiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjE2NzY1OC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgJKHJldmlzaW9u
IDE2NzY2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIwLDYgKzMyMCw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRTaXplIG1fY2FjaGVkUHJl
c2VudGF0aW9uU2l6ZTsKICAgICBkb3VibGUgbV9jYWNoZWREdXJhdGlvbjsKICAgICBkb3VibGUg
bV9jYWNoZWRSYXRlOworICAgIG11dGFibGUgbG9uZyBsb25nIG1fY2FjaGVkVG90YWxCeXRlczsK
ICAgICB1bnNpZ25lZCBtX3BlbmRpbmdTdGF0dXNDaGFuZ2VzOwogICAgIGludCBtX2NhY2hlZEl0
ZW1TdGF0dXM7CiAgICAgYm9vbCBtX2NhY2hlZExpa2VseVRvS2VlcFVwOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCShyZXZpc2lvbiAxNjc2NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNiArMjk0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgTlNBcnJheSAqYXNzZXRNZXRhZGF0YUtleU5hbWVzKCk7CiBz
dGF0aWMgTlNBcnJheSAqaXRlbUtWT1Byb3BlcnRpZXMoKTsKK3N0YXRpYyBOU0FycmF5KiBhc3Nl
dFRyYWNrTWV0YWRhdGFLZXlOYW1lcygpOwogCiAjaWYgIUxPR19ESVNBQkxFRAogc3RhdGljIGNv
bnN0IGNoYXIgKmJvb2xTdHJpbmcoYm9vbCB2YWwpCkBAIC0zNjUsNiArMzY2LDcgQEAgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaQogICAgICwgbV9jdXJyZW50VGV4dFRy
YWNrKDApCiAgICAgLCBtX2NhY2hlZER1cmF0aW9uKE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgp
KQogICAgICwgbV9jYWNoZWRSYXRlKDApCisgICAgLCBtX2NhY2hlZFRvdGFsQnl0ZXMoMCkKICAg
ICAsIG1fcGVuZGluZ1N0YXR1c0NoYW5nZXMoMCkKICAgICAsIG1fY2FjaGVkSXRlbVN0YXR1cyhN
ZWRpYVBsYXllckFWUGxheWVySXRlbVN0YXR1c0RvZXNOb3RFeGlzdCkKICAgICAsIG1fY2FjaGVk
TGlrZWx5VG9LZWVwVXAoZmFsc2UpCkBAIC03ODMsOSArNzg1LDM1IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEoKQogewogICAgIExPRyhNZWRpYSwgIk1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmJlZ2luTG9hZGluZ01ldGFkYXRhKCVw
KSAtIHJlcXVlc3RpbmcgbWV0YWRhdGEgbG9hZGluZyIsIHRoaXMpOwotICAgIFttX2F2QXNzZXQu
Z2V0KCkgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpbYXNzZXRNZXRhZGF0YUtleU5h
bWVzKCkgcmV0YWluXSBjb21wbGV0aW9uSGFuZGxlcjpeewotICAgICAgICBbbV9vYmpjT2JzZXJ2
ZXIuZ2V0KCkgbWV0YWRhdGFMb2FkZWRdOworCisgICAgZGlzcGF0Y2hfZ3JvdXBfdCBtZXRhZGF0
YUxvYWRpbmdHcm91cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpOworICAgIGRpc3BhdGNoX2dy
b3VwX2VudGVyKG1ldGFkYXRhTG9hZGluZ0dyb3VwKTsKKyAgICBhdXRvIHdlYWtUaGlzID0gY3Jl
YXRlV2Vha1B0cigpOworICAgIFttX2F2QXNzZXQuZ2V0KCkgbG9hZFZhbHVlc0FzeW5jaHJvbm91
c2x5Rm9yS2V5czphc3NldE1ldGFkYXRhS2V5TmFtZXMoKSBjb21wbGV0aW9uSGFuZGxlcjpeewor
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzLCBtZXRhZGF0YUxvYWRpbmdHcm91
cF0geworICAgICAgICAgICAgaWYgKHdlYWtUaGlzICYmIFt3ZWFrVGhpcy0+bV9hdkFzc2V0Lmdl
dCgpIHN0YXR1c09mVmFsdWVGb3JLZXk6QCJ0cmFja3MiIGVycm9yOm5pbF0gPT0gQVZLZXlWYWx1
ZVN0YXR1c0xvYWRlZCkgeworICAgICAgICAgICAgICAgIGZvciAoQVZBc3NldFRyYWNrICp0cmFj
ayBpbiBbd2Vha1RoaXMtPm1fYXZBc3NldC5nZXQoKSB0cmFja3NdKSB7CisgICAgICAgICAgICAg
ICAgICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKG1ldGFkYXRhTG9hZGluZ0dyb3VwKTsKKyAgICAg
ICAgICAgICAgICAgICAgW3RyYWNrIGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6YXNz
ZXRUcmFja01ldGFkYXRhS2V5TmFtZXMoKSBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICAg
ICAgICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUobWV0YWRhdGFMb2FkaW5nR3JvdXAp
OworICAgICAgICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOworCisgICAgICAgIGRpc3BhdGNoX2dyb3VwX2xlYXZlKG1ldGFkYXRh
TG9hZGluZ0dyb3VwKTsKICAgICB9XTsKKworICAgIGRpc3BhdGNoX2dyb3VwX25vdGlmeShtZXRh
ZGF0YUxvYWRpbmdHcm91cCwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIG1ldGFkYXRhTG9hZGluZ0dyb3VwXSB7CisgICAg
ICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgW3dlYWtUaGlzLT5tX29iamNP
YnNlcnZlci5nZXQoKSBtZXRhZGF0YUxvYWRlZF07CisKKyAgICAgICAgICAgIGRpc3BhdGNoX3Jl
bGVhc2UobWV0YWRhdGFMb2FkaW5nR3JvdXApOworICAgICAgICB9KTsKKyAgICB9KTsKKwogfQog
CiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Okl0ZW1TdGF0dXMgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxheWVySXRlbVN0YXR1cygpIGNvbnN0CkBAIC0xMTMw
LDExICsxMTU4LDEzIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBNZWRpYVBsYXllclByaXZhdGVBVkYK
ICAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
bG9uZyBsb25nIHRvdGFsTWVkaWFTaXplID0gMDsKKyAgICBpZiAobV9jYWNoZWRUb3RhbEJ5dGVz
KQorICAgICAgICByZXR1cm4gbV9jYWNoZWRUb3RhbEJ5dGVzOworCiAgICAgZm9yIChBVlBsYXll
ckl0ZW1UcmFjayAqdGhpc1RyYWNrIGluIG1fY2FjaGVkVHJhY2tzLmdldCgpKQotICAgICAgICB0
b3RhbE1lZGlhU2l6ZSArPSBbW3RoaXNUcmFjayBhc3NldFRyYWNrXSB0b3RhbFNhbXBsZURhdGFM
ZW5ndGhdOworICAgICAgICBtX2NhY2hlZFRvdGFsQnl0ZXMgKz0gW1t0aGlzVHJhY2sgYXNzZXRU
cmFja10gdG90YWxTYW1wbGVEYXRhTGVuZ3RoXTsKIAotICAgIHJldHVybiB0b3RhbE1lZGlhU2l6
ZTsKKyAgICByZXR1cm4gbV9jYWNoZWRUb3RhbEJ5dGVzOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEFzc2V0KGlkIGFzc2V0KQpAQCAtMjM0Myw2ICsy
MzczLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0cmFja3NEaWRDaGFuZ2UoUmV0YWlu
UHRyPE5TQXJyYXk+IHRyYWNrcykKIHsKICAgICBtX2NhY2hlZFRyYWNrcyA9IHRyYWNrczsKKyAg
ICBtX2NhY2hlZFRvdGFsQnl0ZXMgPSAwOwogCiAgICAgdHJhY2tzQ2hhbmdlZCgpOwogICAgIHVw
ZGF0ZVN0YXRlcygpOwpAQCAtMjQyNCw2ICsyNDU1LDE1IEBAIE5TQXJyYXkqIGl0ZW1LVk9Qcm9w
ZXJ0aWVzKCkKICAgICByZXR1cm4ga2V5czsKIH0KIAorTlNBcnJheSogYXNzZXRUcmFja01ldGFk
YXRhS2V5TmFtZXMoKQoreworICAgIHN0YXRpYyBOU0FycmF5KiBrZXlzOworICAgIGlmICgha2V5
cykKKyAgICAgICAga2V5cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOkAidG90
YWxTYW1wbGVEYXRhTGVuZ3RoIiwgQCJtZWRpYVR5cGUiLCBuaWxdOworCisgICAgcmV0dXJuIGtl
eXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogQGltcGxlbWVudGF0aW9uIFdlYkNv
cmVBVkZNb3ZpZU9ic2VydmVyCg==
</data>
<flag name="review"
          id="254388"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230104</attachid>
            <date>2014-04-24 14:10:26 -0700</date>
            <delta_ts>2014-04-24 14:46:51 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>patch_7.txt</filename>
            <type>text/plain</type>
            <size>5965</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Nzc2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA0LTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIGRvbid0IGFz
ayBmb3IgQVZBc3NldFRyYWNrIHByb3BlcnRpZXMgYmVmb3JlIHRoZXkgYXJlIGF2YWlsYWJsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxOTAyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjUwNTA3Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBC
cmVudCBGdWxnaGFtLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlIGJlaGF2aW9yIHRoaXMg
Y2hhbmdlcyBjYW4gbm90IGJlIHRlc3RlZCB3aXRoIGEgbGF5b3V0IHRlc3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMpOiBJbml0aWFsaXplCisgICAgICAgICAgICBtX2NhY2hl
ZFRvdGFsQnl0ZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpiZWdpbkxvYWRpbmdNZXRhZGF0YSk6IERvbid0IHJlcG9ydCB0aGF0CisgICAg
ICAgICAgICBtZXRhZGF0YSBoYXMgYmVlbiBsb2FkZWQgdW50aWwgdGhlIHRyYWNrIHByb3BlcnRp
ZXMgd2UgbmVlZCBoYXZlIGJlZW4gbG9hZGVkIHRvby4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnRvdGFsQnl0ZXMpOiBDYWNoZSB0b3RhbEJ5
dGVzIGluc3RlYWQKKyAgICAgICAgICAgIG9mIHJlY2FsY3VsYXRpbmcgaXQgZXZlcnkgdGltZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnRy
YWNrc0RpZENoYW5nZSk6IEludmFsaWRhdGUgY2FjaGVkCisgICAgICAgICAgICB0b3RhbCBieXRl
cy4KKyAgICAgICAgKFdlYkNvcmU6OmFzc2V0VHJhY2tNZXRhZGF0YUtleU5hbWVzKTogQXJyYXkg
b2YgQVZBc3NldFRyYWNrIHByb3BlcnRpZXMgd2UgdXNlLgorCiAyMDE0LTA0LTI0ICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbTmV3IE11bHRpY29sdW1uXSBDbGll
bnQgcmVjdHMgZG9uJ3Qgd29yayB3aXRoIGNvbHVtbiBzcGFucy4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgJKHJldmlzaW9uIDE2Nzc2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDYgKzMyMiw3IEBAIHByaXZhdGU6CiAgICAgRmxv
YXRTaXplIG1fY2FjaGVkUHJlc2VudGF0aW9uU2l6ZTsKICAgICBkb3VibGUgbV9jYWNoZWREdXJh
dGlvbjsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlOworICAgIG11dGFibGUgbG9uZyBsb25nIG1f
Y2FjaGVkVG90YWxCeXRlczsKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdTdGF0dXNDaGFuZ2VzOwog
ICAgIGludCBtX2NhY2hlZEl0ZW1TdGF0dXM7CiAgICAgYm9vbCBtX2NhY2hlZExpa2VseVRvS2Vl
cFVwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShyZXZpc2lvbiAxNjc3NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNiAr
Mjk0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNBcnJheSAqYXNzZXRNZXRh
ZGF0YUtleU5hbWVzKCk7CiBzdGF0aWMgTlNBcnJheSAqaXRlbUtWT1Byb3BlcnRpZXMoKTsKK3N0
YXRpYyBOU0FycmF5KiBhc3NldFRyYWNrTWV0YWRhdGFLZXlOYW1lcygpOwogCiAjaWYgIUxPR19E
SVNBQkxFRAogc3RhdGljIGNvbnN0IGNoYXIgKmJvb2xTdHJpbmcoYm9vbCB2YWwpCkBAIC0zNjUs
NiArMzY2LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaQogICAg
ICwgbV9jdXJyZW50VGV4dFRyYWNrKDApCiAgICAgLCBtX2NhY2hlZER1cmF0aW9uKE1lZGlhUGxh
eWVyOjppbnZhbGlkVGltZSgpKQogICAgICwgbV9jYWNoZWRSYXRlKDApCisgICAgLCBtX2NhY2hl
ZFRvdGFsQnl0ZXMoMCkKICAgICAsIG1fcGVuZGluZ1N0YXR1c0NoYW5nZXMoMCkKICAgICAsIG1f
Y2FjaGVkSXRlbVN0YXR1cyhNZWRpYVBsYXllckFWUGxheWVySXRlbVN0YXR1c0RvZXNOb3RFeGlz
dCkKICAgICAsIG1fY2FjaGVkTGlrZWx5VG9LZWVwVXAoZmFsc2UpCkBAIC03ODQsOSArNzg2LDMz
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEoKQogewog
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmJlZ2lu
TG9hZGluZ01ldGFkYXRhKCVwKSAtIHJlcXVlc3RpbmcgbWV0YWRhdGEgbG9hZGluZyIsIHRoaXMp
OwotICAgIFttX2F2QXNzZXQuZ2V0KCkgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpb
YXNzZXRNZXRhZGF0YUtleU5hbWVzKCkgcmV0YWluXSBjb21wbGV0aW9uSGFuZGxlcjpeewotICAg
ICAgICBbbV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgbWV0YWRhdGFMb2FkZWRdOworCisgICAgZGlzcGF0
Y2hfZ3JvdXBfdCBtZXRhZGF0YUxvYWRpbmdHcm91cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgp
OworICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKG1ldGFkYXRhTG9hZGluZ0dyb3VwKTsKKyAgICBh
dXRvIHdlYWtUaGlzID0gY3JlYXRlV2Vha1B0cigpOworICAgIFttX2F2QXNzZXQuZ2V0KCkgbG9h
ZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czphc3NldE1ldGFkYXRhS2V5TmFtZXMoKSBjb21w
bGV0aW9uSGFuZGxlcjpeeworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzLCBt
ZXRhZGF0YUxvYWRpbmdHcm91cF0geworICAgICAgICAgICAgaWYgKHdlYWtUaGlzICYmIFt3ZWFr
VGhpcy0+bV9hdkFzc2V0LmdldCgpIHN0YXR1c09mVmFsdWVGb3JLZXk6QCJ0cmFja3MiIGVycm9y
Om5pbF0gPT0gQVZLZXlWYWx1ZVN0YXR1c0xvYWRlZCkgeworICAgICAgICAgICAgICAgIGZvciAo
QVZBc3NldFRyYWNrICp0cmFjayBpbiBbd2Vha1RoaXMtPm1fYXZBc3NldC5nZXQoKSB0cmFja3Nd
KSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKG1ldGFkYXRhTG9h
ZGluZ0dyb3VwKTsKKyAgICAgICAgICAgICAgICAgICAgW3RyYWNrIGxvYWRWYWx1ZXNBc3luY2hy
b25vdXNseUZvcktleXM6YXNzZXRUcmFja01ldGFkYXRhS2V5TmFtZXMoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeeworICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUobWV0
YWRhdGFMb2FkaW5nR3JvdXApOworICAgICAgICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkaXNwYXRjaF9ncm91cF9sZWF2ZSht
ZXRhZGF0YUxvYWRpbmdHcm91cCk7CisgICAgICAgIH0pOwogICAgIH1dOworCisgICAgZGlzcGF0
Y2hfZ3JvdXBfbm90aWZ5KG1ldGFkYXRhTG9hZGluZ0dyb3VwLCBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10geworICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIFt3ZWFrVGhpcy0+bV9vYmpjT2Jz
ZXJ2ZXIuZ2V0KCkgbWV0YWRhdGFMb2FkZWRdOworICAgICAgICB9KTsKKworICAgICAgICBkaXNw
YXRjaF9yZWxlYXNlKG1ldGFkYXRhTG9hZGluZ0dyb3VwKTsKKyAgICB9KTsKIH0KIAogTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpJdGVtU3RhdHVzIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnBsYXllckl0ZW1TdGF0dXMoKSBjb25zdApAQCAtMTEzMSwxMSArMTE1
NywxMyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlQVZGCiAgICAgaWYg
KCFtZXRhRGF0YUF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGxvbmcgbG9u
ZyB0b3RhbE1lZGlhU2l6ZSA9IDA7CisgICAgaWYgKG1fY2FjaGVkVG90YWxCeXRlcykKKyAgICAg
ICAgcmV0dXJuIG1fY2FjaGVkVG90YWxCeXRlczsKKwogICAgIGZvciAoQVZQbGF5ZXJJdGVtVHJh
Y2sgKnRoaXNUcmFjayBpbiBtX2NhY2hlZFRyYWNrcy5nZXQoKSkKLSAgICAgICAgdG90YWxNZWRp
YVNpemUgKz0gW1t0aGlzVHJhY2sgYXNzZXRUcmFja10gdG90YWxTYW1wbGVEYXRhTGVuZ3RoXTsK
KyAgICAgICAgbV9jYWNoZWRUb3RhbEJ5dGVzICs9IFtbdGhpc1RyYWNrIGFzc2V0VHJhY2tdIHRv
dGFsU2FtcGxlRGF0YUxlbmd0aF07CiAKLSAgICByZXR1cm4gdG90YWxNZWRpYVNpemU7CisgICAg
cmV0dXJuIG1fY2FjaGVkVG90YWxCeXRlczsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzZXRBc3NldChpZCBhc3NldCkKQEAgLTIzNjEsNiArMjM4OSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dHJhY2tzRGlkQ2hhbmdlKFJldGFpblB0cjxOU0Fy
cmF5PiB0cmFja3MpCiB7CiAgICAgbV9jYWNoZWRUcmFja3MgPSB0cmFja3M7CisgICAgbV9jYWNo
ZWRUb3RhbEJ5dGVzID0gMDsKIAogICAgIHRyYWNrc0NoYW5nZWQoKTsKICAgICB1cGRhdGVTdGF0
ZXMoKTsKQEAgLTI0NDIsNiArMjQ3MSwxMyBAQCBOU0FycmF5KiBpdGVtS1ZPUHJvcGVydGllcygp
CiAgICAgcmV0dXJuIGtleXM7CiB9CiAKK05TQXJyYXkqIGFzc2V0VHJhY2tNZXRhZGF0YUtleU5h
bWVzKCkKK3sKKyAgICBzdGF0aWMgTlNBcnJheSoga2V5cyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzOkAidG90YWxTYW1wbGVEYXRhTGVuZ3RoIiwgQCJtZWRpYVR5cGUiLCBuaWxd
OworCisgICAgcmV0dXJuIGtleXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogQGlt
cGxlbWVudGF0aW9uIFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>