<?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>39323</bug_id>
          
          <creation_ts>2010-05-18 14:52:46 -0700</creation_ts>
          <short_desc>Repro crash with many Google image search results</short_desc>
          <delta_ts>2010-05-18 16:55:37 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>227510</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-18 14:52:46 -0700</bug_when>
    <thetext>Repro crash with many Google image search results

Steps to reproduce:
1. Click the following G.I.S. link:

http://www.google.com/imgres?imgurl=http://www.jetsetreport.com/admin2/photos/1_2.jpg&amp;imgrefurl=http://www.jetsetreport.com/nightlife.php%3FarticleId%3D273&amp;h=400&amp;w=400&amp;sz=142&amp;tbnid=ktJvcGmr5X9wdM:&amp;tbnh=124&amp;tbnw=124&amp;prev=/images%3Fq%3Dpacha%2Bmarrakech&amp;usg=__10-y4cSC3cRK05lXmqXoBIrT8lo=&amp;ei=ksLyS7mNB4vysQPtzoyYDA&amp;sa=X&amp;oi=image_result&amp;resnum=8&amp;ct=image&amp;ved=0CDAQ9QEwBw

2. Crash!

&gt;  1 com.apple.WebKit               0x7fffa6e2ce53 WebFrameLoaderClient::redirectDataToPlugin(WebCore::Widget*) + 0x37
   2 com.apple.WebCore              0x7fffacf3d46b WebCore::PluginTokenizer::writeRawData(char const*, int) + 0x7b
   3 com.apple.WebCore              0x7fffacbee2a2 WebCore::FrameLoader::write(char const*, int, bool) + 0x11c
   4 com.apple.WebCore              0x7fffacc266b1 WebCore::FrameLoader::addData(char const*, int) + 0xb
   5 com.apple.WebKit               0x7fffa6de59d7 -[WebFrame(WebInternal) _addData:] + 0xa7
   6 com.apple.WebKit               0x7fffa6de5000 -[WebFrame(WebInternal) _receivedData:textEncodingName:] + 0x100
   7 com.apple.WebKit               0x7fffa6de4d41 -[WebHTMLRepresentation receivedData:withDataSource:] + 0x91
   8 com.apple.WebKit               0x7fffa6de4c10 -[WebDataSource(WebInternal) _receivedData:] + 0x50
   9 com.apple.WebKit               0x7fffa6de4b97 WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader*, char const*, int) + 0x69
  10 com.apple.WebCore              0x7fffacc1ee60 WebCore::FrameLoader::committedLoad(WebCore::DocumentLoader*, char const*, int) + 0x44
  11 com.apple.WebCore              0x7fffacc1ca30 WebCore::DocumentLoader::receivedData(char const*, int) + 0x90
  12 com.apple.WebCore              0x7fffacc1c999 WebCore::FrameLoader::receivedData(char const*, int) + 0x25
  13 com.apple.WebCore              0x7fffacc1c879 WebCore::MainResourceLoader::addData(char const*, int, bool) + 0x37
  14 com.apple.WebCore              0x7fffacc1c7d6 WebCore::ResourceLoader::didReceiveData(char const*, int, long long, bool) + 0x38
  15 com.apple.WebCore              0x7fffacc1c740 WebCore::MainResourceLoader::didReceiveData(char const*, int, long long, bool) + 0x262
  16 com.apple.WebCore              0x7fffacc1c4db WebCore::ResourceLoader::didReceiveData(WebCore::ResourceHandle*, char const*, int, int) + 0x1b
  17 com.apple.WebCore              0x7fffacc1c4b1 -[WebCoreResourceHandleAsDelegate connection:didReceiveData:lengthReceived:] + 0x91
...

The Widget is null.  The PluginDocument has an embed element, that has a RenderWidget, but it didn&apos;t actually create a widget.

The reason why is due to sandboxing, which g.i.s. uses when iframing the source page for an image result.

In FrameLoader::requestObject():
...
    bool useFallback;
    if (shouldUsePlugin(completedURL, mimeType, renderer-&gt;hasFallbackContent(), useFallback)) {
        Settings* settings = m_frame-&gt;settings();
        if ((!allowPlugins(AboutToInstantiatePlugin)
             // Application plugins are plugins implemented by the user agent, for example Qt plugins,
             // as opposed to third-party code such as flash. The user agent decides whether or not they are
             // permitted, rather than WebKit.
             &amp;&amp; !MIMETypeRegistry::isApplicationPluginMIMEType(mimeType))
            || (!settings-&gt;isJavaEnabled() &amp;&amp; MIMETypeRegistry::isJavaAppletMIMEType(mimeType)))
            return false;
        if (isDocumentSandboxed(m_frame, SandboxPlugins))
            return false;
...

Later, the plugin data is being fed to this nonexistent Widget.

In radar as &lt;rdar://problem/7685669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227511</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-18 14:54:56 -0700</bug_when>
    <thetext>This will only happen on sites that use an &lt;iframe&gt; but set the src to a plugin.

&lt;iframe src=&quot;foo.swf&quot;&gt;, for example.

I have a patch coming up that will replace the plugin document with a sink document that just throws the data away and renders nothing.

In a future world, we should detect the case of &quot;would we use a plugin document for this?&quot; earlier and cut off the load, and do so as early as possible after we know the mime type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227542</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-18 16:28:25 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=39330 to followup and make this more perfect later (patch is coming up shortly)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227546</commentid>
    <comment_count>3</comment_count>
      <attachid>56422</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-18 16:36:38 -0700</bug_when>
    <thetext>Created attachment 56422
Proposed fix + test

Replace any PluginDocuments that violate sandboxing with a new document/tokenizer that acts as a data sink, just ignoring the resource data.

This prevents the crash and prevents the plugin binaries from loading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227553</commentid>
    <comment_count>4</comment_count>
      <attachid>56422</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-05-18 16:51:51 -0700</bug_when>
    <thetext>Comment on attachment 56422
Proposed fix + test

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227554</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-18 16:55:37 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/59719</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56422</attachid>
            <date>2010-05-18 16:36:38 -0700</date>
            <delta_ts>2010-05-18 16:51:51 -0700</delta_ts>
            <desc>Proposed fix + test</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17541</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1OTcxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMTAtMDUtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
cHJvIGNyYXNoIHdpdGggbWFueSBHb29nbGUgaW1hZ2Ugc2VhcmNoIHJlc3VsdHMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc2ODU2Njk+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzkzMjMKKworICAgICAgICBXaGVuIGFuIGlmcmFtZSBoYXMgYSBwbHVnaW4g
cmVzb3VyY2UgYXMgaXRzIHNyYywgdGhhdCBjYXNlIGJ5cGFzc2VkIHRoZSBwbHVnaW4gc2FuZGJv
eGluZyBjaGVja3MgYW5kIGNvbnRpbnVlZCB0byBsb2FkCisgICAgICAgIHRoZSBkYXRhIGZvciB0
aGUgcGx1Z2luIHJlc291cmNlLiBJdCBoYW5kZWQgdGhhdCBkYXRhIG9mZiB0byBhIG5vbmV4aXN0
ZW50IFdpZGdldCwgY2F1c2luZyBhIG51bGwgZGVyZWYgYW5kIHRoZSBjcmFzaC4KKworICAgICAg
ICBCeSByZXBsYWNpbmcgUGx1Z2luRG9jdW1lbnRzIGluIHNhbmRib3hlcyBpZnJhbWVzIHdpdGgg
YSBuZXcgIlNpbmtEb2N1bWVudCIgdGhhdCBqdXN0IGFjdHMgYXMgYSBkYXRhIHNpbmssIHdlIHBy
ZXZlbnQgdGhlCisgICAgICAgIGNyYXNoIGFuZCBhbHNvIHByZXZlbnQgYWN0dWFsbHkgbG9hZGlu
ZyB0aGUgcGx1Z2luIGJpbmFyaWVzLgorCisgICAgICAgIEkgZmlsZWQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MzMwIHRvIGZvbGxvdyB1cCBhbmQgbGV0IHVzIGNh
bmNlbCB0aGUgbG9hZCBhcyBzb29uIGFzIHdlIGtub3cgd2Ugc2hvdWxkLgorCisgICAgICAgIFRl
c3Q6IGZhc3QvbG9hZGVyL3NhbmRib3hlZC1wbHVnaW4tY3Jhc2guaHRtbAorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YmVnaW4pOiBJZiB0aGUgY3JlYXRlZCBkb2N1bWVu
dCBpcyBhIFBsdWdpbkRvY3VtZW50IGFuZCB0aGUgcGx1Z2luIHNhbmRib3ggZmxhZyBpcyBzZXQs
CisgICAgICAgICAgcmVwbGFjZSBpdCB3aXRoIGEgU2lua0RvY3VtZW50LgorCisgICAgICAgICog
bG9hZGVyL1BsdWdpbkRvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVu
dDo6aXNQbHVnaW5Eb2N1bWVudCk6IE1ha2UgcHVibGljIChpdCB3YXMgYWxyZWFkeSBwdWJsaWMg
YXQgdGhlIERvY3VtZW50LmggbGV2ZWwpLgorCisgICAgICAgIEFkZCBhIHNpbXBsZSBkb2N1bWVu
dC90b2tlbml6ZXIgcGFpciB0aGF0IHNpbXBseSBwcmVzZW50cyBhIGJsYW5rIEhUTUwgZG9jdW1l
bnQgYW5kIGFjdHMgYXMgYSBkYXRhIHNpbmsgZm9yIHdoYXRldmVyCisgICAgICAgIGRhdGEgaXMg
aGFuZGVkIHRvIGl0OgorICAgICAgICAqIGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNpbmtUb2tlbml6ZXI6OlNpbmtUb2tlbml6ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2lua1Rva2VuaXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2lu
a1Rva2VuaXplcjo6aXNXYWl0aW5nRm9yU2NyaXB0cyk6CisgICAgICAgIChXZWJDb3JlOjpTaW5r
VG9rZW5pemVyOjp3YW50c1Jhd0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2lua1Rva2VuaXpl
cjo6d3JpdGVSYXdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmtUb2tlbml6ZXI6OnN0b3BQ
YXJzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmtUb2tlbml6ZXI6OmZpbmlzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTaW5rRG9jdW1lbnQ6OmNyZWF0ZVRva2VuaXplcik6CisgICAgICAgICogbG9hZGVyL1Np
bmtEb2N1bWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbmtEb2N1bWVudDo6Y3Jl
YXRlKToKKwogMjAxMC0wNS0xOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNTk3
MTgpCisrKyBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDI3LDYg
KzEwMjcsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgbG9hZGVyL1JlcXVlc3QuY3BwCiAg
ICAgbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAogICAgIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKKyAgICBsb2FkZXIvU2lua0RvY3VtZW50LmNwcAogICAgIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKICAgICBsb2FkZXIvVGV4dERvY3VtZW50LmNwcAogICAgIGxvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA1OTcxOCkKKysrIFdl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEzOTEsNiArMTM5MSw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBc
CiAJV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIFwKIAlXZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIFwKKyAgICBXZWJDb3JlL2xvYWRlci9TaW5rRG9j
dW1lbnQuY3BwIFwKKyAgICBXZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaCBcCiAJV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIFwKIAlXZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oIFwKIAlXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5o
IFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5neXBpCShyZXZpc2lvbiA1OTcxOCkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODA5LDYgKzE4MDksOCBAQAogICAgICAgICAgICAgJ2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
Y3BwJywKICAgICAgICAgICAgICdsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaCcsCisgICAg
ICAgICAgICAnbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAnLAorICAgICAgICAgICAgJ2xvYWRlci9T
aW5rRG9jdW1lbnQuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cCcsCiAgICAgICAgICAgICAnbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgnLAogICAgICAgICAg
ICAgJ2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oJywKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNTk3
MTgpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC03NTAsNiArNzUw
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgbG9hZGVyL1JlcXVlc3QuY3BwIFwKICAgICBsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwIFwKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3Bw
IFwKKyAgICBsb2FkZXIvU2lua0RvY3VtZW50LmNwcCBcCiAgICAgbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcCBcCiAgICAgbG9hZGVyL1RleHREb2N1bWVudC5jcHAgXAogICAgIGxvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHJldmlzaW9uIDU5NzE4KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjE5NjUsNiArMjE5NjUsMTQgQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXFNp
bmtEb2N1bWVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxsb2FkZXJcU2lua0RvY3VtZW50LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1OTcxOCkKKysrIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ4LDYgKzEw
NDgsOCBAQAogCQk1MTJERDhGQjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkREOEYx
MEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2UuY3BwICovOyB9OwogCQk1MTJERDhG
QzBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJERDhGMjBEOTFFNkFGMDAwRjg5RUUgLyog
QXJjaGl2ZVJlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTEyREQ4RkQwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJERDhGMzBE
OTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZUZhY3RvcnkuaCAqLzsgfTsKKwkJNTEzMjdENjAxMUEz
M0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzMjdENUUxMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1
bWVudC5oICovOyB9OworCQk1MTMyN0Q2MTExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzI3
RDVGMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwICovOyB9OwogCQk1MTNGMTQ1
MzBBQjYzNEM0MDAwOTREREYgLyogSWNvbkxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNGMTQ1MTBBQjYzNEM0MDAwOTREREYgLyogSWNv
bkxvYWRlci5jcHAgKi87IH07CiAJCTUxM0YxNDU0MEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9h
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNG
MTQ1MjBBQjYzNEM0MDAwOTREREYgLyogSWNvbkxvYWRlci5oICovOyB9OwogCQk1MTQxODVFRTBD
RDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDE4NUVDMENENjVGMDQwMDc2M0M5OSAv
KiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oICovOyB9OwpAQCAtNjYzNiw2ICs2NjM4LDggQEAKIAkJ
NTEyREQ4RjEwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcmNoaXZlUmVzb3VyY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTJERDhGMjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2
ZVJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyY2hpdmVSZXNv
dXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTJERDhGMzBEOTFFNkFGMDAw
Rjg5RUUgLyogQXJjaGl2ZUZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXJjaGl2ZUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEzMjdE
NUUxMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaW5rRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTEzMjdENUYxMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW5rRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTNGMTQ1MTBBQjYzNEM0MDAwOTREREYgLyogSWNvbkxvYWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWNvbkxvYWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0YxNDUyMEFCNjM0QzQwMDA5NERE
RiAvKiBJY29uTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJY29u
TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDE4NUVDMENENjVGMDQw
MDc2M0M5OSAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTU2MjAsNiArMTU2MjQsOCBAQAogCQkJCTY1NkQzNzI3MEFEQkE1REUwMEE0NTU0
RCAvKiBSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCTk3M0UzMjU0MTA4ODNCN0MwMDVCQzQ5MyAv
KiBSZXNvdXJjZUxvYWROb3RpZmllci5jcHAgKi8sCiAJCQkJOTczRTMyNTUxMDg4M0I3QzAwNUJD
NDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi8sCisJCQkJNTEzMjdENUYxMUEzM0EyQjAw
NEY5RDY1IC8qIFNpbmtEb2N1bWVudC5jcHAgKi8sCisJCQkJNTEzMjdENUUxMUEzM0EyQjAwNEY5
RDY1IC8qIFNpbmtEb2N1bWVudC5oICovLAogCQkJCTkzRTIyN0RGMEFGNTg5QUQwMEQ0ODMyNCAv
KiBTdWJyZXNvdXJjZUxvYWRlci5jcHAgKi8sCiAJCQkJNjU2RDM3MzAwQURCQTVERTAwQTQ1NTRE
IC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJMUEzMTc4OTIwQjIwQTgxNjAwMzE2OTg3
IC8qIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmggKi8sCkBAIC0xOTI3MCw2ICsxOTI3Niw3IEBA
CiAJCQkJOTdFOEIzNTcxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3RThCM0MzMTFBMjg5MDgwMDE2OTQwOSAvKiBIVE1MNVRva2VuLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODcxMDM4QjExQTI5NDcwMDBEQkQ1MEUgLyogSFRNTDVUb2tlbml6ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxMzI3RDYwMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9j
dW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE1NTMsNiArMjE1NjAsNyBAQAogCQkJCUJDRjM0
QTM3MTFBMjMxQ0QwMEM3MTgwNCAvKiBOYW1lZE5vZGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTdFOEIzNTYxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTg3MTAzOEExMUEyOTQ3MDAwREJENTBFIC8qIEhUTUw1VG9rZW5pemVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxMzI3RDYxMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCShy
ZXZpc2lvbiA1OTcxOCkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNp
bmNsdWRlICJTaW5rRG9jdW1lbnQuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiVG9rZW5pemVyLmgiCiAKQEAgLTk2LDYgKzk3LDExIEBAIHZvaWQgRG9jdW1l
bnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHUKICAgICAvLyBDcmVhdGUgYSBuZXcgZG9jdW1l
bnQgYmVmb3JlIGNsZWFyaW5nIHRoZSBmcmFtZSwgYmVjYXVzZSBpdCBtYXkgbmVlZCB0bwogICAg
IC8vIGluaGVyaXQgYW4gYWxpYXNlZCBzZWN1cml0eSBjb250ZXh0LgogICAgIFJlZlB0cjxEb2N1
bWVudD4gZG9jdW1lbnQgPSBjcmVhdGVEb2N1bWVudCgpOworICAgIAorICAgIC8vIElmIHRoZSBu
ZXcgZG9jdW1lbnQgaXMgZm9yIGEgUGx1Z2luIGJ1dCB3ZSdyZSBzdXBwb3NlZCB0byBiZSBzYW5k
Ym94ZWQgZnJvbSBQbHVnaW5zLAorICAgIC8vIHRoZW4gcmVwbGFjZSB0aGUgZG9jdW1lbnQgd2l0
aCBvbmUgd2hvc2UgdG9rZW5pemVyIHdpbGwgaWdub3JlIHRoZSBpbmNvbWluZyBkYXRhIChidWcg
MzkzMjMpCisgICAgaWYgKGRvY3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgJiYgbV9mcmFtZS0+
bG9hZGVyKCktPmlzU2FuZGJveGVkKFNhbmRib3hQbHVnaW5zKSkKKyAgICAgICAgZG9jdW1lbnQg
PSBTaW5rRG9jdW1lbnQ6OmNyZWF0ZShtX2ZyYW1lKTsKIAogICAgIGJvb2wgcmVzZXRTY3JpcHRp
bmcgPSAhKG1fZnJhbWUtPmxvYWRlcigpLT5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmlzU2VjdXJlVHJh
bnNpdGlvblRvKHVybCkpOwogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGVhcihyZXNldFNjcmlw
dGluZywgcmVzZXRTY3JpcHRpbmcpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5oCShyZXZp
c2lvbiA1OTcxOCkKKysrIFdlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDEwICs0MSwxMSBAQCBwdWJsaWM6CiAgICAgV2lkZ2V0KiBwbHVnaW5XaWRn
ZXQoKTsKICAgICBOb2RlKiBwbHVnaW5Ob2RlKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNQbHVn
aW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBQbHVn
aW5Eb2N1bWVudChGcmFtZSopOwogCi0gICAgdmlydHVhbCBib29sIGlzUGx1Z2luRG9jdW1lbnQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBUb2tlbml6ZXIqIGNyZWF0ZVRv
a2VuaXplcigpOwogfTsKICAgICAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2lua0RvY3VtZW50LmgiCisKKyNpbmNsdWRlICJUb2tlbml6ZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTaW5rVG9rZW5pemVyIDogcHVibGljIFRva2VuaXplciB7CitwdWJs
aWM6CisgICAgU2lua1Rva2VuaXplcihEb2N1bWVudCogZG9jdW1lbnQpIDogbV9kb2N1bWVudChk
b2N1bWVudCkgeyB9CisgICAgICAgIAorcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGUo
Y29uc3QgU2VnbWVudGVkU3RyaW5nJiwgYm9vbCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wUGFyc2luZygpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2go
KTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgICAgIAorICAgIHZpcnR1YWwgYm9vbCB3YW50c1Jhd0RhdGEoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHdyaXRlUmF3RGF0YShjb25zdCBj
aGFyKiwgaW50KSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7
Cit9OworCit2b2lkIFNpbmtUb2tlbml6ZXI6OnN0b3BQYXJzaW5nKCkKK3sKKyAgICBUb2tlbml6
ZXI6OnN0b3BQYXJzaW5nKCk7Cit9CisKK3ZvaWQgU2lua1Rva2VuaXplcjo6ZmluaXNoKCkKK3sK
KyAgICBpZiAoIW1fcGFyc2VyU3RvcHBlZCkgCisgICAgICAgIG1fZG9jdW1lbnQtPmZpbmlzaGVk
UGFyc2luZygpOyAgICAKK30KKyAgICAKK1NpbmtEb2N1bWVudDo6U2lua0RvY3VtZW50KEZyYW1l
KiBmcmFtZSkKKyAgICA6IEhUTUxEb2N1bWVudChmcmFtZSkKK3sKKyAgICBzZXRQYXJzZU1vZGUo
Q29tcGF0KTsKK30KKyAgICAKK1Rva2VuaXplciogU2lua0RvY3VtZW50OjpjcmVhdGVUb2tlbml6
ZXIoKQoreworICAgIHJldHVybiBuZXcgU2lua1Rva2VuaXplcih0aGlzKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmgJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgU2lua0RvY3VtZW50X2gKKyNkZWZpbmUgU2lua0RvY3Vt
ZW50X2gKKworI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFNpbmtEb2N1bWVudCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNpbmtEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2lua0RvY3VtZW50KGZyYW1lKSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFNpbmtEb2N1bWVudChGcmFtZSopOworICAgIAorICAg
IHZpcnR1YWwgVG9rZW5pemVyKiBjcmVhdGVUb2tlbml6ZXIoKTsKK307CisKKworfTsgLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNpbmtEb2N1bWVudF9oCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA1OTcxOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE0IEBACisyMDEwLTA1LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBy
byBjcmFzaCB3aXRoIG1hbnkgR29vZ2xlIGltYWdlIHNlYXJjaCByZXN1bHRzCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83Njg1NjY5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM5MzIzCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9yZXNvdXJjZXMvdGVzdC5z
d2Y6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvcmVzb3VyY2VzL3Rlc3Qu
c3dmLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3NhbmRib3hlZC1wbHVnaW4tY3Jhc2gtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9zYW5kYm94ZWQtcGx1Z2luLWNy
YXNoLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA1LTE4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBObyByZXZpZXcgbmVjZXNzYXJ5LgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc2FuZGJveGVkLXBsdWdpbi1jcmFzaC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc2FuZGJveGVkLXBsdWdpbi1j
cmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9zYW5kYm94ZWQtcGx1Z2luLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzIEBACitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHdlIGRvbid0IGNyYXNoIGlmIGFu
IGlmcmFtZSBpcyBzYW5kYm94ZWQgYW5kIGhhcyBhIHBsdWdpbiByZXNvdXJjZSBhcyBpdCdzIHNy
Yy4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zYW5kYm94ZWQtcGx1Z2luLWNy
YXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc2FuZGJveGVk
LXBsdWdpbi1jcmFzaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc2FuZGJveGVkLXBsdWdpbi1jcmFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHdlIGRvbid0
IGNyYXNoIGlmIGFuIGlmcmFtZSBpcyBzYW5kYm94ZWQgYW5kIGhhcyBhIHBsdWdpbiByZXNvdXJj
ZSBhcyBpdCdzIHNyYy48YnI+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3Rlc3Quc3dmIiBzYW5k
Ym94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1mb3JtcyBhbGxvdy1zY3JpcHRzIj48L2lmcmFt
ZT48YnI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9y
ZXNvdXJjZXMvdGVzdC5zd2YKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
cmVzb3VyY2VzL3Rlc3Quc3dmCShyZXZpc2lvbiA1OTY3MikJKGZyb20gTGF5b3V0VGVzdHMvZmFz
dC9yZXBsYWNlZC9yZXNvdXJjZXMvdGVzdC5zd2Y6NTk2NzIpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9yZXNvdXJjZXMvdGVzdC5zd2YJKHdvcmtpbmcgY29weSkK
</data>
<flag name="review"
          id="40839"
          type_id="1"
          status="+"
          setter="mjs"
    />
    <flag name="commit-queue"
          id="40840"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>