<?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>53668</bug_id>
          
          <creation_ts>2011-02-03 01:27:37 -0800</creation_ts>
          <short_desc>Download bundles should be moved to their final destination when they finish</short_desc>
          <delta_ts>2011-02-04 03:25:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Honeycutt">jhoneycutt</reporter>
          <assigned_to name="Jon Honeycutt">jhoneycutt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>344583</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2011-02-03 01:27:37 -0800</bug_when>
    <thetext>Download bundles created by the CFNetwork port should be moved to their final location when they finish downloading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344598</commentid>
    <comment_count>1</comment_count>
      <attachid>81044</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2011-02-03 01:54:39 -0800</bug_when>
    <thetext>Created attachment 81044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344646</commentid>
    <comment_count>2</comment_count>
      <attachid>81044</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-02-03 05:42:14 -0800</bug_when>
    <thetext>Comment on attachment 81044
Patch

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

&gt; Source/WebKit2/WebProcess/Downloads/win/DownloadWin.cpp:35
&gt; +#if USE(CFNETWORK)

If this is CFNetwork- and Windows-specific, maybe this file should be Downloads\cf\win\DownloadsCFNetWin.cpp. That would match what has been done with GraphicsContext.

&gt; Source/WebKit2/WebProcess/Downloads/win/DownloadWin.cpp:36
&gt; +    ASSERT(!m_bundlePath.isEmpty() &amp;&amp; !m_destination.isEmpty());

Please use two ASSERTs.

&gt; Source/WebKit2/WebProcess/Downloads/win/DownloadWin.cpp:40
&gt; +    // Try to move the bundle to the final filename.
&gt; +    if (MoveFileEx(m_bundlePath.charactersWithNullTermination(), m_destination.charactersWithNullTermination(), 0))
&gt; +        return;

That should be ::MoveFileExW.

Should we pass MOVEFILE_COPY_ALLOWED? And if the UI process said we&apos;re allowed to overwrite an existing file, shouldn&apos;t we also pass MOVEFILE_REPLACE_EXISTING? (That would require passing allowOverwrite to platformDidFinish.)

Is it a bug that we&apos;re not calling didCreateDestination in this case?

&gt; Source/WebKit2/WebProcess/Downloads/win/DownloadWin.cpp:57
&gt; +    bool reportBundlePathAsFinalPath = true;
&gt; +
&gt; +    if (MoveFileEx(m_bundlePath.charactersWithNullTermination(), m_destination.charactersWithNullTermination(), 0))
&gt; +        reportBundlePathAsFinalPath = false;
&gt; +
&gt; +    // We either need to report our final filename as the bundle filename or the updated destination filename.
&gt; +    if (reportBundlePathAsFinalPath)
&gt; +        didCreateDestination(m_bundlePath);
&gt; +    else
&gt; +        didCreateDestination(m_destination);

Same comments here re: MoveFileEx.

I think the extra boolean is just making things more complicated. You could just do:

if (::MoveFileExW(...))
    didCreateDestination(m_destination);
else {
    // The move failed, so the final destination is just the bundle&apos;s current path.
    didCreateDestination(m_bundlePath);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345042</commentid>
    <comment_count>3</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2011-02-03 15:11:46 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 81044 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81044&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Downloads/win/DownloadWin.cpp:35
&gt; &gt; +#if USE(CFNETWORK)
&gt; 
&gt; If this is CFNetwork- and Windows-specific, maybe this file should be Downloads\cf\win\DownloadsCFNetWin.cpp. That would match what has been done with GraphicsContext.

OK, moved.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Downloads/win/DownloadWin.cpp:36
&gt; &gt; +    ASSERT(!m_bundlePath.isEmpty() &amp;&amp; !m_destination.isEmpty());
&gt; 
&gt; Please use two ASSERTs.

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Downloads/win/DownloadWin.cpp:40
&gt; &gt; +    // Try to move the bundle to the final filename.
&gt; &gt; +    if (MoveFileEx(m_bundlePath.charactersWithNullTermination(), m_destination.charactersWithNullTermination(), 0))
&gt; &gt; +        return;
&gt; 
&gt; That should be ::MoveFileExW.

Fixed.

&gt; 
&gt; Should we pass MOVEFILE_COPY_ALLOWED? And if the UI process said we&apos;re allowed to overwrite an existing file, shouldn&apos;t we also pass MOVEFILE_REPLACE_EXISTING? (That would require passing allowOverwrite to platformDidFinish.)

We didn&apos;t do this in old WebKit, but we probably should. I&apos;ll pass them.

&gt; 
&gt; Is it a bug that we&apos;re not calling didCreateDestination in this case?

No, we&apos;ve already called didCreateDestination with the original destination. It&apos;s only if the destination changes that we need it call it.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Downloads/win/DownloadWin.cpp:57
&gt; &gt; +    bool reportBundlePathAsFinalPath = true;
&gt; &gt; +
&gt; &gt; +    if (MoveFileEx(m_bundlePath.charactersWithNullTermination(), m_destination.charactersWithNullTermination(), 0))
&gt; &gt; +        reportBundlePathAsFinalPath = false;
&gt; &gt; +
&gt; &gt; +    // We either need to report our final filename as the bundle filename or the updated destination filename.
&gt; &gt; +    if (reportBundlePathAsFinalPath)
&gt; &gt; +        didCreateDestination(m_bundlePath);
&gt; &gt; +    else
&gt; &gt; +        didCreateDestination(m_destination);
&gt; 
&gt; Same comments here re: MoveFileEx.

Fixed.

&gt; 
&gt; I think the extra boolean is just making things more complicated. You could just do:
&gt; 
&gt; if (::MoveFileExW(...))
&gt;     didCreateDestination(m_destination);
&gt; else {
&gt;     // The move failed, so the final destination is just the bundle&apos;s current path.
&gt;     didCreateDestination(m_bundlePath);
&gt; }

Fixed.

Thanks! I&apos;ll upload another patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345185</commentid>
    <comment_count>4</comment_count>
      <attachid>81150</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2011-02-03 17:09:22 -0800</bug_when>
    <thetext>Created attachment 81150
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345434</commentid>
    <comment_count>5</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2011-02-04 03:25:06 -0800</bug_when>
    <thetext>Landed in &lt;http://trac.webkit.org/changeset/77585&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81044</attachid>
            <date>2011-02-03 01:54:39 -0800</date>
            <delta_ts>2011-02-03 17:09:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0002-download-bundles-should-be-moved-to-their-final-dest.patch</filename>
            <type>text/plain</type>
            <size>13941</size>
            <attacher name="Jon Honeycutt">jhoneycutt</attacher>
            
              <data encoding="base64">RnJvbSBkNjk4Y2ZlOTNkMmJhY2EyNGVlMWQzMjFlMWU4MzEyMGE1NjFmNWVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gSG9uZXljdXR0IDxqaG9uZXljdXR0QGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAzIEZlYiAyMDExIDAxOjQ2OjQyIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gRG93
bmxvYWQgYnVuZGxlcyBzaG91bGQgYmUgbW92ZWQgdG8gdGhlaXIgZmluYWwgZGVzdGluYXRpb24g
d2hlbiB0aGV5CiBmaW5pc2guCgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTM2NjgKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBXZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHA6CihXZWJLaXQ6OkRvd25sb2FkOjpyZXRyaWV2ZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKUmV0dXJuIHRoZSByZXN1bHQgb2YgcmVxdWVzdGluZyB0
aGUgZGVzdGluYXRpb24gZmlsZW5hbWUgZnJvbSB0aGUgVUkKcHJvY2Vzcy4KKFdlYktpdDo6RG93
bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKQ2FsbCByZXRy
aWV2ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCkuCihXZWJLaXQ6OkRvd25sb2Fk
OjpkaWRGaW5pc2gpOgpDYWxsIHBsYXRmb3JtRGlkRmluaXNoKCkuCgoqIFdlYlByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmg6CkRlY2xhcmUgcmV0cmlldmVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZSgpIGFuZApwbGF0Zm9ybURpZEZpbmlzaCgpLgoKKiBXZWJQcm9jZXNzL0Rvd25s
b2Fkcy9jZi9Eb3dubG9hZENGTmV0LmNwcDoKKFdlYktpdDo6d2lsbFJlc3VtZVdpdGhSZXNwb25z
ZUNhbGxiYWNrKToKUmVtb3ZlIHNvbWUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KCiogV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvY3VybC9Eb3dubG9hZEN1cmwuY3BwOgooV2ViS2l0OjpEb3dubG9hZDo6cGxh
dGZvcm1EaWRGaW5pc2gpOgpTdHViYmVkLgoKKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93
bmxvYWRNYWMubW06CihXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCk6ClN0dWJi
ZWQuCgoqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwOgooV2ViS2l0OjpE
b3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2gpOgpTdHViYmVkLgoKKiBXZWJQcm9jZXNzL0Rvd25s
b2Fkcy93aW4vRG93bmxvYWRXaW4uY3BwOgooV2ViS2l0OjpEb3dubG9hZDo6cGxhdGZvcm1EaWRG
aW5pc2gpOgpUcnkgdG8gbW92ZSB0aGUgYnVuZGxlIHRvIHRoZSBmaW5hbCBkZXN0aW5hdGlvbi4g
SWYgdGhhdCBmYWlscywgYXNrIHRoZQpVSSBwcm9jZXNzIGZvciBhIG5ldyBkZXN0aW5hdGlvbi4g
SWYgd2UgcmVjZWl2ZSBvbmUsIHRyeSBhZ2FpbiB0byBtb3ZlCnRoZSBidW5kbGUuIENhbGwgZGlk
Q3JlYXRlRGVzdGluYXRpb24oKSB0byByZXBvcnQgdGhlIGZpbGUgd2UgY3JlYXRlZApwYXRoIC0g
d2hldGhlciBpdCdzIHRoZSBidW5kbGUgdGhhdCB3ZSBmYWlsZWQgdG8gbW92ZSwgb3IgdGhlIGZp
bmFsCmRlc3RpbmF0aW9uLgoKVGhpcyBpcyBzaW1pbGFyIHRvIHdoYXQgaXMgZG9uZSBieSBXZWJL
aXQgMSdzIENGTmV0d29yayBwb3J0LgoKKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CkFkZCBEb3dubG9h
ZFdpbi5jcHAuCi0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDUxICsrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCAgIHwgICAxMyArKysrLQogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCAgICAgfCAgICA1ICstCiAuLi4vV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvY2YvRG93bmxvYWRDRk5ldC5jcHAgICAgICB8ICAgIDQgKy0KIC4uLi9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9jdXJsL0Rvd25sb2FkQ3VybC5jcHAgICAgIHwgICAgNyArKy0K
IC4uLi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0gICAgICAgIHwgICAg
NiArKy0KIC4uLi9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3Bw
IHwgICAgNyArKy0KIC4uLi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy93aW4vRG93bmxvYWRXaW4uY3Bw
ICAgICAgIHwgICA2MSArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDIudmNwcm9qICAgICAgICAgICAgICAgICAgfCAgICA4ICsrKwogOSBmaWxlcyBjaGFuZ2Vk
LCAxNTQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy93aW4vRG93bmxvYWRXaW4uY3BwCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDE0YTU2NTkuLmIxZjQ3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBA
QAorMjAxMS0wMi0wMyAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgorCisg
ICAgICAgIERvd25sb2FkIGJ1bmRsZXMgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZWlyIGZpbmFsIGRl
c3RpbmF0aW9uIHdoZW4gdGhleQorICAgICAgICBmaW5pc2guCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNjY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpyZXRyaWV2ZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb2YgcmVx
dWVzdGluZyB0aGUgZGVzdGluYXRpb24gZmlsZW5hbWUgZnJvbSB0aGUgVUkKKyAgICAgICAgcHJv
Y2Vzcy4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgQ2FsbCByZXRyaWV2ZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKCkuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRGaW5pc2gp
OgorICAgICAgICBDYWxsIHBsYXRmb3JtRGlkRmluaXNoKCkuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICBEZWNsYXJlIHJldHJpZXZlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoKSBhbmQKKyAgICAgICAgcGxhdGZvcm1EaWRGaW5p
c2goKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL2NmL0Rvd25sb2FkQ0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp3aWxsUmVzdW1lV2l0aFJlc3BvbnNlQ2FsbGJhY2spOgor
ICAgICAgICBSZW1vdmUgc29tZSB0cmFpbGluZyB3aGl0ZXNwYWNlLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvY3VybC9Eb3dubG9hZEN1cmwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2gpOgorICAgICAgICBTdHViYmVkLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2gpOgorICAgICAgICBTdHViYmVkLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCk6CisgICAgICAgIFN0dWJi
ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy93aW4vRG93bmxvYWRXaW4uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2gpOgorICAgICAg
ICBUcnkgdG8gbW92ZSB0aGUgYnVuZGxlIHRvIHRoZSBmaW5hbCBkZXN0aW5hdGlvbi4gSWYgdGhh
dCBmYWlscywgYXNrIHRoZQorICAgICAgICBVSSBwcm9jZXNzIGZvciBhIG5ldyBkZXN0aW5hdGlv
bi4gSWYgd2UgcmVjZWl2ZSBvbmUsIHRyeSBhZ2FpbiB0byBtb3ZlCisgICAgICAgIHRoZSBidW5k
bGUuIENhbGwgZGlkQ3JlYXRlRGVzdGluYXRpb24oKSB0byByZXBvcnQgdGhlIGZpbGUgd2UgY3Jl
YXRlZAorICAgICAgICBwYXRoIC0gd2hldGhlciBpdCdzIHRoZSBidW5kbGUgdGhhdCB3ZSBmYWls
ZWQgdG8gbW92ZSwgb3IgdGhlIGZpbmFsCisgICAgICAgIGRlc3RpbmF0aW9uLgorCisgICAgICAg
IFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IGlzIGRvbmUgYnkgV2ViS2l0IDEncyBDRk5ldHdvcmsg
cG9ydC4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKyAgICAgICAgQWRkIERvd25s
b2FkV2luLmNwcC4KKwogMjAxMS0wMi0wMSAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBw
bGUuY29tPgogCiAgICAgICAgIFNtYWxsIGNsZWFuLXVwIGluIERvd25sb2FkQ0ZOZXQuY3BwLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCmlu
ZGV4IDBkZWFkOTIuLmNiNmZlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBEb3dubG9hZDo6c2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1TdHJpbmcgRG93bmxvYWQ6OmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93
T3ZlcndyaXRlKQorU3RyaW5nIERvd25sb2FkOjpyZXRyaWV2ZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRl
KQogewogICAgIFN0cmluZyBkZXN0aW5hdGlvbjsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKQEAgLTk1LDYgKzk1LDEzIEBAIFN0cmluZyBEb3du
bG9hZDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwKICAgICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICBtX3NhbmRi
b3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKIAorICAgIHJldHVybiBkZXN0aW5hdGlvbjsKK30KKwor
U3RyaW5nIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sJiBhbGxvd092ZXJ3cml0ZSkKK3sKKyAgICBTdHJp
bmcgZGVzdGluYXRpb24gPSByZXRyaWV2ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KGZpbGVuYW1lLCBhbGxvd092ZXJ3cml0ZSk7CisKICAgICBkaWREZWNpZGVEZXN0aW5hdGlvbihk
ZXN0aW5hdGlvbiwgYWxsb3dPdmVyd3JpdGUpOwogCiAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwpA
QCAtMTA3LDYgKzExNCw4IEBAIHZvaWQgRG93bmxvYWQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKGNv
bnN0IFN0cmluZyYgcGF0aCkKIAogdm9pZCBEb3dubG9hZDo6ZGlkRmluaXNoKCkKIHsKKyAgICBw
bGF0Zm9ybURpZEZpbmlzaCgpOworCiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6
RGlkRmluaXNoKCkpOwogCiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDIyZjA0YTkuLjU1
OGM2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtODAsNiArODAsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93
T3ZlcndyaXRlKTsKICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYg
cGF0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKKyAgICB2b2lkIHBsYXRmb3JtRGlkRmluaXNo
KCk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIGRpZENhbmNl
bChjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIGRp
ZERlY2lkZURlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwpA
QCAtOTMsNiArOTQsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUo
KTsKIAorICAgIFN0cmluZyByZXRyaWV2ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRlKTsKKwogICAgIHVp
bnQ2NF90IG1fZG93bmxvYWRJRDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9j
Zi9Eb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L2NmL0Rvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDZkNjJmNmUuLmNjN2M4ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2NmL0Rvd25sb2FkQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2NmL0Rvd25sb2FkQ0ZO
ZXQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjayhD
RlVSTERvd25sb2FkUmVmLCBDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb24KIH0KIAogdm9p
ZCB3aWxsUmVzdW1lV2l0aFJlc3BvbnNlQ2FsbGJhY2soQ0ZVUkxEb3dubG9hZFJlZiwgQ0ZVUkxS
ZXNwb25zZVJlZiByZXNwb25zZSwgVUludDY0IHN0YXJ0aW5nQnl0ZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKLXsgCit7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudC4KICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvY3VybC9Eb3dubG9hZEN1cmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvY3VybC9Eb3dubG9hZEN1cmwuY3BwCmluZGV4IDkyOTkzZjIuLmViMGExY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2N1cmwvRG93bmxvYWRD
dXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9jdXJsL0Rv
d25sb2FkQ3VybC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQnJlbnQgRnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTU4LDQgKzU4LDkgQEAgdm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24oY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cmkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCit2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0K
aW5kZXggMzViNzc0My4uMGFiZDc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTczLDYgKzE3MywxMCBAQCB2
b2lkIERvd25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uLCBib29sIGFsbG93T3ZlcndyaQogewogfQogCit2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURp
ZEZpbmlzaCgpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiBAaW1wbGVtZW50YXRp
b24gV0tEb3dubG9hZEFzRGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxvYWRRdC5jcHAKaW5kZXggYTVhYTYzMy4uMTMxZjUzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93bmxv
YWRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvRG93
bmxvYWRRdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU3LDQgKzU3LDkgQEAgdm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGlu
YXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cmkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy93aW4vRG93bmxv
YWRXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvd2luL0Rvd25s
b2FkV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjNmYWFkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvd2lu
L0Rvd25sb2FkV2luLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRvd25sb2FkLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRG
aW5pc2goKQoreworI2lmIFVTRShDRk5FVFdPUkspCisgICAgQVNTRVJUKCFtX2J1bmRsZVBhdGgu
aXNFbXB0eSgpICYmICFtX2Rlc3RpbmF0aW9uLmlzRW1wdHkoKSk7CisKKyAgICAvLyBUcnkgdG8g
bW92ZSB0aGUgYnVuZGxlIHRvIHRoZSBmaW5hbCBmaWxlbmFtZS4KKyAgICBpZiAoTW92ZUZpbGVF
eChtX2J1bmRsZVBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgbV9kZXN0aW5h
dGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gVGhlIG1vdmUgZmFpbGVkLiBHaXZlIHRoZSBjbGllbnQgb25lIG1vcmUgY2hh
bmNlIHRvIGNob29zZSB0aGUgZmluYWwgZmlsZW5hbWUuCisgICAgYm9vbCBhbGxvd092ZXJ3cml0
ZVVudXNlZDsKKyAgICBtX2Rlc3RpbmF0aW9uID0gcmV0cmlldmVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShtX2Rlc3RpbmF0aW9uLCBhbGxvd092ZXJ3cml0ZVVudXNlZCk7CisgICAg
aWYgKG1fZGVzdGluYXRpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29s
IHJlcG9ydEJ1bmRsZVBhdGhBc0ZpbmFsUGF0aCA9IHRydWU7CisKKyAgICBpZiAoTW92ZUZpbGVF
eChtX2J1bmRsZVBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgbV9kZXN0aW5h
dGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwKSkKKyAgICAgICAgcmVwb3J0
QnVuZGxlUGF0aEFzRmluYWxQYXRoID0gZmFsc2U7CisKKyAgICAvLyBXZSBlaXRoZXIgbmVlZCB0
byByZXBvcnQgb3VyIGZpbmFsIGZpbGVuYW1lIGFzIHRoZSBidW5kbGUgZmlsZW5hbWUgb3IgdGhl
IHVwZGF0ZWQgZGVzdGluYXRpb24gZmlsZW5hbWUuCisgICAgaWYgKHJlcG9ydEJ1bmRsZVBhdGhB
c0ZpbmFsUGF0aCkKKyAgICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb24obV9idW5kbGVQYXRoKTsK
KyAgICBlbHNlCisgICAgICAgIGRpZENyZWF0ZURlc3RpbmF0aW9uKG1fZGVzdGluYXRpb24pOwor
I2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qIGIvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIudmNwcm9qCmluZGV4IDBmNmNiZTkuLjRhYzM1MWQgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2oKQEAgLTE2NjUsNiArMTY2NSwxNCBAQAogCQkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCTwvRmlsdGVyPgorCQkJCTxGaWx0ZXIKKwkJ
CQkJTmFtZT0id2luIgorCQkJCQk+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYlByb2Nlc3NcRG93bmxvYWRzXHdpblxEb3dubG9hZFdpbi5jcHAiCisJCQkJCQk+CisJCQkJ
CTwvRmlsZT4KKwkJCQk8L0ZpbHRlcj4KIAkJCTwvRmlsdGVyPgogCQkJPEZpbHRlcgogCQkJCU5h
bWU9IkluamVjdGVkQnVuZGxlIgotLSAKMS43LjMuMwoK
</data>
<flag name="review"
          id="72576"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81150</attachid>
            <date>2011-02-03 17:09:22 -0800</date>
            <delta_ts>2011-02-03 17:17:52 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>0002-download-bundles-should-be-moved-to-their-final-dest.patch</filename>
            <type>text/plain</type>
            <size>15431</size>
            <attacher name="Jon Honeycutt">jhoneycutt</attacher>
            
              <data encoding="base64">RnJvbSAxMjhiNzIwMjAzYjMxMmQ1NTk0NWI2OTExOTczMjVhOGQ5YzVhZmM4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gSG9uZXljdXR0IDxqaG9uZXljdXR0QGFwcGxlLmNvbT4K
RGF0ZTogVGh1LCAzIEZlYiAyMDExIDAxOjQ2OjQyIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gRG93
bmxvYWQgYnVuZGxlcyBzaG91bGQgYmUgbW92ZWQgdG8gdGhlaXIgZmluYWwgZGVzdGluYXRpb24g
d2hlbiB0aGV5CiBmaW5pc2guCgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTM2NjgKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBXZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHA6CihXZWJLaXQ6OkRvd25sb2FkOjpEb3dubG9hZCk6CkluaXRpYWxp
emUgbV9hbGxvd092ZXJ3cml0ZS4KKFdlYktpdDo6RG93bmxvYWQ6OnJldHJpZXZlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgpSZXR1cm4gdGhlIHJlc3VsdCBvZiByZXF1ZXN0aW5n
IHRoZSBkZXN0aW5hdGlvbiBmaWxlbmFtZSBmcm9tIHRoZSBVSQpwcm9jZXNzLgooV2ViS2l0OjpE
b3dubG9hZDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgpDYWxsIHJl
dHJpZXZlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoKS4KKFdlYktpdDo6RG93bmxv
YWQ6OmRpZEZpbmlzaCk6CkNhbGwgcGxhdGZvcm1EaWRGaW5pc2goKS4KCiogV2ViUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaDoKRGVjbGFyZSByZXRyaWV2ZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKCkgYW5kCnBsYXRmb3JtRGlkRmluaXNoKCkuIEFkZCBhIG1lbWJlciB2YXJp
YWJsZSB0byBzdG9yZSB3aGV0aGVyIHRoZSBVSQpwcm9jZXNzIHdvdWxkIGxpa2UgdXMgdG8gb3Zl
cndyaXRlIGV4aXN0aW5nIGZpbGVzLgoKKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9jZi9Eb3dubG9h
ZENGTmV0LmNwcDoKKFdlYktpdDo6d2lsbFJlc3VtZVdpdGhSZXNwb25zZUNhbGxiYWNrKToKUmVt
b3ZlIHNvbWUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KCiogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvY3Vy
bC9Eb3dubG9hZEN1cmwuY3BwOgooV2ViS2l0OjpEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2gp
OgpTdHViYmVkLgoKKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW06CihX
ZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCk6ClN0dWJiZWQuCgoqIFdlYlByb2Nl
c3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwOgooV2ViS2l0OjpEb3dubG9hZDo6cGxhdGZv
cm1EaWRGaW5pc2gpOgpTdHViYmVkLgoKKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9jZi93aW4vRG93
bmxvYWRDRk5ldFdpbi5jcHA6CihXZWJLaXQ6OkRvd25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlv
bik6ClN0b3JlIHdoZXRoZXIgdGhlIFVJIHByb2Nlc3Mgd291bGQgbGlrZSB1cyB0byBvdmVyd3Jp
dGUgZXhpc3RpbmcgZmlsZXMuCihXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCk6
ClRyeSB0byBtb3ZlIHRoZSBidW5kbGUgdG8gdGhlIGZpbmFsIGRlc3RpbmF0aW9uLiBJZiB0aGF0
IGZhaWxzLCBhc2sgdGhlClVJIHByb2Nlc3MgZm9yIGEgbmV3IGRlc3RpbmF0aW9uLiBJZiB3ZSBy
ZWNlaXZlIG9uZSwgdHJ5IGFnYWluIHRvIG1vdmUKdGhlIGJ1bmRsZS4gQ2FsbCBkaWRDcmVhdGVE
ZXN0aW5hdGlvbigpIHRvIHJlcG9ydCB0aGUgdXBkYXRlZCBwYXRoIG9mCmZpbGUgd2hldGhlciBp
dCdzIHRoZSBidW5kbGUgdGhhdCB3ZSBmYWlsZWQgdG8gbW92ZSwgb3IgdGhlIG5ldyBmaW5hbApk
ZXN0aW5hdGlvbi4KClRoaXMgaXMgc2ltaWxhciB0byB3aGF0IGlzIGRvbmUgYnkgV2ViS2l0IDEn
cyBDRk5ldHdvcmsgcG9ydC4KCiogd2luL1dlYktpdDIudmNwcm9qOgpBZGQgRG93bmxvYWRXaW4u
Y3BwLgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICA1NiArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwICAgfCAgIDE2ICsrKysrLQogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCAgICAgfCAgICA2ICsrLQogLi4uL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL2NmL0Rvd25sb2FkQ0ZOZXQuY3BwICAgICAgfCAgICA1ICstCiAuLi4v
RG93bmxvYWRzL2NmL3dpbi9Eb3dubG9hZENGTmV0V2luLmNwcCAgICAgICAgICB8ICAgNTYgKysr
KysrKysrKysrKysrKysrKysKIC4uLi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9jdXJsL0Rvd25sb2Fk
Q3VybC5jcHAgICAgIHwgICAgNyArKy0KIC4uLi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93
bmxvYWRNYWMubW0gICAgICAgIHwgICAgNiArKy0KIC4uLi9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwIHwgICAgNyArKy0KIFNvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLnZjcHJvaiAgICAgICAgICAgICAgICAgIHwgICAgOCArKysKIDkgZmlsZXMgY2hhbmdl
ZCwgMTU5IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvY2Yvd2luL0Rvd25sb2FkQ0ZOZXRX
aW4uY3BwCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDE0YTU2NTkuLjc2MTE2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxMS0wMi0wMyAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUu
Y29tPgorCisgICAgICAgIERvd25sb2FkIGJ1bmRsZXMgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZWly
IGZpbmFsIGRlc3RpbmF0aW9uIHdoZW4gdGhleQorICAgICAgICBmaW5pc2guCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNjY4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpEb3dubG9hZCk6
CisgICAgICAgIEluaXRpYWxpemUgbV9hbGxvd092ZXJ3cml0ZS4KKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWQ6OnJldHJpZXZlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAg
ICAgICBSZXR1cm4gdGhlIHJlc3VsdCBvZiByZXF1ZXN0aW5nIHRoZSBkZXN0aW5hdGlvbiBmaWxl
bmFtZSBmcm9tIHRoZSBVSQorICAgICAgICBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICBD
YWxsIHJldHJpZXZlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoKS4KKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWQ6OmRpZEZpbmlzaCk6CisgICAgICAgIENhbGwgcGxhdGZvcm1EaWRG
aW5pc2goKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmg6Cisg
ICAgICAgIERlY2xhcmUgcmV0cmlldmVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgp
IGFuZAorICAgICAgICBwbGF0Zm9ybURpZEZpbmlzaCgpLiBBZGQgYSBtZW1iZXIgdmFyaWFibGUg
dG8gc3RvcmUgd2hldGhlciB0aGUgVUkKKyAgICAgICAgcHJvY2VzcyB3b3VsZCBsaWtlIHVzIHRv
IG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxv
YWRzL2NmL0Rvd25sb2FkQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3aWxsUmVzdW1lV2l0
aFJlc3BvbnNlQ2FsbGJhY2spOgorICAgICAgICBSZW1vdmUgc29tZSB0cmFpbGluZyB3aGl0ZXNw
YWNlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvY3VybC9Eb3dubG9hZEN1cmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2gpOgorICAg
ICAgICBTdHViYmVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25s
b2FkTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2gp
OgorICAgICAgICBTdHViYmVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQv
RG93bmxvYWRRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybURpZEZp
bmlzaCk6CisgICAgICAgIFN0dWJiZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fk
cy9jZi93aW4vRG93bmxvYWRDRk5ldFdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
OjpkaWREZWNpZGVEZXN0aW5hdGlvbik6CisgICAgICAgIFN0b3JlIHdoZXRoZXIgdGhlIFVJIHBy
b2Nlc3Mgd291bGQgbGlrZSB1cyB0byBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMuCisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCk6CisgICAgICAgIFRyeSB0byBt
b3ZlIHRoZSBidW5kbGUgdG8gdGhlIGZpbmFsIGRlc3RpbmF0aW9uLiBJZiB0aGF0IGZhaWxzLCBh
c2sgdGhlCisgICAgICAgIFVJIHByb2Nlc3MgZm9yIGEgbmV3IGRlc3RpbmF0aW9uLiBJZiB3ZSBy
ZWNlaXZlIG9uZSwgdHJ5IGFnYWluIHRvIG1vdmUKKyAgICAgICAgdGhlIGJ1bmRsZS4gQ2FsbCBk
aWRDcmVhdGVEZXN0aW5hdGlvbigpIHRvIHJlcG9ydCB0aGUgdXBkYXRlZCBwYXRoIG9mCisgICAg
ICAgIGZpbGUgd2hldGhlciBpdCdzIHRoZSBidW5kbGUgdGhhdCB3ZSBmYWlsZWQgdG8gbW92ZSwg
b3IgdGhlIG5ldyBmaW5hbAorICAgICAgICBkZXN0aW5hdGlvbi4KKworICAgICAgICBUaGlzIGlz
IHNpbWlsYXIgdG8gd2hhdCBpcyBkb25lIGJ5IFdlYktpdCAxJ3MgQ0ZOZXR3b3JrIHBvcnQuCisK
KyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisgICAgICAgIEFkZCBEb3dubG9hZFdpbi5j
cHAuCisKIDIwMTEtMDItMDEgIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4K
IAogICAgICAgICBTbWFsbCBjbGVhbi11cCBpbiBEb3dubG9hZENGTmV0LmNwcC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAppbmRleCAwZGVh
ZDkyLi4xYzM2ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00Niw2ICs0Niw5IEBAIFBhc3NPd25QdHI8RG93bmxvYWQ+IERvd25s
b2FkOjpjcmVhdGUodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0CiBE
b3dubG9hZDo6RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogICAgIDogbV9kb3dubG9hZElEKGRvd25sb2FkSUQpCiAgICAgLCBtX3Jl
cXVlc3QocmVxdWVzdCkKKyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgICwgbV9hbGxvd092ZXJ3cml0
ZShmYWxzZSkKKyNlbmRpZgogewogICAgIEFTU0VSVChtX2Rvd25sb2FkSUQpOwogfQpAQCAtODQs
NyArODcsNyBAQCBib29sIERvd25sb2FkOjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmlu
ZyBEb3dubG9hZDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGUpCitTdHJpbmcgRG93bmxvYWQ6
OnJldHJpZXZlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGUpCiB7CiAgICAgU3RyaW5nIGRlc3RpbmF0aW9u
OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwpA
QCAtOTUsNiArOTgsMTMgQEAgU3RyaW5nIERvd25sb2FkOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLAogICAgIGlmIChtX3NhbmRi
b3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogCisg
ICAgcmV0dXJuIGRlc3RpbmF0aW9uOworfQorCitTdHJpbmcgRG93bmxvYWQ6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wm
IGFsbG93T3ZlcndyaXRlKQoreworICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHJldHJpZXZlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsK
KwogICAgIGRpZERlY2lkZURlc3RpbmF0aW9uKGRlc3RpbmF0aW9uLCBhbGxvd092ZXJ3cml0ZSk7
CiAKICAgICByZXR1cm4gZGVzdGluYXRpb247CkBAIC0xMDcsNiArMTE3LDggQEAgdm9pZCBEb3du
bG9hZDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogCiB2b2lkIERv
d25sb2FkOjpkaWRGaW5pc2goKQogeworICAgIHBsYXRmb3JtRGlkRmluaXNoKCk7CisKICAgICBz
ZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRGaW5pc2goKSk7CiAKICAgICBpZiAobV9z
YW5kYm94RXh0ZW5zaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkLmgKaW5kZXggMjJmMDRhOS4uMjZkOGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MCw2ICs4MCw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGUpOwogICAgIHZvaWQgZGlkQ3Jl
YXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGRpZEZpbmlzaCgp
OworICAgIHZvaWQgcGxhdGZvcm1EaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHJl
c3VtZURhdGEpOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQgZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3Ry
aW5nJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CkBAIC05Myw2ICs5NCw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCisgICAgU3RyaW5nIHJldHJpZXZlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9v
bCYgYWxsb3dPdmVyd3JpdGUpOworCiAgICAgdWludDY0X3QgbV9kb3dubG9hZElEOwogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAKQEAgLTEwMyw2ICsxMDYsNyBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxXS0Rvd25sb2FkQXNEZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsK
ICNlbmRpZgogI2lmIFVTRShDRk5FVFdPUkspCisgICAgYm9vbCBtX2FsbG93T3ZlcndyaXRlOwog
ICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uOwogICAgIFN0cmluZyBtX2J1bmRsZVBhdGg7CiAgICAg
UmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9jZi9Eb3dubG9hZENGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2NmL0Rvd25sb2FkQ0ZOZXQuY3BwCmlu
ZGV4IDZkNjJmNmUuLmM4YTA2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL2NmL0Rvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRG93bmxvYWRzL2NmL0Rvd25sb2FkQ0ZOZXQuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjUsNiArMTI1LDcgQEAg
dm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbiwgYm9vbCBhbGxvd092ZXJ3cmkKICAgICBpZiAoZGVzdGluYXRpb24uaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBtX2FsbG93T3ZlcndyaXRlID0gYWxsb3dPdmVyd3JpdGU7
CiAgICAgbV9kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uOwogICAgIG1fYnVuZGxlUGF0aCA9IGRl
c3RpbmF0aW9uICsgRG93bmxvYWRCdW5kbGU6OmZpbGVFeHRlbnNpb24oKTsKIApAQCAtMTYzLDcg
KzE2NCw3IEBAIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2soQ0ZVUkxEb3dubG9hZFJl
ZiwgQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgY29uCiB9CiAKIHZvaWQgd2lsbFJlc3VtZVdp
dGhSZXNwb25zZUNhbGxiYWNrKENGVVJMRG93bmxvYWRSZWYsIENGVVJMUmVzcG9uc2VSZWYgcmVz
cG9uc2UsIFVJbnQ2NCBzdGFydGluZ0J5dGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17IAor
ewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2NmL3dpbi9Eb3du
bG9hZENGTmV0V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2Nm
L3dpbi9Eb3dubG9hZENGTmV0V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4wZGQ2NTA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvY2Yvd2luL0Rvd25sb2FkQ0ZOZXRXaW4uY3BwCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRG93bmxvYWQuaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IERvd25sb2FkOjpwbGF0Zm9ybURpZEZpbmlzaCgpCit7CisgICAgQVNTRVJUKCFtX2J1bmRsZVBh
dGguaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fZGVzdGluYXRpb24uaXNFbXB0eSgpKTsKKwor
ICAgIC8vIFRyeSB0byBtb3ZlIHRoZSBidW5kbGUgdG8gdGhlIGZpbmFsIGZpbGVuYW1lLgorICAg
IERXT1JEIGZsYWdzID0gTU9WRUZJTEVfQ09QWV9BTExPV0VEIHwgKG1fYWxsb3dPdmVyd3JpdGUg
PyBNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HIDogMCk7CisgICAgaWYgKDo6TW92ZUZpbGVFeFco
bV9idW5kbGVQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIG1fZGVzdGluYXRp
b24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgZmxhZ3MpKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBUaGUgbW92ZSBmYWlsZWQuIEdpdmUgdGhlIGNsaWVudCBvbmUgbW9yZSBj
aGFuY2UgdG8gY2hvb3NlIHRoZSBmaW5hbCBmaWxlbmFtZS4KKyAgICBtX2Rlc3RpbmF0aW9uID0g
cmV0cmlldmVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShtX2Rlc3RpbmF0aW9uLCBt
X2FsbG93T3ZlcndyaXRlKTsKKyAgICBpZiAobV9kZXN0aW5hdGlvbi5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFdlIGVpdGhlciBuZWVkIHRvIHJlcG9ydCBvdXIgZmluYWwg
ZmlsZW5hbWUgYXMgdGhlIGJ1bmRsZSBmaWxlbmFtZSBvciB0aGUgdXBkYXRlZCBkZXN0aW5hdGlv
biBmaWxlbmFtZS4KKyAgICBmbGFncyA9IE1PVkVGSUxFX0NPUFlfQUxMT1dFRCB8IChtX2FsbG93
T3ZlcndyaXRlID8gTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyA6IDApOworICAgIGlmICg6Ok1v
dmVGaWxlRXhXKG1fYnVuZGxlUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBt
X2Rlc3RpbmF0aW9uLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIGZsYWdzKSkKKyAg
ICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb24obV9kZXN0aW5hdGlvbik7CisgICAgZWxzZQorICAg
ICAgICBkaWRDcmVhdGVEZXN0aW5hdGlvbihtX2J1bmRsZVBhdGgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL2N1cmwvRG93bmxvYWRDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL2N1cmwvRG93bmxvYWRDdXJsLmNwcAppbmRleCA5Mjk5M2YyLi5lYjBhMWNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9jdXJsL0Rvd25sb2Fk
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvY3VybC9E
b3dubG9hZEN1cmwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEwIEJyZW50IEZ1bGdoYW0gPGJmdWxnaGFtQHdlYmtpdC5vcmc+CiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC01OCw0ICs1OCw5IEBAIHZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURlc3RpbmF0aW9uKGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAordm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2goKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1t
CmluZGV4IDM1Yjc3NDMuLjBhYmQ3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3Myw2ICsxNzMsMTAgQEAg
dm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbiwgYm9vbCBhbGxvd092ZXJ3cmkKIHsKIH0KIAordm9pZCBEb3dubG9hZDo6cGxhdGZvcm1E
aWRGaW5pc2goKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogQGltcGxlbWVudGF0
aW9uIFdLRG93bmxvYWRBc0RlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQuY3BwCmluZGV4IGE1YWE2MzMuLjEzMWY1M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25s
b2FkUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rv
d25sb2FkUXQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC01Nyw0ICs1Nyw5IEBAIHZvaWQgRG93bmxvYWQ6OmRpZERlY2lkZURlc3Rp
bmF0aW9uKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EaWRGaW5pc2go
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIudmNwcm9qCmluZGV4IDBmNmNiZTkuLjA2YTMwNjUgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0Mi52Y3Byb2oKQEAgLTE2MjQsNiArMTYyNCwxNCBAQAogCQkJCQkJCS8+CiAJ
CQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWx0ZXIKKwkJ
CQkJCU5hbWU9IndpbiIKKwkJCQkJCT4KKwkJCQkJCTxGaWxlCisJCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxXZWJQcm9jZXNzXERvd25sb2Fkc1xjZlx3aW5cRG93bmxvYWRDRk5ldFdpbi5jcHAiCisJ
CQkJCQkJPgorCQkJCQkJPC9GaWxlPgorCQkJCQk8L0ZpbHRlcj4KIAkJCQk8L0ZpbHRlcj4KIAkJ
CQk8RmlsdGVyCiAJCQkJCU5hbWU9ImN1cmwiCi0tIAoxLjcuMy4zCgo=
</data>
<flag name="review"
          id="72699"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>