<?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>111956</bug_id>
          
          <creation_ts>2013-03-10 23:20:22 -0700</creation_ts>
          <short_desc>PDFPlugin: Return PDFKit&apos;s data instead of the original resource data for save/etc.</short_desc>
          <delta_ts>2013-03-11 22:12:43 -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>PDF</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>ap</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>852062</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-10 23:20:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/13352282&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852064</commentid>
    <comment_count>1</comment_count>
      <attachid>192407</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-10 23:25:14 -0700</bug_when>
    <thetext>Created attachment 192407
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852066</commentid>
    <comment_count>2</comment_count>
      <attachid>192407</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-10 23:36:54 -0700</bug_when>
    <thetext>Comment on attachment 192407
patch

Attachment 192407 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17149011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852075</commentid>
    <comment_count>3</comment_count>
      <attachid>192407</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-11 00:02:16 -0700</bug_when>
    <thetext>Comment on attachment 192407
patch

Attachment 192407 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17134079</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852079</commentid>
    <comment_count>4</comment_count>
      <attachid>192411</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-11 00:15:43 -0700</bug_when>
    <thetext>Created attachment 192411
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852421</commentid>
    <comment_count>5</comment_count>
      <attachid>192411</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-11 10:09:06 -0700</bug_when>
    <thetext>Comment on attachment 192411
patch

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

Looks fine overall, and the comments should be easily addressable.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h:251
&gt; -    virtual bool getResourceData(const unsigned char*&amp; /* bytes */, unsigned&amp; /* length */) const OVERRIDE { return false; }
&gt; +    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; getResourceData() const OVERRIDE { return WebCore::SharedBuffer::create(); }

I think that returning 0 would be more idiomatic than returning an empty buffer.

It probably doesn&apos;t match too much here, but PassRefPtr&lt;WebCore::SharedBuffer&gt;() is a little faster than returning 0.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm:-679
&gt; -    if (m_data &amp;&amp; m_pdfDocument) {
&gt; -        bytes = CFDataGetBytePtr(m_data.get());
&gt; -        length = CFDataGetLength(m_data.get());

Do we still have a reason to preserve m_data?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm:680
&gt; +    NSData* pdfData = [m_pdfDocument.get() dataRepresentation];

Misplaced star.

&gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:34
&gt; +#include &lt;WebCore/SharedBuffer.h&gt;

Is this #include actually needed?

&gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:267
&gt; -    virtual bool getResourceData(const unsigned char*&amp; bytes, unsigned&amp; length) const = 0;
&gt; +    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; getResourceData() const = 0;

We normally use &quot;get&quot; prefix with functions that return result in a reference, like this one used to do. Also, there is nothing in the name that allows for the proposed behavior - it doesn&apos;t say &quot;ForSaving&quot;, for example.

Did you check other call sites to confirm that it&apos;s OK to return mutated PDF data? I see that there is only one call site changed in the patch, but I didn&apos;t check what happens in UI process.

&gt; Source/WebKit2/WebProcess/Plugins/PluginProxy.h:136
&gt; +    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; getResourceData() const OVERRIDE { return WebCore::SharedBuffer::create(); }

Here as well, I&apos;d return a null pointer.

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.h:104
&gt; -    bool getResourceData(const unsigned char*&amp; bytes, unsigned&amp; length) const;
&gt; +    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; getResourceData() const;

Unsure why this this function is virtual now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852645</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-11 13:20:07 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 192411 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192411&amp;action=review
&gt; 
&gt; Looks fine overall, and the comments should be easily addressable.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h:251
&gt; &gt; -    virtual bool getResourceData(const unsigned char*&amp; /* bytes */, unsigned&amp; /* length */) const OVERRIDE { return false; }
&gt; &gt; +    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; getResourceData() const OVERRIDE { return WebCore::SharedBuffer::create(); }
&gt; 
&gt; I think that returning 0 would be more idiomatic than returning an empty buffer.
&gt; 
&gt; It probably doesn&apos;t match too much here, but PassRefPtr&lt;WebCore::SharedBuffer&gt;() is a little faster than returning 0.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm:-679
&gt; &gt; -    if (m_data &amp;&amp; m_pdfDocument) {
&gt; &gt; -        bytes = CFDataGetBytePtr(m_data.get());
&gt; &gt; -        length = CFDataGetLength(m_data.get());
&gt; 
&gt; Do we still have a reason to preserve m_data?

Not ... really. We construct it piecemeal, so we need to have it while loading, but once we create our PDFDocument we could throw it away.

This brought up a good point, though, download and open-in-preview should use the mutated data too.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm:680
&gt; &gt; +    NSData* pdfData = [m_pdfDocument.get() dataRepresentation];
&gt; 
&gt; Misplaced star.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:34
&gt; &gt; +#include &lt;WebCore/SharedBuffer.h&gt;
&gt; 
&gt; Is this #include actually needed?

I think so, I&apos;ll check.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:267
&gt; &gt; -    virtual bool getResourceData(const unsigned char*&amp; bytes, unsigned&amp; length) const = 0;
&gt; &gt; +    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; getResourceData() const = 0;
&gt; 
&gt; We normally use &quot;get&quot; prefix with functions that return result in a reference, like this one used to do. Also, there is nothing in the name that allows for the proposed behavior - it doesn&apos;t say &quot;ForSaving&quot;, for example.

liveResourceData()? (it&apos;s not necessarily just for saving)

&gt; Did you check other call sites to confirm that it&apos;s OK to return mutated PDF data? I see that there is only one call site changed in the patch, but I didn&apos;t check what happens in UI process.

I added getResourceData, so it shouldn&apos;t be a problem.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginProxy.h:136
&gt; &gt; +    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; getResourceData() const OVERRIDE { return WebCore::SharedBuffer::create(); }
&gt; 
&gt; Here as well, I&apos;d return a null pointer.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginView.h:104
&gt; &gt; -    bool getResourceData(const unsigned char*&amp; bytes, unsigned&amp; length) const;
&gt; &gt; +    virtual PassRefPtr&lt;WebCore::SharedBuffer&gt; getResourceData() const;
&gt; 
&gt; Unsure why this this function is virtual now.

Copy-paste-o.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852667</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-11 13:37:49 -0700</bug_when>
    <thetext>&gt; &gt; Is this #include actually needed?
&gt;
&gt; I think so, I&apos;ll check.

A forward declaration is sufficient for a type in RefPtr or OwnPtr, as long as the object itself is not accessed. Most of the time, this means that constructors and destructors should not be inline, which is a good idea for polymorphic classes anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852764</commentid>
    <comment_count>8</comment_count>
      <attachid>192568</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-11 14:59:44 -0700</bug_when>
    <thetext>Created attachment 192568
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852765</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 15:01:14 -0700</bug_when>
    <thetext>Attachment 192568 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Plugin.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginProxy.h&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;]&quot; exit_code: 1
Source/WebKit2/ChangeLog:35:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852779</commentid>
    <comment_count>10</comment_count>
      <attachid>192572</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-11 15:17:45 -0700</bug_when>
    <thetext>Created attachment 192572
appease stylebot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852814</commentid>
    <comment_count>11</comment_count>
      <attachid>192572</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-11 15:51:52 -0700</bug_when>
    <thetext>Comment on attachment 192572
appease stylebot

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

&gt; Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.h:75
&gt; +    RetainPtr&lt;NSData&gt; liveData() const;
&gt; +    RetainPtr&lt;NSData&gt; rawData() const { return (NSData *)m_data.get(); }

Looks like returning a pointer should work for both.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm:689
&gt; +    if (!m_pdfDocument)
&gt; +        return 0;

Is this check necessary?

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:909
&gt; -        return false;
&gt; +        return PassRefPtr&lt;WebCore::SharedBuffer&gt;();

My advice was probably not that good - the unimportant win in performance is not worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853056</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-11 22:12:43 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/145477</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192407</attachid>
            <date>2013-03-10 23:25:14 -0700</date>
            <delta_ts>2013-03-11 00:15:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pdf-data.diff</filename>
            <type>text/plain</type>
            <size>8155</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwNGM5ZjdhLi43NTgyMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkg
QEAKIDIwMTMtMDMtMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgUERGUGx1Z2luOiBSZXR1cm4gUERGS2l0J3MgZGF0YSBpbnN0ZWFkIG9mIHRoZSBv
cmlnaW5hbCByZXNvdXJjZSBkYXRhIGZvciBzYXZlL2V0Yy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTk1NgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTMzNTIyODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSWYgd2UgcmV0dXJuIHRoZSBvcmlnaW5hbCByZXNvdXJjZSBkYXRhLCB3ZSBsb3NlIGNo
YW5nZXMgbWFkZSB0byBhbm5vdGF0aW9ucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUpOgorICAgICAgICBVc2UgYSBTaGFyZWREYXRhIGluc3RlYWQgb2YgcmF3IGRh
dGEgZm9yIGdldFJlc291cmNlRGF0YS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvU2ltcGxlUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpTaW1wbGVQREZQbHVnaW46
OmdldFJlc291cmNlRGF0YSk6CisgICAgICAgIFJldHVybiBhIFNoYXJlZERhdGEgd3JhcHBpbmcg
dGhlIFBERkRvY3VtZW50J3MgZGF0YS4KKworMjAxMy0wMy0xMCAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwogICAgICAgICBGaXggYSB0eXBvIGluIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzE0NTMzMi4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaAppbmRleCA1N2Q0ODY2Li5hOTRlOTNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaApAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gY29udmVydGVkIChp
ZiB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4IGlzbid0IGludmVydGlibGUpLgogICAgIGJvb2wg
Y29udmVydEZyb21Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJblJvb3RW
aWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OkludFBvaW50JiBwb2ludEluUGx1Z2luQ29vcmRpbmF0
ZXMpOwogCi0gICAgdmlydHVhbCBib29sIGdldFJlc291cmNlRGF0YShjb25zdCB1bnNpZ25lZCBj
aGFyKiYgLyogYnl0ZXMgKi8sIHVuc2lnbmVkJiAvKiBsZW5ndGggKi8pIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gZ2V0UmVzb3VyY2VEYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQogCiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKaW5kZXggNzZiMjgwNC4uNDcy
ODAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9T
aW1wbGVQREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1NpbXBsZVBERlBsdWdpbi5oCkBAIC0xNzcsNyArMTc3LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdW5zaWduZWQgY291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBXZWJDb3Jl
OjpGaW5kT3B0aW9ucywgdW5zaWduZWQpIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0
dWFsIGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaW5kT3B0aW9ucywg
dW5zaWduZWQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
Z2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiBieXRlcywgdW5zaWduZWQmIGxl
bmd0aCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZ2V0UmVzb3VyY2VEYXRhKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgU3Ry
aW5nIGdldFNlbGVjdGlvblN0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFN0cmluZygp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1Np
bXBsZVBERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
U2ltcGxlUERGUGx1Z2luLm1tCmluZGV4IGYwNzEyYjkuLmQ1ZWU1ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2lu
Lm1tCkBAIC02NzIsMTYgKzY3MiwxNyBAQCB2b2lkIFNpbXBsZVBERlBsdWdpbjo6bWFudWFsU3Ry
ZWFtRGlkRmluaXNoTG9hZGluZygpCiAgICAgcGRmRG9jdW1lbnREaWRMb2FkKCk7CiB9CiAKLWJv
b2wgU2ltcGxlUERGUGx1Z2luOjpnZXRSZXNvdXJjZURhdGEoY29uc3QgdW5zaWduZWQgY2hhciom
IGJ5dGVzLCB1bnNpZ25lZCYgbGVuZ3RoKSBjb25zdAorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IFNpbXBsZVBERlBsdWdpbjo6Z2V0UmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9k
YXRhICYmIG1fcGRmRG9jdW1lbnQpIHsKLSAgICAgICAgYnl0ZXMgPSBDRkRhdGFHZXRCeXRlUHRy
KG1fZGF0YS5nZXQoKSk7Ci0gICAgICAgIGxlbmd0aCA9IENGRGF0YUdldExlbmd0aChtX2RhdGEu
Z2V0KCkpOworICAgIGlmICghbV9wZGZEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAKLSAgICAgICAgcmV0dXJuIGxlbmd0aDsKLSAgICB9CisgICAgTlNE
YXRhKiBwZGZEYXRhID0gW21fcGRmRG9jdW1lbnQuZ2V0KCkgZGF0YVJlcHJlc2VudGF0aW9uXTsK
IAotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXBkZkRhdGEpCisgICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcE5T
RGF0YShwZGZEYXRhKTsKIH0KIAogdm9pZCBTaW1wbGVQREZQbHVnaW46Om1hbnVhbFN0cmVhbURp
ZEZhaWwoYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApp
bmRleCAzYzY5ZDBjLi4wNTYzYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTI2Myw3ICsyNjQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBnZXRSZXNvdXJjZURhdGEoY29uc3QgdW5zaWduZWQgY2hhciom
IGJ5dGVzLCB1bnNpZ25lZCYgbGVuZ3RoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZ2V0UmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGUzYWZiMWQuLjRjZTBhMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0x
MzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
Y29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBPVkVSUklE
RTsKIAotICAgIHZpcnR1YWwgYm9vbCBnZXRSZXNvdXJjZURhdGEoY29uc3QgdW5zaWduZWQgY2hh
ciomIC8qIGJ5dGVzICovLCB1bnNpZ25lZCYgLyogbGVuZ3RoICovKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGdldFJlc291cmNlRGF0YSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rp
b25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBPVkVSUklE
RSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0U2VsZWN0aW9uU3Ry
aW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBhYjk1ZmFmLi5k
Y2QyMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCkBAIC05MDMsMTIgKzkwMywxMiBAQCBib29sIFBsdWdpblZpZXc6OnNob3VsZEFs
bG93TmF2aWdhdGlvbkZyb21EcmFncygpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGx1Z2luLT5zaG91
bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3MoKTsKIH0KIAotYm9vbCBQbHVnaW5WaWV3OjpnZXRS
ZXNvdXJjZURhdGEoY29uc3QgdW5zaWduZWQgY2hhciomIGJ5dGVzLCB1bnNpZ25lZCYgbGVuZ3Ro
KSBjb25zdAorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmdldFJlc291cmNl
RGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9wbHVnaW4tPmdldFJlc291cmNl
RGF0YShieXRlcywgbGVuZ3RoKTsKKyAgICByZXR1cm4gbV9wbHVnaW4tPmdldFJlc291cmNlRGF0
YSgpOwogfQogCiBib29sIFBsdWdpblZpZXc6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDJiMTQyMzQuLmQ2ZmI5NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApA
QCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRp
bmcoKTsKIAotICAgIGJvb2wgZ2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiBi
eXRlcywgdW5zaWduZWQmIGxlbmd0aCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZ2V0UmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgYm9vbCBw
ZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGU2NjFhZWMuLjNmNzE5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxNjEsMTMgKzIxNjEsMTEgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBjYWxsYmFja0lEKQogICAgIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVy
ZW5jZTsKIAogICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHBkZlJlc291cmNlOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBpZiAoUGx1Z2lu
VmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCkp
KSB7Ci0gICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBieXRlczsKLSAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aDsKLQotICAgICAgICAgICAgaWYgKHBsdWdpblZpZXctPmdldFJlc291
cmNlRGF0YShieXRlcywgbGVuZ3RoKSkKLSAgICAgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0g
Q29yZUlQQzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlmICgo
cGRmUmVzb3VyY2UgPSBwbHVnaW5WaWV3LT5nZXRSZXNvdXJjZURhdGEoKSkpCisgICAgICAgICAg
ICAgICAgZGF0YVJlZmVyZW5jZSA9IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4ocGRmUmVzb3VyY2UtPmRhdGEoKSksIHBkZlJlc291cmNlLT5z
aXplKCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgp
KSB7Cg==
</data>
<flag name="commit-queue"
          id="213636"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192411</attachid>
            <date>2013-03-11 00:15:43 -0700</date>
            <delta_ts>2013-03-11 14:59:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pdf-data.diff</filename>
            <type>text/plain</type>
            <size>8172</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwNGM5ZjdhLi4yNjQ4N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTMtMDMtMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBSZXR1cm4gUERGS2l0J3MgZGF0YSBpbnN0ZWFkIG9mIHRoZSBv
cmlnaW5hbCByZXNvdXJjZSBkYXRhIGZvciBzYXZlL2V0Yy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTk1NgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTMzNTIyODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSWYgd2UgcmV0dXJuIHRoZSBvcmlnaW5hbCByZXNvdXJjZSBkYXRhLCB3ZSBsb3NlIGNo
YW5nZXMgbWFkZSB0byBhbm5vdGF0aW9ucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUpOgorICAgICAgICBVc2UgYSBTaGFyZWREYXRhIGluc3RlYWQgb2YgcmF3IGRh
dGEgZm9yIGdldFJlc291cmNlRGF0YS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvU2ltcGxlUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpTaW1wbGVQREZQbHVnaW46
OmdldFJlc291cmNlRGF0YSk6CisgICAgICAgIFJldHVybiBhIFNoYXJlZERhdGEgd3JhcHBpbmcg
dGhlIFBERkRvY3VtZW50J3MgZGF0YS4KKwogMjAxMy0wMy0xMCAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYSB0eXBvIGluIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzE0NTMzMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXgg
NTdkNDg2Ni4uYTk0ZTkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTI0OCw3ICsyNDgs
NyBAQCBwcml2YXRlOgogICAgIC8vIGNvbnZlcnRlZCAoaWYgdGhlIHRyYW5zZm9ybWF0aW9uIG1h
dHJpeCBpc24ndCBpbnZlcnRpYmxlKS4KICAgICBib29sIGNvbnZlcnRGcm9tUm9vdFZpZXcoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBnZXRSZXNvdXJjZURhdGEoY29uc3QgdW5zaWduZWQgY2hhciomIC8qIGJ5dGVzICovLCB1bnNp
Z25lZCYgLyogbGVuZ3RoICovKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGdldFJlc291cmNlRGF0
YSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRp
b24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2lt
cGxlUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1Np
bXBsZVBERlBsdWdpbi5oCmluZGV4IDc2YjI4MDQuLjQ3MjgwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaApA
QCAtMTc3LDcgKzE3Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGNvdW50
RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVk
KSBPVkVSUklERSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBib29sIGZpbmRTdHJpbmcoY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBib29sIGdldFJlc291cmNlRGF0YShjb25zdCB1
bnNpZ25lZCBjaGFyKiYgYnl0ZXMsIHVuc2lnbmVkJiBsZW5ndGgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGdldFJlc291cmNl
RGF0YSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRTZWxlY3Rpb25TdHJpbmco
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5tbQppbmRl
eCBmMDcxMmI5Li5kNWVlNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5tbQpAQCAtNjcyLDE2ICs2NzIsMTcg
QEAgdm9pZCBTaW1wbGVQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKQog
ICAgIHBkZkRvY3VtZW50RGlkTG9hZCgpOwogfQogCi1ib29sIFNpbXBsZVBERlBsdWdpbjo6Z2V0
UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiBieXRlcywgdW5zaWduZWQmIGxlbmd0
aCkgY29uc3QKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaW1wbGVQREZQbHVnaW46OmdldFJl
c291cmNlRGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZGF0YSAmJiBtX3BkZkRvY3VtZW50KSB7
Ci0gICAgICAgIGJ5dGVzID0gQ0ZEYXRhR2V0Qnl0ZVB0cihtX2RhdGEuZ2V0KCkpOwotICAgICAg
ICBsZW5ndGggPSBDRkRhdGFHZXRMZW5ndGgobV9kYXRhLmdldCgpKTsKKyAgICBpZiAoIW1fcGRm
RG9jdW1lbnQpCisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogCi0gICAg
ICAgIHJldHVybiBsZW5ndGg7Ci0gICAgfQorICAgIE5TRGF0YSogcGRmRGF0YSA9IFttX3BkZkRv
Y3VtZW50LmdldCgpIGRhdGFSZXByZXNlbnRhdGlvbl07CiAKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFwZGZEYXRhKQorICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEocGRmRGF0YSk7CiB9CiAKIHZv
aWQgU2ltcGxlUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggM2M2OWQwYy4uMDU2M2IxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
b2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0y
NjMsNyArMjY0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEFsd2F5c0F1
dG9TdGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0
UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiBieXRlcywgdW5zaWduZWQmIGxlbmd0
aCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGdldFJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJm
b3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaAppbmRleCBlM2FmYjFkLi40Y2UwYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
Z2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiAvKiBieXRlcyAqLywgdW5zaWdu
ZWQmIC8qIGxlbmd0aCAqLykgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBnZXRSZXNvdXJjZURhdGEo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAog
ICAgIHZpcnR1YWwgU3RyaW5nIGdldFNlbGVjdGlvblN0cmluZygpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIFN0cmluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYWI5NWZhZi4uYTZiOTdlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtOTAzLDEyICs5
MDMsMTIgQEAgYm9vbCBQbHVnaW5WaWV3OjpzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3Mo
KSBjb25zdAogICAgIHJldHVybiBtX3BsdWdpbi0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uRnJvbURy
YWdzKCk7CiB9CiAKLWJvb2wgUGx1Z2luVmlldzo6Z2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2ln
bmVkIGNoYXIqJiBieXRlcywgdW5zaWduZWQmIGxlbmd0aCkgY29uc3QKK1Bhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpnZXRSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlm
ICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3Bs
dWdpbi0+Z2V0UmVzb3VyY2VEYXRhKGJ5dGVzLCBsZW5ndGgpOworICAgIHJldHVybiBtX3BsdWdp
bi0+Z2V0UmVzb3VyY2VEYXRhKCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6cGVyZm9ybURpY3Rp
b25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXgg
MmIxNDIzNC4uZDZmYjk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBz
aG91bGRBbGxvd1NjcmlwdGluZygpOwogCi0gICAgYm9vbCBnZXRSZXNvdXJjZURhdGEoY29uc3Qg
dW5zaWduZWQgY2hhciomIGJ5dGVzLCB1bnNpZ25lZCYgbGVuZ3RoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBnZXRSZXNvdXJjZURhdGEoKSBj
b25zdDsKICAgICBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTY2MWFlYy4uM2Y3MTlhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjE2MSwx
MyArMjE2MSwxMSBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgQ29yZUlQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogCiAgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGRmUmVzb3VyY2U7CiAgICAgaWYgKFdlYkZy
YW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAg
ICAgICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZy
YW1lLT5jb3JlRnJhbWUoKSkpIHsKLSAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5
dGVzOwotICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoOwotCi0gICAgICAgICAgICBpZiAocGx1
Z2luVmlldy0+Z2V0UmVzb3VyY2VEYXRhKGJ5dGVzLCBsZW5ndGgpKQotICAgICAgICAgICAgICAg
IGRhdGFSZWZlcmVuY2UgPSBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKGJ5dGVzLCBsZW5ndGgpOwor
ICAgICAgICAgICAgaWYgKChwZGZSZXNvdXJjZSA9IHBsdWdpblZpZXctPmdldFJlc291cmNlRGF0
YSgpKSkKKyAgICAgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gQ29yZUlQQzo6RGF0YVJlZmVy
ZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwZGZSZXNvdXJjZS0+ZGF0YSgp
KSwgcGRmUmVzb3VyY2UtPnNpemUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGF0YVJl
ZmVyZW5jZS5pc0VtcHR5KCkpIHsK
</data>
<flag name="review"
          id="213641"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="213740"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192568</attachid>
            <date>2013-03-11 14:59:44 -0700</date>
            <delta_ts>2013-03-11 15:17:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pdf-data.diff</filename>
            <type>text/plain</type>
            <size>17624</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwNGM5ZjdhLi43ZjkyZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMTMtMDMtMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBSZXR1cm4gUERGS2l0J3MgZGF0YSBpbnN0ZWFkIG9mIHRoZSBv
cmlnaW5hbCByZXNvdXJjZSBkYXRhIGZvciBzYXZlL2V0Yy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTk1NgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTMzNTIyODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSWYgd2UgcmV0dXJuIHRoZSBvcmlnaW5hbCByZXNvdXJjZSBkYXRhLCB3ZSBsb3NlIGNo
YW5nZXMgbWFkZSB0byBhbm5vdGF0aW9ucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnBkZkRvY3Vt
ZW50RGlkTG9hZCk6IEFkb3B0IHRoZSByZW5hbWVkIHJhd0RhdGEoKS4KKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjpzYXZlVG9QREYpOiBVc2UgbGl2ZURhdGEgc28gdGhhdCAiU2F2ZSB0byBQ
REYiIHBlcnNpc3RzIGNoYW5nZXMgdG8gYW5ub3RhdGlvbnMuCisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbik6IFVzZSBsaXZlRGF0YSBzbyB0aGF0
ICJPcGVuIFdpdGggW25hdGl2ZSBhcHBsaWNhdGlvbl0iIHBlcnNpc3RzIGNoYW5nZXMgdG8gYW5u
b3RhdGlvbnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmNvbW1p
dCk6IEFkZGVkLCBpbmZvcm0gUERGUGx1Z2luIHRoYXQgd2UncmUgbXV0YXRpbmcgdGhlIGRvY3Vt
ZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5u
b3RhdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6
Y29tbWl0KTogTGV0IFBERlBsdWdpbkFubm90YXRpb24gZG8gd2hhdCBpdCBuZWVkcyB0byBpbmZv
cm0gUERGUGx1Z2luIHRoYXQgd2UncmUgZ29pbmcgdG8gbXV0YXRlIHRoZSBkb2N1bWVudC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1t
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y29tbWl0KTogTGV0
IFBERlBsdWdpbkFubm90YXRpb24gZG8gd2hhdCBpdCBuZWVkcyB0byBpbmZvcm0gUERGUGx1Z2lu
IHRoYXQgd2UncmUgZ29pbmcgdG8gbXV0YXRlIHRoZSBkb2N1bWVudC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgIChXZWJLaXQ6
OlNpbXBsZVBERlBsdWdpbjo6ZGlkTXV0YXRlUERGRG9jdW1lbnQpOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6U2ltcGxlUERGUGx1Z2luOjpsaXZlRGF0YSk6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpTaW1wbGVQREZQbHVnaW46OnJhd0RhdGEpOiBSZW5hbWVkIGZyb20gZGF0YSgpLiBSZXR1
cm4gTlNEYXRhIGZvciBjb25zaXN0ZW5jeS4KKyAgICAgICAgKFdlYktpdDo6U2ltcGxlUERGUGx1
Z2luOjpwZGZEb2N1bWVudFdhc011dGF0ZWQpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6U2ltcGxl
UERGUGx1Z2luOjpsaXZlRGF0YSk6IFJldHVybiBQREZLaXQncyBkYXRhIGlmIHRoZSB1c2VyIGhh
cyBtdXRhdGVkIHRoZQorICAgICAgICBkb2N1bWVudCwgb3RoZXJ3aXNlIHRoZSByYXcgZGF0YS4g
VGhpcyB3YXksIFBERnMgdGhhdCBQREZLaXQgY2FuJ3QgcHJvY2VzcyB3aWxsIHN0aWxsCisgICAg
ICAgIGJlIGRvd25sb2FkYWJsZSBhcyBsb25nIGFzIHRoZSB1c2VyIGRvZXNuJ3QgaW50ZXJhY3Qg
d2l0aCBhbm5vdGF0aW9ucy4KKyAgICAgICAgKFdlYktpdDo6U2ltcGxlUERGUGx1Z2luOjpsaXZl
UmVzb3VyY2VEYXRhKTogUmV0dXJuIGEgU2hhcmVkRGF0YSB3cmFwcGluZyB0aGUgUERGRG9jdW1l
bnQncyBkYXRhLgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9T
aW1wbGVQREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZG
cmFtZSk6CisgICAgICAgIFVzZSBhIFNoYXJlZERhdGEgaW5zdGVhZCBvZiByYXcgZGF0YSBmb3Ig
Z2V0UmVzb3VyY2VEYXRhLCBhbmQgcmVuYW1lIGl0IGxpdmVSZXNvdXJjZURhdGEoKS4KKwogMjAx
My0wMy0xMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggYSB0eXBvIGluIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE0NTMzMi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDMxY2JlMWEuLjVkZjA3MTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
SFRUUEhlYWRlck1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTA1MCw2ICsxMDUxLDExIEBAIGJvb2wgTmV0c2NhcGVQ
bHVnaW46OnN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBOZXRzY2FwZVBsdWdpbjo6bGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFBhc3NSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPigpOworfQorCiBJbnRQb2ludCBOZXRzY2FwZVBsdWdpbjo6Y29udmVydFRv
Um9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50SW5QbHVnaW5Db29yZGluYXRlcykgY29uc3QK
IHsKICAgICByZXR1cm4gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLm1hcFBvaW50KHBvaW50
SW5QbHVnaW5Db29yZGluYXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDU3ZDQ4NjYu
LjM4YWY5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC00MSw2ICs0MSw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSFRUUEhlYWRlck1hcDsKICAgICBjbGFzcyBQcm90
ZWN0aW9uU3BhY2U7CisgICAgY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTI0OCw3ICsyNDksNyBAQCBwcml2YXRlOgogICAgIC8vIGNvbnZlcnRlZCAoaWYg
dGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBpc24ndCBpbnZlcnRpYmxlKS4KICAgICBib29sIGNv
bnZlcnRGcm9tUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Sb290Vmll
d0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJblBsdWdpbkNvb3JkaW5hdGVz
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBnZXRSZXNvdXJjZURhdGEoY29uc3QgdW5zaWduZWQgY2hh
ciomIC8qIGJ5dGVzICovLCB1bnNpZ25lZCYgLyogbGVuZ3RoICovKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNjM3ODBhMy4u
MTExYmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFBERlBsdWdpbjo6cGRmRG9j
dW1lbnREaWRMb2FkKCkKIHsKICAgICBhZGRBcmNoaXZlUmVzb3VyY2UoKTsKICAgICAKLSAgICBS
ZXRhaW5QdHI8UERGRG9jdW1lbnQ+IGRvY3VtZW50KEFkb3B0TlMsIFtbcGRmRG9jdW1lbnRDbGFz
cygpIGFsbG9jXSBpbml0V2l0aERhdGE6KE5TRGF0YSAqKWRhdGEoKS5nZXQoKV0pOworICAgIFJl
dGFpblB0cjxQREZEb2N1bWVudD4gZG9jdW1lbnQoQWRvcHROUywgW1twZGZEb2N1bWVudENsYXNz
KCkgYWxsb2NdIGluaXRXaXRoRGF0YTpyYXdEYXRhKCkuZ2V0KCldKTsKIAogICAgIHNldFBERkRv
Y3VtZW50KGRvY3VtZW50KTsKIApAQCAtNzc1LDggKzc3NSw4IEBAIHZvaWQgUERGUGx1Z2luOjpz
YXZlVG9QREYoKQogICAgIGlmICghcGRmRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGNmRGF0YSA9IGRhdGEoKTsKLSAgICB3ZWJG
cmFtZSgpLT5wYWdlKCktPnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihzdWdnZXN0ZWRG
aWxlbmFtZSgpLCB3ZWJGcmFtZSgpLT51cmwoKSwgQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0
KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgUmV0YWluUHRyPE5TRGF0
YT4gZGF0YSA9IGxpdmVEYXRhKCk7CisgICAgd2ViRnJhbWUoKS0+cGFnZSgpLT5zYXZlUERGVG9G
aWxlSW5Eb3dubG9hZHNGb2xkZXIoc3VnZ2VzdGVkRmlsZW5hbWUoKSwgd2ViRnJhbWUoKS0+dXJs
KCksIHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oW2RhdGEuZ2V0KCkgYnl0ZXNd
KSwgW2RhdGEuZ2V0KCkgbGVuZ3RoXSk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpvcGVuV2l0aE5h
dGl2ZUFwcGxpY2F0aW9uKCkKQEAgLTc4NywxMiArNzg3LDEyIEBAIHZvaWQgUERGUGx1Z2luOjpv
cGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKCkKICAgICAgICAgaWYgKCFwZGZEb2N1bWVudCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVm
PiBjZkRhdGEgPSBkYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGEgPSBsaXZl
RGF0YSgpOwogCiAgICAgICAgIG1fdGVtcG9yYXJ5UERGVVVJRCA9IFdlYkNvcmU6OmNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKTsKICAgICAgICAgQVNTRVJUKG1fdGVtcG9yYXJ5UERGVVVJRCk7
CiAKLSAgICAgICAgd2ViRnJhbWUoKS0+cGFnZSgpLT5zYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJB
bmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKHN1Z2dlc3RlZEZpbGVuYW1lKCksIHdlYkZyYW1l
KCktPnVybCgpLCBDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0
aChjZkRhdGEuZ2V0KCkpLCBtX3RlbXBvcmFyeVBERlVVSUQpOworICAgICAgICB3ZWJGcmFtZSgp
LT5wYWdlKCktPnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGlj
YXRpb24oc3VnZ2VzdGVkRmlsZW5hbWUoKSwgd2ViRnJhbWUoKS0+dXJsKCksIHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oW2RhdGEuZ2V0KCkgYnl0ZXNdKSwgW2RhdGEuZ2V0KCkg
bGVuZ3RoXSwgbV90ZW1wb3JhcnlQREZVVUlEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5Bbm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkFubm90YXRpb24uaAppbmRleCBiNTk0YzI1Li44YmQxMTI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24uaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgUERGUGx1Z2luKiBwbHVn
aW4oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUdlb21ldHJ5KCk7Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0KCk7CiAKICAgICB2b2lkIGF0dGFjaChXZWJDb3JlOjpFbGVtZW50Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCA3MzVjODc2Li40MzYxMTM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5Bbm5vdGF0aW9uLm1tCkBAIC04MCw2ICs4MCwxMSBAQCB2b2lkIFBERlBsdWdpbkFubm90YXRp
b246OmF0dGFjaChFbGVtZW50KiBwYXJlbnQpCiAgICAgbV9lbGVtZW50LT5mb2N1cygpOwogfQog
Cit2b2lkIFBERlBsdWdpbkFubm90YXRpb246OmNvbW1pdCgpCit7CisgICAgbV9wbHVnaW4tPmRp
ZE11dGF0ZVBERkRvY3VtZW50KCk7Cit9CisKIFBERlBsdWdpbkFubm90YXRpb246On5QREZQbHVn
aW5Bbm5vdGF0aW9uKCkKIHsKICAgICBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmNoYW5nZUV2ZW50LCBtX2V2ZW50TGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Q2hvaWNlQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQppbmRleCBjMzY3ZWZmLi40YTliYjAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkNob2ljZUFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCkBAIC02Miw2ICs2Miw4IEBAIHZv
aWQgUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6dXBkYXRlR2VvbWV0cnkoKQogdm9pZCBQREZQ
bHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjb21taXQoKQogewogICAgIGNob2ljZUFubm90YXRpb24o
KS5zdHJpbmdWYWx1ZSA9IHN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4oZWxlbWVudCgp
KS0+dmFsdWUoKTsKKworICAgIFBERlBsdWdpbkFubm90YXRpb246OmNvbW1pdCgpOwogfQogCiBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90
YXRpb25FbGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCmluZGV4IGJhM2M3
M2EuLjZmY2FlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQpAQCAtMTI3LDYg
KzEyNyw4IEBAIHZvaWQgUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNvbW1pdCgpCiAgICAgICAg
IHRleHRBbm5vdGF0aW9uLnN0cmluZ1ZhbHVlID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxl
bWVudCo+KGVsZW1lbnQoKSktPnZhbHVlKCk7CiAgICAgZWxzZQogICAgICAgICB0ZXh0QW5ub3Rh
dGlvbi5zdHJpbmdWYWx1ZSA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50
KCkpLT52YWx1ZSgpOworCisgICAgUERGUGx1Z2luQW5ub3RhdGlvbjo6Y29tbWl0KCk7CiB9CiAK
IHZvaWQgUERGUGx1Z2luVGV4dEFubm90YXRpb246OlBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZl
bnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBl
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
U2ltcGxlUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1NpbXBsZVBERlBsdWdpbi5oCmluZGV4IDc2YjI4MDQuLjBiYjI3MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4u
aApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgLy8gSW4tcHJvY2VzcyBQREZWaWV3cyBk
b24ndCBzdXBwb3J0IGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbi4KICAgICB2aXJ0dWFsIGJv
b2wgaXNCZWluZ0FzeW5jaHJvbm91c2x5SW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCisgICAgdm9pZCBkaWRNdXRhdGVQREZEb2N1bWVudCgpIHsgbV9wZGZEb2N1bWVudFdh
c011dGF0ZWQgPSB0cnVlOyB9CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTaW1wbGVQREZQ
bHVnaW4oV2ViRnJhbWUqKTsKIApAQCAtNjksNyArNzEsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSgpIHsgcmV0dXJuIG1fc3VnZ2VzdGVkRmls
ZW5hbWU7IH0KICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJldGFpblB0cjxOU0RhdGE+IGxpdmVEYXRhKCkg
Y29uc3Q7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gcmF3RGF0YSgpIGNvbnN0IHsgcmV0dXJuIChO
U0RhdGEgKiltX2RhdGEuZ2V0KCk7IH0KKworICAgIGJvb2wgcGRmRG9jdW1lbnRXYXNNdXRhdGVk
KCkgY29uc3QgeyByZXR1cm4gbV9wZGZEb2N1bWVudFdhc011dGF0ZWQ7IH0KIAogICAgIC8vIFJl
Z3VsYXIgcGx1Zy1pbnMgZG9uJ3QgbmVlZCBhY2Nlc3MgdG8gdmlldywgYnV0IHdlIGFkZCBzY3Jv
bGxiYXJzIHRvIGVtYmVkZGluZyBGcmFtZVZpZXcgZm9yIHByb3BlciBldmVudCBoYW5kbGluZy4K
ICAgICBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KCk7CkBAIC0xNzcsNyArMTgyLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdW5zaWduZWQgY291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpGaW5kT3B0aW9ucywgdW5zaWduZWQpIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaW5k
T3B0aW9ucywgdW5zaWduZWQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgZ2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiBieXRlcywgdW5z
aWduZWQmIGxlbmd0aCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2
aXJ0dWFsIFN0cmluZyBnZXRTZWxlY3Rpb25TdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBTdHJpbmcoKTsgfQpAQCAtMjEwLDYgKzIxNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViRnJhbWUq
IG1fZnJhbWU7CiAKICAgICBib29sIG1faXNQb3N0U2NyaXB0OworICAgIGJvb2wgbV9wZGZEb2N1
bWVudFdhc011dGF0ZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4u
bW0KaW5kZXggZjA3MTJiOS4uYTNhZTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KQEAgLTE2Niw2ICsx
NjYsNyBAQCBQYXNzUmVmUHRyPFNpbXBsZVBERlBsdWdpbj4gU2ltcGxlUERGUGx1Z2luOjpjcmVh
dGUoV2ViRnJhbWUqIGZyYW1lKQogU2ltcGxlUERGUGx1Z2luOjpTaW1wbGVQREZQbHVnaW4oV2Vi
RnJhbWUqIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1faXNQb3N0U2NyaXB0
KGZhbHNlKQorICAgICwgbV9wZGZEb2N1bWVudFdhc011dGF0ZWQoZmFsc2UpCiB7CiB9CiAKQEAg
LTY3MiwxNiArNjczLDI3IEBAIHZvaWQgU2ltcGxlUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRG
aW5pc2hMb2FkaW5nKCkKICAgICBwZGZEb2N1bWVudERpZExvYWQoKTsKIH0KIAotYm9vbCBTaW1w
bGVQREZQbHVnaW46OmdldFJlc291cmNlRGF0YShjb25zdCB1bnNpZ25lZCBjaGFyKiYgYnl0ZXMs
IHVuc2lnbmVkJiBsZW5ndGgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBTaW1wbGVQREZQbHVn
aW46OmxpdmVEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9kYXRhICYmIG1fcGRmRG9jdW1lbnQp
IHsKLSAgICAgICAgYnl0ZXMgPSBDRkRhdGFHZXRCeXRlUHRyKG1fZGF0YS5nZXQoKSk7Ci0gICAg
ICAgIGxlbmd0aCA9IENGRGF0YUdldExlbmd0aChtX2RhdGEuZ2V0KCkpOworICAgIC8vIFNhdmUg
ZGF0YSBzdHJhaWdodCBmcm9tIHRoZSByZXNvdXJjZSBpbnN0ZWFkIG9mIFBERktpdCBpZiB0aGUg
ZG9jdW1lbnQgaXMKKyAgICAvLyB1bnRvdWNoZWQgYnkgdGhlIHVzZXIsIHNvIHRoYXQgUERGcyB3
aGljaCBQREZLaXQgY2FuJ3QgZGlzcGxheSB3aWxsIHN0aWxsIGJlIGRvd25sb2FkYWJsZS4KKyAg
ICBpZiAocGRmRG9jdW1lbnRXYXNNdXRhdGVkKCkpCisgICAgICAgIHJldHVybiBbbV9wZGZEb2N1
bWVudC5nZXQoKSBkYXRhUmVwcmVzZW50YXRpb25dOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJu
IHJhd0RhdGEoKTsKK30KIAotICAgICAgICByZXR1cm4gbGVuZ3RoOwotICAgIH0KK1Bhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaW1wbGVQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25z
dAoreworICAgIGlmICghbV9wZGZEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gcGRmRGF0YSA9IGxpdmVEYXRhKCk7
CisKKyAgICBpZiAoIXBkZkRhdGEpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShwZGZEYXRhLmdldCgpKTsKIH0KIAogdm9pZCBTaW1wbGVQ
REZQbHVnaW46Om1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCAzYzY5ZDBjLi44ZGI0NTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC01NSw2ICs1NSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIEludFNpemU7
CiAgICAgY2xhc3MgU2Nyb2xsYmFyOworICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0yNjMsNyArMjY0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIHNob3VsZEFsd2F5c0F1dG9TdGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiBi
eXRlcywgdW5zaWduZWQmIGxlbmd0aCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IDY2MzNkODIuLjZiYjBlNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNw
cApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjcxLDYgKzY3MiwxMSBAQCBJbnRQ
b2ludCBQbHVnaW5Qcm94eTo6Y29udmVydFRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50
KSBjb25zdAogICAgIHJldHVybiBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0ubWFwUG9pbnQo
cG9pbnQpOwogfQogCitQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGx1Z2luUHJv
eHk6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBQYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGUzYWZiMWQuLmIxZjBmYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0x
MzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
Y29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBPVkVSUklE
RTsKIAotICAgIHZpcnR1YWwgYm9vbCBnZXRSZXNvdXJjZURhdGEoY29uc3QgdW5zaWduZWQgY2hh
ciomIC8qIGJ5dGVzICovLCB1bnNpZ25lZCYgLyogbGVuZ3RoICovKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcg
Z2V0U2VsZWN0aW9uU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gU3RyaW5nKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCBhYjk1ZmFmLi4zN2RmNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC05MDMsMTIgKzkwMywxMiBAQCBib29sIFBsdWdp
blZpZXc6OnNob3VsZEFsbG93TmF2aWdhdGlvbkZyb21EcmFncygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcGx1Z2luLT5zaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3MoKTsKIH0KIAotYm9vbCBQ
bHVnaW5WaWV3OjpnZXRSZXNvdXJjZURhdGEoY29uc3QgdW5zaWduZWQgY2hhciomIGJ5dGVzLCB1
bnNpZ25lZCYgbGVuZ3RoKSBjb25zdAorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZp
ZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVk
IHx8ICFtX3BsdWdpbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gUGFz
c1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCk7CiAKLSAgICByZXR1cm4gbV9wbHVnaW4t
PmdldFJlc291cmNlRGF0YShieXRlcywgbGVuZ3RoKTsKKyAgICByZXR1cm4gbV9wbHVnaW4tPmxp
dmVSZXNvdXJjZURhdGEoKTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3OjpwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9pbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyYjE0
MjM0Li42YmQyNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3Vs
ZEFsbG93U2NyaXB0aW5nKCk7CiAKLSAgICBib29sIGdldFJlc291cmNlRGF0YShjb25zdCB1bnNp
Z25lZCBjaGFyKiYgYnl0ZXMsIHVuc2lnbmVkJiBsZW5ndGgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAg
Ym9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IGU2NjFhZWMuLjRjNDM5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxNjEsMTMgKzIxNjEsMTEg
QEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YVJlZmVyZW5jZTsKIAogICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHBkZlJlc291cmNlOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBpZiAo
UGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+Y29yZUZy
YW1lKCkpKSB7Ci0gICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBieXRlczsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGxlbmd0aDsKLQotICAgICAgICAgICAgaWYgKHBsdWdpblZpZXctPmdl
dFJlc291cmNlRGF0YShieXRlcywgbGVuZ3RoKSkKLSAgICAgICAgICAgICAgICBkYXRhUmVmZXJl
bmNlID0gQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShieXRlcywgbGVuZ3RoKTsKKyAgICAgICAgICAg
IGlmICgocGRmUmVzb3VyY2UgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCkpKQorICAg
ICAgICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBkZlJlc291cmNlLT5kYXRhKCkpLCBwZGZSZXNv
dXJjZS0+c2l6ZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkYXRhUmVmZXJlbmNlLmlz
RW1wdHkoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192572</attachid>
            <date>2013-03-11 15:17:45 -0700</date>
            <delta_ts>2013-03-11 15:51:52 -0700</delta_ts>
            <desc>appease stylebot</desc>
            <filename>pdf-data.diff</filename>
            <type>text/plain</type>
            <size>17625</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwNGM5ZjdhLi43ZjkyZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMTMtMDMtMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBSZXR1cm4gUERGS2l0J3MgZGF0YSBpbnN0ZWFkIG9mIHRoZSBv
cmlnaW5hbCByZXNvdXJjZSBkYXRhIGZvciBzYXZlL2V0Yy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTk1NgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTMzNTIyODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSWYgd2UgcmV0dXJuIHRoZSBvcmlnaW5hbCByZXNvdXJjZSBkYXRhLCB3ZSBsb3NlIGNo
YW5nZXMgbWFkZSB0byBhbm5vdGF0aW9ucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnBkZkRvY3Vt
ZW50RGlkTG9hZCk6IEFkb3B0IHRoZSByZW5hbWVkIHJhd0RhdGEoKS4KKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjpzYXZlVG9QREYpOiBVc2UgbGl2ZURhdGEgc28gdGhhdCAiU2F2ZSB0byBQ
REYiIHBlcnNpc3RzIGNoYW5nZXMgdG8gYW5ub3RhdGlvbnMuCisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbik6IFVzZSBsaXZlRGF0YSBzbyB0aGF0
ICJPcGVuIFdpdGggW25hdGl2ZSBhcHBsaWNhdGlvbl0iIHBlcnNpc3RzIGNoYW5nZXMgdG8gYW5u
b3RhdGlvbnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmNvbW1p
dCk6IEFkZGVkLCBpbmZvcm0gUERGUGx1Z2luIHRoYXQgd2UncmUgbXV0YXRpbmcgdGhlIGRvY3Vt
ZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5u
b3RhdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6
Y29tbWl0KTogTGV0IFBERlBsdWdpbkFubm90YXRpb24gZG8gd2hhdCBpdCBuZWVkcyB0byBpbmZv
cm0gUERGUGx1Z2luIHRoYXQgd2UncmUgZ29pbmcgdG8gbXV0YXRlIHRoZSBkb2N1bWVudC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1t
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y29tbWl0KTogTGV0
IFBERlBsdWdpbkFubm90YXRpb24gZG8gd2hhdCBpdCBuZWVkcyB0byBpbmZvcm0gUERGUGx1Z2lu
IHRoYXQgd2UncmUgZ29pbmcgdG8gbXV0YXRlIHRoZSBkb2N1bWVudC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgIChXZWJLaXQ6
OlNpbXBsZVBERlBsdWdpbjo6ZGlkTXV0YXRlUERGRG9jdW1lbnQpOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6U2ltcGxlUERGUGx1Z2luOjpsaXZlRGF0YSk6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpTaW1wbGVQREZQbHVnaW46OnJhd0RhdGEpOiBSZW5hbWVkIGZyb20gZGF0YSgpLiBSZXR1
cm4gTlNEYXRhIGZvciBjb25zaXN0ZW5jeS4KKyAgICAgICAgKFdlYktpdDo6U2ltcGxlUERGUGx1
Z2luOjpwZGZEb2N1bWVudFdhc011dGF0ZWQpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6U2ltcGxl
UERGUGx1Z2luOjpsaXZlRGF0YSk6IFJldHVybiBQREZLaXQncyBkYXRhIGlmIHRoZSB1c2VyIGhh
cyBtdXRhdGVkIHRoZQorICAgICAgICBkb2N1bWVudCwgb3RoZXJ3aXNlIHRoZSByYXcgZGF0YS4g
VGhpcyB3YXksIFBERnMgdGhhdCBQREZLaXQgY2FuJ3QgcHJvY2VzcyB3aWxsIHN0aWxsCisgICAg
ICAgIGJlIGRvd25sb2FkYWJsZSBhcyBsb25nIGFzIHRoZSB1c2VyIGRvZXNuJ3QgaW50ZXJhY3Qg
d2l0aCBhbm5vdGF0aW9ucy4KKyAgICAgICAgKFdlYktpdDo6U2ltcGxlUERGUGx1Z2luOjpsaXZl
UmVzb3VyY2VEYXRhKTogUmV0dXJuIGEgU2hhcmVkRGF0YSB3cmFwcGluZyB0aGUgUERGRG9jdW1l
bnQncyBkYXRhLgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYv
U2ltcGxlUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUpOgorICAgICAgICBVc2UgYSBTaGFyZWREYXRhIGluc3RlYWQgb2YgcmF3IGRhdGEgZm9y
IGdldFJlc291cmNlRGF0YSwgYW5kIHJlbmFtZSBpdCBsaXZlUmVzb3VyY2VEYXRhKCkuCisKIDIw
MTMtMDMtMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IGEgdHlwbyBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNDUzMzIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCAzMWNiZTFhLi41ZGYwNzE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0hUVFBIZWFkZXJNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTEwNTAsNiArMTA1MSwxMSBAQCBib29sIE5ldHNjYXBl
UGx1Z2luOjpzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gTmV0c2NhcGVQbHVnaW46Omxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBQYXNzUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4oKTsKK30KKwogSW50UG9pbnQgTmV0c2NhcGVQbHVnaW46OmNvbnZlcnRU
b1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5tYXBQb2ludChwb2lu
dEluUGx1Z2luQ29vcmRpbmF0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCA1N2Q0ODY2
Li4zOGFmOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtNDEsNiArNDEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7CiAgICAgY2xhc3MgUHJv
dGVjdGlvblNwYWNlOworICAgIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0yNDgsNyArMjQ5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBjb252ZXJ0ZWQgKGlm
IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXNuJ3QgaW52ZXJ0aWJsZSkuCiAgICAgYm9vbCBj
b252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludEluUm9vdFZp
ZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5QbHVnaW5Db29yZGluYXRl
cyk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNo
YXIqJiAvKiBieXRlcyAqLywgdW5zaWduZWQmIC8qIGxlbmd0aCAqLykgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDYzNzgwYTMu
LjExMWJkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBQREZQbHVnaW46OnBkZkRv
Y3VtZW50RGlkTG9hZCgpCiB7CiAgICAgYWRkQXJjaGl2ZVJlc291cmNlKCk7CiAgICAgCi0gICAg
UmV0YWluUHRyPFBERkRvY3VtZW50PiBkb2N1bWVudChBZG9wdE5TLCBbW3BkZkRvY3VtZW50Q2xh
c3MoKSBhbGxvY10gaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhKCkuZ2V0KCldKTsKKyAgICBS
ZXRhaW5QdHI8UERGRG9jdW1lbnQ+IGRvY3VtZW50KEFkb3B0TlMsIFtbcGRmRG9jdW1lbnRDbGFz
cygpIGFsbG9jXSBpbml0V2l0aERhdGE6cmF3RGF0YSgpLmdldCgpXSk7CiAKICAgICBzZXRQREZE
b2N1bWVudChkb2N1bWVudCk7CiAKQEAgLTc3NSw4ICs3NzUsOCBAQCB2b2lkIFBERlBsdWdpbjo6
c2F2ZVRvUERGKCkKICAgICBpZiAoIXBkZkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBjZkRhdGEgPSBkYXRhKCk7Ci0gICAgd2Vi
RnJhbWUoKS0+cGFnZSgpLT5zYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoc3VnZ2VzdGVk
RmlsZW5hbWUoKSwgd2ViRnJhbWUoKS0+dXJsKCksIENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdl
dCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIFJldGFpblB0cjxOU0Rh
dGE+IGRhdGEgPSBsaXZlRGF0YSgpOworICAgIHdlYkZyYW1lKCktPnBhZ2UoKS0+c2F2ZVBERlRv
RmlsZUluRG93bmxvYWRzRm9sZGVyKHN1Z2dlc3RlZEZpbGVuYW1lKCksIHdlYkZyYW1lKCktPnVy
bCgpLCBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtkYXRhLmdldCgpIGJ5dGVz
XSksIFtkYXRhLmdldCgpIGxlbmd0aF0pOwogfQogCiB2b2lkIFBERlBsdWdpbjo6b3BlbldpdGhO
YXRpdmVBcHBsaWNhdGlvbigpCkBAIC03ODcsMTIgKzc4NywxMiBAQCB2b2lkIFBERlBsdWdpbjo6
b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbigpCiAgICAgICAgIGlmICghcGRmRG9jdW1lbnQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJl
Zj4gY2ZEYXRhID0gZGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhID0gbGl2
ZURhdGEoKTsKIAogICAgICAgICBtX3RlbXBvcmFyeVBERlVVSUQgPSBXZWJDb3JlOjpjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCk7CiAgICAgICAgIEFTU0VSVChtX3RlbXBvcmFyeVBERlVVSUQp
OwogCi0gICAgICAgIHdlYkZyYW1lKCktPnBhZ2UoKS0+c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVy
QW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihzdWdnZXN0ZWRGaWxlbmFtZSgpLCB3ZWJGcmFt
ZSgpLT51cmwoKSwgQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgoY2ZEYXRhLmdldCgpKSwgbV90ZW1wb3JhcnlQREZVVUlEKTsKKyAgICAgICAgd2ViRnJhbWUo
KS0+cGFnZSgpLT5zYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxp
Y2F0aW9uKHN1Z2dlc3RlZEZpbGVuYW1lKCksIHdlYkZyYW1lKCktPnVybCgpLCBzdGF0aWNfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtkYXRhLmdldCgpIGJ5dGVzXSksIFtkYXRhLmdldCgp
IGxlbmd0aF0sIG1fdGVtcG9yYXJ5UERGVVVJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5Bbm5vdGF0aW9uLmgKaW5kZXggYjU5NGMyNS4uOGJkMTEyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5B
bm5vdGF0aW9uLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIFBERlBsdWdpbiogcGx1
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW47IH0KIAogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVHZW9tZXRyeSgpOwotICAgIHZpcnR1YWwgdm9pZCBjb21taXQoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNvbW1pdCgpOwogCiAgICAgdm9pZCBhdHRhY2goV2ViQ29yZTo6RWxlbWVudCopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbkFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbkFubm90YXRpb24ubW0KaW5kZXggNzM1Yzg3Ni4uNDM2MTEzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5tbQpAQCAtODAsNiArODAsMTEgQEAgdm9pZCBQREZQbHVnaW5Bbm5vdGF0
aW9uOjphdHRhY2goRWxlbWVudCogcGFyZW50KQogICAgIG1fZWxlbWVudC0+Zm9jdXMoKTsKIH0K
IAordm9pZCBQREZQbHVnaW5Bbm5vdGF0aW9uOjpjb21taXQoKQoreworICAgIG1fcGx1Z2luLT5k
aWRNdXRhdGVQREZEb2N1bWVudCgpOworfQorCiBQREZQbHVnaW5Bbm5vdGF0aW9uOjp+UERGUGx1
Z2luQW5ub3RhdGlvbigpCiB7CiAgICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVudExpc3RlbmVyLmdldCgpLCBmYWxzZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkNob2ljZUFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KaW5kZXggYzM2N2VmZi4uNGE5YmIwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5DaG9pY2VBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQpAQCAtNjIsNiArNjIsOCBAQCB2
b2lkIFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OnVwZGF0ZUdlb21ldHJ5KCkKIHZvaWQgUERG
UGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y29tbWl0KCkKIHsKICAgICBjaG9pY2VBbm5vdGF0aW9u
KCkuc3RyaW5nVmFsdWUgPSBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGVsZW1lbnQo
KSktPnZhbHVlKCk7CisKKyAgICBQREZQbHVnaW5Bbm5vdGF0aW9uOjpjb21taXQoKTsKIH0KIAog
UGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5v
dGF0aW9uRWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCBiYTNj
NzNhLi42ZmNhZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTEyNyw2
ICsxMjcsOCBAQCB2b2lkIFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjb21taXQoKQogICAgICAg
ICB0ZXh0QW5ub3RhdGlvbi5zdHJpbmdWYWx1ZSA9IHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVs
ZW1lbnQqPihlbGVtZW50KCkpLT52YWx1ZSgpOwogICAgIGVsc2UKICAgICAgICAgdGV4dEFubm90
YXRpb24uc3RyaW5nVmFsdWUgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVu
dCgpKS0+dmFsdWUoKTsKKworICAgIFBERlBsdWdpbkFubm90YXRpb246OmNvbW1pdCgpOwogfQog
CiB2b2lkIFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2
ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCog
ZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1NpbXBsZVBERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9TaW1wbGVQREZQbHVnaW4uaAppbmRleCA3NmIyODA0Li4wYmIyNzA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2lu
LmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogICAgIC8vIEluLXByb2Nlc3MgUERGVmlld3Mg
ZG9uJ3Qgc3VwcG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24uCiAgICAgdmlydHVhbCBi
b29sIGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAorICAgIHZvaWQgZGlkTXV0YXRlUERGRG9jdW1lbnQoKSB7IG1fcGRmRG9jdW1lbnRX
YXNNdXRhdGVkID0gdHJ1ZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2ltcGxlUERG
UGx1Z2luKFdlYkZyYW1lKik7CiAKQEAgLTY5LDcgKzcxLDEwIEBAIHByb3RlY3RlZDoKIAogICAg
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUoKSB7IHJldHVybiBtX3N1Z2dlc3RlZEZp
bGVuYW1lOyB9CiAgICAgCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBsaXZlRGF0YSgp
IGNvbnN0OworICAgIFJldGFpblB0cjxOU0RhdGE+IHJhd0RhdGEoKSBjb25zdCB7IHJldHVybiAo
TlNEYXRhICopbV9kYXRhLmdldCgpOyB9CisKKyAgICBib29sIHBkZkRvY3VtZW50V2FzTXV0YXRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGRmRG9jdW1lbnRXYXNNdXRhdGVkOyB9CiAKICAgICAvLyBS
ZWd1bGFyIHBsdWctaW5zIGRvbid0IG5lZWQgYWNjZXNzIHRvIHZpZXcsIGJ1dCB3ZSBhZGQgc2Ny
b2xsYmFycyB0byBlbWJlZGRpbmcgRnJhbWVWaWV3IGZvciBwcm9wZXIgZXZlbnQgaGFuZGxpbmcu
CiAgICAgUGx1Z2luVmlldyogcGx1Z2luVmlldygpOwpAQCAtMTc3LDcgKzE4Miw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5n
JiwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkKSBPVkVSUklERSB7IHJldHVybiAwOyB9
CiAgICAgdmlydHVhbCBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6Rmlu
ZE9wdGlvbnMsIHVuc2lnbmVkKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmly
dHVhbCBib29sIGdldFJlc291cmNlRGF0YShjb25zdCB1bnNpZ25lZCBjaGFyKiYgYnl0ZXMsIHVu
c2lnbmVkJiBsZW5ndGgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
dmlydHVhbCBTdHJpbmcgZ2V0U2VsZWN0aW9uU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gU3RyaW5nKCk7IH0KQEAgLTIxMCw2ICsyMTUsNyBAQCBwcml2YXRlOgogICAgIFdlYkZyYW1l
KiBtX2ZyYW1lOwogCiAgICAgYm9vbCBtX2lzUG9zdFNjcmlwdDsKKyAgICBib29sIG1fcGRmRG9j
dW1lbnRXYXNNdXRhdGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2lu
Lm1tCmluZGV4IGYwNzEyYjkuLmEzYWU3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tCkBAIC0xNjYsNiAr
MTY2LDcgQEAgUGFzc1JlZlB0cjxTaW1wbGVQREZQbHVnaW4+IFNpbXBsZVBERlBsdWdpbjo6Y3Jl
YXRlKFdlYkZyYW1lKiBmcmFtZSkKIFNpbXBsZVBERlBsdWdpbjo6U2ltcGxlUERGUGx1Z2luKFdl
YkZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2lzUG9zdFNjcmlw
dChmYWxzZSkKKyAgICAsIG1fcGRmRG9jdW1lbnRXYXNNdXRhdGVkKGZhbHNlKQogewogfQogCkBA
IC02NzIsMTYgKzY3MywyNyBAQCB2b2lkIFNpbXBsZVBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlk
RmluaXNoTG9hZGluZygpCiAgICAgcGRmRG9jdW1lbnREaWRMb2FkKCk7CiB9CiAKLWJvb2wgU2lt
cGxlUERGUGx1Z2luOjpnZXRSZXNvdXJjZURhdGEoY29uc3QgdW5zaWduZWQgY2hhciomIGJ5dGVz
LCB1bnNpZ25lZCYgbGVuZ3RoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gU2ltcGxlUERGUGx1
Z2luOjpsaXZlRGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZGF0YSAmJiBtX3BkZkRvY3VtZW50
KSB7Ci0gICAgICAgIGJ5dGVzID0gQ0ZEYXRhR2V0Qnl0ZVB0cihtX2RhdGEuZ2V0KCkpOwotICAg
ICAgICBsZW5ndGggPSBDRkRhdGFHZXRMZW5ndGgobV9kYXRhLmdldCgpKTsKKyAgICAvLyBTYXZl
IGRhdGEgc3RyYWlnaHQgZnJvbSB0aGUgcmVzb3VyY2UgaW5zdGVhZCBvZiBQREZLaXQgaWYgdGhl
IGRvY3VtZW50IGlzCisgICAgLy8gdW50b3VjaGVkIGJ5IHRoZSB1c2VyLCBzbyB0aGF0IFBERnMg
d2hpY2ggUERGS2l0IGNhbid0IGRpc3BsYXkgd2lsbCBzdGlsbCBiZSBkb3dubG9hZGFibGUuCisg
ICAgaWYgKHBkZkRvY3VtZW50V2FzTXV0YXRlZCgpKQorICAgICAgICByZXR1cm4gW21fcGRmRG9j
dW1lbnQuZ2V0KCkgZGF0YVJlcHJlc2VudGF0aW9uXTsKKyAgICBlbHNlCisgICAgICAgIHJldHVy
biByYXdEYXRhKCk7Cit9CiAKLSAgICAgICAgcmV0dXJuIGxlbmd0aDsKLSAgICB9CitQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2ltcGxlUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fcGRmRG9jdW1lbnQpCisgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIGZhbHNlOworICAgIFJldGFpblB0cjxOU0RhdGE+IHBkZkRhdGEgPSBsaXZlRGF0YSgp
OworCisgICAgaWYgKCFwZGZEYXRhKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OndyYXBOU0RhdGEocGRmRGF0YS5nZXQoKSk7CiB9CiAKIHZvaWQgU2ltcGxl
UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggM2M2OWQwYy4uOGRiNDUyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtNTUsNiArNTUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBJbnRTaXpl
OwogICAgIGNsYXNzIFNjcm9sbGJhcjsKKyAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtMjYzLDcgKzI2NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRBbHdheXNBdXRvU3RhcnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
Ci0gICAgdmlydHVhbCBib29sIGdldFJlc291cmNlRGF0YShjb25zdCB1bnNpZ25lZCBjaGFyKiYg
Ynl0ZXMsIHVuc2lnbmVkJiBsZW5ndGgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCA2NjMzZDgyLi42YmIwZTUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5j
cHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY3MSw2ICs2NzIsMTEgQEAgSW50
UG9pbnQgUGx1Z2luUHJveHk6OmNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2lu
dCkgY29uc3QKICAgICByZXR1cm4gbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLm1hcFBvaW50
KHBvaW50KTsKIH0KIAorUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBsdWdpblBy
b3h5OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCBlM2FmYjFkLi5iMWYwZmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAt
MTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50
IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3QgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNo
YXIqJiAvKiBieXRlcyAqLywgdW5zaWduZWQmIC8qIGxlbmd0aCAqLykgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5n
IGdldFNlbGVjdGlvblN0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFN0cmluZygpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
aW5kZXggYWI5NWZhZi4uMzdkZjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtOTAzLDEyICs5MDMsMTIgQEAgYm9vbCBQbHVn
aW5WaWV3OjpzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3MoKSBjb25zdAogICAgIHJldHVy
biBtX3BsdWdpbi0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uRnJvbURyYWdzKCk7CiB9CiAKLWJvb2wg
UGx1Z2luVmlldzo6Z2V0UmVzb3VyY2VEYXRhKGNvbnN0IHVuc2lnbmVkIGNoYXIqJiBieXRlcywg
dW5zaWduZWQmIGxlbmd0aCkgY29uc3QKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5W
aWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXpl
ZCB8fCAhbV9wbHVnaW4pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpOwogCi0gICAgcmV0dXJuIG1fcGx1Z2lu
LT5nZXRSZXNvdXJjZURhdGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgcmV0dXJuIG1fcGx1Z2luLT5s
aXZlUmVzb3VyY2VEYXRhKCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6cGVyZm9ybURpY3Rpb25h
cnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMmIx
NDIzNC4uNmJkMjY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91
bGRBbGxvd1NjcmlwdGluZygpOwogCi0gICAgYm9vbCBnZXRSZXNvdXJjZURhdGEoY29uc3QgdW5z
aWduZWQgY2hhciomIGJ5dGVzLCB1bnNpZ25lZCYgbGVuZ3RoKSBjb25zdDsKKyAgICBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OwogICAg
IGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCBlNjYxYWVjLi40YzQzOTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTYxLDEzICsyMTYxLDEx
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2U7CiAKICAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlcjsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBwZGZSZXNvdXJjZTsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1l
ID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgaWYg
KFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVG
cmFtZSgpKSkgewotICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYnl0ZXM7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBsZW5ndGg7Ci0KLSAgICAgICAgICAgIGlmIChwbHVnaW5WaWV3LT5n
ZXRSZXNvdXJjZURhdGEoYnl0ZXMsIGxlbmd0aCkpCi0gICAgICAgICAgICAgICAgZGF0YVJlZmVy
ZW5jZSA9IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgICAg
ICBpZiAoKHBkZlJlc291cmNlID0gcGx1Z2luVmlldy0+bGl2ZVJlc291cmNlRGF0YSgpKSkKKyAg
ICAgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwZGZSZXNvdXJjZS0+ZGF0YSgpKSwgcGRmUmVz
b3VyY2UtPnNpemUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGF0YVJlZmVyZW5jZS5p
c0VtcHR5KCkpIHsK
</data>
<flag name="review"
          id="213844"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>