<?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>111002</bug_id>
          
          <creation_ts>2013-02-27 11:58:59 -0800</creation_ts>
          <short_desc>IndexedDB: Avoid ScriptValue copies in IDBAny</short_desc>
          <delta_ts>2013-03-01 17:06:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>110206</dependson>
          <blocked>100292</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>dcarney</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>843338</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-27 11:58:59 -0800</bug_when>
    <thetext>IndexedDB: Avoid ScriptValue copies in IDBAny</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843341</commentid>
    <comment_count>1</comment_count>
      <attachid>190569</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-27 12:00:45 -0800</bug_when>
    <thetext>Created attachment 190569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843351</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-27 12:06:57 -0800</bug_when>
    <thetext>With this patch, only 2 IDB tests crash as a result of bug 110206. As this bug does result in a useful cleanup in IDB, we should land it anyway.

The cases that now crash are:
storage/indexeddb/readonly.html
storage/indexeddb/keyrange.html

Strangely they both crash accessing keyRange.lower

With the patch in bug 110206, we do not crash at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843363</commentid>
    <comment_count>3</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-27 12:13:58 -0800</bug_when>
    <thetext>jsbell / dgrogan - comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843364</commentid>
    <comment_count>4</comment_count>
      <attachid>190569</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2013-02-27 12:15:49 -0800</bug_when>
    <thetext>Comment on attachment 190569
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBAny.cpp:114
&gt; +const ScriptValue&amp; IDBAny::scriptValue()

I don&apos;t pretend to know what&apos;s going on in the rest of this patch, but returning a reference seems scary. You&apos;ve ensured that it won&apos;t be problematic?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843379</commentid>
    <comment_count>5</comment_count>
      <attachid>190569</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 12:26:26 -0800</bug_when>
    <thetext>Comment on attachment 190569
Patch

Attachment 190569 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16758178</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843404</commentid>
    <comment_count>6</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-27 12:59:28 -0800</bug_when>
    <thetext>yes, (in fact thats the key line in this whole patch) - in fact the only caller (in V8IDBAnyCustom.cpp) does this:

impl-&gt;scriptValue().v8Value()

This is generally ok as long as the scope of the owning object is longer than the return value - such as the above when the return value is a temporary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843413</commentid>
    <comment_count>7</comment_count>
      <attachid>190569</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-27 13:07:31 -0800</bug_when>
    <thetext>Comment on attachment 190569
Patch

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

Seems okay. You might want to wait to land this until after https://bugs.webkit.org/show_bug.cgi?id=110206 lands so that it&apos;s easier to verify that bug&apos;s fix is in and behaving as expected.

&gt; Source/WebCore/Modules/indexeddb/IDBAny.cpp:48
&gt; +    return adoptRef(new IDBAny((IDBAny*)0));

A little wonky, but hidden inside the implementation. Seems reasonable.

&gt; Source/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp:60
&gt; +

Remove this extra whitespace.

&gt; Source/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp:61
&gt; +}

Looks like compile fails - need ASSERT_UNREACHED() / return v8::Undefined();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843422</commentid>
    <comment_count>8</comment_count>
      <attachid>190569</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 13:12:59 -0800</bug_when>
    <thetext>Comment on attachment 190569
Patch

Attachment 190569 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16802097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843423</commentid>
    <comment_count>9</comment_count>
      <attachid>190569</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-27 13:13:06 -0800</bug_when>
    <thetext>Comment on attachment 190569
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBAny.cpp:48
&gt;&gt; +    return adoptRef(new IDBAny((IDBAny*)0));
&gt; 
&gt; A little wonky, but hidden inside the implementation. Seems reasonable.

Per discussion (and for the record), maybe have a constructor with signature:

IDBAny(IDBAny::Type type) : m_type(type), m_integer(0) { ASSERT(type == NullType || type == UndefinedType); }

.. and remove the IDBAny() and IDBAny(IDBAny*) contructors. Then createNull() would be:

return adoptRef(new IDBAny(NullType));

and createInvalid() would be:

return adoptRef(new IDBAny(UndefinedType));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843431</commentid>
    <comment_count>10</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-27 13:19:29 -0800</bug_when>
    <thetext>See also wkbug.com/100292 - IMHO, in the medium term we should be striving to eliminate IDBAny in general, but that requires pushing more smarts into ScriptValue which should wait for wkbug.com/110206 and any other pending refactors. So no harm in doing this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843434</commentid>
    <comment_count>11</comment_count>
      <attachid>190589</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-27 13:21:42 -0800</bug_when>
    <thetext>Created attachment 190589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843438</commentid>
    <comment_count>12</comment_count>
      <attachid>190590</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-27 13:23:35 -0800</bug_when>
    <thetext>Created attachment 190590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843448</commentid>
    <comment_count>13</comment_count>
      <attachid>190590</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 13:33:34 -0800</bug_when>
    <thetext>Comment on attachment 190590
Patch

Attachment 190590 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16758226</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843460</commentid>
    <comment_count>14</comment_count>
      <attachid>190590</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 13:44:03 -0800</bug_when>
    <thetext>Comment on attachment 190590
Patch

Attachment 190590 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16758230</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843470</commentid>
    <comment_count>15</comment_count>
      <attachid>190597</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-02-27 13:53:50 -0800</bug_when>
    <thetext>Created attachment 190597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845242</commentid>
    <comment_count>16</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-01 09:42:16 -0800</bug_when>
    <thetext>abarth@ - r? 

Now that bug 110206 is fixed, this is less of an issue, but it&apos;s still a good code cleanup and does reduce some totally unnecessary, if minor, copies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845499</commentid>
    <comment_count>17</comment_count>
      <attachid>190597</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-01 14:21:10 -0800</bug_when>
    <thetext>Comment on attachment 190597
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBAny.h:122
&gt; +    IDBAny(Type);
&gt; +    IDBAny(PassRefPtr&lt;DOMStringList&gt;);
&gt; +    IDBAny(PassRefPtr&lt;IDBCursor&gt;);
&gt; +    IDBAny(PassRefPtr&lt;IDBCursorWithValue&gt;);
&gt; +    IDBAny(PassRefPtr&lt;IDBDatabase&gt;);
&gt; +    IDBAny(PassRefPtr&lt;IDBFactory&gt;);
&gt; +    IDBAny(PassRefPtr&lt;IDBIndex&gt;);
&gt; +    IDBAny(PassRefPtr&lt;IDBObjectStore&gt;);
&gt; +    IDBAny(PassRefPtr&lt;IDBTransaction&gt;);
&gt; +    IDBAny(const IDBKeyPath&amp;);
&gt; +    IDBAny(const String&amp;);
&gt; +    IDBAny(const ScriptValue&amp;);
&gt; +    IDBAny(int64_t);

Should these be marked explicit?

&gt; Source/WebCore/Modules/indexeddb/IDBAny.h:127
&gt; +    const RefPtr&lt;DOMStringList&gt; m_domStringList;

const RefPtr is sort of unusual in WebCore, but I guess it&apos;s fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845530</commentid>
    <comment_count>18</comment_count>
      <attachid>191044</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-01 14:55:33 -0800</bug_when>
    <thetext>Created attachment 191044
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845535</commentid>
    <comment_count>19</comment_count>
      <attachid>190597</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2013-03-01 14:56:59 -0800</bug_when>
    <thetext>Comment on attachment 190597
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBAny.h:122
&gt;&gt; +    IDBAny(int64_t);
&gt; 
&gt; Should these be marked explicit?

yes they should. done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBAny.h:127
&gt;&gt; +    const RefPtr&lt;DOMStringList&gt; m_domStringList;
&gt; 
&gt; const RefPtr is sort of unusual in WebCore, but I guess it&apos;s fine.

We&apos;ve started using it recently - it&apos;s actually really nice and works just as you want it to - like a const pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845649</commentid>
    <comment_count>20</comment_count>
      <attachid>191044</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-01 17:06:26 -0800</bug_when>
    <thetext>Comment on attachment 191044
Patch for landing

Clearing flags on attachment: 191044

Committed r144517: &lt;http://trac.webkit.org/changeset/144517&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845650</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-01 17:06:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190569</attachid>
            <date>2013-02-27 12:00:45 -0800</date>
            <delta_ts>2013-02-27 13:21:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111002-20130227115659.patch</filename>
            <type>text/plain</type>
            <size>12116</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRmN2RjOGFlNTI0YWQ2
MzFlZmMxMjE1NGFkMmRlZjNkYTA4ODgzYy4uNjBiM2MzZWFlNmJlNTM5ZjUyNGZlMDg3OTdlZTg0
OTI3YmFhNzg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI3ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEF2
b2lkIFNjcmlwdFZhbHVlIGNvcGllcyBpbiBJREJBbnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYXZvaWRzIHNvbWUgdjggaGFuZGxlIHRocmFz
aGluZyBpbiB0aGUgbG9uZyB0ZXJtLAorICAgICAgICBhbmQgcHJvdGVjdHMgdXMgYWdhaW5zdCBz
b21lIGNyYXNoZXMgaW4gdGhlIHNob3J0IHRlcm0uCisKKyAgICAgICAgVGhlIGNyYXNoZXMgd2ls
bCBiZSBmaXhlZCBpbiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDIwNi4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQW55OjpjcmVhdGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpJREJB
bnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpzY3JpcHRWYWx1ZSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQW55Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmNy
ZWF0ZSk6CisgICAgICAgIChJREJBbnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjprZXlQ
YXRoKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMy0wMi0y
NiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBh
ZGQgYSBib2R5IHRvIHBsYXRmb3JtIHJlcXVlc3QgdW50aWwgbmVjZXNzYXJ5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAppbmRleCA4MTkwNjA2OGMxZWVjYjJm
OTE1M2EyNWQ1NjA1MDQxYmVlZWI2MTFkLi5iMmEyODY4MGUzMGYzZWMwNDcwNjAwMTk2MDJhYjg5
NzNjYjE0NjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJBbnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5j
cHAKQEAgLTQ1LDIwICs0NSwxNyBAQCBQYXNzUmVmUHRyPElEQkFueT4gSURCQW55OjpjcmVhdGVJ
bnZhbGlkKCkKIAogUGFzc1JlZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRlTnVsbCgpCiB7Ci0g
ICAgUmVmUHRyPElEQkFueT4gaWRiQW55ID0gYWRvcHRSZWYobmV3IElEQkFueSgpKTsKLSAgICBp
ZGJBbnktPnNldE51bGwoKTsKLSAgICByZXR1cm4gaWRiQW55LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IElEQkFueSgoSURCQW55KikwKSk7CiB9CiAKIFBhc3NSZWZQdHI8SURC
QW55PiBJREJBbnk6OmNyZWF0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFJl
ZlB0cjxJREJBbnk+IGlkYkFueSA9IGFkb3B0UmVmKG5ldyBJREJBbnkoKSk7Ci0gICAgaWRiQW55
LT5zZXQodmFsdWUpOwotICAgIHJldHVybiBpZGJBbnkucmVsZWFzZSgpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSURCQW55KHZhbHVlKSk7CiB9CiAKIElEQkFueTo6SURCQW55KCkKICAgICA6
IG1fdHlwZShVbmRlZmluZWRUeXBlKQorICAgICwgbV9pbnRlZ2VyKDApCiB7CiB9CiAKQEAgLTEx
NCw3ICsxMTEsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJBbnk6OmlkYlRyYW5z
YWN0aW9uKCkKICAgICByZXR1cm4gbV9pZGJUcmFuc2FjdGlvbjsKIH0KIAotU2NyaXB0VmFsdWUg
SURCQW55OjpzY3JpcHRWYWx1ZSgpCitjb25zdCBTY3JpcHRWYWx1ZSYgSURCQW55OjpzY3JpcHRW
YWx1ZSgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBTY3JpcHRWYWx1ZVR5cGUpOwogICAgIHJl
dHVybiBtX3NjcmlwdFZhbHVlOwpAQCAtMTMyLDEwOCArMTI5LDk0IEBAIGludDY0X3QgSURCQW55
OjppbnRlZ2VyKCkKICAgICByZXR1cm4gbV9pbnRlZ2VyOwogfQogCi12b2lkIElEQkFueTo6c2V0
TnVsbCgpCitJREJBbnk6OklEQkFueShJREJBbnkqIHZhbHVlKQorICAgIDogbV90eXBlKE51bGxU
eXBlKQorICAgICwgbV9pbnRlZ2VyKDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmlu
ZWRUeXBlKTsKLSAgICBtX3R5cGUgPSBOdWxsVHlwZTsKKyAgICBBU1NFUlQoIXZhbHVlKTsKIH0K
IAotdm9pZCBJREJBbnk6OnNldChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHZhbHVlKQorSURC
QW55OjpJREJBbnkoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB2YWx1ZSkKKyAgICA6IG1fdHlw
ZShET01TdHJpbmdMaXN0VHlwZSkKKyAgICAsIG1fZG9tU3RyaW5nTGlzdCh2YWx1ZSkKKyAgICAs
IG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0g
ICAgbV90eXBlID0gRE9NU3RyaW5nTGlzdFR5cGU7Ci0gICAgbV9kb21TdHJpbmdMaXN0ID0gdmFs
dWU7CiB9CiAKLXZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+
IHZhbHVlKQorSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IHZh
bHVlKQorICAgIDogbV90eXBlKElEQkN1cnNvcldpdGhWYWx1ZVR5cGUpCisgICAgLCBtX2lkYkN1
cnNvcldpdGhWYWx1ZSh2YWx1ZSkKKyAgICAsIG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVCht
X3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gSURCQ3Vyc29yV2l0aFZhbHVl
VHlwZTsKLSAgICBtX2lkYkN1cnNvcldpdGhWYWx1ZSA9IHZhbHVlOwogfQogCi12b2lkIElEQkFu
eTo6c2V0KFBhc3NSZWZQdHI8SURCQ3Vyc29yPiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KFBhc3NS
ZWZQdHI8SURCQ3Vyc29yPiB2YWx1ZSkKKyAgICA6IG1fdHlwZShJREJDdXJzb3JUeXBlKQorICAg
ICwgbV9pZGJDdXJzb3IodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAgICBBU1NFUlQo
bV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQkN1cnNvclR5cGU7Ci0g
ICAgbV9pZGJDdXJzb3IgPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJBbnk6OnNldChQYXNzUmVmUHRy
PElEQkRhdGFiYXNlPiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCRGF0YWJh
c2U+IHZhbHVlKQorICAgIDogbV90eXBlKElEQkRhdGFiYXNlVHlwZSkKKyAgICAsIG1faWRiRGF0
YWJhc2UodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09
IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQkRhdGFiYXNlVHlwZTsKLSAgICBtX2lk
YkRhdGFiYXNlID0gdmFsdWU7CiB9CiAKLXZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJG
YWN0b3J5PiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCRmFjdG9yeT4gdmFs
dWUpCisgICAgOiBtX3R5cGUoSURCRmFjdG9yeVR5cGUpCisgICAgLCBtX2lkYkZhY3RvcnkodmFs
dWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5l
ZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQkZhY3RvcnlUeXBlOwotICAgIG1faWRiRmFjdG9yeSA9
IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0KFBhc3NSZWZQdHI8SURCSW5kZXg+IHZhbHVl
KQorSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJREJJbmRleD4gdmFsdWUpCisgICAgOiBtX3R5
cGUoSURCSW5kZXhUeXBlKQorICAgICwgbV9pZGJJbmRleCh2YWx1ZSkKKyAgICAsIG1faW50ZWdl
cigwKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBl
ID0gSURCSW5kZXhUeXBlOwotICAgIG1faWRiSW5kZXggPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJB
bnk6OnNldChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB2YWx1ZSkKK0lEQkFueTo6SURCQW55
KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHZhbHVlKQorICAgIDogbV90eXBlKElEQlRyYW5z
YWN0aW9uVHlwZSkKKyAgICAsIG1faWRiVHJhbnNhY3Rpb24odmFsdWUpCisgICAgLCBtX2ludGVn
ZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlw
ZSA9IElEQlRyYW5zYWN0aW9uVHlwZTsKLSAgICBtX2lkYlRyYW5zYWN0aW9uID0gdmFsdWU7CiB9
CiAKLXZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gdmFsdWUpCitJ
REJBbnk6OklEQkFueShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiB2YWx1ZSkKKyAgICA6IG1f
dHlwZShJREJPYmplY3RTdG9yZVR5cGUpCisgICAgLCBtX2lkYk9iamVjdFN0b3JlKHZhbHVlKQor
ICAgICwgbV9pbnRlZ2VyKDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBl
KTsKLSAgICBtX3R5cGUgPSBJREJPYmplY3RTdG9yZVR5cGU7Ci0gICAgbV9pZGJPYmplY3RTdG9y
ZSA9IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0KGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1
ZSkKK0lEQkFueTo6SURCQW55KGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSkKKyAgICA6IG1fdHlw
ZShTY3JpcHRWYWx1ZVR5cGUpCisgICAgLCBtX3NjcmlwdFZhbHVlKHZhbHVlKQorICAgICwgbV9p
bnRlZ2VyKDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKLSAgICBt
X3R5cGUgPSBTY3JpcHRWYWx1ZVR5cGU7Ci0gICAgbV9zY3JpcHRWYWx1ZSA9IHZhbHVlOwogfQog
Ci12b2lkIElEQkFueTo6c2V0KGNvbnN0IElEQktleVBhdGgmIHZhbHVlKQorSURCQW55OjpJREJB
bnkoY29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCisgICAgOiBtX3R5cGUoS2V5UGF0aFR5cGUpCisg
ICAgLCBtX2lkYktleVBhdGgodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAgICBBU1NF
UlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7
Ci0gICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToKLSAgICAgICAgbV90eXBlID0gTnVsbFR5
cGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKLSAg
ICAgICAgbV90eXBlID0gU3RyaW5nVHlwZTsKLSAgICAgICAgbV9zdHJpbmcgPSB2YWx1ZS5zdHJp
bmcoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6Ci0g
ICAgICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBrZXlQYXRocyA9IERPTVN0cmluZ0xpc3Q6OmNy
ZWF0ZSgpOwotICAgICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IHZhbHVlLmFycmF5KCkuYmVnaW4oKTsgaXQgIT0gdmFsdWUuYXJyYXkoKS5lbmQoKTsgKytpdCkK
LSAgICAgICAgICAgIGtleVBhdGhzLT5hcHBlbmQoKml0KTsKLSAgICAgICAgbV90eXBlID0gRE9N
U3RyaW5nTGlzdFR5cGU7Ci0gICAgICAgIG1fZG9tU3RyaW5nTGlzdCA9IGtleVBhdGhzLnJlbGVh
c2UoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogfQogCi12b2lkIElEQkFueTo6c2V0KGNvbnN0
IFN0cmluZyYgdmFsdWUpCitJREJBbnk6OklEQkFueShjb25zdCBTdHJpbmcmIHZhbHVlKQorICAg
IDogbV90eXBlKFN0cmluZ1R5cGUpCisgICAgLCBtX3N0cmluZyh2YWx1ZSkKKyAgICAsIG1faW50
ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90
eXBlID0gU3RyaW5nVHlwZTsKLSAgICBtX3N0cmluZyA9IHZhbHVlOwogfQogCi12b2lkIElEQkFu
eTo6c2V0KGludDY0X3QgdmFsdWUpCitJREJBbnk6OklEQkFueShpbnQ2NF90IHZhbHVlKQorICAg
IDogbV90eXBlKEludGVnZXJUeXBlKQorICAgICwgbV9pbnRlZ2VyKHZhbHVlKQogewotICAgIEFT
U0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gSW50ZWdlclR5cGU7
Ci0gICAgbV9pbnRlZ2VyID0gdmFsdWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKaW5kZXggMTZjMmJiOTY3ZDVh
MTA4Mzc5NTA0OGEzMTgyNGYwMjZlNzZhMDE4MC4uM2I4NjM4Yzc3Y2NhMmY2MDk0MDU1NGFmNzVl
MzE0YzUyOTZhYjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisj
aW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU1
LDI5ICs1NiwyMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZShUKiBpZGJPYmplY3QpCiAgICAgewotICAgICAg
ICBSZWZQdHI8SURCQW55PiBhbnkgPSBJREJBbnk6OmNyZWF0ZUludmFsaWQoKTsKLSAgICAgICAg
YW55LT5zZXQoaWRiT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KGlkYk9iamVjdCkpOwogICAgIH0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkFueT4gY3JlYXRl
KGNvbnN0IFQmIGlkYk9iamVjdCkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxJREJBbnk+IGFueSA9
IElEQkFueTo6Y3JlYXRlSW52YWxpZCgpOwotICAgICAgICBhbnktPnNldChpZGJPYmplY3QpOwot
ICAgICAgICByZXR1cm4gYW55LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJREJBbnkoaWRiT2JqZWN0KSk7CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVhdGUoUGFzc1JlZlB0cjxUPiBpZGJPYmpl
Y3QpCiAgICAgewotICAgICAgICBSZWZQdHI8SURCQW55PiBhbnkgPSBJREJBbnk6OmNyZWF0ZUlu
dmFsaWQoKTsKLSAgICAgICAgYW55LT5zZXQoaWRiT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIGFu
eS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KGlkYk9iamVj
dCkpOwogICAgIH0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZShpbnQ2NF90
IHZhbHVlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPElEQkFueT4gYW55ID0gSURCQW55OjpjcmVh
dGVJbnZhbGlkKCk7Ci0gICAgICAgIGFueS0+c2V0KHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIGFu
eS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KHZhbHVlKSk7
CiAgICAgfQogICAgIH5JREJBbnkoKTsKIApAQCAtOTUsNiArODgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFNjcmlwdFZhbHVlVHlwZSwKICAgICAgICAgSW50ZWdlclR5cGUsCiAgICAgICAgIFN0cmlu
Z1R5cGUsCisgICAgICAgIEtleVBhdGhUeXBlLAogICAgIH07CiAKICAgICBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTEwNyw0MiArMTAxLDQyIEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPElEQkluZGV4PiBpZGJJbmRleCgpOwogICAgIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKCk7CiAgICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bj4gaWRiVHJhbnNhY3Rpb24oKTsKLSAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSgpOworICAg
IGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSgpOwogICAgIGludDY0X3QgaW50ZWdlcigp
OwogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCk7Ci0KLSAgICAvLyBTZXQgY2FuIG9ubHkgYmUg
Y2FsbGVkIG9uY2UuCi0gICAgdm9pZCBzZXROdWxsKCk7Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0Pik7Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxJREJDdXJzb3I+KTsK
LSAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4pOwotICAgIHZvaWQg
c2V0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+KTsKLSAgICB2b2lkIHNldChQYXNzUmVmUHRyPElE
QkZhY3Rvcnk+KTsKLSAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQkluZGV4Pik7Ci0gICAgdm9p
ZCBzZXQoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4pOwotICAgIHZvaWQgc2V0KFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+KTsKLSAgICB2b2lkIHNldChjb25zdCBJREJLZXlQYXRoJik7Ci0g
ICAgdm9pZCBzZXQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXQoY29uc3QgU2NyaXB0VmFs
dWUmKTsKLSAgICB2b2lkIHNldChpbnQ2NF90KTsKKyAgICBjb25zdCBJREJLZXlQYXRoJiBrZXlQ
YXRoKCkgeyByZXR1cm4gbV9pZGJLZXlQYXRoOyB9OwogCiBwcml2YXRlOgotICAgIElEQkFueSgp
OworICAgIElEQkFueSgpOyAvLyBGb3IgdW5kZWZpbmVkLgorICAgIElEQkFueShJREJBbnkqKTsg
Ly8gRm9yIG51bGwuCisgICAgSURCQW55KFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOworICAg
IElEQkFueShQYXNzUmVmUHRyPElEQkN1cnNvcj4pOworICAgIElEQkFueShQYXNzUmVmUHRyPElE
QkN1cnNvcldpdGhWYWx1ZT4pOworICAgIElEQkFueShQYXNzUmVmUHRyPElEQkRhdGFiYXNlPik7
CisgICAgSURCQW55KFBhc3NSZWZQdHI8SURCRmFjdG9yeT4pOworICAgIElEQkFueShQYXNzUmVm
UHRyPElEQkluZGV4Pik7CisgICAgSURCQW55KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+KTsK
KyAgICBJREJBbnkoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4pOworICAgIElEQkFueShjb25z
dCBJREJLZXlQYXRoJik7CisgICAgSURCQW55KGNvbnN0IFN0cmluZyYpOworICAgIElEQkFueShj
b25zdCBTY3JpcHRWYWx1ZSYpOworICAgIElEQkFueShpbnQ2NF90KTsKIAotICAgIFR5cGUgbV90
eXBlOworICAgIGNvbnN0IFR5cGUgbV90eXBlOwogCiAgICAgLy8gT25seSBvbmUgb2YgdGhlIGZv
bGxvd2luZyBzaG91bGQgZXZlciBiZSBpbiB1c2UgYXQgYW55IGdpdmVuIHRpbWUuCi0gICAgUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IG1fZG9tU3RyaW5nTGlzdDsKLSAgICBSZWZQdHI8SURCQ3Vyc29y
PiBtX2lkYkN1cnNvcjsKLSAgICBSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBtX2lkYkN1cnNv
cldpdGhWYWx1ZTsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1faWRiRGF0YWJhc2U7Ci0gICAg
UmVmUHRyPElEQkZhY3Rvcnk+IG1faWRiRmFjdG9yeTsKLSAgICBSZWZQdHI8SURCSW5kZXg+IG1f
aWRiSW5kZXg7Ci0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBtX2lkYk9iamVjdFN0b3JlOwot
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV9pZGJUcmFuc2FjdGlvbjsKLSAgICBTY3JpcHRW
YWx1ZSBtX3NjcmlwdFZhbHVlOwotICAgIFN0cmluZyBtX3N0cmluZzsKLSAgICBpbnQ2NF90IG1f
aW50ZWdlcjsKKyAgICBjb25zdCBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbV9kb21TdHJpbmdMaXN0
OworICAgIGNvbnN0IFJlZlB0cjxJREJDdXJzb3I+IG1faWRiQ3Vyc29yOworICAgIGNvbnN0IFJl
ZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IG1faWRiQ3Vyc29yV2l0aFZhbHVlOworICAgIGNvbnN0
IFJlZlB0cjxJREJEYXRhYmFzZT4gbV9pZGJEYXRhYmFzZTsKKyAgICBjb25zdCBSZWZQdHI8SURC
RmFjdG9yeT4gbV9pZGJGYWN0b3J5OworICAgIGNvbnN0IFJlZlB0cjxJREJJbmRleD4gbV9pZGJJ
bmRleDsKKyAgICBjb25zdCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1faWRiT2JqZWN0U3RvcmU7
CisgICAgY29uc3QgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX2lkYlRyYW5zYWN0aW9uOworICAg
IElEQktleVBhdGggbV9pZGJLZXlQYXRoOworICAgIGNvbnN0IFNjcmlwdFZhbHVlIG1fc2NyaXB0
VmFsdWU7CisgICAgY29uc3QgU3RyaW5nIG1fc3RyaW5nOworICAgIGNvbnN0IGludDY0X3QgbV9p
bnRlZ2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAKaW5kZXggY2Y0MDY0
ZmRkNTI4MzA3MjcyOGU5OTg5YWRhNjM3NmZlMmM2NjFjZC4uNjM5ODQ0MmM5YmQ4ZWEyOGMwMmMy
YmE2MDM2MDJhZjJjMzU3ZWE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCkBAIC00NCw2ICs0NCwyMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChjb25z
dCBJREJLZXlQYXRoJiB2YWx1ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7
CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdp
dGhDaGVjayhpc29sYXRlKTsKKyAgICBjYXNlIElEQktleVBhdGg6OlN0cmluZ1R5cGU6CisgICAg
ICAgIHJldHVybiB2OFN0cmluZyh2YWx1ZS5zdHJpbmcoKSwgaXNvbGF0ZSk7CisgICAgY2FzZSBJ
REJLZXlQYXRoOjpBcnJheVR5cGU6CisgICAgICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBrZXlQ
YXRocyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgICAgICBmb3IgKFZlY3RvcjxTdHJp
bmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHZhbHVlLmFycmF5KCkuYmVnaW4oKTsgaXQgIT0gdmFs
dWUuYXJyYXkoKS5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgIGtleVBhdGhzLT5hcHBlbmQoKml0
KTsKKyAgICAgICAgcmV0dXJuIHRvVjgoa2V5UGF0aHMucmVsZWFzZSgpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOworICAgIH0KKworfQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJ
REJBbnkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoIWltcGwpCkBAIC03Niw2ICs5Miw5IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsCiAgICAgICAgIHJldHVybiB2OFN0cmluZyhpbXBsLT5zdHJp
bmcoKSwgaXNvbGF0ZSk7CiAgICAgY2FzZSBJREJBbnk6OkludGVnZXJUeXBlOgogICAgICAgICBy
ZXR1cm4gdjg6Ok51bWJlcjo6TmV3KGltcGwtPmludGVnZXIoKSk7CisgICAgY2FzZSBJREJBbnk6
OktleVBhdGhUeXBlOgorICAgICAgICByZXR1cm4gdG9WOChpbXBsLT5rZXlQYXRoKCksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190589</attachid>
            <date>2013-02-27 13:21:42 -0800</date>
            <delta_ts>2013-02-27 13:23:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111002-20130227131755.patch</filename>
            <type>text/plain</type>
            <size>12172</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRmN2RjOGFlNTI0YWQ2
MzFlZmMxMjE1NGFkMmRlZjNkYTA4ODgzYy4uNjBiM2MzZWFlNmJlNTM5ZjUyNGZlMDg3OTdlZTg0
OTI3YmFhNzg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI3ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEF2
b2lkIFNjcmlwdFZhbHVlIGNvcGllcyBpbiBJREJBbnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYXZvaWRzIHNvbWUgdjggaGFuZGxlIHRocmFz
aGluZyBpbiB0aGUgbG9uZyB0ZXJtLAorICAgICAgICBhbmQgcHJvdGVjdHMgdXMgYWdhaW5zdCBz
b21lIGNyYXNoZXMgaW4gdGhlIHNob3J0IHRlcm0uCisKKyAgICAgICAgVGhlIGNyYXNoZXMgd2ls
bCBiZSBmaXhlZCBpbiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDIwNi4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQW55OjpjcmVhdGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpJREJB
bnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpzY3JpcHRWYWx1ZSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQW55Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmNy
ZWF0ZSk6CisgICAgICAgIChJREJBbnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjprZXlQ
YXRoKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMy0wMi0y
NiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBh
ZGQgYSBib2R5IHRvIHBsYXRmb3JtIHJlcXVlc3QgdW50aWwgbmVjZXNzYXJ5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAppbmRleCA4MTkwNjA2OGMxZWVjYjJm
OTE1M2EyNWQ1NjA1MDQxYmVlZWI2MTFkLi5jYjFlNjNlZDBkMjA5OWI0NzNmNDUzNWFjYzUzNDEy
NGQ1MDhmNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJBbnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5j
cHAKQEAgLTQwLDI2ICs0MCwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8
SURCQW55PiBJREJBbnk6OmNyZWF0ZUludmFsaWQoKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSURCQW55KCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KFVuZGVmaW5lZFR5
cGUpKTsKIH0KIAogUGFzc1JlZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRlTnVsbCgpCiB7Ci0g
ICAgUmVmUHRyPElEQkFueT4gaWRiQW55ID0gYWRvcHRSZWYobmV3IElEQkFueSgpKTsKLSAgICBp
ZGJBbnktPnNldE51bGwoKTsKLSAgICByZXR1cm4gaWRiQW55LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IElEQkFueShOdWxsVHlwZSkpOwogfQogCiBQYXNzUmVmUHRyPElEQkFu
eT4gSURCQW55OjpjcmVhdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBSZWZQ
dHI8SURCQW55PiBpZGJBbnkgPSBhZG9wdFJlZihuZXcgSURCQW55KCkpOwotICAgIGlkYkFueS0+
c2V0KHZhbHVlKTsKLSAgICByZXR1cm4gaWRiQW55LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkFueSh2YWx1ZSkpOwogfQogCi1JREJBbnk6OklEQkFueSgpCi0gICAgOiBt
X3R5cGUoVW5kZWZpbmVkVHlwZSkKK0lEQkFueTo6SURCQW55KFR5cGUgdHlwZSkKKyAgICA6IG1f
dHlwZSh0eXBlKQorICAgICwgbV9pbnRlZ2VyKDApCiB7CisgICAgQVNTRVJUKHR5cGUgPT0gVW5k
ZWZpbmVkVHlwZSB8fCB0eXBlID09IE51bGxUeXBlKTsKIH0KIAogSURCQW55Ojp+SURCQW55KCkK
QEAgLTExNCw3ICsxMTIsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJBbnk6Omlk
YlRyYW5zYWN0aW9uKCkKICAgICByZXR1cm4gbV9pZGJUcmFuc2FjdGlvbjsKIH0KIAotU2NyaXB0
VmFsdWUgSURCQW55OjpzY3JpcHRWYWx1ZSgpCitjb25zdCBTY3JpcHRWYWx1ZSYgSURCQW55Ojpz
Y3JpcHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBTY3JpcHRWYWx1ZVR5cGUpOwog
ICAgIHJldHVybiBtX3NjcmlwdFZhbHVlOwpAQCAtMTMyLDEwOCArMTMwLDg3IEBAIGludDY0X3Qg
SURCQW55OjppbnRlZ2VyKCkKICAgICByZXR1cm4gbV9pbnRlZ2VyOwogfQogCi12b2lkIElEQkFu
eTo6c2V0TnVsbCgpCitJREJBbnk6OklEQkFueShQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHZh
bHVlKQorICAgIDogbV90eXBlKERPTVN0cmluZ0xpc3RUeXBlKQorICAgICwgbV9kb21TdHJpbmdM
aXN0KHZhbHVlKQorICAgICwgbV9pbnRlZ2VyKDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBV
bmRlZmluZWRUeXBlKTsKLSAgICBtX3R5cGUgPSBOdWxsVHlwZTsKIH0KIAotdm9pZCBJREJBbnk6
OnNldChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHZhbHVlKQorSURCQW55OjpJREJBbnkoUGFz
c1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IHZhbHVlKQorICAgIDogbV90eXBlKElEQkN1cnNv
cldpdGhWYWx1ZVR5cGUpCisgICAgLCBtX2lkYkN1cnNvcldpdGhWYWx1ZSh2YWx1ZSkKKyAgICAs
IG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0g
ICAgbV90eXBlID0gRE9NU3RyaW5nTGlzdFR5cGU7Ci0gICAgbV9kb21TdHJpbmdMaXN0ID0gdmFs
dWU7CiB9CiAKLXZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+
IHZhbHVlKQorSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJREJDdXJzb3I+IHZhbHVlKQorICAg
IDogbV90eXBlKElEQkN1cnNvclR5cGUpCisgICAgLCBtX2lkYkN1cnNvcih2YWx1ZSkKKyAgICAs
IG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0g
ICAgbV90eXBlID0gSURCQ3Vyc29yV2l0aFZhbHVlVHlwZTsKLSAgICBtX2lkYkN1cnNvcldpdGhW
YWx1ZSA9IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0KFBhc3NSZWZQdHI8SURCQ3Vyc29y
PiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IHZhbHVlKQor
ICAgIDogbV90eXBlKElEQkRhdGFiYXNlVHlwZSkKKyAgICAsIG1faWRiRGF0YWJhc2UodmFsdWUp
CisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5
cGUpOwotICAgIG1fdHlwZSA9IElEQkN1cnNvclR5cGU7Ci0gICAgbV9pZGJDdXJzb3IgPSB2YWx1
ZTsKIH0KIAotdm9pZCBJREJBbnk6OnNldChQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiB2YWx1ZSkK
K0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCRmFjdG9yeT4gdmFsdWUpCisgICAgOiBtX3R5
cGUoSURCRmFjdG9yeVR5cGUpCisgICAgLCBtX2lkYkZhY3RvcnkodmFsdWUpCisgICAgLCBtX2lu
dGVnZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1f
dHlwZSA9IElEQkRhdGFiYXNlVHlwZTsKLSAgICBtX2lkYkRhdGFiYXNlID0gdmFsdWU7CiB9CiAK
LXZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJGYWN0b3J5PiB2YWx1ZSkKK0lEQkFueTo6
SURCQW55KFBhc3NSZWZQdHI8SURCSW5kZXg+IHZhbHVlKQorICAgIDogbV90eXBlKElEQkluZGV4
VHlwZSkKKyAgICAsIG1faWRiSW5kZXgodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAg
ICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQkZhY3Rv
cnlUeXBlOwotICAgIG1faWRiRmFjdG9yeSA9IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0
KFBhc3NSZWZQdHI8SURCSW5kZXg+IHZhbHVlKQorSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbj4gdmFsdWUpCisgICAgOiBtX3R5cGUoSURCVHJhbnNhY3Rpb25UeXBlKQor
ICAgICwgbV9pZGJUcmFuc2FjdGlvbih2YWx1ZSkKKyAgICAsIG1faW50ZWdlcigwKQogewotICAg
IEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gSURCSW5kZXhU
eXBlOwotICAgIG1faWRiSW5kZXggPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJBbnk6OnNldChQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IHZhbHVlKQorICAgIDogbV90eXBlKElEQk9iamVjdFN0b3JlVHlwZSkK
KyAgICAsIG1faWRiT2JqZWN0U3RvcmUodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAg
ICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQlRyYW5z
YWN0aW9uVHlwZTsKLSAgICBtX2lkYlRyYW5zYWN0aW9uID0gdmFsdWU7CiB9CiAKLXZvaWQgSURC
QW55OjpzZXQoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gdmFsdWUpCitJREJBbnk6OklEQkFu
eShjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCisgICAgOiBtX3R5cGUoU2NyaXB0VmFsdWVUeXBl
KQorICAgICwgbV9zY3JpcHRWYWx1ZSh2YWx1ZSkKKyAgICAsIG1faW50ZWdlcigwKQogewotICAg
IEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gSURCT2JqZWN0
U3RvcmVUeXBlOwotICAgIG1faWRiT2JqZWN0U3RvcmUgPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJB
bnk6OnNldChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCitJREJBbnk6OklEQkFueShjb25zdCBJ
REJLZXlQYXRoJiB2YWx1ZSkKKyAgICA6IG1fdHlwZShLZXlQYXRoVHlwZSkKKyAgICAsIG1faWRi
S2V5UGF0aCh2YWx1ZSkKKyAgICAsIG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUg
PT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gU2NyaXB0VmFsdWVUeXBlOwotICAgIG1f
c2NyaXB0VmFsdWUgPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJBbnk6OnNldChjb25zdCBJREJLZXlQ
YXRoJiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgOiBt
X3R5cGUoU3RyaW5nVHlwZSkKKyAgICAsIG1fc3RyaW5nKHZhbHVlKQorICAgICwgbV9pbnRlZ2Vy
KDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKLSAgICBzd2l0Y2gg
KHZhbHVlLnR5cGUoKSkgewotICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6Ci0gICAgICAg
IG1fdHlwZSA9IE51bGxUeXBlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElEQktleVBhdGg6
OlN0cmluZ1R5cGU6Ci0gICAgICAgIG1fdHlwZSA9IFN0cmluZ1R5cGU7Ci0gICAgICAgIG1fc3Ry
aW5nID0gdmFsdWUuc3RyaW5nKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSURCS2V5UGF0
aDo6QXJyYXlUeXBlOgotICAgICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4ga2V5UGF0aHMgPSBE
T01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKLSAgICAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSB2YWx1ZS5hcnJheSgpLmJlZ2luKCk7IGl0ICE9IHZhbHVlLmFycmF5
KCkuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBrZXlQYXRocy0+YXBwZW5kKCppdCk7Ci0gICAg
ICAgIG1fdHlwZSA9IERPTVN0cmluZ0xpc3RUeXBlOwotICAgICAgICBtX2RvbVN0cmluZ0xpc3Qg
PSBrZXlQYXRocy5yZWxlYXNlKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KIH0KIAotdm9pZCBJ
REJBbnk6OnNldChjb25zdCBTdHJpbmcmIHZhbHVlKQorSURCQW55OjpJREJBbnkoaW50NjRfdCB2
YWx1ZSkKKyAgICA6IG1fdHlwZShJbnRlZ2VyVHlwZSkKKyAgICAsIG1faW50ZWdlcih2YWx1ZSkK
IHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IFN0
cmluZ1R5cGU7Ci0gICAgbV9zdHJpbmcgPSB2YWx1ZTsKLX0KLQotdm9pZCBJREJBbnk6OnNldChp
bnQ2NF90IHZhbHVlKQotewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0g
ICAgbV90eXBlID0gSW50ZWdlclR5cGU7Ci0gICAgbV9pbnRlZ2VyID0gdmFsdWU7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkFueS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QW55LmgKaW5kZXggMTZjMmJiOTY3ZDVhMTA4Mzc5NTA0OGEzMTgyNGYwMjZlNzZhMDE4MC4uY2Qw
NmE0ZGUwYmE4YmY3Zjk5NDQxOGE4MGIwNWNlYTZjYWMxMWMzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU1LDI5ICs1NiwyMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZShUKiBp
ZGJPYmplY3QpCiAgICAgewotICAgICAgICBSZWZQdHI8SURCQW55PiBhbnkgPSBJREJBbnk6OmNy
ZWF0ZUludmFsaWQoKTsKLSAgICAgICAgYW55LT5zZXQoaWRiT2JqZWN0KTsKLSAgICAgICAgcmV0
dXJuIGFueS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KGlk
Yk9iamVjdCkpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkFueT4gY3JlYXRlKGNvbnN0IFQmIGlkYk9iamVjdCkKICAgICB7Ci0gICAg
ICAgIFJlZlB0cjxJREJBbnk+IGFueSA9IElEQkFueTo6Y3JlYXRlSW52YWxpZCgpOwotICAgICAg
ICBhbnktPnNldChpZGJPYmplY3QpOwotICAgICAgICByZXR1cm4gYW55LnJlbGVhc2UoKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJBbnkoaWRiT2JqZWN0KSk7CiAgICAgfQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVh
dGUoUGFzc1JlZlB0cjxUPiBpZGJPYmplY3QpCiAgICAgewotICAgICAgICBSZWZQdHI8SURCQW55
PiBhbnkgPSBJREJBbnk6OmNyZWF0ZUludmFsaWQoKTsKLSAgICAgICAgYW55LT5zZXQoaWRiT2Jq
ZWN0KTsKLSAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCQW55KGlkYk9iamVjdCkpOwogICAgIH0KICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJBbnk+IGNyZWF0ZShpbnQ2NF90IHZhbHVlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPElE
QkFueT4gYW55ID0gSURCQW55OjpjcmVhdGVJbnZhbGlkKCk7Ci0gICAgICAgIGFueS0+c2V0KHZh
bHVlKTsKLSAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCQW55KHZhbHVlKSk7CiAgICAgfQogICAgIH5JREJBbnkoKTsKIApAQCAtOTUs
NiArODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNjcmlwdFZhbHVlVHlwZSwKICAgICAgICAgSW50
ZWdlclR5cGUsCiAgICAgICAgIFN0cmluZ1R5cGUsCisgICAgICAgIEtleVBhdGhUeXBlLAogICAg
IH07CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTEwNyw0
MiArMTAxLDQxIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpZGJJbmRleCgp
OwogICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKCk7CiAgICAg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gaWRiVHJhbnNhY3Rpb24oKTsKLSAgICBTY3JpcHRW
YWx1ZSBzY3JpcHRWYWx1ZSgpOworICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSgp
OwogICAgIGludDY0X3QgaW50ZWdlcigpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCk7Ci0K
LSAgICAvLyBTZXQgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuCi0gICAgdm9pZCBzZXROdWxsKCk7
Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7Ci0gICAgdm9pZCBzZXQo
UGFzc1JlZlB0cjxJREJDdXJzb3I+KTsKLSAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQkN1cnNv
cldpdGhWYWx1ZT4pOwotICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+KTsKLSAg
ICB2b2lkIHNldChQYXNzUmVmUHRyPElEQkZhY3Rvcnk+KTsKLSAgICB2b2lkIHNldChQYXNzUmVm
UHRyPElEQkluZGV4Pik7Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4p
OwotICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+KTsKLSAgICB2b2lkIHNl
dChjb25zdCBJREJLZXlQYXRoJik7Ci0gICAgdm9pZCBzZXQoY29uc3QgU3RyaW5nJik7Ci0gICAg
dm9pZCBzZXQoY29uc3QgU2NyaXB0VmFsdWUmKTsKLSAgICB2b2lkIHNldChpbnQ2NF90KTsKKyAg
ICBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKCkgeyByZXR1cm4gbV9pZGJLZXlQYXRoOyB9Owog
CiBwcml2YXRlOgotICAgIElEQkFueSgpOworICAgIElEQkFueShUeXBlKTsKKyAgICBJREJBbnko
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7CisgICAgSURCQW55KFBhc3NSZWZQdHI8SURCQ3Vy
c29yPik7CisgICAgSURCQW55KFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPik7CisgICAg
SURCQW55KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+KTsKKyAgICBJREJBbnkoUGFzc1JlZlB0cjxJ
REJGYWN0b3J5Pik7CisgICAgSURCQW55KFBhc3NSZWZQdHI8SURCSW5kZXg+KTsKKyAgICBJREJB
bnkoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4pOworICAgIElEQkFueShQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uPik7CisgICAgSURCQW55KGNvbnN0IElEQktleVBhdGgmKTsKKyAgICBJREJB
bnkoY29uc3QgU3RyaW5nJik7CisgICAgSURCQW55KGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAg
SURCQW55KGludDY0X3QpOwogCi0gICAgVHlwZSBtX3R5cGU7CisgICAgY29uc3QgVHlwZSBtX3R5
cGU7CiAKICAgICAvLyBPbmx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHNob3VsZCBldmVyIGJlIGlu
IHVzZSBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbV9kb21T
dHJpbmdMaXN0OwotICAgIFJlZlB0cjxJREJDdXJzb3I+IG1faWRiQ3Vyc29yOwotICAgIFJlZlB0
cjxJREJDdXJzb3JXaXRoVmFsdWU+IG1faWRiQ3Vyc29yV2l0aFZhbHVlOwotICAgIFJlZlB0cjxJ
REJEYXRhYmFzZT4gbV9pZGJEYXRhYmFzZTsKLSAgICBSZWZQdHI8SURCRmFjdG9yeT4gbV9pZGJG
YWN0b3J5OwotICAgIFJlZlB0cjxJREJJbmRleD4gbV9pZGJJbmRleDsKLSAgICBSZWZQdHI8SURC
T2JqZWN0U3RvcmU+IG1faWRiT2JqZWN0U3RvcmU7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBtX2lkYlRyYW5zYWN0aW9uOwotICAgIFNjcmlwdFZhbHVlIG1fc2NyaXB0VmFsdWU7Ci0gICAg
U3RyaW5nIG1fc3RyaW5nOwotICAgIGludDY0X3QgbV9pbnRlZ2VyOworICAgIGNvbnN0IFJlZlB0
cjxET01TdHJpbmdMaXN0PiBtX2RvbVN0cmluZ0xpc3Q7CisgICAgY29uc3QgUmVmUHRyPElEQkN1
cnNvcj4gbV9pZGJDdXJzb3I7CisgICAgY29uc3QgUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4g
bV9pZGJDdXJzb3JXaXRoVmFsdWU7CisgICAgY29uc3QgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2lk
YkRhdGFiYXNlOworICAgIGNvbnN0IFJlZlB0cjxJREJGYWN0b3J5PiBtX2lkYkZhY3Rvcnk7Cisg
ICAgY29uc3QgUmVmUHRyPElEQkluZGV4PiBtX2lkYkluZGV4OworICAgIGNvbnN0IFJlZlB0cjxJ
REJPYmplY3RTdG9yZT4gbV9pZGJPYmplY3RTdG9yZTsKKyAgICBjb25zdCBSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IG1faWRiVHJhbnNhY3Rpb247CisgICAgSURCS2V5UGF0aCBtX2lkYktleVBhdGg7
CisgICAgY29uc3QgU2NyaXB0VmFsdWUgbV9zY3JpcHRWYWx1ZTsKKyAgICBjb25zdCBTdHJpbmcg
bV9zdHJpbmc7CisgICAgY29uc3QgaW50NjRfdCBtX2ludGVnZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SURCQW55Q3VzdG9tLmNwcAppbmRleCBjZjQwNjRmZGQ1MjgzMDcyNzI4ZTk5ODlhZGE2Mzc2
ZmUyYzY2MWNkLi44MmZiYjhmZTQ5ZTAxMzk0YWNkNzI1MDNlNGVhYTc5ODIxZTIxYzg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3Rv
bS5jcHAKQEAgLTQ0LDYgKzQ0LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KGNvbnN0IElEQktleVBhdGgmIHZhbHVlLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
Cit7CisgICAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsKKyAgICBjYXNlIElEQktleVBhdGg6Ok51
bGxUeXBlOgorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIGNh
c2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKKyAgICAgICAgcmV0dXJuIHY4U3RyaW5nKHZhbHVl
LnN0cmluZygpLCBpc29sYXRlKTsKKyAgICBjYXNlIElEQktleVBhdGg6OkFycmF5VHlwZToKKyAg
ICAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGtleVBhdGhzID0gRE9NU3RyaW5nTGlzdDo6Y3Jl
YXRlKCk7CisgICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
dmFsdWUuYXJyYXkoKS5iZWdpbigpOyBpdCAhPSB2YWx1ZS5hcnJheSgpLmVuZCgpOyArK2l0KQor
ICAgICAgICAgICAga2V5UGF0aHMtPmFwcGVuZCgqaXQpOworICAgICAgICByZXR1cm4gdG9WOChr
ZXlQYXRocy5yZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgfQorfQor
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJREJBbnkqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBp
ZiAoIWltcGwpCkBAIC03Niw2ICs5MSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElE
QkFueSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsCiAgICAg
ICAgIHJldHVybiB2OFN0cmluZyhpbXBsLT5zdHJpbmcoKSwgaXNvbGF0ZSk7CiAgICAgY2FzZSBJ
REJBbnk6OkludGVnZXJUeXBlOgogICAgICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KGltcGwt
PmludGVnZXIoKSk7CisgICAgY2FzZSBJREJBbnk6OktleVBhdGhUeXBlOgorICAgICAgICByZXR1
cm4gdG9WOChpbXBsLT5rZXlQYXRoKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAg
fQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190590</attachid>
            <date>2013-02-27 13:23:35 -0800</date>
            <delta_ts>2013-02-27 13:53:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111002-20130227131949.patch</filename>
            <type>text/plain</type>
            <size>12178</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRmN2RjOGFlNTI0YWQ2
MzFlZmMxMjE1NGFkMmRlZjNkYTA4ODgzYy4uNjBiM2MzZWFlNmJlNTM5ZjUyNGZlMDg3OTdlZTg0
OTI3YmFhNzg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI3ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEF2
b2lkIFNjcmlwdFZhbHVlIGNvcGllcyBpbiBJREJBbnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYXZvaWRzIHNvbWUgdjggaGFuZGxlIHRocmFz
aGluZyBpbiB0aGUgbG9uZyB0ZXJtLAorICAgICAgICBhbmQgcHJvdGVjdHMgdXMgYWdhaW5zdCBz
b21lIGNyYXNoZXMgaW4gdGhlIHNob3J0IHRlcm0uCisKKyAgICAgICAgVGhlIGNyYXNoZXMgd2ls
bCBiZSBmaXhlZCBpbiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDIwNi4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQW55OjpjcmVhdGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpJREJB
bnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpzY3JpcHRWYWx1ZSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQW55Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmNy
ZWF0ZSk6CisgICAgICAgIChJREJBbnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjprZXlQ
YXRoKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMy0wMi0y
NiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBh
ZGQgYSBib2R5IHRvIHBsYXRmb3JtIHJlcXVlc3QgdW50aWwgbmVjZXNzYXJ5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAppbmRleCA4MTkwNjA2OGMxZWVjYjJm
OTE1M2EyNWQ1NjA1MDQxYmVlZWI2MTFkLi5jYjFlNjNlZDBkMjA5OWI0NzNmNDUzNWFjYzUzNDEy
NGQ1MDhmNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJBbnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5j
cHAKQEAgLTQwLDI2ICs0MCwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8
SURCQW55PiBJREJBbnk6OmNyZWF0ZUludmFsaWQoKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSURCQW55KCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KFVuZGVmaW5lZFR5
cGUpKTsKIH0KIAogUGFzc1JlZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRlTnVsbCgpCiB7Ci0g
ICAgUmVmUHRyPElEQkFueT4gaWRiQW55ID0gYWRvcHRSZWYobmV3IElEQkFueSgpKTsKLSAgICBp
ZGJBbnktPnNldE51bGwoKTsKLSAgICByZXR1cm4gaWRiQW55LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IElEQkFueShOdWxsVHlwZSkpOwogfQogCiBQYXNzUmVmUHRyPElEQkFu
eT4gSURCQW55OjpjcmVhdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBSZWZQ
dHI8SURCQW55PiBpZGJBbnkgPSBhZG9wdFJlZihuZXcgSURCQW55KCkpOwotICAgIGlkYkFueS0+
c2V0KHZhbHVlKTsKLSAgICByZXR1cm4gaWRiQW55LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkFueSh2YWx1ZSkpOwogfQogCi1JREJBbnk6OklEQkFueSgpCi0gICAgOiBt
X3R5cGUoVW5kZWZpbmVkVHlwZSkKK0lEQkFueTo6SURCQW55KFR5cGUgdHlwZSkKKyAgICA6IG1f
dHlwZSh0eXBlKQorICAgICwgbV9pbnRlZ2VyKDApCiB7CisgICAgQVNTRVJUKHR5cGUgPT0gVW5k
ZWZpbmVkVHlwZSB8fCB0eXBlID09IE51bGxUeXBlKTsKIH0KIAogSURCQW55Ojp+SURCQW55KCkK
QEAgLTExNCw3ICsxMTIsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJBbnk6Omlk
YlRyYW5zYWN0aW9uKCkKICAgICByZXR1cm4gbV9pZGJUcmFuc2FjdGlvbjsKIH0KIAotU2NyaXB0
VmFsdWUgSURCQW55OjpzY3JpcHRWYWx1ZSgpCitjb25zdCBTY3JpcHRWYWx1ZSYgSURCQW55Ojpz
Y3JpcHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBTY3JpcHRWYWx1ZVR5cGUpOwog
ICAgIHJldHVybiBtX3NjcmlwdFZhbHVlOwpAQCAtMTMyLDEwOCArMTMwLDg3IEBAIGludDY0X3Qg
SURCQW55OjppbnRlZ2VyKCkKICAgICByZXR1cm4gbV9pbnRlZ2VyOwogfQogCi12b2lkIElEQkFu
eTo6c2V0TnVsbCgpCitJREJBbnk6OklEQkFueShQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHZh
bHVlKQorICAgIDogbV90eXBlKERPTVN0cmluZ0xpc3RUeXBlKQorICAgICwgbV9kb21TdHJpbmdM
aXN0KHZhbHVlKQorICAgICwgbV9pbnRlZ2VyKDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBV
bmRlZmluZWRUeXBlKTsKLSAgICBtX3R5cGUgPSBOdWxsVHlwZTsKIH0KIAotdm9pZCBJREJBbnk6
OnNldChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHZhbHVlKQorSURCQW55OjpJREJBbnkoUGFz
c1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IHZhbHVlKQorICAgIDogbV90eXBlKElEQkN1cnNv
cldpdGhWYWx1ZVR5cGUpCisgICAgLCBtX2lkYkN1cnNvcldpdGhWYWx1ZSh2YWx1ZSkKKyAgICAs
IG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0g
ICAgbV90eXBlID0gRE9NU3RyaW5nTGlzdFR5cGU7Ci0gICAgbV9kb21TdHJpbmdMaXN0ID0gdmFs
dWU7CiB9CiAKLXZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+
IHZhbHVlKQorSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJREJDdXJzb3I+IHZhbHVlKQorICAg
IDogbV90eXBlKElEQkN1cnNvclR5cGUpCisgICAgLCBtX2lkYkN1cnNvcih2YWx1ZSkKKyAgICAs
IG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0g
ICAgbV90eXBlID0gSURCQ3Vyc29yV2l0aFZhbHVlVHlwZTsKLSAgICBtX2lkYkN1cnNvcldpdGhW
YWx1ZSA9IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0KFBhc3NSZWZQdHI8SURCQ3Vyc29y
PiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IHZhbHVlKQor
ICAgIDogbV90eXBlKElEQkRhdGFiYXNlVHlwZSkKKyAgICAsIG1faWRiRGF0YWJhc2UodmFsdWUp
CisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5
cGUpOwotICAgIG1fdHlwZSA9IElEQkN1cnNvclR5cGU7Ci0gICAgbV9pZGJDdXJzb3IgPSB2YWx1
ZTsKIH0KIAotdm9pZCBJREJBbnk6OnNldChQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiB2YWx1ZSkK
K0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCRmFjdG9yeT4gdmFsdWUpCisgICAgOiBtX3R5
cGUoSURCRmFjdG9yeVR5cGUpCisgICAgLCBtX2lkYkZhY3RvcnkodmFsdWUpCisgICAgLCBtX2lu
dGVnZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1f
dHlwZSA9IElEQkRhdGFiYXNlVHlwZTsKLSAgICBtX2lkYkRhdGFiYXNlID0gdmFsdWU7CiB9CiAK
LXZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJGYWN0b3J5PiB2YWx1ZSkKK0lEQkFueTo6
SURCQW55KFBhc3NSZWZQdHI8SURCSW5kZXg+IHZhbHVlKQorICAgIDogbV90eXBlKElEQkluZGV4
VHlwZSkKKyAgICAsIG1faWRiSW5kZXgodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAg
ICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQkZhY3Rv
cnlUeXBlOwotICAgIG1faWRiRmFjdG9yeSA9IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0
KFBhc3NSZWZQdHI8SURCSW5kZXg+IHZhbHVlKQorSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbj4gdmFsdWUpCisgICAgOiBtX3R5cGUoSURCVHJhbnNhY3Rpb25UeXBlKQor
ICAgICwgbV9pZGJUcmFuc2FjdGlvbih2YWx1ZSkKKyAgICAsIG1faW50ZWdlcigwKQogewotICAg
IEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gSURCSW5kZXhU
eXBlOwotICAgIG1faWRiSW5kZXggPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJBbnk6OnNldChQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IHZhbHVlKQorICAgIDogbV90eXBlKElEQk9iamVjdFN0b3JlVHlwZSkK
KyAgICAsIG1faWRiT2JqZWN0U3RvcmUodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAg
ICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQlRyYW5z
YWN0aW9uVHlwZTsKLSAgICBtX2lkYlRyYW5zYWN0aW9uID0gdmFsdWU7CiB9CiAKLXZvaWQgSURC
QW55OjpzZXQoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gdmFsdWUpCitJREJBbnk6OklEQkFu
eShjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCisgICAgOiBtX3R5cGUoU2NyaXB0VmFsdWVUeXBl
KQorICAgICwgbV9zY3JpcHRWYWx1ZSh2YWx1ZSkKKyAgICAsIG1faW50ZWdlcigwKQogewotICAg
IEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gSURCT2JqZWN0
U3RvcmVUeXBlOwotICAgIG1faWRiT2JqZWN0U3RvcmUgPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJB
bnk6OnNldChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCitJREJBbnk6OklEQkFueShjb25zdCBJ
REJLZXlQYXRoJiB2YWx1ZSkKKyAgICA6IG1fdHlwZShLZXlQYXRoVHlwZSkKKyAgICAsIG1faWRi
S2V5UGF0aCh2YWx1ZSkKKyAgICAsIG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUg
PT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gU2NyaXB0VmFsdWVUeXBlOwotICAgIG1f
c2NyaXB0VmFsdWUgPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJBbnk6OnNldChjb25zdCBJREJLZXlQ
YXRoJiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgOiBt
X3R5cGUoU3RyaW5nVHlwZSkKKyAgICAsIG1fc3RyaW5nKHZhbHVlKQorICAgICwgbV9pbnRlZ2Vy
KDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKLSAgICBzd2l0Y2gg
KHZhbHVlLnR5cGUoKSkgewotICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6Ci0gICAgICAg
IG1fdHlwZSA9IE51bGxUeXBlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElEQktleVBhdGg6
OlN0cmluZ1R5cGU6Ci0gICAgICAgIG1fdHlwZSA9IFN0cmluZ1R5cGU7Ci0gICAgICAgIG1fc3Ry
aW5nID0gdmFsdWUuc3RyaW5nKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSURCS2V5UGF0
aDo6QXJyYXlUeXBlOgotICAgICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4ga2V5UGF0aHMgPSBE
T01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKLSAgICAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSB2YWx1ZS5hcnJheSgpLmJlZ2luKCk7IGl0ICE9IHZhbHVlLmFycmF5
KCkuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBrZXlQYXRocy0+YXBwZW5kKCppdCk7Ci0gICAg
ICAgIG1fdHlwZSA9IERPTVN0cmluZ0xpc3RUeXBlOwotICAgICAgICBtX2RvbVN0cmluZ0xpc3Qg
PSBrZXlQYXRocy5yZWxlYXNlKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KIH0KIAotdm9pZCBJ
REJBbnk6OnNldChjb25zdCBTdHJpbmcmIHZhbHVlKQorSURCQW55OjpJREJBbnkoaW50NjRfdCB2
YWx1ZSkKKyAgICA6IG1fdHlwZShJbnRlZ2VyVHlwZSkKKyAgICAsIG1faW50ZWdlcih2YWx1ZSkK
IHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IFN0
cmluZ1R5cGU7Ci0gICAgbV9zdHJpbmcgPSB2YWx1ZTsKLX0KLQotdm9pZCBJREJBbnk6OnNldChp
bnQ2NF90IHZhbHVlKQotewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0g
ICAgbV90eXBlID0gSW50ZWdlclR5cGU7Ci0gICAgbV9pbnRlZ2VyID0gdmFsdWU7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkFueS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QW55LmgKaW5kZXggMTZjMmJiOTY3ZDVhMTA4Mzc5NTA0OGEzMTgyNGYwMjZlNzZhMDE4MC4uMDgy
ZDVkMGYxZjc3NjNlM2FmNDhmMDE1MjFiMzYzMjQ4ZmQwMmI0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU1LDI5ICs1NiwyMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZShUKiBp
ZGJPYmplY3QpCiAgICAgewotICAgICAgICBSZWZQdHI8SURCQW55PiBhbnkgPSBJREJBbnk6OmNy
ZWF0ZUludmFsaWQoKTsKLSAgICAgICAgYW55LT5zZXQoaWRiT2JqZWN0KTsKLSAgICAgICAgcmV0
dXJuIGFueS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KGlk
Yk9iamVjdCkpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkFueT4gY3JlYXRlKGNvbnN0IFQmIGlkYk9iamVjdCkKICAgICB7Ci0gICAg
ICAgIFJlZlB0cjxJREJBbnk+IGFueSA9IElEQkFueTo6Y3JlYXRlSW52YWxpZCgpOwotICAgICAg
ICBhbnktPnNldChpZGJPYmplY3QpOwotICAgICAgICByZXR1cm4gYW55LnJlbGVhc2UoKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJBbnkoaWRiT2JqZWN0KSk7CiAgICAgfQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVh
dGUoUGFzc1JlZlB0cjxUPiBpZGJPYmplY3QpCiAgICAgewotICAgICAgICBSZWZQdHI8SURCQW55
PiBhbnkgPSBJREJBbnk6OmNyZWF0ZUludmFsaWQoKTsKLSAgICAgICAgYW55LT5zZXQoaWRiT2Jq
ZWN0KTsKLSAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCQW55KGlkYk9iamVjdCkpOwogICAgIH0KICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJBbnk+IGNyZWF0ZShpbnQ2NF90IHZhbHVlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPElE
QkFueT4gYW55ID0gSURCQW55OjpjcmVhdGVJbnZhbGlkKCk7Ci0gICAgICAgIGFueS0+c2V0KHZh
bHVlKTsKLSAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCQW55KHZhbHVlKSk7CiAgICAgfQogICAgIH5JREJBbnkoKTsKIApAQCAtOTUs
NiArODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNjcmlwdFZhbHVlVHlwZSwKICAgICAgICAgSW50
ZWdlclR5cGUsCiAgICAgICAgIFN0cmluZ1R5cGUsCisgICAgICAgIEtleVBhdGhUeXBlLAogICAg
IH07CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTEwNyw0
MiArMTAxLDQxIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpZGJJbmRleCgp
OwogICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKCk7CiAgICAg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gaWRiVHJhbnNhY3Rpb24oKTsKLSAgICBTY3JpcHRW
YWx1ZSBzY3JpcHRWYWx1ZSgpOworICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSgp
OwogICAgIGludDY0X3QgaW50ZWdlcigpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCk7Ci0K
LSAgICAvLyBTZXQgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuCi0gICAgdm9pZCBzZXROdWxsKCk7
Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7Ci0gICAgdm9pZCBzZXQo
UGFzc1JlZlB0cjxJREJDdXJzb3I+KTsKLSAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQkN1cnNv
cldpdGhWYWx1ZT4pOwotICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+KTsKLSAg
ICB2b2lkIHNldChQYXNzUmVmUHRyPElEQkZhY3Rvcnk+KTsKLSAgICB2b2lkIHNldChQYXNzUmVm
UHRyPElEQkluZGV4Pik7Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4p
OwotICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+KTsKLSAgICB2b2lkIHNl
dChjb25zdCBJREJLZXlQYXRoJik7Ci0gICAgdm9pZCBzZXQoY29uc3QgU3RyaW5nJik7Ci0gICAg
dm9pZCBzZXQoY29uc3QgU2NyaXB0VmFsdWUmKTsKLSAgICB2b2lkIHNldChpbnQ2NF90KTsKKyAg
ICBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKCkgeyByZXR1cm4gbV9pZGJLZXlQYXRoOyB9Owog
CiBwcml2YXRlOgotICAgIElEQkFueSgpOworICAgIElEQkFueShUeXBlKTsKKyAgICBJREJBbnko
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7CisgICAgSURCQW55KFBhc3NSZWZQdHI8SURCQ3Vy
c29yPik7CisgICAgSURCQW55KFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPik7CisgICAg
SURCQW55KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+KTsKKyAgICBJREJBbnkoUGFzc1JlZlB0cjxJ
REJGYWN0b3J5Pik7CisgICAgSURCQW55KFBhc3NSZWZQdHI8SURCSW5kZXg+KTsKKyAgICBJREJB
bnkoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4pOworICAgIElEQkFueShQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uPik7CisgICAgSURCQW55KGNvbnN0IElEQktleVBhdGgmKTsKKyAgICBJREJB
bnkoY29uc3QgU3RyaW5nJik7CisgICAgSURCQW55KGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAg
SURCQW55KGludDY0X3QpOwogCi0gICAgVHlwZSBtX3R5cGU7CisgICAgY29uc3QgVHlwZSBtX3R5
cGU7CiAKICAgICAvLyBPbmx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHNob3VsZCBldmVyIGJlIGlu
IHVzZSBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbV9kb21T
dHJpbmdMaXN0OwotICAgIFJlZlB0cjxJREJDdXJzb3I+IG1faWRiQ3Vyc29yOwotICAgIFJlZlB0
cjxJREJDdXJzb3JXaXRoVmFsdWU+IG1faWRiQ3Vyc29yV2l0aFZhbHVlOwotICAgIFJlZlB0cjxJ
REJEYXRhYmFzZT4gbV9pZGJEYXRhYmFzZTsKLSAgICBSZWZQdHI8SURCRmFjdG9yeT4gbV9pZGJG
YWN0b3J5OwotICAgIFJlZlB0cjxJREJJbmRleD4gbV9pZGJJbmRleDsKLSAgICBSZWZQdHI8SURC
T2JqZWN0U3RvcmU+IG1faWRiT2JqZWN0U3RvcmU7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBtX2lkYlRyYW5zYWN0aW9uOwotICAgIFNjcmlwdFZhbHVlIG1fc2NyaXB0VmFsdWU7Ci0gICAg
U3RyaW5nIG1fc3RyaW5nOwotICAgIGludDY0X3QgbV9pbnRlZ2VyOworICAgIGNvbnN0IFJlZlB0
cjxET01TdHJpbmdMaXN0PiBtX2RvbVN0cmluZ0xpc3Q7CisgICAgY29uc3QgUmVmUHRyPElEQkN1
cnNvcj4gbV9pZGJDdXJzb3I7CisgICAgY29uc3QgUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4g
bV9pZGJDdXJzb3JXaXRoVmFsdWU7CisgICAgY29uc3QgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2lk
YkRhdGFiYXNlOworICAgIGNvbnN0IFJlZlB0cjxJREJGYWN0b3J5PiBtX2lkYkZhY3Rvcnk7Cisg
ICAgY29uc3QgUmVmUHRyPElEQkluZGV4PiBtX2lkYkluZGV4OworICAgIGNvbnN0IFJlZlB0cjxJ
REJPYmplY3RTdG9yZT4gbV9pZGJPYmplY3RTdG9yZTsKKyAgICBjb25zdCBSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IG1faWRiVHJhbnNhY3Rpb247CisgICAgY29uc3QgSURCS2V5UGF0aCBtX2lkYktl
eVBhdGg7CisgICAgY29uc3QgU2NyaXB0VmFsdWUgbV9zY3JpcHRWYWx1ZTsKKyAgICBjb25zdCBT
dHJpbmcgbV9zdHJpbmc7CisgICAgY29uc3QgaW50NjRfdCBtX2ludGVnZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAppbmRleCBjZjQwNjRmZGQ1MjgzMDcyNzI4ZTk5ODlh
ZGE2Mzc2ZmUyYzY2MWNkLi44MmZiYjhmZTQ5ZTAxMzk0YWNkNzI1MDNlNGVhYTc5ODIxZTIxYzg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFu
eUN1c3RvbS5jcHAKQEAgLTQ0LDYgKzQ0LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KGNvbnN0IElEQktleVBhdGgmIHZhbHVl
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCit7CisgICAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsKKyAgICBjYXNlIElEQktleVBh
dGg6Ok51bGxUeXBlOgorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwor
ICAgIGNhc2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKKyAgICAgICAgcmV0dXJuIHY4U3RyaW5n
KHZhbHVlLnN0cmluZygpLCBpc29sYXRlKTsKKyAgICBjYXNlIElEQktleVBhdGg6OkFycmF5VHlw
ZToKKyAgICAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGtleVBhdGhzID0gRE9NU3RyaW5nTGlz
dDo6Y3JlYXRlKCk7CisgICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gdmFsdWUuYXJyYXkoKS5iZWdpbigpOyBpdCAhPSB2YWx1ZS5hcnJheSgpLmVuZCgpOyAr
K2l0KQorICAgICAgICAgICAga2V5UGF0aHMtPmFwcGVuZCgqaXQpOworICAgICAgICByZXR1cm4g
dG9WOChrZXlQYXRocy5yZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAg
fQorfQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJREJBbnkqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsK
ICAgICBpZiAoIWltcGwpCkBAIC03Niw2ICs5MSw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KElEQkFueSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
CiAgICAgICAgIHJldHVybiB2OFN0cmluZyhpbXBsLT5zdHJpbmcoKSwgaXNvbGF0ZSk7CiAgICAg
Y2FzZSBJREJBbnk6OkludGVnZXJUeXBlOgogICAgICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3
KGltcGwtPmludGVnZXIoKSk7CisgICAgY2FzZSBJREJBbnk6OktleVBhdGhUeXBlOgorICAgICAg
ICByZXR1cm4gdG9WOChpbXBsLT5rZXlQYXRoKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190597</attachid>
            <date>2013-02-27 13:53:50 -0800</date>
            <delta_ts>2013-03-01 14:56:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111002-20130227135003.patch</filename>
            <type>text/plain</type>
            <size>12234</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRmN2RjOGFlNTI0YWQ2
MzFlZmMxMjE1NGFkMmRlZjNkYTA4ODgzYy4uNjBiM2MzZWFlNmJlNTM5ZjUyNGZlMDg3OTdlZTg0
OTI3YmFhNzg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI3ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEF2
b2lkIFNjcmlwdFZhbHVlIGNvcGllcyBpbiBJREJBbnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYXZvaWRzIHNvbWUgdjggaGFuZGxlIHRocmFz
aGluZyBpbiB0aGUgbG9uZyB0ZXJtLAorICAgICAgICBhbmQgcHJvdGVjdHMgdXMgYWdhaW5zdCBz
b21lIGNyYXNoZXMgaW4gdGhlIHNob3J0IHRlcm0uCisKKyAgICAgICAgVGhlIGNyYXNoZXMgd2ls
bCBiZSBmaXhlZCBpbiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMDIwNi4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmNyZWF0ZU51bGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQW55OjpjcmVhdGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpJREJB
bnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpzY3JpcHRWYWx1ZSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQW55Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmNy
ZWF0ZSk6CisgICAgICAgIChJREJBbnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjprZXlQ
YXRoKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMy0wMi0y
NiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBh
ZGQgYSBib2R5IHRvIHBsYXRmb3JtIHJlcXVlc3QgdW50aWwgbmVjZXNzYXJ5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAppbmRleCA4MTkwNjA2OGMxZWVjYjJm
OTE1M2EyNWQ1NjA1MDQxYmVlZWI2MTFkLi5jYjFlNjNlZDBkMjA5OWI0NzNmNDUzNWFjYzUzNDEy
NGQ1MDhmNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJBbnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5j
cHAKQEAgLTQwLDI2ICs0MCwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8
SURCQW55PiBJREJBbnk6OmNyZWF0ZUludmFsaWQoKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSURCQW55KCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KFVuZGVmaW5lZFR5
cGUpKTsKIH0KIAogUGFzc1JlZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRlTnVsbCgpCiB7Ci0g
ICAgUmVmUHRyPElEQkFueT4gaWRiQW55ID0gYWRvcHRSZWYobmV3IElEQkFueSgpKTsKLSAgICBp
ZGJBbnktPnNldE51bGwoKTsKLSAgICByZXR1cm4gaWRiQW55LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IElEQkFueShOdWxsVHlwZSkpOwogfQogCiBQYXNzUmVmUHRyPElEQkFu
eT4gSURCQW55OjpjcmVhdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBSZWZQ
dHI8SURCQW55PiBpZGJBbnkgPSBhZG9wdFJlZihuZXcgSURCQW55KCkpOwotICAgIGlkYkFueS0+
c2V0KHZhbHVlKTsKLSAgICByZXR1cm4gaWRiQW55LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkFueSh2YWx1ZSkpOwogfQogCi1JREJBbnk6OklEQkFueSgpCi0gICAgOiBt
X3R5cGUoVW5kZWZpbmVkVHlwZSkKK0lEQkFueTo6SURCQW55KFR5cGUgdHlwZSkKKyAgICA6IG1f
dHlwZSh0eXBlKQorICAgICwgbV9pbnRlZ2VyKDApCiB7CisgICAgQVNTRVJUKHR5cGUgPT0gVW5k
ZWZpbmVkVHlwZSB8fCB0eXBlID09IE51bGxUeXBlKTsKIH0KIAogSURCQW55Ojp+SURCQW55KCkK
QEAgLTExNCw3ICsxMTIsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJBbnk6Omlk
YlRyYW5zYWN0aW9uKCkKICAgICByZXR1cm4gbV9pZGJUcmFuc2FjdGlvbjsKIH0KIAotU2NyaXB0
VmFsdWUgSURCQW55OjpzY3JpcHRWYWx1ZSgpCitjb25zdCBTY3JpcHRWYWx1ZSYgSURCQW55Ojpz
Y3JpcHRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBTY3JpcHRWYWx1ZVR5cGUpOwog
ICAgIHJldHVybiBtX3NjcmlwdFZhbHVlOwpAQCAtMTMyLDEwOCArMTMwLDg3IEBAIGludDY0X3Qg
SURCQW55OjppbnRlZ2VyKCkKICAgICByZXR1cm4gbV9pbnRlZ2VyOwogfQogCi12b2lkIElEQkFu
eTo6c2V0TnVsbCgpCitJREJBbnk6OklEQkFueShQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHZh
bHVlKQorICAgIDogbV90eXBlKERPTVN0cmluZ0xpc3RUeXBlKQorICAgICwgbV9kb21TdHJpbmdM
aXN0KHZhbHVlKQorICAgICwgbV9pbnRlZ2VyKDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBV
bmRlZmluZWRUeXBlKTsKLSAgICBtX3R5cGUgPSBOdWxsVHlwZTsKIH0KIAotdm9pZCBJREJBbnk6
OnNldChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHZhbHVlKQorSURCQW55OjpJREJBbnkoUGFz
c1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IHZhbHVlKQorICAgIDogbV90eXBlKElEQkN1cnNv
cldpdGhWYWx1ZVR5cGUpCisgICAgLCBtX2lkYkN1cnNvcldpdGhWYWx1ZSh2YWx1ZSkKKyAgICAs
IG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0g
ICAgbV90eXBlID0gRE9NU3RyaW5nTGlzdFR5cGU7Ci0gICAgbV9kb21TdHJpbmdMaXN0ID0gdmFs
dWU7CiB9CiAKLXZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+
IHZhbHVlKQorSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJREJDdXJzb3I+IHZhbHVlKQorICAg
IDogbV90eXBlKElEQkN1cnNvclR5cGUpCisgICAgLCBtX2lkYkN1cnNvcih2YWx1ZSkKKyAgICAs
IG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0g
ICAgbV90eXBlID0gSURCQ3Vyc29yV2l0aFZhbHVlVHlwZTsKLSAgICBtX2lkYkN1cnNvcldpdGhW
YWx1ZSA9IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0KFBhc3NSZWZQdHI8SURCQ3Vyc29y
PiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IHZhbHVlKQor
ICAgIDogbV90eXBlKElEQkRhdGFiYXNlVHlwZSkKKyAgICAsIG1faWRiRGF0YWJhc2UodmFsdWUp
CisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5
cGUpOwotICAgIG1fdHlwZSA9IElEQkN1cnNvclR5cGU7Ci0gICAgbV9pZGJDdXJzb3IgPSB2YWx1
ZTsKIH0KIAotdm9pZCBJREJBbnk6OnNldChQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiB2YWx1ZSkK
K0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCRmFjdG9yeT4gdmFsdWUpCisgICAgOiBtX3R5
cGUoSURCRmFjdG9yeVR5cGUpCisgICAgLCBtX2lkYkZhY3RvcnkodmFsdWUpCisgICAgLCBtX2lu
dGVnZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1f
dHlwZSA9IElEQkRhdGFiYXNlVHlwZTsKLSAgICBtX2lkYkRhdGFiYXNlID0gdmFsdWU7CiB9CiAK
LXZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJGYWN0b3J5PiB2YWx1ZSkKK0lEQkFueTo6
SURCQW55KFBhc3NSZWZQdHI8SURCSW5kZXg+IHZhbHVlKQorICAgIDogbV90eXBlKElEQkluZGV4
VHlwZSkKKyAgICAsIG1faWRiSW5kZXgodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAg
ICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQkZhY3Rv
cnlUeXBlOwotICAgIG1faWRiRmFjdG9yeSA9IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0
KFBhc3NSZWZQdHI8SURCSW5kZXg+IHZhbHVlKQorSURCQW55OjpJREJBbnkoUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbj4gdmFsdWUpCisgICAgOiBtX3R5cGUoSURCVHJhbnNhY3Rpb25UeXBlKQor
ICAgICwgbV9pZGJUcmFuc2FjdGlvbih2YWx1ZSkKKyAgICAsIG1faW50ZWdlcigwKQogewotICAg
IEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gSURCSW5kZXhU
eXBlOwotICAgIG1faWRiSW5kZXggPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJBbnk6OnNldChQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IHZhbHVlKQorICAgIDogbV90eXBlKElEQk9iamVjdFN0b3JlVHlwZSkK
KyAgICAsIG1faWRiT2JqZWN0U3RvcmUodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAg
ICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQlRyYW5z
YWN0aW9uVHlwZTsKLSAgICBtX2lkYlRyYW5zYWN0aW9uID0gdmFsdWU7CiB9CiAKLXZvaWQgSURC
QW55OjpzZXQoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gdmFsdWUpCitJREJBbnk6OklEQkFu
eShjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCisgICAgOiBtX3R5cGUoU2NyaXB0VmFsdWVUeXBl
KQorICAgICwgbV9zY3JpcHRWYWx1ZSh2YWx1ZSkKKyAgICAsIG1faW50ZWdlcigwKQogewotICAg
IEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gSURCT2JqZWN0
U3RvcmVUeXBlOwotICAgIG1faWRiT2JqZWN0U3RvcmUgPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJB
bnk6OnNldChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCitJREJBbnk6OklEQkFueShjb25zdCBJ
REJLZXlQYXRoJiB2YWx1ZSkKKyAgICA6IG1fdHlwZShLZXlQYXRoVHlwZSkKKyAgICAsIG1faWRi
S2V5UGF0aCh2YWx1ZSkKKyAgICAsIG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUg
PT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gU2NyaXB0VmFsdWVUeXBlOwotICAgIG1f
c2NyaXB0VmFsdWUgPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJBbnk6OnNldChjb25zdCBJREJLZXlQ
YXRoJiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgOiBt
X3R5cGUoU3RyaW5nVHlwZSkKKyAgICAsIG1fc3RyaW5nKHZhbHVlKQorICAgICwgbV9pbnRlZ2Vy
KDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKLSAgICBzd2l0Y2gg
KHZhbHVlLnR5cGUoKSkgewotICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6Ci0gICAgICAg
IG1fdHlwZSA9IE51bGxUeXBlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElEQktleVBhdGg6
OlN0cmluZ1R5cGU6Ci0gICAgICAgIG1fdHlwZSA9IFN0cmluZ1R5cGU7Ci0gICAgICAgIG1fc3Ry
aW5nID0gdmFsdWUuc3RyaW5nKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSURCS2V5UGF0
aDo6QXJyYXlUeXBlOgotICAgICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4ga2V5UGF0aHMgPSBE
T01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKLSAgICAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSB2YWx1ZS5hcnJheSgpLmJlZ2luKCk7IGl0ICE9IHZhbHVlLmFycmF5
KCkuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBrZXlQYXRocy0+YXBwZW5kKCppdCk7Ci0gICAg
ICAgIG1fdHlwZSA9IERPTVN0cmluZ0xpc3RUeXBlOwotICAgICAgICBtX2RvbVN0cmluZ0xpc3Qg
PSBrZXlQYXRocy5yZWxlYXNlKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KIH0KIAotdm9pZCBJ
REJBbnk6OnNldChjb25zdCBTdHJpbmcmIHZhbHVlKQorSURCQW55OjpJREJBbnkoaW50NjRfdCB2
YWx1ZSkKKyAgICA6IG1fdHlwZShJbnRlZ2VyVHlwZSkKKyAgICAsIG1faW50ZWdlcih2YWx1ZSkK
IHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IFN0
cmluZ1R5cGU7Ci0gICAgbV9zdHJpbmcgPSB2YWx1ZTsKLX0KLQotdm9pZCBJREJBbnk6OnNldChp
bnQ2NF90IHZhbHVlKQotewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0g
ICAgbV90eXBlID0gSW50ZWdlclR5cGU7Ci0gICAgbV9pbnRlZ2VyID0gdmFsdWU7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkFueS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QW55LmgKaW5kZXggMTZjMmJiOTY3ZDVhMTA4Mzc5NTA0OGEzMTgyNGYwMjZlNzZhMDE4MC4uMDgy
ZDVkMGYxZjc3NjNlM2FmNDhmMDE1MjFiMzYzMjQ4ZmQwMmI0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU1LDI5ICs1NiwyMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZShUKiBp
ZGJPYmplY3QpCiAgICAgewotICAgICAgICBSZWZQdHI8SURCQW55PiBhbnkgPSBJREJBbnk6OmNy
ZWF0ZUludmFsaWQoKTsKLSAgICAgICAgYW55LT5zZXQoaWRiT2JqZWN0KTsKLSAgICAgICAgcmV0
dXJuIGFueS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KGlk
Yk9iamVjdCkpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkFueT4gY3JlYXRlKGNvbnN0IFQmIGlkYk9iamVjdCkKICAgICB7Ci0gICAg
ICAgIFJlZlB0cjxJREJBbnk+IGFueSA9IElEQkFueTo6Y3JlYXRlSW52YWxpZCgpOwotICAgICAg
ICBhbnktPnNldChpZGJPYmplY3QpOwotICAgICAgICByZXR1cm4gYW55LnJlbGVhc2UoKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJBbnkoaWRiT2JqZWN0KSk7CiAgICAgfQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVh
dGUoUGFzc1JlZlB0cjxUPiBpZGJPYmplY3QpCiAgICAgewotICAgICAgICBSZWZQdHI8SURCQW55
PiBhbnkgPSBJREJBbnk6OmNyZWF0ZUludmFsaWQoKTsKLSAgICAgICAgYW55LT5zZXQoaWRiT2Jq
ZWN0KTsKLSAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCQW55KGlkYk9iamVjdCkpOwogICAgIH0KICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJBbnk+IGNyZWF0ZShpbnQ2NF90IHZhbHVlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPElE
QkFueT4gYW55ID0gSURCQW55OjpjcmVhdGVJbnZhbGlkKCk7Ci0gICAgICAgIGFueS0+c2V0KHZh
bHVlKTsKLSAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCQW55KHZhbHVlKSk7CiAgICAgfQogICAgIH5JREJBbnkoKTsKIApAQCAtOTUs
NiArODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNjcmlwdFZhbHVlVHlwZSwKICAgICAgICAgSW50
ZWdlclR5cGUsCiAgICAgICAgIFN0cmluZ1R5cGUsCisgICAgICAgIEtleVBhdGhUeXBlLAogICAg
IH07CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTEwNyw0
MiArMTAxLDQxIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBpZGJJbmRleCgp
OwogICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3JlKCk7CiAgICAg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gaWRiVHJhbnNhY3Rpb24oKTsKLSAgICBTY3JpcHRW
YWx1ZSBzY3JpcHRWYWx1ZSgpOworICAgIGNvbnN0IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSgp
OwogICAgIGludDY0X3QgaW50ZWdlcigpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCk7Ci0K
LSAgICAvLyBTZXQgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuCi0gICAgdm9pZCBzZXROdWxsKCk7
Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7Ci0gICAgdm9pZCBzZXQo
UGFzc1JlZlB0cjxJREJDdXJzb3I+KTsKLSAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQkN1cnNv
cldpdGhWYWx1ZT4pOwotICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+KTsKLSAg
ICB2b2lkIHNldChQYXNzUmVmUHRyPElEQkZhY3Rvcnk+KTsKLSAgICB2b2lkIHNldChQYXNzUmVm
UHRyPElEQkluZGV4Pik7Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4p
OwotICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+KTsKLSAgICB2b2lkIHNl
dChjb25zdCBJREJLZXlQYXRoJik7Ci0gICAgdm9pZCBzZXQoY29uc3QgU3RyaW5nJik7Ci0gICAg
dm9pZCBzZXQoY29uc3QgU2NyaXB0VmFsdWUmKTsKLSAgICB2b2lkIHNldChpbnQ2NF90KTsKKyAg
ICBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKCkgeyByZXR1cm4gbV9pZGJLZXlQYXRoOyB9Owog
CiBwcml2YXRlOgotICAgIElEQkFueSgpOworICAgIElEQkFueShUeXBlKTsKKyAgICBJREJBbnko
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7CisgICAgSURCQW55KFBhc3NSZWZQdHI8SURCQ3Vy
c29yPik7CisgICAgSURCQW55KFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPik7CisgICAg
SURCQW55KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+KTsKKyAgICBJREJBbnkoUGFzc1JlZlB0cjxJ
REJGYWN0b3J5Pik7CisgICAgSURCQW55KFBhc3NSZWZQdHI8SURCSW5kZXg+KTsKKyAgICBJREJB
bnkoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4pOworICAgIElEQkFueShQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uPik7CisgICAgSURCQW55KGNvbnN0IElEQktleVBhdGgmKTsKKyAgICBJREJB
bnkoY29uc3QgU3RyaW5nJik7CisgICAgSURCQW55KGNvbnN0IFNjcmlwdFZhbHVlJik7CisgICAg
SURCQW55KGludDY0X3QpOwogCi0gICAgVHlwZSBtX3R5cGU7CisgICAgY29uc3QgVHlwZSBtX3R5
cGU7CiAKICAgICAvLyBPbmx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHNob3VsZCBldmVyIGJlIGlu
IHVzZSBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbV9kb21T
dHJpbmdMaXN0OwotICAgIFJlZlB0cjxJREJDdXJzb3I+IG1faWRiQ3Vyc29yOwotICAgIFJlZlB0
cjxJREJDdXJzb3JXaXRoVmFsdWU+IG1faWRiQ3Vyc29yV2l0aFZhbHVlOwotICAgIFJlZlB0cjxJ
REJEYXRhYmFzZT4gbV9pZGJEYXRhYmFzZTsKLSAgICBSZWZQdHI8SURCRmFjdG9yeT4gbV9pZGJG
YWN0b3J5OwotICAgIFJlZlB0cjxJREJJbmRleD4gbV9pZGJJbmRleDsKLSAgICBSZWZQdHI8SURC
T2JqZWN0U3RvcmU+IG1faWRiT2JqZWN0U3RvcmU7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBtX2lkYlRyYW5zYWN0aW9uOwotICAgIFNjcmlwdFZhbHVlIG1fc2NyaXB0VmFsdWU7Ci0gICAg
U3RyaW5nIG1fc3RyaW5nOwotICAgIGludDY0X3QgbV9pbnRlZ2VyOworICAgIGNvbnN0IFJlZlB0
cjxET01TdHJpbmdMaXN0PiBtX2RvbVN0cmluZ0xpc3Q7CisgICAgY29uc3QgUmVmUHRyPElEQkN1
cnNvcj4gbV9pZGJDdXJzb3I7CisgICAgY29uc3QgUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4g
bV9pZGJDdXJzb3JXaXRoVmFsdWU7CisgICAgY29uc3QgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2lk
YkRhdGFiYXNlOworICAgIGNvbnN0IFJlZlB0cjxJREJGYWN0b3J5PiBtX2lkYkZhY3Rvcnk7Cisg
ICAgY29uc3QgUmVmUHRyPElEQkluZGV4PiBtX2lkYkluZGV4OworICAgIGNvbnN0IFJlZlB0cjxJ
REJPYmplY3RTdG9yZT4gbV9pZGJPYmplY3RTdG9yZTsKKyAgICBjb25zdCBSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IG1faWRiVHJhbnNhY3Rpb247CisgICAgY29uc3QgSURCS2V5UGF0aCBtX2lkYktl
eVBhdGg7CisgICAgY29uc3QgU2NyaXB0VmFsdWUgbV9zY3JpcHRWYWx1ZTsKKyAgICBjb25zdCBT
dHJpbmcgbV9zdHJpbmc7CisgICAgY29uc3QgaW50NjRfdCBtX2ludGVnZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAppbmRleCBjZjQwNjRmZGQ1MjgzMDcyNzI4ZTk5ODlh
ZGE2Mzc2ZmUyYzY2MWNkLi5lMTE5ZWU1YmYwMTdjYmI1NDVmYTI0MzhlMTE1MmJjYzVjZjY2YjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFu
eUN1c3RvbS5jcHAKQEAgLTQ0LDYgKzQ0LDIzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KGNvbnN0IElEQktleVBhdGgmIHZhbHVl
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCit7CisgICAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsKKyAgICBjYXNlIElEQktleVBh
dGg6Ok51bGxUeXBlOgorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwor
ICAgIGNhc2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKKyAgICAgICAgcmV0dXJuIHY4U3RyaW5n
KHZhbHVlLnN0cmluZygpLCBpc29sYXRlKTsKKyAgICBjYXNlIElEQktleVBhdGg6OkFycmF5VHlw
ZToKKyAgICAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGtleVBhdGhzID0gRE9NU3RyaW5nTGlz
dDo6Y3JlYXRlKCk7CisgICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gdmFsdWUuYXJyYXkoKS5iZWdpbigpOyBpdCAhPSB2YWx1ZS5hcnJheSgpLmVuZCgpOyAr
K2l0KQorICAgICAgICAgICAga2V5UGF0aHMtPmFwcGVuZCgqaXQpOworICAgICAgICByZXR1cm4g
dG9WOChrZXlQYXRocy5yZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAg
fQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewog
ICAgIGlmICghaW1wbCkKQEAgLTc2LDYgKzkzLDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjgoSURCQW55KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwK
ICAgICAgICAgcmV0dXJuIHY4U3RyaW5nKGltcGwtPnN0cmluZygpLCBpc29sYXRlKTsKICAgICBj
YXNlIElEQkFueTo6SW50ZWdlclR5cGU6CiAgICAgICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXco
aW1wbC0+aW50ZWdlcigpKTsKKyAgICBjYXNlIElEQkFueTo6S2V5UGF0aFR5cGU6CisgICAgICAg
IHJldHVybiB0b1Y4KGltcGwtPmtleVBhdGgoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
ICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191044</attachid>
            <date>2013-03-01 14:55:33 -0800</date>
            <delta_ts>2013-03-01 17:06:26 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-111002-20130301145144.patch</filename>
            <type>text/plain</type>
            <size>12334</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWYxYWVhMTliMjc0OTJh
Nzk4MDNlZWJjYTU4NzQxMjlkMDgzNWQ1NC4uZWZhMTVhYzQ4YjI0NTEwYzdiMTQ0NTZmMDY4MDM5
N2Y2ZGRjNjE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI3ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEF2
b2lkIFNjcmlwdFZhbHVlIGNvcGllcyBpbiBJREJBbnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCisKKyAgICAgICAgVGhpcyBhdm9pZHMgc29tZSB2OCBoYW5kbGUgdGhyYXNoaW5n
IGluIHRoZSBsb25nIHRlcm0sCisgICAgICAgIGFuZCBwcm90ZWN0cyB1cyBhZ2FpbnN0IHNvbWUg
Y3Jhc2hlcyBpbiB0aGUgc2hvcnQgdGVybS4KKworICAgICAgICBUaGUgY3Jhc2hlcyB3aWxsIGJl
IGZpeGVkIGluIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEwMjA2LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkFueTo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJBbnk6OmNyZWF0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OklEQkFueSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OnNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJBbnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkFueTo6Y3JlYXRl
KToKKyAgICAgICAgKElEQkFueSk6CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmtleVBhdGgp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEzLTAzLTAxICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTQ0NDQzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkFueS5jcHAKaW5kZXggODE5MDYwNjhjMWVlY2IyZjkxNTNhMjVkNTYwNTA0MWJl
ZWViNjExZC4uY2IxZTYzZWQwZDIwOTliNDczZjQ1MzVhY2M1MzQxMjRkNTA4ZjVkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCkBAIC00MCwyNiArNDAs
MjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPElEQkFueT4gSURCQW55Ojpj
cmVhdGVJbnZhbGlkKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkFueSgpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkFueShVbmRlZmluZWRUeXBlKSk7CiB9CiAKIFBhc3NS
ZWZQdHI8SURCQW55PiBJREJBbnk6OmNyZWF0ZU51bGwoKQogewotICAgIFJlZlB0cjxJREJBbnk+
IGlkYkFueSA9IGFkb3B0UmVmKG5ldyBJREJBbnkoKSk7Ci0gICAgaWRiQW55LT5zZXROdWxsKCk7
Ci0gICAgcmV0dXJuIGlkYkFueS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
REJBbnkoTnVsbFR5cGUpKTsKIH0KIAogUGFzc1JlZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRl
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPElEQkFueT4gaWRiQW55
ID0gYWRvcHRSZWYobmV3IElEQkFueSgpKTsKLSAgICBpZGJBbnktPnNldCh2YWx1ZSk7Ci0gICAg
cmV0dXJuIGlkYkFueS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJBbnko
dmFsdWUpKTsKIH0KIAotSURCQW55OjpJREJBbnkoKQotICAgIDogbV90eXBlKFVuZGVmaW5lZFR5
cGUpCitJREJBbnk6OklEQkFueShUeXBlIHR5cGUpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAs
IG1faW50ZWdlcigwKQogeworICAgIEFTU0VSVCh0eXBlID09IFVuZGVmaW5lZFR5cGUgfHwgdHlw
ZSA9PSBOdWxsVHlwZSk7CiB9CiAKIElEQkFueTo6fklEQkFueSgpCkBAIC0xMTQsNyArMTEyLDcg
QEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCQW55OjppZGJUcmFuc2FjdGlvbigpCiAg
ICAgcmV0dXJuIG1faWRiVHJhbnNhY3Rpb247CiB9CiAKLVNjcmlwdFZhbHVlIElEQkFueTo6c2Ny
aXB0VmFsdWUoKQorY29uc3QgU2NyaXB0VmFsdWUmIElEQkFueTo6c2NyaXB0VmFsdWUoKQogewog
ICAgIEFTU0VSVChtX3R5cGUgPT0gU2NyaXB0VmFsdWVUeXBlKTsKICAgICByZXR1cm4gbV9zY3Jp
cHRWYWx1ZTsKQEAgLTEzMiwxMDggKzEzMCw4NyBAQCBpbnQ2NF90IElEQkFueTo6aW50ZWdlcigp
CiAgICAgcmV0dXJuIG1faW50ZWdlcjsKIH0KIAotdm9pZCBJREJBbnk6OnNldE51bGwoKQorSURC
QW55OjpJREJBbnkoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB2YWx1ZSkKKyAgICA6IG1fdHlw
ZShET01TdHJpbmdMaXN0VHlwZSkKKyAgICAsIG1fZG9tU3RyaW5nTGlzdCh2YWx1ZSkKKyAgICAs
IG1faW50ZWdlcigwKQogewotICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0g
ICAgbV90eXBlID0gTnVsbFR5cGU7CiB9CiAKLXZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxE
T01TdHJpbmdMaXN0PiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCQ3Vyc29y
V2l0aFZhbHVlPiB2YWx1ZSkKKyAgICA6IG1fdHlwZShJREJDdXJzb3JXaXRoVmFsdWVUeXBlKQor
ICAgICwgbV9pZGJDdXJzb3JXaXRoVmFsdWUodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsK
LSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IERPTVN0
cmluZ0xpc3RUeXBlOwotICAgIG1fZG9tU3RyaW5nTGlzdCA9IHZhbHVlOwogfQogCi12b2lkIElE
QkFueTo6c2V0KFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiB2YWx1ZSkKK0lEQkFueTo6
SURCQW55KFBhc3NSZWZQdHI8SURCQ3Vyc29yPiB2YWx1ZSkKKyAgICA6IG1fdHlwZShJREJDdXJz
b3JUeXBlKQorICAgICwgbV9pZGJDdXJzb3IodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsK
LSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQkN1
cnNvcldpdGhWYWx1ZVR5cGU7Ci0gICAgbV9pZGJDdXJzb3JXaXRoVmFsdWUgPSB2YWx1ZTsKIH0K
IAotdm9pZCBJREJBbnk6OnNldChQYXNzUmVmUHRyPElEQkN1cnNvcj4gdmFsdWUpCitJREJBbnk6
OklEQkFueShQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiB2YWx1ZSkKKyAgICA6IG1fdHlwZShJREJE
YXRhYmFzZVR5cGUpCisgICAgLCBtX2lkYkRhdGFiYXNlKHZhbHVlKQorICAgICwgbV9pbnRlZ2Vy
KDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKLSAgICBtX3R5cGUg
PSBJREJDdXJzb3JUeXBlOwotICAgIG1faWRiQ3Vyc29yID0gdmFsdWU7CiB9CiAKLXZvaWQgSURC
QW55OjpzZXQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gdmFsdWUpCitJREJBbnk6OklEQkFueShQ
YXNzUmVmUHRyPElEQkZhY3Rvcnk+IHZhbHVlKQorICAgIDogbV90eXBlKElEQkZhY3RvcnlUeXBl
KQorICAgICwgbV9pZGJGYWN0b3J5KHZhbHVlKQorICAgICwgbV9pbnRlZ2VyKDApCiB7Ci0gICAg
QVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKLSAgICBtX3R5cGUgPSBJREJEYXRhYmFz
ZVR5cGU7Ci0gICAgbV9pZGJEYXRhYmFzZSA9IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0
KFBhc3NSZWZQdHI8SURCRmFjdG9yeT4gdmFsdWUpCitJREJBbnk6OklEQkFueShQYXNzUmVmUHRy
PElEQkluZGV4PiB2YWx1ZSkKKyAgICA6IG1fdHlwZShJREJJbmRleFR5cGUpCisgICAgLCBtX2lk
YkluZGV4KHZhbHVlKQorICAgICwgbV9pbnRlZ2VyKDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9
PSBVbmRlZmluZWRUeXBlKTsKLSAgICBtX3R5cGUgPSBJREJGYWN0b3J5VHlwZTsKLSAgICBtX2lk
YkZhY3RvcnkgPSB2YWx1ZTsKIH0KIAotdm9pZCBJREJBbnk6OnNldChQYXNzUmVmUHRyPElEQklu
ZGV4PiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHZh
bHVlKQorICAgIDogbV90eXBlKElEQlRyYW5zYWN0aW9uVHlwZSkKKyAgICAsIG1faWRiVHJhbnNh
Y3Rpb24odmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09
IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQkluZGV4VHlwZTsKLSAgICBtX2lkYklu
ZGV4ID0gdmFsdWU7CiB9CiAKLXZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gdmFsdWUpCitJREJBbnk6OklEQkFueShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiB2
YWx1ZSkKKyAgICA6IG1fdHlwZShJREJPYmplY3RTdG9yZVR5cGUpCisgICAgLCBtX2lkYk9iamVj
dFN0b3JlKHZhbHVlKQorICAgICwgbV9pbnRlZ2VyKDApCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9
PSBVbmRlZmluZWRUeXBlKTsKLSAgICBtX3R5cGUgPSBJREJUcmFuc2FjdGlvblR5cGU7Ci0gICAg
bV9pZGJUcmFuc2FjdGlvbiA9IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0KFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IHZhbHVlKQorSURCQW55OjpJREJBbnkoY29uc3QgU2NyaXB0VmFs
dWUmIHZhbHVlKQorICAgIDogbV90eXBlKFNjcmlwdFZhbHVlVHlwZSkKKyAgICAsIG1fc2NyaXB0
VmFsdWUodmFsdWUpCisgICAgLCBtX2ludGVnZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09
IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IElEQk9iamVjdFN0b3JlVHlwZTsKLSAgICBt
X2lkYk9iamVjdFN0b3JlID0gdmFsdWU7CiB9CiAKLXZvaWQgSURCQW55OjpzZXQoY29uc3QgU2Ny
aXB0VmFsdWUmIHZhbHVlKQorSURCQW55OjpJREJBbnkoY29uc3QgSURCS2V5UGF0aCYgdmFsdWUp
CisgICAgOiBtX3R5cGUoS2V5UGF0aFR5cGUpCisgICAgLCBtX2lkYktleVBhdGgodmFsdWUpCisg
ICAgLCBtX2ludGVnZXIoMCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUp
OwotICAgIG1fdHlwZSA9IFNjcmlwdFZhbHVlVHlwZTsKLSAgICBtX3NjcmlwdFZhbHVlID0gdmFs
dWU7CiB9CiAKLXZvaWQgSURCQW55OjpzZXQoY29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCitJREJB
bnk6OklEQkFueShjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgIDogbV90eXBlKFN0cmluZ1R5cGUp
CisgICAgLCBtX3N0cmluZyh2YWx1ZSkKKyAgICAsIG1faW50ZWdlcigwKQogewotICAgIEFTU0VS
VChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsK
LSAgICBjYXNlIElEQktleVBhdGg6Ok51bGxUeXBlOgotICAgICAgICBtX3R5cGUgPSBOdWxsVHlw
ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlOgotICAg
ICAgICBtX3R5cGUgPSBTdHJpbmdUeXBlOwotICAgICAgICBtX3N0cmluZyA9IHZhbHVlLnN0cmlu
ZygpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIElEQktleVBhdGg6OkFycmF5VHlwZToKLSAg
ICAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGtleVBhdGhzID0gRE9NU3RyaW5nTGlzdDo6Y3Jl
YXRlKCk7Ci0gICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
dmFsdWUuYXJyYXkoKS5iZWdpbigpOyBpdCAhPSB2YWx1ZS5hcnJheSgpLmVuZCgpOyArK2l0KQot
ICAgICAgICAgICAga2V5UGF0aHMtPmFwcGVuZCgqaXQpOwotICAgICAgICBtX3R5cGUgPSBET01T
dHJpbmdMaXN0VHlwZTsKLSAgICAgICAgbV9kb21TdHJpbmdMaXN0ID0ga2V5UGF0aHMucmVsZWFz
ZSgpOwotICAgICAgICBicmVhazsKLSAgICB9CiB9CiAKLXZvaWQgSURCQW55OjpzZXQoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK0lEQkFueTo6SURCQW55KGludDY0X3QgdmFsdWUpCisgICAgOiBtX3R5
cGUoSW50ZWdlclR5cGUpCisgICAgLCBtX2ludGVnZXIodmFsdWUpCiB7Ci0gICAgQVNTRVJUKG1f
dHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKLSAgICBtX3R5cGUgPSBTdHJpbmdUeXBlOwotICAgIG1f
c3RyaW5nID0gdmFsdWU7Ci19Ci0KLXZvaWQgSURCQW55OjpzZXQoaW50NjRfdCB2YWx1ZSkKLXsK
LSAgICBBU1NFUlQobV90eXBlID09IFVuZGVmaW5lZFR5cGUpOwotICAgIG1fdHlwZSA9IEludGVn
ZXJUeXBlOwotICAgIG1faW50ZWdlciA9IHZhbHVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnku
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oCmluZGV4IDE2YzJi
Yjk2N2Q1YTEwODM3OTUwNDhhMzE4MjRmMDI2ZTc2YTAxODAuLjZkZTQ1Y2Y1ZWY0ODM3OTdkYzIx
YzhiODViZDYwYTExMjQ5Y2FkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkFueS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkFueS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIAorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgog
I2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CkBAIC01NSwyOSArNTYsMjEgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVhdGUoVCogaWRiT2JqZWN0KQogICAgIHsK
LSAgICAgICAgUmVmUHRyPElEQkFueT4gYW55ID0gSURCQW55OjpjcmVhdGVJbnZhbGlkKCk7Ci0g
ICAgICAgIGFueS0+c2V0KGlkYk9iamVjdCk7Ci0gICAgICAgIHJldHVybiBhbnkucmVsZWFzZSgp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkFueShpZGJPYmplY3QpKTsKICAgICB9
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+
IGNyZWF0ZShjb25zdCBUJiBpZGJPYmplY3QpCiAgICAgewotICAgICAgICBSZWZQdHI8SURCQW55
PiBhbnkgPSBJREJBbnk6OmNyZWF0ZUludmFsaWQoKTsKLSAgICAgICAgYW55LT5zZXQoaWRiT2Jq
ZWN0KTsKLSAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCQW55KGlkYk9iamVjdCkpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkFueT4gY3JlYXRlKFBhc3NSZWZQdHI8VD4g
aWRiT2JqZWN0KQogICAgIHsKLSAgICAgICAgUmVmUHRyPElEQkFueT4gYW55ID0gSURCQW55Ojpj
cmVhdGVJbnZhbGlkKCk7Ci0gICAgICAgIGFueS0+c2V0KGlkYk9iamVjdCk7Ci0gICAgICAgIHJl
dHVybiBhbnkucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkFueShp
ZGJPYmplY3QpKTsKICAgICB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVhdGUo
aW50NjRfdCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxJREJBbnk+IGFueSA9IElEQkFu
eTo6Y3JlYXRlSW52YWxpZCgpOwotICAgICAgICBhbnktPnNldCh2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybiBhbnkucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkFueSh2
YWx1ZSkpOwogICAgIH0KICAgICB+SURCQW55KCk7CiAKQEAgLTk1LDYgKzg4LDcgQEAgcHVibGlj
OgogICAgICAgICBTY3JpcHRWYWx1ZVR5cGUsCiAgICAgICAgIEludGVnZXJUeXBlLAogICAgICAg
ICBTdHJpbmdUeXBlLAorICAgICAgICBLZXlQYXRoVHlwZSwKICAgICB9OwogCiAgICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CkBAIC0xMDcsNDIgKzEwMSw0MSBAQCBwdWJs
aWM6CiAgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gaWRiSW5kZXgoKTsKICAgICBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSgpOwogICAgIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IGlkYlRyYW5zYWN0aW9uKCk7Ci0gICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUo
KTsKKyAgICBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUoKTsKICAgICBpbnQ2NF90IGlu
dGVnZXIoKTsKICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpOwotCi0gICAgLy8gU2V0IGNhbiBv
bmx5IGJlIGNhbGxlZCBvbmNlLgotICAgIHZvaWQgc2V0TnVsbCgpOwotICAgIHZvaWQgc2V0KFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOwotICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCQ3Vy
c29yPik7Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+KTsKLSAg
ICB2b2lkIHNldChQYXNzUmVmUHRyPElEQkRhdGFiYXNlPik7Ci0gICAgdm9pZCBzZXQoUGFzc1Jl
ZlB0cjxJREJGYWN0b3J5Pik7Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxJREJJbmRleD4pOwot
ICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+KTsKLSAgICB2b2lkIHNldChQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPik7Ci0gICAgdm9pZCBzZXQoY29uc3QgSURCS2V5UGF0
aCYpOwotICAgIHZvaWQgc2V0KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2V0KGNvbnN0IFNj
cmlwdFZhbHVlJik7Ci0gICAgdm9pZCBzZXQoaW50NjRfdCk7CisgICAgY29uc3QgSURCS2V5UGF0
aCYga2V5UGF0aCgpIHsgcmV0dXJuIG1faWRiS2V5UGF0aDsgfTsKIAogcHJpdmF0ZToKLSAgICBJ
REJBbnkoKTsKKyAgICBleHBsaWNpdCBJREJBbnkoVHlwZSk7CisgICAgZXhwbGljaXQgSURCQW55
KFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOworICAgIGV4cGxpY2l0IElEQkFueShQYXNzUmVm
UHRyPElEQkN1cnNvcj4pOworICAgIGV4cGxpY2l0IElEQkFueShQYXNzUmVmUHRyPElEQkN1cnNv
cldpdGhWYWx1ZT4pOworICAgIGV4cGxpY2l0IElEQkFueShQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Pik7CisgICAgZXhwbGljaXQgSURCQW55KFBhc3NSZWZQdHI8SURCRmFjdG9yeT4pOworICAgIGV4
cGxpY2l0IElEQkFueShQYXNzUmVmUHRyPElEQkluZGV4Pik7CisgICAgZXhwbGljaXQgSURCQW55
KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+KTsKKyAgICBleHBsaWNpdCBJREJBbnkoUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbj4pOworICAgIGV4cGxpY2l0IElEQkFueShjb25zdCBJREJLZXlQ
YXRoJik7CisgICAgZXhwbGljaXQgSURCQW55KGNvbnN0IFN0cmluZyYpOworICAgIGV4cGxpY2l0
IElEQkFueShjb25zdCBTY3JpcHRWYWx1ZSYpOworICAgIGV4cGxpY2l0IElEQkFueShpbnQ2NF90
KTsKIAotICAgIFR5cGUgbV90eXBlOworICAgIGNvbnN0IFR5cGUgbV90eXBlOwogCiAgICAgLy8g
T25seSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzaG91bGQgZXZlciBiZSBpbiB1c2UgYXQgYW55IGdp
dmVuIHRpbWUuCi0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG1fZG9tU3RyaW5nTGlzdDsKLSAg
ICBSZWZQdHI8SURCQ3Vyc29yPiBtX2lkYkN1cnNvcjsKLSAgICBSZWZQdHI8SURCQ3Vyc29yV2l0
aFZhbHVlPiBtX2lkYkN1cnNvcldpdGhWYWx1ZTsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1f
aWRiRGF0YWJhc2U7Ci0gICAgUmVmUHRyPElEQkZhY3Rvcnk+IG1faWRiRmFjdG9yeTsKLSAgICBS
ZWZQdHI8SURCSW5kZXg+IG1faWRiSW5kZXg7Ci0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBt
X2lkYk9iamVjdFN0b3JlOwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV9pZGJUcmFuc2Fj
dGlvbjsKLSAgICBTY3JpcHRWYWx1ZSBtX3NjcmlwdFZhbHVlOwotICAgIFN0cmluZyBtX3N0cmlu
ZzsKLSAgICBpbnQ2NF90IG1faW50ZWdlcjsKKyAgICBjb25zdCBSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gbV9kb21TdHJpbmdMaXN0OworICAgIGNvbnN0IFJlZlB0cjxJREJDdXJzb3I+IG1faWRiQ3Vy
c29yOworICAgIGNvbnN0IFJlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IG1faWRiQ3Vyc29yV2l0
aFZhbHVlOworICAgIGNvbnN0IFJlZlB0cjxJREJEYXRhYmFzZT4gbV9pZGJEYXRhYmFzZTsKKyAg
ICBjb25zdCBSZWZQdHI8SURCRmFjdG9yeT4gbV9pZGJGYWN0b3J5OworICAgIGNvbnN0IFJlZlB0
cjxJREJJbmRleD4gbV9pZGJJbmRleDsKKyAgICBjb25zdCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+
IG1faWRiT2JqZWN0U3RvcmU7CisgICAgY29uc3QgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX2lk
YlRyYW5zYWN0aW9uOworICAgIGNvbnN0IElEQktleVBhdGggbV9pZGJLZXlQYXRoOworICAgIGNv
bnN0IFNjcmlwdFZhbHVlIG1fc2NyaXB0VmFsdWU7CisgICAgY29uc3QgU3RyaW5nIG1fc3RyaW5n
OworICAgIGNvbnN0IGludDY0X3QgbV9pbnRlZ2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURC
QW55Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFu
eUN1c3RvbS5jcHAKaW5kZXggY2Y0MDY0ZmRkNTI4MzA3MjcyOGU5OTg5YWRhNjM3NmZlMmM2NjFj
ZC4uZTExOWVlNWJmMDE3Y2JiNTQ1ZmEyNDM4ZTExNTJiY2M1Y2Y2NmIyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCkBA
IC00NCw2ICs0NCwyMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChjb25zdCBJREJLZXlQYXRoJiB2YWx1ZSwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAg
IHN3aXRjaCAodmFsdWUudHlwZSgpKSB7CisgICAgY2FzZSBJREJLZXlQYXRoOjpOdWxsVHlwZToK
KyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICBjYXNlIElEQktl
eVBhdGg6OlN0cmluZ1R5cGU6CisgICAgICAgIHJldHVybiB2OFN0cmluZyh2YWx1ZS5zdHJpbmco
KSwgaXNvbGF0ZSk7CisgICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6CisgICAgICAgIFJl
ZlB0cjxET01TdHJpbmdMaXN0PiBrZXlQYXRocyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwor
ICAgICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHZhbHVlLmFy
cmF5KCkuYmVnaW4oKTsgaXQgIT0gdmFsdWUuYXJyYXkoKS5lbmQoKTsgKytpdCkKKyAgICAgICAg
ICAgIGtleVBhdGhzLT5hcHBlbmQoKml0KTsKKyAgICAgICAgcmV0dXJuIHRvVjgoa2V5UGF0aHMu
cmVsZWFzZSgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChJREJBbnkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoIWltcGwp
CkBAIC03Niw2ICs5Myw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQkFueSogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsCiAgICAgICAgIHJldHVy
biB2OFN0cmluZyhpbXBsLT5zdHJpbmcoKSwgaXNvbGF0ZSk7CiAgICAgY2FzZSBJREJBbnk6Oklu
dGVnZXJUeXBlOgogICAgICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KGltcGwtPmludGVnZXIo
KSk7CisgICAgY2FzZSBJREJBbnk6OktleVBhdGhUeXBlOgorICAgICAgICByZXR1cm4gdG9WOChp
bXBsLT5rZXlQYXRoKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgfQogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>