<?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>39378</bug_id>
          
          <creation_ts>2010-05-19 13:33:35 -0700</creation_ts>
          <short_desc>[chromium] Provide a way to catch exceptions thrown while interacting with a NPObject via WebBindings methods.</short_desc>
          <delta_ts>2010-05-20 13:50:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>227973</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-05-19 13:33:35 -0700</bug_when>
    <thetext>[chromium] Provide a way to catch exceptions thrown while interacting with a NPObject via WebBindings methods.

As a consumer of WebBindings, I can invoke methods on a NPObject, but if that results in an exception being thrown, I have no way to intercept that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227979</commentid>
    <comment_count>1</comment_count>
      <attachid>56517</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-05-19 13:38:14 -0700</bug_when>
    <thetext>Created attachment 56517
v1 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227980</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-19 13:40:27 -0700</bug_when>
    <thetext>Attachment 56517 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/v8/V8NPUtils.cpp:161:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227990</commentid>
    <comment_count>3</comment_count>
      <attachid>56518</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-05-19 14:09:51 -0700</bug_when>
    <thetext>Created attachment 56518
v2 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228016</commentid>
    <comment_count>4</comment_count>
      <attachid>56518</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-05-19 15:28:12 -0700</bug_when>
    <thetext>Comment on attachment 56518
v2 patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228031</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-05-19 16:00:36 -0700</bug_when>
    <thetext>Landed at http://trac.webkit.org/changeset/59790</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228155</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-05-19 20:25:47 -0700</bug_when>
    <thetext>Had to revert due to failing Chromium plugin tests (NPAPITester.NPObjectProxy)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228203</commentid>
    <comment_count>7</comment_count>
      <attachid>56565</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-05-19 22:37:23 -0700</bug_when>
    <thetext>Created attachment 56565
v3 patch

This is a slight modification to the V2 patch:

1- No longer ReThrow the exception if there is not an ExceptionHandler.
This was causing problems since the next entered script context would
see the re-thrown exception.  That is clearly undesirable since the
exception could be unrelated to the next entered script context.

2- Call SetVerbose(true) if there is not a registere ExceptionHandler.
This way the exception will be logged to the JS console if it is not
being externally handled.

Interdiff:

diff -u WebCore/bindings/v8/V8NPUtils.cpp WebCore/bindings/v8/V8NPUtils.cpp
--- WebCore/bindings/v8/V8NPUtils.cpp (working copy)
+++ WebCore/bindings/v8/V8NPUtils.cpp (working copy)
@@ -152,6 +152,12 @@
     delete doomed;
 }

+ExceptionCatcher::ExceptionCatcher()
+{
+    if (!topHandler)
+        m_tryCatch.SetVerbose(true);
+}
+
 ExceptionCatcher::~ExceptionCatcher()
 {
     if (!m_tryCatch.HasCaught())
@@ -159,8 +165,6 @@

     if (topHandler)
         topHandler-&gt;handler(topHandler-&gt;data, *v8::String::Utf8Value(m_tryCatch.Exception()));
-    else
-        m_tryCatch.ReThrow();
 }

 } // namespace WebCore
diff -u WebCore/bindings/v8/V8NPUtils.h WebCore/bindings/v8/V8NPUtils.h
--- WebCore/bindings/v8/V8NPUtils.h (working copy)
+++ WebCore/bindings/v8/V8NPUtils.h (working copy)
@@ -60,6 +60,7 @@
 // current ExceptionHandler.
 class ExceptionCatcher {
 public:
+    ExceptionCatcher();
     ~ExceptionCatcher();
 private:
     v8::TryCatch m_tryCatch;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228206</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-05-19 22:38:57 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=56565) [details]
&gt; v3 patch
&gt; 
&gt; This is a slight modification to the V2 patch:
&gt; 
&gt; 1- No longer ReThrow the exception if there is not an ExceptionHandler.
&gt; This was causing problems since the next entered script context would
&gt; see the re-thrown exception.  That is clearly undesirable since the
&gt; exception could be unrelated to the next entered script context.

Oops, one more important note:  it appears that the JSC implementation of the _NPN_ functions also traps any exceptions and prevents them from leaking out, so this change to use v8::TryCatch is actually making the V8 &lt;-&gt; NPObject bindings more consistent with JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228527</commentid>
    <comment_count>9</comment_count>
      <attachid>56565</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-05-20 13:33:13 -0700</bug_when>
    <thetext>Comment on attachment 56565
v3 patch

Looks good, assuming all the tests are now passing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228534</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-05-20 13:50:02 -0700</bug_when>
    <thetext>v3 patch landed as http://trac.webkit.org/changeset/59862</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56517</attachid>
            <date>2010-05-19 13:38:14 -0700</date>
            <delta_ts>2010-05-19 14:07:58 -0700</delta_ts>
            <desc>v1 patch</desc>
            <filename>exception_1.txt</filename>
            <type>text/plain</type>
            <size>19319</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU5NzgwKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NSBAQAorMjAxMC0wNS0xOSAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtjaHJvbWl1bV0gUHJvdmlkZSBhIHdheSB0byBjYXRjaCBleGNlcHRpb25zIHRocm93biB3aGls
ZSBpbnRlcmFjdGluZworICAgICAgICB3aXRoIGEgTlBPYmplY3QgdmlhIFdlYkJpbmRpbmdzIG1l
dGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTM3OAorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gaW5jbHVkZXMgYSBzbWFsbCBiaXQgb2Yg
Y2xlYW51cCBpbiBWOE5QT2JqZWN0IGFuZAorICAgICAgICBmcmllbmRzLiAgSSBtb3ZlZCBjb2Rl
IGludG8gdGhlIFdlYkNvcmUgbmFtZXNwYWNlIHdoZXJlIGFwcHJvcHJpYXRlLgorICAgICAgICAK
KyAgICAgICAgSW4gX05QTl9JbnZva2UsIEkgYWxzbyBtb3ZlZCB0aGUgY2FsbCB0byBfTlBOX0V2
YWx1YXRlIG91dHNpZGUgb2YgdGhlCisgICAgICAgIGNvbnRleHQgc2NvcGUuICBJIGRpZCB0aGlz
IHRvIGF2b2lkIGhhdmluZyBuZXN0ZWQgRXhjZXB0aW9uQ2F0Y2hlcgorICAgICAgICBvYmplY3Rz
LCB3aGljaCBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgaXQgc2VlbWVkIGNsZWFuZXIu
CisgICAgICAgIF9OUE5fRXZhbHVhdGUgYWxyZWFkeSB0YWtlcyBjYXJlIG9mIGNyZWF0aW5nIGEg
Y29udGV4dCBzY29wZS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6djhPYmplY3RUb05QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Om5wQ3JlYXRlVjhTY3JpcHRPYmplY3QpOgorICAgICAgICAoX05QTl9JbnZva2UpOgorICAgICAg
ICAoX05QTl9JbnZva2VEZWZhdWx0KToKKyAgICAgICAgKF9OUE5fRXZhbHVhdGUpOgorICAgICAg
ICAoX05QTl9FdmFsdWF0ZUhlbHBlcik6CisgICAgICAgIChfTlBOX0dldFByb3BlcnR5KToKKyAg
ICAgICAgKF9OUE5fU2V0UHJvcGVydHkpOgorICAgICAgICAoX05QTl9SZW1vdmVQcm9wZXJ0eSk6
CisgICAgICAgIChfTlBOX0hhc1Byb3BlcnR5KToKKyAgICAgICAgKF9OUE5fSGFzTWV0aG9kKToK
KyAgICAgICAgKF9OUE5fU2V0RXhjZXB0aW9uKToKKyAgICAgICAgKF9OUE5fRW51bWVyYXRlKToK
KyAgICAgICAgKF9OUE5fQ29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2Jq
ZWN0Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhOUE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBVdGls
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VjhPYmplY3RUb05QVmFyaWFudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwdXNoRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3BFeGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkNhdGNo
ZXI6On5FeGNlcHRpb25DYXRjaGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5QVXRpbHMu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ucHJ1bnRpbWUuY3BwOgorCiAyMDEwLTA1LTE5ICBL
ZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZXZpbiBPbGxpdmllci4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVj
dC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3Bw
CShyZXZpc2lvbiA1OTYzNykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDEzICs1Miw3IEBACiAjaW5jbHVkZSA8djguaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKLXVzaW5nIFdlYkNvcmU6Om5wT2JqZWN0SW50ZXJu
YWxGaWVsZENvdW50OwotdXNpbmcgV2ViQ29yZTo6dG9WOENvbnRleHQ7Ci11c2luZyBXZWJDb3Jl
Ojp0b1Y4UHJveHk7Ci11c2luZyBXZWJDb3JlOjpWOERPTVdyYXBwZXI7Ci11c2luZyBXZWJDb3Jl
OjpWOEdDQ29udHJvbGxlcjsKLXVzaW5nIFdlYkNvcmU6OlY4UHJveHk7Ci11c2luZyBXZWJDb3Jl
OjpXcmFwcGVyVHlwZUluZm87Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC02OCw4ICs2Miw2IEBAIFdyYXBwZXJUeXBlSW5mbyogbnBPYmplY3RU
eXBlSW5mbygpCiAgICAgcmV0dXJuICZ0eXBlSW5mbzsKIH0KIAotfQotCiAvLyBGSVhNRTogQ29t
bWVudHMgb24gd2h5IHVzZSBtYWxsb2MgYW5kIGZyZWUuCiBzdGF0aWMgTlBPYmplY3QqIGFsbG9j
VjhOUE9iamVjdChOUFAsIE5QQ2xhc3MqKQogewpAQCAtMTEwLDcgKzEwMiw3IEBAIHN0YXRpYyB2
ODo6TG9jYWw8djg6OlN0cmluZz4gbnBJZGVudGlmaWUKIAogTlBPYmplY3QqIHY4T2JqZWN0VG9O
UE9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKIHsKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxOUE9iamVjdCo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZp
ZWxkKFdlYkNvcmU6OnY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7IAorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PE5QT2JqZWN0Kj4ob2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmll
bGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsgCiB9CiAKIHN0YXRpYyBOUENsYXNzIFY4TlBP
YmplY3RDbGFzcyA9IHsgTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT04sCkBAIC0xMjEsMTIgKzExMywx
MiBAQCBzdGF0aWMgTlBDbGFzcyBWOE5QT2JqZWN0Q2xhc3MgPSB7IE5QX0NMCiAvLyBOUEFQSSdz
IG5wcnVudGltZSBmdW5jdGlvbnMuCiBOUENsYXNzKiBucFNjcmlwdE9iamVjdENsYXNzID0gJlY4
TlBPYmplY3RDbGFzczsKIAotTlBPYmplY3QqIG5wQ3JlYXRlVjhTY3JpcHRPYmplY3QoTlBQIG5w
cCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIFdlYkNvcmU6OkRPTVdpbmRvdyogcm9v
dCkKK05QT2JqZWN0KiBucENyZWF0ZVY4U2NyaXB0T2JqZWN0KE5QUCBucHAsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb2JqZWN0LCBET01XaW5kb3cqIHJvb3QpCiB7CiAgICAgLy8gQ2hlY2sgdG8g
c2VlIGlmIHRoaXMgb2JqZWN0IGlzIGFscmVhZHkgd3JhcHBlZC4KICAgICBpZiAob2JqZWN0LT5J
bnRlcm5hbEZpZWxkQ291bnQoKSA9PSBucE9iamVjdEludGVybmFsRmllbGRDb3VudCkgewotICAg
ICAgICBXcmFwcGVyVHlwZUluZm8qIHR5cGVJbmZvID0gc3RhdGljX2Nhc3Q8V3JhcHBlclR5cGVJ
bmZvKj4ob2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQoV2ViQ29yZTo6djhET01X
cmFwcGVyVHlwZUluZGV4KSk7Ci0gICAgICAgIGlmICh0eXBlSW5mbyA9PSBXZWJDb3JlOjpucE9i
amVjdFR5cGVJbmZvKCkpIHsKKyAgICAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IHN0
YXRpY19jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5h
bEZpZWxkKHY4RE9NV3JhcHBlclR5cGVJbmRleCkpOworICAgICAgICBpZiAodHlwZUluZm8gPT0g
bnBPYmplY3RUeXBlSW5mbygpKSB7CiAKICAgICAgICAgICAgIE5QT2JqZWN0KiByZXR1cm5WYWx1
ZSA9IHY4T2JqZWN0VG9OUE9iamVjdChvYmplY3QpOwogICAgICAgICAgICAgX05QTl9SZXRhaW5P
YmplY3QocmV0dXJuVmFsdWUpOwpAQCAtMTM3LDEyICsxMjksMTQgQEAgTlBPYmplY3QqIG5wQ3Jl
YXRlVjhTY3JpcHRPYmplY3QoTlBQIG5wcAogICAgIFY4TlBPYmplY3QqIHY4bnBPYmplY3QgPSBy
ZWludGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihfTlBOX0NyZWF0ZU9iamVjdChucHAsICZWOE5Q
T2JqZWN0Q2xhc3MpKTsKICAgICB2OG5wT2JqZWN0LT52OE9iamVjdCA9IHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+OjpOZXcob2JqZWN0KTsKICNpZm5kZWYgTkRFQlVHCi0gICAgVjhHQ0NvbnRy
b2xsZXI6OnJlZ2lzdGVyR2xvYmFsSGFuZGxlKFdlYkNvcmU6Ok5QT0JKRUNULCB2OG5wT2JqZWN0
LCB2OG5wT2JqZWN0LT52OE9iamVjdCk7CisgICAgVjhHQ0NvbnRyb2xsZXI6OnJlZ2lzdGVyR2xv
YmFsSGFuZGxlKE5QT0JKRUNULCB2OG5wT2JqZWN0LCB2OG5wT2JqZWN0LT52OE9iamVjdCk7CiAj
ZW5kaWYKICAgICB2OG5wT2JqZWN0LT5yb290T2JqZWN0ID0gcm9vdDsKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxOUE9iamVjdCo+KHY4bnBPYmplY3QpOwogfQogCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKIGJvb2wgX05QTl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0
LCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSwgY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVp
bnQzMl90IGFyZ3VtZW50Q291bnQsIE5QVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmICghbnBP
YmplY3QpCkBAIC0xNjIsNiArMTU2LDE0IEBAIGJvb2wgX05QTl9JbnZva2UoTlBQIG5wcCwgTlBP
YmplY3QqIG5wT2IKICAgICBpZiAoIWlkZW50aWZpZXItPmlzU3RyaW5nKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKKyAgICBpZiAoIXN0cmNtcChpZGVudGlmaWVyLT52YWx1ZS5zdHJpbmcsICJl
dmFsIikpIHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGFyZ3VtZW50c1swXS50eXBlICE9IE5QVmFyaWFudFR5
cGVfU3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gX05Q
Tl9FdmFsdWF0ZShucHAsIG5wT2JqZWN0LCBjb25zdF9jYXN0PE5QU3RyaW5nKj4oJmFyZ3VtZW50
c1swXS52YWx1ZS5zdHJpbmdWYWx1ZSksIHJlc3VsdCk7CisgICAgfQorCiAgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIC8vIEZJWE1FOiBzaG91bGQgdXNlIHRoZSBwbHVnaW4n
cyBvd25lciBmcmFtZSBhcyB0aGUgc2VjdXJpdHkgY29udGV4dC4KICAgICB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0ID0gdG9WOENvbnRleHQobnBwLCBucE9iamVjdCk7CkBAIC0xNjks
MTQgKzE3MSw3IEBAIGJvb2wgX05QTl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QqIG5wT2IKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRl
eHQpOwotCi0gICAgaWYgKG1ldGhvZE5hbWUgPT0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKCJl
dmFsIikpIHsKLSAgICAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGFyZ3VtZW50c1swXS50eXBlICE9IE5QVmFyaWFudFR5
cGVfU3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gX05Q
Tl9FdmFsdWF0ZShucHAsIG5wT2JqZWN0LCBjb25zdF9jYXN0PE5QU3RyaW5nKj4oJmFyZ3VtZW50
c1swXS52YWx1ZS5zdHJpbmdWYWx1ZSksIHJlc3VsdCk7Ci0gICAgfQorICAgIEV4Y2VwdGlvbkNh
dGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmdW5j
dGlvbk9iamVjdCA9IHY4TnBPYmplY3QtPnY4T2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KGlk
ZW50aWZpZXItPnZhbHVlLnN0cmluZykpOwogICAgIGlmIChmdW5jdGlvbk9iamVjdC5Jc0VtcHR5
KCkgfHwgZnVuY3Rpb25PYmplY3QtPklzTnVsbCgpKSB7CkBAIC0yMjksNiArMjI0LDcgQEAgYm9v
bCBfTlBOX0ludm9rZURlZmF1bHQoTlBQIG5wcCwgTlBPYmplYwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgRXhjZXB0
aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRjaGVyOwogCiAgICAgLy8gTG9va3VwIHRoZSBmdW5jdGlv
biBvYmplY3QgYW5kIGNhbGwgaXQuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBmdW5jdGlv
bk9iamVjdCh2OE5wT2JqZWN0LT52OE9iamVjdCk7CkBAIC0yNTUsNyArMjUxLDcgQEAgYm9vbCBf
TlBOX0ludm9rZURlZmF1bHQoTlBQIG5wcCwgTlBPYmplYwogCiBib29sIF9OUE5fRXZhbHVhdGUo
TlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUFN0cmluZyogbnBTY3JpcHQsIE5QVmFyaWFu
dCogcmVzdWx0KQogewotICAgIGJvb2wgcG9wdXBzQWxsb3dlZCA9IFdlYkNvcmU6OlBsYXRmb3Jt
QnJpZGdlOjpwb3B1cHNBbGxvd2VkKG5wcCk7CisgICAgYm9vbCBwb3B1cHNBbGxvd2VkID0gUGxh
dGZvcm1CcmlkZ2U6OnBvcHVwc0FsbG93ZWQobnBwKTsKICAgICByZXR1cm4gX05QTl9FdmFsdWF0
ZUhlbHBlcihucHAsIHBvcHVwc0FsbG93ZWQsIG5wT2JqZWN0LCBucFNjcmlwdCwgcmVzdWx0KTsK
IH0KIApAQCAtMjc3LDEzICsyNzMsMTQgQEAgYm9vbCBfTlBOX0V2YWx1YXRlSGVscGVyKE5QUCBu
cHAsIGJvb2wgcAogICAgIEFTU0VSVChwcm94eSk7CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUg
c2NvcGUoY29udGV4dCk7CisgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRjaGVyOwog
Ci0gICAgV2ViQ29yZTo6U3RyaW5nIGZpbGVuYW1lOworICAgIFN0cmluZyBmaWxlbmFtZTsKICAg
ICBpZiAoIXBvcHVwc0FsbG93ZWQpCiAgICAgICAgIGZpbGVuYW1lID0gIm5wc2NyaXB0IjsKIAot
ICAgIFdlYkNvcmU6OlN0cmluZyBzY3JpcHQgPSBXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4KG5w
U2NyaXB0LT5VVEY4Q2hhcmFjdGVycywgbnBTY3JpcHQtPlVURjhMZW5ndGgpOwotICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gcHJveHktPmV2YWx1YXRlKFdlYkNvcmU6OlNjcmlw
dFNvdXJjZUNvZGUoc2NyaXB0LCBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmlu
ZywgZmlsZW5hbWUpKSwgMCk7CisgICAgU3RyaW5nIHNjcmlwdCA9IFN0cmluZzo6ZnJvbVVURjgo
bnBTY3JpcHQtPlVURjhDaGFyYWN0ZXJzLCBucFNjcmlwdC0+VVRGOExlbmd0aCk7CisgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdjhyZXN1bHQgPSBwcm94eS0+ZXZhbHVhdGUoU2NyaXB0U291cmNl
Q29kZShzY3JpcHQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBmaWxlbmFtZSkpLCAwKTsKIAogICAg
IGlmICh2OHJlc3VsdC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNiw2
ICszMDMsNyBAQCBib29sIF9OUE5fR2V0UHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QqCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3Bl
KGNvbnRleHQpOworICAgICAgICBFeGNlcHRpb25DYXRjaGVyIGV4Y2VwdGlvbkNhdGNoZXI7CiAK
ICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmoob2JqZWN0LT52OE9iamVjdCk7CiAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gb2JqLT5HZXQobnBJZGVudGlm
aWVyVG9WOElkZW50aWZpZXIocHJvcGVydHlOYW1lKSk7CkBAIC0zNDAsNiArMzM4LDcgQEAgYm9v
bCBfTlBOX1NldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKKyAg
ICAgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRjaGVyOwogCiAgICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gb2JqKG9iamVjdC0+djhPYmplY3QpOwogICAgICAgICBvYmotPlNl
dChucElkZW50aWZpZXJUb1Y4SWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLApAQCAtMzY3LDYgKzM2
Niw3IEBAIGJvb2wgX05QTl9SZW1vdmVQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamUKICAgICBpZiAo
Y29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB2ODo6Q29udGV4
dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25D
YXRjaGVyOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmoob2JqZWN0LT52OE9iamVj
dCk7CiAgICAgLy8gRklYTUU6IFZlcmlmeSB0aGF0IHNldHRpbmcgdG8gdW5kZWZpbmVkIGlzIHJp
Z2h0LgpAQCAtMzg3LDYgKzM4Nyw3IEBAIGJvb2wgX05QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBO
UE9iamVjdCoKICAgICAgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7Cisg
ICAgICAgIEV4Y2VwdGlvbkNhdGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAogICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG9iaihvYmplY3QtPnY4T2JqZWN0KTsKICAgICAgICAgcmV0dXJu
IG9iai0+SGFzKG5wSWRlbnRpZmllclRvVjhJZGVudGlmaWVyKHByb3BlcnR5TmFtZSkpOwpAQCAt
NDEwLDYgKzQxMSw3IEBAIGJvb2wgX05QTl9IYXNNZXRob2QoTlBQIG5wcCwgTlBPYmplY3QqIG4K
ICAgICAgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgICAgIEV4
Y2VwdGlvbkNhdGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAogICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iaihvYmplY3QtPnY4T2JqZWN0KTsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHByb3AgPSBvYmotPkdldChucElkZW50aWZpZXJUb1Y4SWRlbnRpZmllcihtZXRob2RO
YW1lKSk7CkBAIC00MzUsNiArNDM3LDggQEAgdm9pZCBfTlBOX1NldEV4Y2VwdGlvbihOUE9iamVj
dCogbnBPYmplYwogICAgICAgICByZXR1cm47CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2Nv
cGUoY29udGV4dCk7CisgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRjaGVyOworCiAg
ICAgVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpHZW5lcmFsRXJyb3IsIG1lc3NhZ2UpOwog
fQogCkBAIC00NTEsNiArNDU1LDcgQEAgYm9vbCBfTlBOX0VudW1lcmF0ZShOUFAgbnBwLCBOUE9i
amVjdCogbgogICAgICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKKyAg
ICAgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRjaGVyOwogCiAgICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gb2JqKG9iamVjdC0+djhPYmplY3QpOwogCkBAIC01MDUsNiArNTEw
LDcgQEAgYm9vbCBfTlBOX0NvbnN0cnVjdChOUFAgbnBwLCBOUE9iamVjdCogbgogICAgICAgICBp
ZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKKyAgICAgICAgRXhjZXB0aW9uQ2F0
Y2hlciBleGNlcHRpb25DYXRjaGVyOwogCiAgICAgICAgIC8vIExvb2t1cCB0aGUgY29uc3RydWN0
b3IgZnVuY3Rpb24uCiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Rvck9iaihvYmpl
Y3QtPnY4T2JqZWN0KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmgJKHJldmlzaW9u
IDU5NjM3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDEyICs0NSwxMiBAQAogI2luY2x1ZGUgPHY4Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKLSAgICBjbGFzcyBET01XaW5kb3c7CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IG5wT2Jq
ZWN0SW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3Vu
dCArIDA7CitjbGFzcyBET01XaW5kb3c7CiAKLSAgICBXcmFwcGVyVHlwZUluZm8qIG5wT2JqZWN0
VHlwZUluZm8oKTsKLX0KK3N0YXRpYyBjb25zdCBpbnQgbnBPYmplY3RJbnRlcm5hbEZpZWxkQ291
bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKworV3JhcHBlclR5
cGVJbmZvKiBucE9iamVjdFR5cGVJbmZvKCk7CiAKIGV4dGVybiBOUENsYXNzKiBucFNjcmlwdE9i
amVjdENsYXNzOwogCkBAIC01OSw3ICs1OSw3IEBAIGV4dGVybiBOUENsYXNzKiBucFNjcmlwdE9i
amVjdENsYXNzOwogc3RydWN0IFY4TlBPYmplY3QgewogICAgIE5QT2JqZWN0IG9iamVjdDsKICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB2OE9iamVjdDsKLSAgICBXZWJDb3JlOjpET01X
aW5kb3cqIHJvb3RPYmplY3Q7CisgICAgRE9NV2luZG93KiByb290T2JqZWN0OwogfTsKIAogc3Ry
dWN0IFByaXZhdGVJZGVudGlmaWVyIHsKQEAgLTcwLDggKzcwLDEwIEBAIHN0cnVjdCBQcml2YXRl
SWRlbnRpZmllciB7CiAgICAgYm9vbCBpc1N0cmluZzsKIH07CiAKLU5QT2JqZWN0KiBucENyZWF0
ZVY4U2NyaXB0T2JqZWN0KE5QUCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgV2ViQ29yZTo6RE9N
V2luZG93Kik7CitOUE9iamVjdCogbnBDcmVhdGVWOFNjcmlwdE9iamVjdChOUFAsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4sIERPTVdpbmRvdyopOwogCiBOUE9iamVjdCogdjhPYmplY3RUb05QT2Jq
ZWN0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
ICNlbmRpZiAvLyBOUFY4T2JqZWN0X2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9i
amVjdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3Qu
Y3BwCShyZXZpc2lvbiA1OTYzNykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJucHJ1bnRpbWVf
cHJpdi5oIgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBJbnZva2VGdW5jdGlvblR5cGUg
ewogICAgIEludm9rZU1ldGhvZCA9IDEsCkBAIC00MDksMyArNDA5LDUgQEAgdm9pZCBmb3JnZXRW
OE9iamVjdEZvck5QT2JqZWN0KE5QT2JqZWN0KgogICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3Qo
b2JqZWN0KTsKICAgICB9CiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9WOE5QT2JqZWN0LmgJKHJldmlzaW9uIDU5NjM3KQorKysgV2ViQ29yZS9iaW5kaW5n
cy92OC9WOE5QT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAKIAogI2lu
Y2x1ZGUgPHY4Lmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogLy8gVGhlc2UgZnVuY3Rpb25z
IGNhbiBiZSByZXBsYWNlZCBieSBub3JtYWwgSlMgb3BlcmF0aW9uLgogLy8gR2V0dGVycwogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0TmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYpOwpAQCAtNjUsNCArNjcs
NiBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlVjhPYmplY3RGb3JOCiAvLyBjYW5ub3Qg
YmUgcmVmZXJyZWQgdG8uCiB2b2lkIGZvcmdldFY4T2JqZWN0Rm9yTlBPYmplY3QoTlBPYmplY3Qq
KTsKIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYgLy8gVjhOUE9iamVjdF9oCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5jcHANCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5jcHAJKHJldmlzaW9uIDU5NjM3KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOE5QVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxOSAr
MjksMTggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJWOE5QVXRp
bHMuaCIKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSN1bmRlZiBMT0cKLQorI2luY2x1ZGUgIm5wcnVudGlt
ZV9pbXBsLmgiCisjaW5jbHVkZSAibnBydW50aW1lX3ByaXYuaCIKICNpbmNsdWRlICJOUFY4T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiVjhOUE9iamVjdC5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKLSNp
bmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgotI2luY2x1ZGUgIm5wcnVudGltZV9wcml2LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBjb252ZXJ0VjhPYmplY3RUb05QVmFyaWFudCh2
ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QsIE5QT2JqZWN0KiBvd25lciwgTlBWYXJpYW50KiBy
ZXN1bHQpCiB7CkBAIC02OSw3ICs2OCw3IEBAIHZvaWQgY29udmVydFY4T2JqZWN0VG9OUFZhcmlh
bnQodjg6OkxvY2EKICAgICAgICAgY2hhciogdXRmOF9jaGFycyA9IHN0cmR1cCgqdXRmOCk7CiAg
ICAgICAgIFNUUklOR05fVE9fTlBWQVJJQU5UKHV0ZjhfY2hhcnMsIHV0ZjgubGVuZ3RoKCksICpy
ZXN1bHQpOwogICAgIH0gZWxzZSBpZiAob2JqZWN0LT5Jc09iamVjdCgpKSB7Ci0gICAgICAgIFdl
YkNvcmU6OkRPTVdpbmRvdyogd2luZG93ID0gV2ViQ29yZTo6VjhQcm94eTo6cmV0cmlldmVXaW5k
b3coV2ViQ29yZTo6VjhQcm94eTo6Y3VycmVudENvbnRleHQoKSk7CisgICAgICAgIERPTVdpbmRv
dyogd2luZG93ID0gVjhQcm94eTo6cmV0cmlldmVXaW5kb3coVjhQcm94eTo6Y3VycmVudENvbnRl
eHQoKSk7CiAgICAgICAgIE5QT2JqZWN0KiBucG9iamVjdCA9IG5wQ3JlYXRlVjhTY3JpcHRPYmpl
Y3QoMCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChvYmplY3QpLCB3aW5kb3cpOwogICAg
ICAgICBpZiAobnBvYmplY3QpCiAgICAgICAgICAgICBfTlBOX1JlZ2lzdGVyT2JqZWN0KG5wb2Jq
ZWN0LCBvd25lcik7CkBAIC03Nyw3ICs3Niw2IEBAIHZvaWQgY29udmVydFY4T2JqZWN0VG9OUFZh
cmlhbnQodjg6OkxvY2EKICAgICB9CiB9CiAKLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZl
cnROUFZhcmlhbnRUb1Y4T2JqZWN0KGNvbnN0IE5QVmFyaWFudCogdmFyaWFudCwgTlBPYmplY3Qq
IG5wb2JqZWN0KQogewogICAgIE5QVmFyaWFudFR5cGUgdHlwZSA9IHZhcmlhbnQtPnR5cGU7CkBA
IC0xMjgsMyArMTI2LDQyIEBAIE5QSWRlbnRpZmllciBnZXRTdHJpbmdJZGVudGlmaWVyKHY4OjpI
YW4KICAgICB2ODo6U3RyaW5nOjpVdGY4VmFsdWUgdXRmOChzdHIpOwogICAgIHJldHVybiBfTlBO
X0dldFN0cmluZ0lkZW50aWZpZXIoKnV0ZjgpOwogfQorCitzdHJ1Y3QgRXhjZXB0aW9uSGFuZGxl
ckluZm8geworICAgIEV4Y2VwdGlvbkhhbmRsZXJJbmZvKiBwcmV2aW91czsKKyAgICBFeGNlcHRp
b25IYW5kbGVyIGhhbmRsZXI7CisgICAgdm9pZCogZGF0YTsKK307CisKK3N0YXRpYyBFeGNlcHRp
b25IYW5kbGVySW5mbyogdG9wSGFuZGxlcjsKKwordm9pZCBwdXNoRXhjZXB0aW9uSGFuZGxlcihF
eGNlcHRpb25IYW5kbGVyIGhhbmRsZXIsIHZvaWQqIGRhdGEpCit7CisgICAgRXhjZXB0aW9uSGFu
ZGxlckluZm8qIGluZm8gPSBuZXcgRXhjZXB0aW9uSGFuZGxlckluZm87CisgICAgaW5mby0+cHJl
dmlvdXMgPSB0b3BIYW5kbGVyOworICAgIGluZm8tPmhhbmRsZXIgPSBoYW5kbGVyOworICAgIGlu
Zm8tPmRhdGEgPSBkYXRhOworICAgIHRvcEhhbmRsZXIgPSBpbmZvOworfQorCit2b2lkIHBvcEV4
Y2VwdGlvbkhhbmRsZXIoKQoreworICAgIEFTU0VSVCh0b3BIYW5kbGVyKTsKKyAgICBFeGNlcHRp
b25IYW5kbGVySW5mbyogZG9vbWVkID0gdG9wSGFuZGxlcjsKKyAgICB0b3BIYW5kbGVyID0gdG9w
SGFuZGxlci0+cHJldmlvdXM7CisgICAgZGVsZXRlIGRvb21lZDsKK30KKworRXhjZXB0aW9uQ2F0
Y2hlcjo6fkV4Y2VwdGlvbkNhdGNoZXIoKQoreworICAgIGlmICghbV90cnlDYXRjaC5IYXNDYXVn
aHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHRvcEhhbmRsZXIpCisgICAgICAgIC8v
dG9wSGFuZGxlci0+aGFuZGxlcih0b3BIYW5kbGVyLT5kYXRhLCAqdjg6OlN0cmluZzo6VXRmOFZh
bHVlKG1fdHJ5Q2F0Y2guTWVzc2FnZSgpLT5HZXQoKSkpOworICAgICAgICB0b3BIYW5kbGVyLT5o
YW5kbGVyKHRvcEhhbmRsZXItPmRhdGEsICp2ODo6U3RyaW5nOjpVdGY4VmFsdWUobV90cnlDYXRj
aC5FeGNlcHRpb24oKSkpOworICAgIGVsc2UKKyAgICAgICAgbV90cnlDYXRjaC5SZVRocm93KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhOUFV0aWxzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBVdGls
cy5oCShyZXZpc2lvbiA1OTYzNykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhOUFV0aWxzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAKIAogI2luY2x1ZGUgPHY4Lmg+CiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwogLy8gQ29udmVydCBhIFY4IFZhbHVlIG9mIGFueSB0eXBlIChz
dHJpbmcsIGJvb2wsIG9iamVjdCwgZXRjKSB0byBhIE5QVmFyaWFudC4KIHZvaWQgY29udmVydFY4
T2JqZWN0VG9OUFZhcmlhbnQodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIE5QT2JqZWN0KiwgTlBWYXJp
YW50Kik7CiAKQEAgLTQ4LDQgKzUwLDIxIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0
TlBWYXJpYW50VG8KIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYW4gTlBOIFN0cmluZyBJ
ZGVudGlmaWVyIGZyb20gYSB2OCBzdHJpbmcuCiBOUElkZW50aWZpZXIgZ2V0U3RyaW5nSWRlbnRp
Zmllcih2ODo6SGFuZGxlPHY4OjpTdHJpbmc+KTsKIAorLy8gVGhlIEV4Y2VwdGlvbkhhbmRsZXIg
d2lsbCBiZSBub3RpZmllZCBvZiBhbnkgZXhjZXB0aW9ucyB0aHJvd24gd2hpbGUKKy8vIG9wZXJh
dGluZyBvbiBhIE5QT2JqZWN0LgordHlwZWRlZiB2b2lkICgqRXhjZXB0aW9uSGFuZGxlcikodm9p
ZCogZGF0YSwgY29uc3QgTlBVVEY4KiBtZXNzYWdlKTsKK3ZvaWQgcHVzaEV4Y2VwdGlvbkhhbmRs
ZXIoRXhjZXB0aW9uSGFuZGxlciwgdm9pZCogZGF0YSk7Cit2b2lkIHBvcEV4Y2VwdGlvbkhhbmRs
ZXIoKTsKKworLy8gVXBvbiBkZXN0cnVjdGlvbiwgYW4gRXhjZXB0aW9uQ2F0Y2hlciB3aWxsIHBh
c3MgYSBjYXVnaHQgZXhjZXB0aW9uIHRvIHRoZQorLy8gY3VycmVudCBFeGNlcHRpb25IYW5kbGVy
LgorY2xhc3MgRXhjZXB0aW9uQ2F0Y2hlciB7CitwdWJsaWM6CisgICAgfkV4Y2VwdGlvbkNhdGNo
ZXIoKTsKK3ByaXZhdGU6CisgICAgdjg6OlRyeUNhdGNoIG1fdHJ5Q2F0Y2g7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKICNlbmRpZiAvLyBWOE5QVXRpbHNfaApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9ucHJ1bnRpbWUuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9ucHJ1bnRpbWUuY3BwCShyZXZpc2lvbiA1OTYzNykKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvbnBydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIC8vIEZJWE1FOiBDb25zaWRlciByZW1vdmluZyBsb2Nr
cyBpZiB3ZSdyZSBzaW5nbGV0aHJlYWRlZCBhbHJlYWR5LgogLy8gVGhlIHN0YXRpYyBpbml0aWFs
aXplciBoZXJlIHNob3VsZCB3b3JrIG9rYXksIGJ1dCB3ZSB3YW50IHRvIGF2b2lkCiAvLyBzdGF0
aWMgaW5pdGlhbGl6YXRpb24gaW4gZ2VuZXJhbC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biA1OTc4MCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxMC0wNS0xOSAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtj
aHJvbWl1bV0gUHJvdmlkZSBhIHdheSB0byBjYXRjaCBleGNlcHRpb25zIHRocm93biB3aGlsZSBp
bnRlcmFjdGluZworICAgICAgICB3aXRoIGEgTlBPYmplY3QgdmlhIFdlYkJpbmRpbmdzIG1ldGhv
ZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTM3
OAorCisgICAgICAgICogcHVibGljL1dlYkJpbmRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYkJp
bmRpbmdzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmluZGluZ3M6OnB1c2hFeGNlcHRpb25I
YW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmluZGluZ3M6OnBvcEV4Y2VwdGlvbkhhbmRs
ZXIpOgorCiAyMDEwLTA1LTE5ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkJpbmRpbmdzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkJpbmRpbmdzLmgJKHJldmlzaW9uIDU5NjM3KQorKysgV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJCaW5kaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGlj
OgogICAgIC8vIE5QTl9VVEY4RnJvbUlkZW50aWZpZXIKICAgICBXRUJLSVRfQVBJIHN0YXRpYyBO
UFVURjgqIHV0ZjhGcm9tSWRlbnRpZmllcihOUElkZW50aWZpZXIpOwogCi0gICAgLy8gTWlzY2Vs
bGFuZW91cyB1dGlsaXR5IGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyAgICAvLyBNaXNjZWxsYW5lb3VzIHV0aWxpdHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIENvbXBsZW1lbnQgdG8gTlBO
X0dldF9fX0lkZW50aWZpZXIgZnVuY3Rpb25zLiAgRXh0cmFjdHMgZGF0YSBmcm9tIHRoZSBOUElk
ZW50aWZpZXIgZGF0YQogICAgIC8vIHN0cnVjdHVyZS4gIElmIGlzU3RyaW5nIGlzIHRydWUgdXBv
biByZXR1cm4sIHN0cmluZyB3aWxsIGJlIHNldCBidXQgbnVtYmVyJ3MgdmFsdWUgaXMKQEAgLTEz
OCw2ICsxMzgsMTUgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0cnVlIChzdWNjZXNzKSBpZiB0
aGUgZ2l2ZW4gbnBvYmogaXMgYSByYW5nZSBvYmplY3QuCiAgICAgLy8gSWYgc28sIHJldHVybiB0
aGF0IHJhbmdlIGFzIGEgV2ViUmFuZ2Ugb2JqZWN0LgogICAgIFdFQktJVF9BUEkgc3RhdGljIGJv
b2wgZ2V0UmFuZ2UoTlBPYmplY3QqIHJhbmdlLCBXZWJSYW5nZSopOworCisgICAgLy8gRXhjZXB0
aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyAgICB0eXBlZGVmIHZvaWQgKEV4Y2VwdGlvbkhhbmRsZXIpKHZvaWQqIGRh
dGEsIGNvbnN0IE5QVVRGOCogbWVzc2FnZSk7CisKKyAgICAvLyBUaGUgZXhjZXB0aW9uIGhhbmRs
ZXIgd2lsbCBiZSBub3RpZmllZCBvZiBhbnkgZXhjZXB0aW9ucyB0aHJvd24gd2hpbGUKKyAgICAv
LyBvcGVyYXRpbmcgb24gYSBOUE9iamVjdC4KKyAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHB1
c2hFeGNlcHRpb25IYW5kbGVyKEV4Y2VwdGlvbkhhbmRsZXIsIHZvaWQqIGRhdGEpOworICAgIFdF
QktJVF9BUEkgc3RhdGljIHZvaWQgcG9wRXhjZXB0aW9uSGFuZGxlcigpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJpbmRpbmdzLmNw
cA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCShy
ZXZpc2lvbiA1OTYzNykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgi
CiAjaW5jbHVkZSAiVjhFdmVudC5oIgogI2luY2x1ZGUgIlY4SGVscGVycy5oIgorI2luY2x1ZGUg
IlY4TlBVdGlscy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFJhbmdlLmgi
CiAjZWxpZiBVU0UoSlNDKQpAQCAtMzIyLDQgKzMyMywxNCBAQCBib29sIFdlYkJpbmRpbmdzOjpn
ZXRSYW5nZShOUE9iamVjdCogcmFuCiAjZW5kaWYKIH0KIAordm9pZCBXZWJCaW5kaW5nczo6cHVz
aEV4Y2VwdGlvbkhhbmRsZXIoRXhjZXB0aW9uSGFuZGxlciBoYW5kbGVyLCB2b2lkKiBkYXRhKQor
eworICAgIFdlYkNvcmU6OnB1c2hFeGNlcHRpb25IYW5kbGVyKGhhbmRsZXIsIGRhdGEpOworfQor
Cit2b2lkIFdlYkJpbmRpbmdzOjpwb3BFeGNlcHRpb25IYW5kbGVyKCkKK3sKKyAgICBXZWJDb3Jl
Ojpwb3BFeGNlcHRpb25IYW5kbGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56518</attachid>
            <date>2010-05-19 14:09:51 -0700</date>
            <delta_ts>2010-05-19 22:37:23 -0700</delta_ts>
            <desc>v2 patch</desc>
            <filename>exception_2.txt</filename>
            <type>text/plain</type>
            <size>19216</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU5NzgwKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NSBAQAorMjAxMC0wNS0xOSAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtjaHJvbWl1bV0gUHJvdmlkZSBhIHdheSB0byBjYXRjaCBleGNlcHRpb25zIHRocm93biB3aGls
ZSBpbnRlcmFjdGluZworICAgICAgICB3aXRoIGEgTlBPYmplY3QgdmlhIFdlYkJpbmRpbmdzIG1l
dGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTM3OAorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gaW5jbHVkZXMgYSBzbWFsbCBiaXQgb2Yg
Y2xlYW51cCBpbiBWOE5QT2JqZWN0IGFuZAorICAgICAgICBmcmllbmRzLiAgSSBtb3ZlZCBjb2Rl
IGludG8gdGhlIFdlYkNvcmUgbmFtZXNwYWNlIHdoZXJlIGFwcHJvcHJpYXRlLgorICAgICAgICAK
KyAgICAgICAgSW4gX05QTl9JbnZva2UsIEkgYWxzbyBtb3ZlZCB0aGUgY2FsbCB0byBfTlBOX0V2
YWx1YXRlIG91dHNpZGUgb2YgdGhlCisgICAgICAgIGNvbnRleHQgc2NvcGUuICBJIGRpZCB0aGlz
IHRvIGF2b2lkIGhhdmluZyBuZXN0ZWQgRXhjZXB0aW9uQ2F0Y2hlcgorICAgICAgICBvYmplY3Rz
LCB3aGljaCBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgaXQgc2VlbWVkIGNsZWFuZXIu
CisgICAgICAgIF9OUE5fRXZhbHVhdGUgYWxyZWFkeSB0YWtlcyBjYXJlIG9mIGNyZWF0aW5nIGEg
Y29udGV4dCBzY29wZS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6djhPYmplY3RUb05QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Om5wQ3JlYXRlVjhTY3JpcHRPYmplY3QpOgorICAgICAgICAoX05QTl9JbnZva2UpOgorICAgICAg
ICAoX05QTl9JbnZva2VEZWZhdWx0KToKKyAgICAgICAgKF9OUE5fRXZhbHVhdGUpOgorICAgICAg
ICAoX05QTl9FdmFsdWF0ZUhlbHBlcik6CisgICAgICAgIChfTlBOX0dldFByb3BlcnR5KToKKyAg
ICAgICAgKF9OUE5fU2V0UHJvcGVydHkpOgorICAgICAgICAoX05QTl9SZW1vdmVQcm9wZXJ0eSk6
CisgICAgICAgIChfTlBOX0hhc1Byb3BlcnR5KToKKyAgICAgICAgKF9OUE5fSGFzTWV0aG9kKToK
KyAgICAgICAgKF9OUE5fU2V0RXhjZXB0aW9uKToKKyAgICAgICAgKF9OUE5fRW51bWVyYXRlKToK
KyAgICAgICAgKF9OUE5fQ29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2Jq
ZWN0Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhOUE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBVdGls
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VjhPYmplY3RUb05QVmFyaWFudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwdXNoRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3BFeGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkNhdGNo
ZXI6On5FeGNlcHRpb25DYXRjaGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5QVXRpbHMu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ucHJ1bnRpbWUuY3BwOgorCiAyMDEwLTA1LTE5ICBL
ZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZXZpbiBPbGxpdmllci4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVj
dC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3Bw
CShyZXZpc2lvbiA1OTYzNykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDEzICs1Miw3IEBACiAjaW5jbHVkZSA8djguaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKLXVzaW5nIFdlYkNvcmU6Om5wT2JqZWN0SW50ZXJu
YWxGaWVsZENvdW50OwotdXNpbmcgV2ViQ29yZTo6dG9WOENvbnRleHQ7Ci11c2luZyBXZWJDb3Jl
Ojp0b1Y4UHJveHk7Ci11c2luZyBXZWJDb3JlOjpWOERPTVdyYXBwZXI7Ci11c2luZyBXZWJDb3Jl
OjpWOEdDQ29udHJvbGxlcjsKLXVzaW5nIFdlYkNvcmU6OlY4UHJveHk7Ci11c2luZyBXZWJDb3Jl
OjpXcmFwcGVyVHlwZUluZm87Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC02OCw4ICs2Miw2IEBAIFdyYXBwZXJUeXBlSW5mbyogbnBPYmplY3RU
eXBlSW5mbygpCiAgICAgcmV0dXJuICZ0eXBlSW5mbzsKIH0KIAotfQotCiAvLyBGSVhNRTogQ29t
bWVudHMgb24gd2h5IHVzZSBtYWxsb2MgYW5kIGZyZWUuCiBzdGF0aWMgTlBPYmplY3QqIGFsbG9j
VjhOUE9iamVjdChOUFAsIE5QQ2xhc3MqKQogewpAQCAtMTEwLDcgKzEwMiw3IEBAIHN0YXRpYyB2
ODo6TG9jYWw8djg6OlN0cmluZz4gbnBJZGVudGlmaWUKIAogTlBPYmplY3QqIHY4T2JqZWN0VG9O
UE9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKIHsKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxOUE9iamVjdCo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZp
ZWxkKFdlYkNvcmU6OnY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7IAorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PE5QT2JqZWN0Kj4ob2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmll
bGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsgCiB9CiAKIHN0YXRpYyBOUENsYXNzIFY4TlBP
YmplY3RDbGFzcyA9IHsgTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT04sCkBAIC0xMjEsMTIgKzExMywx
MiBAQCBzdGF0aWMgTlBDbGFzcyBWOE5QT2JqZWN0Q2xhc3MgPSB7IE5QX0NMCiAvLyBOUEFQSSdz
IG5wcnVudGltZSBmdW5jdGlvbnMuCiBOUENsYXNzKiBucFNjcmlwdE9iamVjdENsYXNzID0gJlY4
TlBPYmplY3RDbGFzczsKIAotTlBPYmplY3QqIG5wQ3JlYXRlVjhTY3JpcHRPYmplY3QoTlBQIG5w
cCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIFdlYkNvcmU6OkRPTVdpbmRvdyogcm9v
dCkKK05QT2JqZWN0KiBucENyZWF0ZVY4U2NyaXB0T2JqZWN0KE5QUCBucHAsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb2JqZWN0LCBET01XaW5kb3cqIHJvb3QpCiB7CiAgICAgLy8gQ2hlY2sgdG8g
c2VlIGlmIHRoaXMgb2JqZWN0IGlzIGFscmVhZHkgd3JhcHBlZC4KICAgICBpZiAob2JqZWN0LT5J
bnRlcm5hbEZpZWxkQ291bnQoKSA9PSBucE9iamVjdEludGVybmFsRmllbGRDb3VudCkgewotICAg
ICAgICBXcmFwcGVyVHlwZUluZm8qIHR5cGVJbmZvID0gc3RhdGljX2Nhc3Q8V3JhcHBlclR5cGVJ
bmZvKj4ob2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQoV2ViQ29yZTo6djhET01X
cmFwcGVyVHlwZUluZGV4KSk7Ci0gICAgICAgIGlmICh0eXBlSW5mbyA9PSBXZWJDb3JlOjpucE9i
amVjdFR5cGVJbmZvKCkpIHsKKyAgICAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IHN0
YXRpY19jYXN0PFdyYXBwZXJUeXBlSW5mbyo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5h
bEZpZWxkKHY4RE9NV3JhcHBlclR5cGVJbmRleCkpOworICAgICAgICBpZiAodHlwZUluZm8gPT0g
bnBPYmplY3RUeXBlSW5mbygpKSB7CiAKICAgICAgICAgICAgIE5QT2JqZWN0KiByZXR1cm5WYWx1
ZSA9IHY4T2JqZWN0VG9OUE9iamVjdChvYmplY3QpOwogICAgICAgICAgICAgX05QTl9SZXRhaW5P
YmplY3QocmV0dXJuVmFsdWUpOwpAQCAtMTM3LDEyICsxMjksMTQgQEAgTlBPYmplY3QqIG5wQ3Jl
YXRlVjhTY3JpcHRPYmplY3QoTlBQIG5wcAogICAgIFY4TlBPYmplY3QqIHY4bnBPYmplY3QgPSBy
ZWludGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihfTlBOX0NyZWF0ZU9iamVjdChucHAsICZWOE5Q
T2JqZWN0Q2xhc3MpKTsKICAgICB2OG5wT2JqZWN0LT52OE9iamVjdCA9IHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+OjpOZXcob2JqZWN0KTsKICNpZm5kZWYgTkRFQlVHCi0gICAgVjhHQ0NvbnRy
b2xsZXI6OnJlZ2lzdGVyR2xvYmFsSGFuZGxlKFdlYkNvcmU6Ok5QT0JKRUNULCB2OG5wT2JqZWN0
LCB2OG5wT2JqZWN0LT52OE9iamVjdCk7CisgICAgVjhHQ0NvbnRyb2xsZXI6OnJlZ2lzdGVyR2xv
YmFsSGFuZGxlKE5QT0JKRUNULCB2OG5wT2JqZWN0LCB2OG5wT2JqZWN0LT52OE9iamVjdCk7CiAj
ZW5kaWYKICAgICB2OG5wT2JqZWN0LT5yb290T2JqZWN0ID0gcm9vdDsKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxOUE9iamVjdCo+KHY4bnBPYmplY3QpOwogfQogCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKIGJvb2wgX05QTl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0
LCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSwgY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVp
bnQzMl90IGFyZ3VtZW50Q291bnQsIE5QVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmICghbnBP
YmplY3QpCkBAIC0xNjIsNiArMTU2LDE0IEBAIGJvb2wgX05QTl9JbnZva2UoTlBQIG5wcCwgTlBP
YmplY3QqIG5wT2IKICAgICBpZiAoIWlkZW50aWZpZXItPmlzU3RyaW5nKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKKyAgICBpZiAoIXN0cmNtcChpZGVudGlmaWVyLT52YWx1ZS5zdHJpbmcsICJl
dmFsIikpIHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGFyZ3VtZW50c1swXS50eXBlICE9IE5QVmFyaWFudFR5
cGVfU3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gX05Q
Tl9FdmFsdWF0ZShucHAsIG5wT2JqZWN0LCBjb25zdF9jYXN0PE5QU3RyaW5nKj4oJmFyZ3VtZW50
c1swXS52YWx1ZS5zdHJpbmdWYWx1ZSksIHJlc3VsdCk7CisgICAgfQorCiAgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIC8vIEZJWE1FOiBzaG91bGQgdXNlIHRoZSBwbHVnaW4n
cyBvd25lciBmcmFtZSBhcyB0aGUgc2VjdXJpdHkgY29udGV4dC4KICAgICB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0ID0gdG9WOENvbnRleHQobnBwLCBucE9iamVjdCk7CkBAIC0xNjks
MTQgKzE3MSw3IEBAIGJvb2wgX05QTl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QqIG5wT2IKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRl
eHQpOwotCi0gICAgaWYgKG1ldGhvZE5hbWUgPT0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKCJl
dmFsIikpIHsKLSAgICAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGFyZ3VtZW50c1swXS50eXBlICE9IE5QVmFyaWFudFR5
cGVfU3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gX05Q
Tl9FdmFsdWF0ZShucHAsIG5wT2JqZWN0LCBjb25zdF9jYXN0PE5QU3RyaW5nKj4oJmFyZ3VtZW50
c1swXS52YWx1ZS5zdHJpbmdWYWx1ZSksIHJlc3VsdCk7Ci0gICAgfQorICAgIEV4Y2VwdGlvbkNh
dGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmdW5j
dGlvbk9iamVjdCA9IHY4TnBPYmplY3QtPnY4T2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KGlk
ZW50aWZpZXItPnZhbHVlLnN0cmluZykpOwogICAgIGlmIChmdW5jdGlvbk9iamVjdC5Jc0VtcHR5
KCkgfHwgZnVuY3Rpb25PYmplY3QtPklzTnVsbCgpKSB7CkBAIC0yMjksNiArMjI0LDcgQEAgYm9v
bCBfTlBOX0ludm9rZURlZmF1bHQoTlBQIG5wcCwgTlBPYmplYwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgRXhjZXB0
aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRjaGVyOwogCiAgICAgLy8gTG9va3VwIHRoZSBmdW5jdGlv
biBvYmplY3QgYW5kIGNhbGwgaXQuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBmdW5jdGlv
bk9iamVjdCh2OE5wT2JqZWN0LT52OE9iamVjdCk7CkBAIC0yNTUsNyArMjUxLDcgQEAgYm9vbCBf
TlBOX0ludm9rZURlZmF1bHQoTlBQIG5wcCwgTlBPYmplYwogCiBib29sIF9OUE5fRXZhbHVhdGUo
TlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUFN0cmluZyogbnBTY3JpcHQsIE5QVmFyaWFu
dCogcmVzdWx0KQogewotICAgIGJvb2wgcG9wdXBzQWxsb3dlZCA9IFdlYkNvcmU6OlBsYXRmb3Jt
QnJpZGdlOjpwb3B1cHNBbGxvd2VkKG5wcCk7CisgICAgYm9vbCBwb3B1cHNBbGxvd2VkID0gUGxh
dGZvcm1CcmlkZ2U6OnBvcHVwc0FsbG93ZWQobnBwKTsKICAgICByZXR1cm4gX05QTl9FdmFsdWF0
ZUhlbHBlcihucHAsIHBvcHVwc0FsbG93ZWQsIG5wT2JqZWN0LCBucFNjcmlwdCwgcmVzdWx0KTsK
IH0KIApAQCAtMjc3LDEzICsyNzMsMTQgQEAgYm9vbCBfTlBOX0V2YWx1YXRlSGVscGVyKE5QUCBu
cHAsIGJvb2wgcAogICAgIEFTU0VSVChwcm94eSk7CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUg
c2NvcGUoY29udGV4dCk7CisgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRjaGVyOwog
Ci0gICAgV2ViQ29yZTo6U3RyaW5nIGZpbGVuYW1lOworICAgIFN0cmluZyBmaWxlbmFtZTsKICAg
ICBpZiAoIXBvcHVwc0FsbG93ZWQpCiAgICAgICAgIGZpbGVuYW1lID0gIm5wc2NyaXB0IjsKIAot
ICAgIFdlYkNvcmU6OlN0cmluZyBzY3JpcHQgPSBXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4KG5w
U2NyaXB0LT5VVEY4Q2hhcmFjdGVycywgbnBTY3JpcHQtPlVURjhMZW5ndGgpOwotICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gcHJveHktPmV2YWx1YXRlKFdlYkNvcmU6OlNjcmlw
dFNvdXJjZUNvZGUoc2NyaXB0LCBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmlu
ZywgZmlsZW5hbWUpKSwgMCk7CisgICAgU3RyaW5nIHNjcmlwdCA9IFN0cmluZzo6ZnJvbVVURjgo
bnBTY3JpcHQtPlVURjhDaGFyYWN0ZXJzLCBucFNjcmlwdC0+VVRGOExlbmd0aCk7CisgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdjhyZXN1bHQgPSBwcm94eS0+ZXZhbHVhdGUoU2NyaXB0U291cmNl
Q29kZShzY3JpcHQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBmaWxlbmFtZSkpLCAwKTsKIAogICAg
IGlmICh2OHJlc3VsdC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNiw2
ICszMDMsNyBAQCBib29sIF9OUE5fR2V0UHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QqCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3Bl
KGNvbnRleHQpOworICAgICAgICBFeGNlcHRpb25DYXRjaGVyIGV4Y2VwdGlvbkNhdGNoZXI7CiAK
ICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmoob2JqZWN0LT52OE9iamVjdCk7CiAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gb2JqLT5HZXQobnBJZGVudGlm
aWVyVG9WOElkZW50aWZpZXIocHJvcGVydHlOYW1lKSk7CkBAIC0zNDAsNiArMzM4LDcgQEAgYm9v
bCBfTlBOX1NldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKKyAg
ICAgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRjaGVyOwogCiAgICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gb2JqKG9iamVjdC0+djhPYmplY3QpOwogICAgICAgICBvYmotPlNl
dChucElkZW50aWZpZXJUb1Y4SWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLApAQCAtMzY3LDYgKzM2
Niw3IEBAIGJvb2wgX05QTl9SZW1vdmVQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamUKICAgICBpZiAo
Y29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB2ODo6Q29udGV4
dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25D
YXRjaGVyOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmoob2JqZWN0LT52OE9iamVj
dCk7CiAgICAgLy8gRklYTUU6IFZlcmlmeSB0aGF0IHNldHRpbmcgdG8gdW5kZWZpbmVkIGlzIHJp
Z2h0LgpAQCAtMzg3LDYgKzM4Nyw3IEBAIGJvb2wgX05QTl9IYXNQcm9wZXJ0eShOUFAgbnBwLCBO
UE9iamVjdCoKICAgICAgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7Cisg
ICAgICAgIEV4Y2VwdGlvbkNhdGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAogICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG9iaihvYmplY3QtPnY4T2JqZWN0KTsKICAgICAgICAgcmV0dXJu
IG9iai0+SGFzKG5wSWRlbnRpZmllclRvVjhJZGVudGlmaWVyKHByb3BlcnR5TmFtZSkpOwpAQCAt
NDEwLDYgKzQxMSw3IEBAIGJvb2wgX05QTl9IYXNNZXRob2QoTlBQIG5wcCwgTlBPYmplY3QqIG4K
ICAgICAgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgICAgIEV4
Y2VwdGlvbkNhdGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAogICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iaihvYmplY3QtPnY4T2JqZWN0KTsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHByb3AgPSBvYmotPkdldChucElkZW50aWZpZXJUb1Y4SWRlbnRpZmllcihtZXRob2RO
YW1lKSk7CkBAIC00MzUsNiArNDM3LDggQEAgdm9pZCBfTlBOX1NldEV4Y2VwdGlvbihOUE9iamVj
dCogbnBPYmplYwogICAgICAgICByZXR1cm47CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2Nv
cGUoY29udGV4dCk7CisgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRjaGVyOworCiAg
ICAgVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpHZW5lcmFsRXJyb3IsIG1lc3NhZ2UpOwog
fQogCkBAIC00NTEsNiArNDU1LDcgQEAgYm9vbCBfTlBOX0VudW1lcmF0ZShOUFAgbnBwLCBOUE9i
amVjdCogbgogICAgICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKKyAg
ICAgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRjaGVyOwogCiAgICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gb2JqKG9iamVjdC0+djhPYmplY3QpOwogCkBAIC01MDUsNiArNTEw
LDcgQEAgYm9vbCBfTlBOX0NvbnN0cnVjdChOUFAgbnBwLCBOUE9iamVjdCogbgogICAgICAgICBp
ZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKKyAgICAgICAgRXhjZXB0aW9uQ2F0
Y2hlciBleGNlcHRpb25DYXRjaGVyOwogCiAgICAgICAgIC8vIExvb2t1cCB0aGUgY29uc3RydWN0
b3IgZnVuY3Rpb24uCiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Rvck9iaihvYmpl
Y3QtPnY4T2JqZWN0KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmgJKHJldmlzaW9u
IDU5NjM3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDEyICs0NSwxMiBAQAogI2luY2x1ZGUgPHY4Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKLSAgICBjbGFzcyBET01XaW5kb3c7CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IG5wT2Jq
ZWN0SW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3Vu
dCArIDA7CitjbGFzcyBET01XaW5kb3c7CiAKLSAgICBXcmFwcGVyVHlwZUluZm8qIG5wT2JqZWN0
VHlwZUluZm8oKTsKLX0KK3N0YXRpYyBjb25zdCBpbnQgbnBPYmplY3RJbnRlcm5hbEZpZWxkQ291
bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKworV3JhcHBlclR5
cGVJbmZvKiBucE9iamVjdFR5cGVJbmZvKCk7CiAKIGV4dGVybiBOUENsYXNzKiBucFNjcmlwdE9i
amVjdENsYXNzOwogCkBAIC01OSw3ICs1OSw3IEBAIGV4dGVybiBOUENsYXNzKiBucFNjcmlwdE9i
amVjdENsYXNzOwogc3RydWN0IFY4TlBPYmplY3QgewogICAgIE5QT2JqZWN0IG9iamVjdDsKICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB2OE9iamVjdDsKLSAgICBXZWJDb3JlOjpET01X
aW5kb3cqIHJvb3RPYmplY3Q7CisgICAgRE9NV2luZG93KiByb290T2JqZWN0OwogfTsKIAogc3Ry
dWN0IFByaXZhdGVJZGVudGlmaWVyIHsKQEAgLTcwLDggKzcwLDEwIEBAIHN0cnVjdCBQcml2YXRl
SWRlbnRpZmllciB7CiAgICAgYm9vbCBpc1N0cmluZzsKIH07CiAKLU5QT2JqZWN0KiBucENyZWF0
ZVY4U2NyaXB0T2JqZWN0KE5QUCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgV2ViQ29yZTo6RE9N
V2luZG93Kik7CitOUE9iamVjdCogbnBDcmVhdGVWOFNjcmlwdE9iamVjdChOUFAsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4sIERPTVdpbmRvdyopOwogCiBOUE9iamVjdCogdjhPYmplY3RUb05QT2Jq
ZWN0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
ICNlbmRpZiAvLyBOUFY4T2JqZWN0X2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9i
amVjdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3Qu
Y3BwCShyZXZpc2lvbiA1OTYzNykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJucHJ1bnRpbWVf
cHJpdi5oIgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBJbnZva2VGdW5jdGlvblR5cGUg
ewogICAgIEludm9rZU1ldGhvZCA9IDEsCkBAIC00MDksMyArNDA5LDUgQEAgdm9pZCBmb3JnZXRW
OE9iamVjdEZvck5QT2JqZWN0KE5QT2JqZWN0KgogICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3Qo
b2JqZWN0KTsKICAgICB9CiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9WOE5QT2JqZWN0LmgJKHJldmlzaW9uIDU5NjM3KQorKysgV2ViQ29yZS9iaW5kaW5n
cy92OC9WOE5QT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAKIAogI2lu
Y2x1ZGUgPHY4Lmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogLy8gVGhlc2UgZnVuY3Rpb25z
IGNhbiBiZSByZXBsYWNlZCBieSBub3JtYWwgSlMgb3BlcmF0aW9uLgogLy8gR2V0dGVycwogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0TmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYpOwpAQCAtNjUsNCArNjcs
NiBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlVjhPYmplY3RGb3JOCiAvLyBjYW5ub3Qg
YmUgcmVmZXJyZWQgdG8uCiB2b2lkIGZvcmdldFY4T2JqZWN0Rm9yTlBPYmplY3QoTlBPYmplY3Qq
KTsKIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYgLy8gVjhOUE9iamVjdF9oCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5jcHANCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5jcHAJKHJldmlzaW9uIDU5NjM3KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOE5QVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxOSAr
MjksMTggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJWOE5QVXRp
bHMuaCIKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSN1bmRlZiBMT0cKLQorI2luY2x1ZGUgIm5wcnVudGlt
ZV9pbXBsLmgiCisjaW5jbHVkZSAibnBydW50aW1lX3ByaXYuaCIKICNpbmNsdWRlICJOUFY4T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiVjhOUE9iamVjdC5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKLSNp
bmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgotI2luY2x1ZGUgIm5wcnVudGltZV9wcml2LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBjb252ZXJ0VjhPYmplY3RUb05QVmFyaWFudCh2
ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QsIE5QT2JqZWN0KiBvd25lciwgTlBWYXJpYW50KiBy
ZXN1bHQpCiB7CkBAIC02OSw3ICs2OCw3IEBAIHZvaWQgY29udmVydFY4T2JqZWN0VG9OUFZhcmlh
bnQodjg6OkxvY2EKICAgICAgICAgY2hhciogdXRmOF9jaGFycyA9IHN0cmR1cCgqdXRmOCk7CiAg
ICAgICAgIFNUUklOR05fVE9fTlBWQVJJQU5UKHV0ZjhfY2hhcnMsIHV0ZjgubGVuZ3RoKCksICpy
ZXN1bHQpOwogICAgIH0gZWxzZSBpZiAob2JqZWN0LT5Jc09iamVjdCgpKSB7Ci0gICAgICAgIFdl
YkNvcmU6OkRPTVdpbmRvdyogd2luZG93ID0gV2ViQ29yZTo6VjhQcm94eTo6cmV0cmlldmVXaW5k
b3coV2ViQ29yZTo6VjhQcm94eTo6Y3VycmVudENvbnRleHQoKSk7CisgICAgICAgIERPTVdpbmRv
dyogd2luZG93ID0gVjhQcm94eTo6cmV0cmlldmVXaW5kb3coVjhQcm94eTo6Y3VycmVudENvbnRl
eHQoKSk7CiAgICAgICAgIE5QT2JqZWN0KiBucG9iamVjdCA9IG5wQ3JlYXRlVjhTY3JpcHRPYmpl
Y3QoMCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChvYmplY3QpLCB3aW5kb3cpOwogICAg
ICAgICBpZiAobnBvYmplY3QpCiAgICAgICAgICAgICBfTlBOX1JlZ2lzdGVyT2JqZWN0KG5wb2Jq
ZWN0LCBvd25lcik7CkBAIC03Nyw3ICs3Niw2IEBAIHZvaWQgY29udmVydFY4T2JqZWN0VG9OUFZh
cmlhbnQodjg6OkxvY2EKICAgICB9CiB9CiAKLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZl
cnROUFZhcmlhbnRUb1Y4T2JqZWN0KGNvbnN0IE5QVmFyaWFudCogdmFyaWFudCwgTlBPYmplY3Qq
IG5wb2JqZWN0KQogewogICAgIE5QVmFyaWFudFR5cGUgdHlwZSA9IHZhcmlhbnQtPnR5cGU7CkBA
IC0xMjgsMyArMTI2LDQxIEBAIE5QSWRlbnRpZmllciBnZXRTdHJpbmdJZGVudGlmaWVyKHY4OjpI
YW4KICAgICB2ODo6U3RyaW5nOjpVdGY4VmFsdWUgdXRmOChzdHIpOwogICAgIHJldHVybiBfTlBO
X0dldFN0cmluZ0lkZW50aWZpZXIoKnV0ZjgpOwogfQorCitzdHJ1Y3QgRXhjZXB0aW9uSGFuZGxl
ckluZm8geworICAgIEV4Y2VwdGlvbkhhbmRsZXJJbmZvKiBwcmV2aW91czsKKyAgICBFeGNlcHRp
b25IYW5kbGVyIGhhbmRsZXI7CisgICAgdm9pZCogZGF0YTsKK307CisKK3N0YXRpYyBFeGNlcHRp
b25IYW5kbGVySW5mbyogdG9wSGFuZGxlcjsKKwordm9pZCBwdXNoRXhjZXB0aW9uSGFuZGxlcihF
eGNlcHRpb25IYW5kbGVyIGhhbmRsZXIsIHZvaWQqIGRhdGEpCit7CisgICAgRXhjZXB0aW9uSGFu
ZGxlckluZm8qIGluZm8gPSBuZXcgRXhjZXB0aW9uSGFuZGxlckluZm87CisgICAgaW5mby0+cHJl
dmlvdXMgPSB0b3BIYW5kbGVyOworICAgIGluZm8tPmhhbmRsZXIgPSBoYW5kbGVyOworICAgIGlu
Zm8tPmRhdGEgPSBkYXRhOworICAgIHRvcEhhbmRsZXIgPSBpbmZvOworfQorCit2b2lkIHBvcEV4
Y2VwdGlvbkhhbmRsZXIoKQoreworICAgIEFTU0VSVCh0b3BIYW5kbGVyKTsKKyAgICBFeGNlcHRp
b25IYW5kbGVySW5mbyogZG9vbWVkID0gdG9wSGFuZGxlcjsKKyAgICB0b3BIYW5kbGVyID0gdG9w
SGFuZGxlci0+cHJldmlvdXM7CisgICAgZGVsZXRlIGRvb21lZDsKK30KKworRXhjZXB0aW9uQ2F0
Y2hlcjo6fkV4Y2VwdGlvbkNhdGNoZXIoKQoreworICAgIGlmICghbV90cnlDYXRjaC5IYXNDYXVn
aHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHRvcEhhbmRsZXIpCisgICAgICAgIHRv
cEhhbmRsZXItPmhhbmRsZXIodG9wSGFuZGxlci0+ZGF0YSwgKnY4OjpTdHJpbmc6OlV0ZjhWYWx1
ZShtX3RyeUNhdGNoLkV4Y2VwdGlvbigpKSk7CisgICAgZWxzZQorICAgICAgICBtX3RyeUNhdGNo
LlJlVGhyb3coKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9WOE5QVXRpbHMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhOUFV0aWxzLmgJKHJldmlzaW9uIDU5NjM3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9W
OE5QVXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQAogCiAjaW5jbHVkZSA8
djguaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworCiAvLyBDb252ZXJ0IGEgVjggVmFsdWUgb2Yg
YW55IHR5cGUgKHN0cmluZywgYm9vbCwgb2JqZWN0LCBldGMpIHRvIGEgTlBWYXJpYW50Lgogdm9p
ZCBjb252ZXJ0VjhPYmplY3RUb05QVmFyaWFudCh2ODo6TG9jYWw8djg6OlZhbHVlPiwgTlBPYmpl
Y3QqLCBOUFZhcmlhbnQqKTsKIApAQCAtNDgsNCArNTAsMjEgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbnZlcnROUFZhcmlhbnRUbwogLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBO
UE4gU3RyaW5nIElkZW50aWZpZXIgZnJvbSBhIHY4IHN0cmluZy4KIE5QSWRlbnRpZmllciBnZXRT
dHJpbmdJZGVudGlmaWVyKHY4OjpIYW5kbGU8djg6OlN0cmluZz4pOwogCisvLyBUaGUgRXhjZXB0
aW9uSGFuZGxlciB3aWxsIGJlIG5vdGlmaWVkIG9mIGFueSBleGNlcHRpb25zIHRocm93biB3aGls
ZQorLy8gb3BlcmF0aW5nIG9uIGEgTlBPYmplY3QuCit0eXBlZGVmIHZvaWQgKCpFeGNlcHRpb25I
YW5kbGVyKSh2b2lkKiBkYXRhLCBjb25zdCBOUFVURjgqIG1lc3NhZ2UpOwordm9pZCBwdXNoRXhj
ZXB0aW9uSGFuZGxlcihFeGNlcHRpb25IYW5kbGVyLCB2b2lkKiBkYXRhKTsKK3ZvaWQgcG9wRXhj
ZXB0aW9uSGFuZGxlcigpOworCisvLyBVcG9uIGRlc3RydWN0aW9uLCBhbiBFeGNlcHRpb25DYXRj
aGVyIHdpbGwgcGFzcyBhIGNhdWdodCBleGNlcHRpb24gdG8gdGhlCisvLyBjdXJyZW50IEV4Y2Vw
dGlvbkhhbmRsZXIuCitjbGFzcyBFeGNlcHRpb25DYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB+RXhj
ZXB0aW9uQ2F0Y2hlcigpOworcHJpdmF0ZToKKyAgICB2ODo6VHJ5Q2F0Y2ggbV90cnlDYXRjaDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIFY4TlBVdGlsc19oCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZS5jcHANCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZS5jcHAJKHJldmlzaW9uIDU5NjM3KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9ucHJ1bnRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSw4IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogLy8gRklYTUU6IENvbnNpZGVyIHJl
bW92aW5nIGxvY2tzIGlmIHdlJ3JlIHNpbmdsZXRocmVhZGVkIGFscmVhZHkuCiAvLyBUaGUgc3Rh
dGljIGluaXRpYWxpemVyIGhlcmUgc2hvdWxkIHdvcmsgb2theSwgYnV0IHdlIHdhbnQgdG8gYXZv
aWQKIC8vIHN0YXRpYyBpbml0aWFsaXphdGlvbiBpbiBnZW5lcmFsLgpJbmRleDogV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU5NzgwKQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA1LTE5ICBEYXJpbiBGaXNoZXIgIDxkYXJp
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgW2Nocm9taXVtXSBQcm92aWRlIGEgd2F5IHRvIGNhdGNoIGV4Y2VwdGlvbnMgdGhy
b3duIHdoaWxlIGludGVyYWN0aW5nCisgICAgICAgIHdpdGggYSBOUE9iamVjdCB2aWEgV2ViQmlu
ZGluZ3MgbWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5Mzc4CisKKyAgICAgICAgKiBwdWJsaWMvV2ViQmluZGluZ3MuaDoKKyAgICAgICAg
KiBzcmMvV2ViQmluZGluZ3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCaW5kaW5nczo6cHVz
aEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJCaW5kaW5nczo6cG9wRXhj
ZXB0aW9uSGFuZGxlcik6CisKIDIwMTAtMDUtMTkgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQmluZGluZ3MuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQmluZGluZ3MuaAkocmV2aXNpb24gNTk2MzcpCisrKyBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkJpbmRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcs
NyBAQCBwdWJsaWM6CiAgICAgLy8gTlBOX1VURjhGcm9tSWRlbnRpZmllcgogICAgIFdFQktJVF9B
UEkgc3RhdGljIE5QVVRGOCogdXRmOEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllcik7CiAKLSAg
ICAvLyBNaXNjZWxsYW5lb3VzIHV0aWxpdHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIE1pc2NlbGxhbmVvdXMgdXRpbGl0eSBmdW5jdGlvbnMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gQ29tcGxl
bWVudCB0byBOUE5fR2V0X19fSWRlbnRpZmllciBmdW5jdGlvbnMuICBFeHRyYWN0cyBkYXRhIGZy
b20gdGhlIE5QSWRlbnRpZmllciBkYXRhCiAgICAgLy8gc3RydWN0dXJlLiAgSWYgaXNTdHJpbmcg
aXMgdHJ1ZSB1cG9uIHJldHVybiwgc3RyaW5nIHdpbGwgYmUgc2V0IGJ1dCBudW1iZXIncyB2YWx1
ZSBpcwpAQCAtMTM4LDYgKzEzOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRydWUgKHN1
Y2Nlc3MpIGlmIHRoZSBnaXZlbiBucG9iaiBpcyBhIHJhbmdlIG9iamVjdC4KICAgICAvLyBJZiBz
bywgcmV0dXJuIHRoYXQgcmFuZ2UgYXMgYSBXZWJSYW5nZSBvYmplY3QuCiAgICAgV0VCS0lUX0FQ
SSBzdGF0aWMgYm9vbCBnZXRSYW5nZShOUE9iamVjdCogcmFuZ2UsIFdlYlJhbmdlKik7CisKKyAg
ICAvLyBFeGNlcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHR5cGVkZWYgdm9pZCAoRXhjZXB0aW9uSGFuZGxl
cikodm9pZCogZGF0YSwgY29uc3QgTlBVVEY4KiBtZXNzYWdlKTsKKworICAgIC8vIFRoZSBleGNl
cHRpb24gaGFuZGxlciB3aWxsIGJlIG5vdGlmaWVkIG9mIGFueSBleGNlcHRpb25zIHRocm93biB3
aGlsZQorICAgIC8vIG9wZXJhdGluZyBvbiBhIE5QT2JqZWN0LgorICAgIFdFQktJVF9BUEkgc3Rh
dGljIHZvaWQgcHVzaEV4Y2VwdGlvbkhhbmRsZXIoRXhjZXB0aW9uSGFuZGxlciwgdm9pZCogZGF0
YSk7CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBwb3BFeGNlcHRpb25IYW5kbGVyKCk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
QmluZGluZ3MuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5k
aW5ncy5jcHAJKHJldmlzaW9uIDU5NjM3KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5k
aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJWOERP
TVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOEV2ZW50LmgiCiAjaW5jbHVkZSAiVjhIZWxwZXJzLmgi
CisjaW5jbHVkZSAiVjhOUFV0aWxzLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUg
IlY4UmFuZ2UuaCIKICNlbGlmIFVTRShKU0MpCkBAIC0zMjIsNCArMzIzLDE0IEBAIGJvb2wgV2Vi
QmluZGluZ3M6OmdldFJhbmdlKE5QT2JqZWN0KiByYW4KICNlbmRpZgogfQogCit2b2lkIFdlYkJp
bmRpbmdzOjpwdXNoRXhjZXB0aW9uSGFuZGxlcihFeGNlcHRpb25IYW5kbGVyIGhhbmRsZXIsIHZv
aWQqIGRhdGEpCit7CisgICAgV2ViQ29yZTo6cHVzaEV4Y2VwdGlvbkhhbmRsZXIoaGFuZGxlciwg
ZGF0YSk7Cit9CisKK3ZvaWQgV2ViQmluZGluZ3M6OnBvcEV4Y2VwdGlvbkhhbmRsZXIoKQorewor
ICAgIFdlYkNvcmU6OnBvcEV4Y2VwdGlvbkhhbmRsZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Cg==
</data>
<flag name="review"
          id="40950"
          type_id="1"
          status="+"
          setter="japhet"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56565</attachid>
            <date>2010-05-19 22:37:23 -0700</date>
            <delta_ts>2010-05-20 13:33:13 -0700</delta_ts>
            <desc>v3 patch</desc>
            <filename>exception_3.txt</filename>
            <type>text/plain</type>
            <size>19429</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU5ODE4KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAxMC0wNS0xOSAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtjaHJvbWl1bV0gUHJvdmlkZSBhIHdheSB0byBjYXRjaCBleGNlcHRpb25zIHRocm93biB3aGls
ZSBpbnRlcmFjdGluZworICAgICAgICB3aXRoIGEgTlBPYmplY3QgdmlhIFdlYkJpbmRpbmdzIG1l
dGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTM3OAorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gaW5jbHVkZXMgYSBzbWFsbCBiaXQgb2Yg
Y2xlYW51cCBpbiBWOE5QT2JqZWN0IGFuZAorICAgICAgICBmcmllbmRzLiAgSSBtb3ZlZCBjb2Rl
IGludG8gdGhlIFdlYkNvcmUgbmFtZXNwYWNlIHdoZXJlIGFwcHJvcHJpYXRlLgorICAgICAgICAK
KyAgICAgICAgSW4gX05QTl9JbnZva2UsIEkgYWxzbyBtb3ZlZCB0aGUgY2FsbCB0byBfTlBOX0V2
YWx1YXRlIG91dHNpZGUgb2YgdGhlCisgICAgICAgIGNvbnRleHQgc2NvcGUuICBJIGRpZCB0aGlz
IHRvIGF2b2lkIGhhdmluZyBuZXN0ZWQgRXhjZXB0aW9uQ2F0Y2hlcgorICAgICAgICBvYmplY3Rz
LCB3aGljaCBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgaXQgc2VlbWVkIGNsZWFuZXIu
CisgICAgICAgIF9OUE5fRXZhbHVhdGUgYWxyZWFkeSB0YWtlcyBjYXJlIG9mIGNyZWF0aW5nIGEg
Y29udGV4dCBzY29wZS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6djhPYmplY3RUb05QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Om5wQ3JlYXRlVjhTY3JpcHRPYmplY3QpOgorICAgICAgICAoX05QTl9JbnZva2UpOgorICAgICAg
ICAoX05QTl9JbnZva2VEZWZhdWx0KToKKyAgICAgICAgKF9OUE5fRXZhbHVhdGUpOgorICAgICAg
ICAoX05QTl9FdmFsdWF0ZUhlbHBlcik6CisgICAgICAgIChfTlBOX0dldFByb3BlcnR5KToKKyAg
ICAgICAgKF9OUE5fU2V0UHJvcGVydHkpOgorICAgICAgICAoX05QTl9SZW1vdmVQcm9wZXJ0eSk6
CisgICAgICAgIChfTlBOX0hhc1Byb3BlcnR5KToKKyAgICAgICAgKF9OUE5fSGFzTWV0aG9kKToK
KyAgICAgICAgKF9OUE5fU2V0RXhjZXB0aW9uKToKKyAgICAgICAgKF9OUE5fRW51bWVyYXRlKToK
KyAgICAgICAgKF9OUE5fQ29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2Jq
ZWN0Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhOUE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBVdGls
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VjhPYmplY3RUb05QVmFyaWFudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwdXNoRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3BFeGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkNhdGNo
ZXI6OkV4Y2VwdGlvbkNhdGNoZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXhjZXB0aW9uQ2F0Y2hl
cjo6fkV4Y2VwdGlvbkNhdGNoZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBVdGlscy5o
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L25wcnVudGltZS5jcHA6CisKIDIwMTAtMDUtMTkgIEFu
ZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3Qu
Y3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAko
cmV2aXNpb24gNTk4MTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MiwxMyArNTIsNyBAQAogI2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVk
ZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCi11c2luZyBXZWJDb3JlOjpucE9iamVjdEludGVybmFs
RmllbGRDb3VudDsKLXVzaW5nIFdlYkNvcmU6OnRvVjhDb250ZXh0OwotdXNpbmcgV2ViQ29yZTo6
dG9WOFByb3h5OwotdXNpbmcgV2ViQ29yZTo6VjhET01XcmFwcGVyOwotdXNpbmcgV2ViQ29yZTo6
VjhHQ0NvbnRyb2xsZXI7Ci11c2luZyBXZWJDb3JlOjpWOFByb3h5OwotdXNpbmcgV2ViQ29yZTo6
V3JhcHBlclR5cGVJbmZvOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNjgsOCArNjIsNiBAQCBXcmFwcGVyVHlwZUluZm8qIG5wT2JqZWN0VHlw
ZUluZm8oKQogICAgIHJldHVybiAmdHlwZUluZm87CiB9CiAKLX0KLQogLy8gRklYTUU6IENvbW1l
bnRzIG9uIHdoeSB1c2UgbWFsbG9jIGFuZCBmcmVlLgogc3RhdGljIE5QT2JqZWN0KiBhbGxvY1Y4
TlBPYmplY3QoTlBQLCBOUENsYXNzKikKIHsKQEAgLTExMCw3ICsxMDIsNyBAQCBzdGF0aWMgdjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5wSWRlbnRpZmllCiAKIE5QT2JqZWN0KiB2OE9iamVjdFRvTlBP
YmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiB7Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8TlBPYmplY3QqPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVs
ZChXZWJDb3JlOjp2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOyAKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxOUE9iamVjdCo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxk
KHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7IAogfQogCiBzdGF0aWMgTlBDbGFzcyBWOE5QT2Jq
ZWN0Q2xhc3MgPSB7IE5QX0NMQVNTX1NUUlVDVF9WRVJTSU9OLApAQCAtMTIxLDEyICsxMTMsMTIg
QEAgc3RhdGljIE5QQ2xhc3MgVjhOUE9iamVjdENsYXNzID0geyBOUF9DTAogLy8gTlBBUEkncyBu
cHJ1bnRpbWUgZnVuY3Rpb25zLgogTlBDbGFzcyogbnBTY3JpcHRPYmplY3RDbGFzcyA9ICZWOE5Q
T2JqZWN0Q2xhc3M7CiAKLU5QT2JqZWN0KiBucENyZWF0ZVY4U2NyaXB0T2JqZWN0KE5QUCBucHAs
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBXZWJDb3JlOjpET01XaW5kb3cqIHJvb3Qp
CitOUE9iamVjdCogbnBDcmVhdGVWOFNjcmlwdE9iamVjdChOUFAgbnBwLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iamVjdCwgRE9NV2luZG93KiByb290KQogewogICAgIC8vIENoZWNrIHRvIHNl
ZSBpZiB0aGlzIG9iamVjdCBpcyBhbHJlYWR5IHdyYXBwZWQuCiAgICAgaWYgKG9iamVjdC0+SW50
ZXJuYWxGaWVsZENvdW50KCkgPT0gbnBPYmplY3RJbnRlcm5hbEZpZWxkQ291bnQpIHsKLSAgICAg
ICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IHN0YXRpY19jYXN0PFdyYXBwZXJUeXBlSW5m
byo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKFdlYkNvcmU6OnY4RE9NV3Jh
cHBlclR5cGVJbmRleCkpOwotICAgICAgICBpZiAodHlwZUluZm8gPT0gV2ViQ29yZTo6bnBPYmpl
Y3RUeXBlSW5mbygpKSB7CisgICAgICAgIFdyYXBwZXJUeXBlSW5mbyogdHlwZUluZm8gPSBzdGF0
aWNfY2FzdDxXcmFwcGVyVHlwZUluZm8qPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxG
aWVsZCh2OERPTVdyYXBwZXJUeXBlSW5kZXgpKTsKKyAgICAgICAgaWYgKHR5cGVJbmZvID09IG5w
T2JqZWN0VHlwZUluZm8oKSkgewogCiAgICAgICAgICAgICBOUE9iamVjdCogcmV0dXJuVmFsdWUg
PSB2OE9iamVjdFRvTlBPYmplY3Qob2JqZWN0KTsKICAgICAgICAgICAgIF9OUE5fUmV0YWluT2Jq
ZWN0KHJldHVyblZhbHVlKTsKQEAgLTEzNywxMiArMTI5LDE0IEBAIE5QT2JqZWN0KiBucENyZWF0
ZVY4U2NyaXB0T2JqZWN0KE5QUCBucHAKICAgICBWOE5QT2JqZWN0KiB2OG5wT2JqZWN0ID0gcmVp
bnRlcnByZXRfY2FzdDxWOE5QT2JqZWN0Kj4oX05QTl9DcmVhdGVPYmplY3QobnBwLCAmVjhOUE9i
amVjdENsYXNzKSk7CiAgICAgdjhucE9iamVjdC0+djhPYmplY3QgPSB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0Pjo6TmV3KG9iamVjdCk7CiAjaWZuZGVmIE5ERUJVRwotICAgIFY4R0NDb250cm9s
bGVyOjpyZWdpc3Rlckdsb2JhbEhhbmRsZShXZWJDb3JlOjpOUE9CSkVDVCwgdjhucE9iamVjdCwg
djhucE9iamVjdC0+djhPYmplY3QpOworICAgIFY4R0NDb250cm9sbGVyOjpyZWdpc3Rlckdsb2Jh
bEhhbmRsZShOUE9CSkVDVCwgdjhucE9iamVjdCwgdjhucE9iamVjdC0+djhPYmplY3QpOwogI2Vu
ZGlmCiAgICAgdjhucE9iamVjdC0+cm9vdE9iamVjdCA9IHJvb3Q7CiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8TlBPYmplY3QqPih2OG5wT2JqZWN0KTsKIH0KIAorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCiBib29sIF9OUE5fSW52b2tlKE5QUCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCwg
TlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCogYXJndW1lbnRzLCB1aW50
MzJfdCBhcmd1bWVudENvdW50LCBOUFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoIW5wT2Jq
ZWN0KQpAQCAtMTYyLDYgKzE1NiwxNCBAQCBib29sIF9OUE5fSW52b2tlKE5QUCBucHAsIE5QT2Jq
ZWN0KiBucE9iCiAgICAgaWYgKCFpZGVudGlmaWVyLT5pc1N0cmluZykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCisgICAgaWYgKCFzdHJjbXAoaWRlbnRpZmllci0+dmFsdWUuc3RyaW5nLCAiZXZh
bCIpKSB7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmIChhcmd1bWVudHNbMF0udHlwZSAhPSBOUFZhcmlhbnRUeXBl
X1N0cmluZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIF9OUE5f
RXZhbHVhdGUobnBwLCBucE9iamVjdCwgY29uc3RfY2FzdDxOUFN0cmluZyo+KCZhcmd1bWVudHNb
MF0udmFsdWUuc3RyaW5nVmFsdWUpLCByZXN1bHQpOworICAgIH0KKwogICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKICAgICAvLyBGSVhNRTogc2hvdWxkIHVzZSB0aGUgcGx1Z2luJ3Mg
b3duZXIgZnJhbWUgYXMgdGhlIHNlY3VyaXR5IGNvbnRleHQuCiAgICAgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gY29udGV4dCA9IHRvVjhDb250ZXh0KG5wcCwgbnBPYmplY3QpOwpAQCAtMTY5LDE0
ICsxNzEsNyBAQCBib29sIF9OUE5fSW52b2tlKE5QUCBucHAsIE5QT2JqZWN0KiBucE9iCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0
KTsKLQotICAgIGlmIChtZXRob2ROYW1lID09IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcigiZXZh
bCIpKSB7Ci0gICAgICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGlmIChhcmd1bWVudHNbMF0udHlwZSAhPSBOUFZhcmlhbnRUeXBl
X1N0cmluZykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIF9OUE5f
RXZhbHVhdGUobnBwLCBucE9iamVjdCwgY29uc3RfY2FzdDxOUFN0cmluZyo+KCZhcmd1bWVudHNb
MF0udmFsdWUuc3RyaW5nVmFsdWUpLCByZXN1bHQpOwotICAgIH0KKyAgICBFeGNlcHRpb25DYXRj
aGVyIGV4Y2VwdGlvbkNhdGNoZXI7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZnVuY3Rp
b25PYmplY3QgPSB2OE5wT2JqZWN0LT52OE9iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldyhpZGVu
dGlmaWVyLT52YWx1ZS5zdHJpbmcpKTsKICAgICBpZiAoZnVuY3Rpb25PYmplY3QuSXNFbXB0eSgp
IHx8IGZ1bmN0aW9uT2JqZWN0LT5Jc051bGwoKSkgewpAQCAtMjI5LDYgKzIyNCw3IEBAIGJvb2wg
X05QTl9JbnZva2VEZWZhdWx0KE5QUCBucHAsIE5QT2JqZWMKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQpOworICAgIEV4Y2VwdGlv
bkNhdGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAogICAgIC8vIExvb2t1cCB0aGUgZnVuY3Rpb24g
b2JqZWN0IGFuZCBjYWxsIGl0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZnVuY3Rpb25P
YmplY3QodjhOcE9iamVjdC0+djhPYmplY3QpOwpAQCAtMjU1LDcgKzI1MSw3IEBAIGJvb2wgX05Q
Tl9JbnZva2VEZWZhdWx0KE5QUCBucHAsIE5QT2JqZWMKIAogYm9vbCBfTlBOX0V2YWx1YXRlKE5Q
UCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCwgTlBTdHJpbmcqIG5wU2NyaXB0LCBOUFZhcmlhbnQq
IHJlc3VsdCkKIHsKLSAgICBib29sIHBvcHVwc0FsbG93ZWQgPSBXZWJDb3JlOjpQbGF0Zm9ybUJy
aWRnZTo6cG9wdXBzQWxsb3dlZChucHApOworICAgIGJvb2wgcG9wdXBzQWxsb3dlZCA9IFBsYXRm
b3JtQnJpZGdlOjpwb3B1cHNBbGxvd2VkKG5wcCk7CiAgICAgcmV0dXJuIF9OUE5fRXZhbHVhdGVI
ZWxwZXIobnBwLCBwb3B1cHNBbGxvd2VkLCBucE9iamVjdCwgbnBTY3JpcHQsIHJlc3VsdCk7CiB9
CiAKQEAgLTI3NywxMyArMjczLDE0IEBAIGJvb2wgX05QTl9FdmFsdWF0ZUhlbHBlcihOUFAgbnBw
LCBib29sIHAKICAgICBBU1NFUlQocHJveHkpOwogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNj
b3BlKGNvbnRleHQpOworICAgIEV4Y2VwdGlvbkNhdGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAot
ICAgIFdlYkNvcmU6OlN0cmluZyBmaWxlbmFtZTsKKyAgICBTdHJpbmcgZmlsZW5hbWU7CiAgICAg
aWYgKCFwb3B1cHNBbGxvd2VkKQogICAgICAgICBmaWxlbmFtZSA9ICJucHNjcmlwdCI7CiAKLSAg
ICBXZWJDb3JlOjpTdHJpbmcgc2NyaXB0ID0gV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOChucFNj
cmlwdC0+VVRGOENoYXJhY3RlcnMsIG5wU2NyaXB0LT5VVEY4TGVuZ3RoKTsKLSAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2OHJlc3VsdCA9IHByb3h5LT5ldmFsdWF0ZShXZWJDb3JlOjpTY3JpcHRT
b3VyY2VDb2RlKHNjcmlwdCwgV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcs
IGZpbGVuYW1lKSksIDApOworICAgIFN0cmluZyBzY3JpcHQgPSBTdHJpbmc6OmZyb21VVEY4KG5w
U2NyaXB0LT5VVEY4Q2hhcmFjdGVycywgbnBTY3JpcHQtPlVURjhMZW5ndGgpOworICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gcHJveHktPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNv
ZGUoc2NyaXB0LCBLVVJMKFBhcnNlZFVSTFN0cmluZywgZmlsZW5hbWUpKSwgMCk7CiAKICAgICBp
ZiAodjhyZXN1bHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDYsNiAr
MzAzLDcgQEAgYm9vbCBfTlBOX0dldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0KgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShj
b250ZXh0KTsKKyAgICAgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRjaGVyOwogCiAg
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqKG9iamVjdC0+djhPYmplY3QpOwogICAg
ICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OHJlc3VsdCA9IG9iai0+R2V0KG5wSWRlbnRpZmll
clRvVjhJZGVudGlmaWVyKHByb3BlcnR5TmFtZSkpOwpAQCAtMzQwLDYgKzMzOCw3IEBAIGJvb2wg
X05QTl9TZXRQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCoKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAg
ICAgIEV4Y2VwdGlvbkNhdGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAogICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IG9iaihvYmplY3QtPnY4T2JqZWN0KTsKICAgICAgICAgb2JqLT5TZXQo
bnBJZGVudGlmaWVyVG9WOElkZW50aWZpZXIocHJvcGVydHlOYW1lKSwKQEAgLTM2Nyw2ICszNjYs
NyBAQCBib29sIF9OUE5fUmVtb3ZlUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplCiAgICAgaWYgKGNv
bnRleHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgdjg6OkNvbnRleHQ6
OlNjb3BlIHNjb3BlKGNvbnRleHQpOworICAgIEV4Y2VwdGlvbkNhdGNoZXIgZXhjZXB0aW9uQ2F0
Y2hlcjsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqKG9iamVjdC0+djhPYmplY3Qp
OwogICAgIC8vIEZJWE1FOiBWZXJpZnkgdGhhdCBzZXR0aW5nIHRvIHVuZGVmaW5lZCBpcyByaWdo
dC4KQEAgLTM4Nyw2ICszODcsNyBAQCBib29sIF9OUE5fSGFzUHJvcGVydHkoTlBQIG5wcCwgTlBP
YmplY3QqCiAgICAgICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQpOworICAg
ICAgICBFeGNlcHRpb25DYXRjaGVyIGV4Y2VwdGlvbkNhdGNoZXI7CiAKICAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBvYmoob2JqZWN0LT52OE9iamVjdCk7CiAgICAgICAgIHJldHVybiBv
YmotPkhhcyhucElkZW50aWZpZXJUb1Y4SWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpKTsKQEAgLTQx
MCw2ICs0MTEsNyBAQCBib29sIF9OUE5fSGFzTWV0aG9kKE5QUCBucHAsIE5QT2JqZWN0KiBuCiAg
ICAgICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQpOworICAgICAgICBFeGNl
cHRpb25DYXRjaGVyIGV4Y2VwdGlvbkNhdGNoZXI7CiAKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBvYmoob2JqZWN0LT52OE9iamVjdCk7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBwcm9wID0gb2JqLT5HZXQobnBJZGVudGlmaWVyVG9WOElkZW50aWZpZXIobWV0aG9kTmFt
ZSkpOwpAQCAtNDM1LDYgKzQzNyw4IEBAIHZvaWQgX05QTl9TZXRFeGNlcHRpb24oTlBPYmplY3Qq
IG5wT2JqZWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3Bl
KGNvbnRleHQpOworICAgIEV4Y2VwdGlvbkNhdGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKKwogICAg
IFY4UHJveHk6OnRocm93RXJyb3IoVjhQcm94eTo6R2VuZXJhbEVycm9yLCBtZXNzYWdlKTsKIH0K
IApAQCAtNDUxLDYgKzQ1NSw3IEBAIGJvb2wgX05QTl9FbnVtZXJhdGUoTlBQIG5wcCwgTlBPYmpl
Y3QqIG4KICAgICAgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAg
ICAgIEV4Y2VwdGlvbkNhdGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAogICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IG9iaihvYmplY3QtPnY4T2JqZWN0KTsKIApAQCAtNTA1LDYgKzUxMCw3
IEBAIGJvb2wgX05QTl9Db25zdHJ1Y3QoTlBQIG5wcCwgTlBPYmplY3QqIG4KICAgICAgICAgaWYg
KGNvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB2
ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisgICAgICAgIEV4Y2VwdGlvbkNhdGNo
ZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAogICAgICAgICAvLyBMb29rdXAgdGhlIGNvbnN0cnVjdG9y
IGZ1bmN0aW9uLgogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGN0b3JPYmoob2JqZWN0
LT52OE9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5oCShyZXZpc2lvbiA1
OTgxOCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwxMiArNDUsMTIgQEAKICNpbmNsdWRlIDx2OC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0gICAgY2xhc3MgRE9NV2luZG93OwogCi0gICAgc3RhdGljIGNvbnN0IGludCBucE9iamVj
dEludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyAwOworY2xhc3MgRE9NV2luZG93OwogCi0gICAgV3JhcHBlclR5cGVJbmZvKiBucE9iamVjdFR5
cGVJbmZvKCk7Ci19CitzdGF0aWMgY29uc3QgaW50IG5wT2JqZWN0SW50ZXJuYWxGaWVsZENvdW50
ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisKK1dyYXBwZXJUeXBl
SW5mbyogbnBPYmplY3RUeXBlSW5mbygpOwogCiBleHRlcm4gTlBDbGFzcyogbnBTY3JpcHRPYmpl
Y3RDbGFzczsKIApAQCAtNTksNyArNTksNyBAQCBleHRlcm4gTlBDbGFzcyogbnBTY3JpcHRPYmpl
Y3RDbGFzczsKIHN0cnVjdCBWOE5QT2JqZWN0IHsKICAgICBOUE9iamVjdCBvYmplY3Q7CiAgICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gdjhPYmplY3Q7Ci0gICAgV2ViQ29yZTo6RE9NV2lu
ZG93KiByb290T2JqZWN0OworICAgIERPTVdpbmRvdyogcm9vdE9iamVjdDsKIH07CiAKIHN0cnVj
dCBQcml2YXRlSWRlbnRpZmllciB7CkBAIC03MCw4ICs3MCwxMCBAQCBzdHJ1Y3QgUHJpdmF0ZUlk
ZW50aWZpZXIgewogICAgIGJvb2wgaXNTdHJpbmc7CiB9OwogCi1OUE9iamVjdCogbnBDcmVhdGVW
OFNjcmlwdE9iamVjdChOUFAsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFdlYkNvcmU6OkRPTVdp
bmRvdyopOworTlBPYmplY3QqIG5wQ3JlYXRlVjhTY3JpcHRPYmplY3QoTlBQLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+LCBET01XaW5kb3cqKTsKIAogTlBPYmplY3QqIHY4T2JqZWN0VG9OUE9iamVj
dCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAj
ZW5kaWYgLy8gTlBWOE9iamVjdF9oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmpl
Y3QuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNw
cAkocmV2aXNpb24gNTk4MTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAibnBydW50aW1lX3By
aXYuaCIKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gSW52b2tlRnVuY3Rpb25UeXBlIHsK
ICAgICBJbnZva2VNZXRob2QgPSAxLApAQCAtNDA5LDMgKzQwOSw1IEBAIHZvaWQgZm9yZ2V0VjhP
YmplY3RGb3JOUE9iamVjdChOUE9iamVjdCoKICAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG9i
amVjdCk7CiAgICAgfQogfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhOUE9iamVjdC5oCShyZXZpc2lvbiA1OTgxOCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhOUE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBACiAKICNpbmNs
dWRlIDx2OC5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CisKIC8vIFRoZXNlIGZ1bmN0aW9ucyBj
YW4gYmUgcmVwbGFjZWQgYnkgbm9ybWFsIEpTIG9wZXJhdGlvbi4KIC8vIEdldHRlcnMKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBucE9iamVjdE5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mKTsKQEAgLTY1LDQgKzY3LDYg
QEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVY4T2JqZWN0Rm9yTgogLy8gY2Fubm90IGJl
IHJlZmVycmVkIHRvLgogdm9pZCBmb3JnZXRWOE9iamVjdEZvck5QT2JqZWN0KE5QT2JqZWN0Kik7
CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIFY4TlBPYmplY3RfaApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QVXRpbHMuY3BwDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOE5QVXRpbHMuY3BwCShyZXZpc2lvbiA1OTgxOCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTkgKzI5
LDE4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiVjhOUFV0aWxz
LmgiCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jdW5kZWYgTE9HCi0KKyNpbmNsdWRlICJucHJ1bnRpbWVf
aW1wbC5oIgorI2luY2x1ZGUgIm5wcnVudGltZV9wcml2LmgiCiAjaW5jbHVkZSAiTlBWOE9iamVj
dC5oIgogI2luY2x1ZGUgIlY4TlBPYmplY3QuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCi0jaW5j
bHVkZSAibnBydW50aW1lX2ltcGwuaCIKLSNpbmNsdWRlICJucHJ1bnRpbWVfcHJpdi5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgY29udmVydFY4T2JqZWN0VG9OUFZhcmlhbnQodjg6
OkxvY2FsPHY4OjpWYWx1ZT4gb2JqZWN0LCBOUE9iamVjdCogb3duZXIsIE5QVmFyaWFudCogcmVz
dWx0KQogewpAQCAtNjksNyArNjgsNyBAQCB2b2lkIGNvbnZlcnRWOE9iamVjdFRvTlBWYXJpYW50
KHY4OjpMb2NhCiAgICAgICAgIGNoYXIqIHV0ZjhfY2hhcnMgPSBzdHJkdXAoKnV0ZjgpOwogICAg
ICAgICBTVFJJTkdOX1RPX05QVkFSSUFOVCh1dGY4X2NoYXJzLCB1dGY4Lmxlbmd0aCgpLCAqcmVz
dWx0KTsKICAgICB9IGVsc2UgaWYgKG9iamVjdC0+SXNPYmplY3QoKSkgewotICAgICAgICBXZWJD
b3JlOjpET01XaW5kb3cqIHdpbmRvdyA9IFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZlV2luZG93
KFdlYkNvcmU6OlY4UHJveHk6OmN1cnJlbnRDb250ZXh0KCkpOworICAgICAgICBET01XaW5kb3cq
IHdpbmRvdyA9IFY4UHJveHk6OnJldHJpZXZlV2luZG93KFY4UHJveHk6OmN1cnJlbnRDb250ZXh0
KCkpOwogICAgICAgICBOUE9iamVjdCogbnBvYmplY3QgPSBucENyZWF0ZVY4U2NyaXB0T2JqZWN0
KDAsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qob2JqZWN0KSwgd2luZG93KTsKICAgICAg
ICAgaWYgKG5wb2JqZWN0KQogICAgICAgICAgICAgX05QTl9SZWdpc3Rlck9iamVjdChucG9iamVj
dCwgb3duZXIpOwpAQCAtNzcsNyArNzYsNiBAQCB2b2lkIGNvbnZlcnRWOE9iamVjdFRvTlBWYXJp
YW50KHY4OjpMb2NhCiAgICAgfQogfQogCi0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0
TlBWYXJpYW50VG9WOE9iamVjdChjb25zdCBOUFZhcmlhbnQqIHZhcmlhbnQsIE5QT2JqZWN0KiBu
cG9iamVjdCkKIHsKICAgICBOUFZhcmlhbnRUeXBlIHR5cGUgPSB2YXJpYW50LT50eXBlOwpAQCAt
MTI4LDMgKzEyNiw0NSBAQCBOUElkZW50aWZpZXIgZ2V0U3RyaW5nSWRlbnRpZmllcih2ODo6SGFu
CiAgICAgdjg6OlN0cmluZzo6VXRmOFZhbHVlIHV0Zjgoc3RyKTsKICAgICByZXR1cm4gX05QTl9H
ZXRTdHJpbmdJZGVudGlmaWVyKCp1dGY4KTsKIH0KKworc3RydWN0IEV4Y2VwdGlvbkhhbmRsZXJJ
bmZvIHsKKyAgICBFeGNlcHRpb25IYW5kbGVySW5mbyogcHJldmlvdXM7CisgICAgRXhjZXB0aW9u
SGFuZGxlciBoYW5kbGVyOworICAgIHZvaWQqIGRhdGE7Cit9OworCitzdGF0aWMgRXhjZXB0aW9u
SGFuZGxlckluZm8qIHRvcEhhbmRsZXI7CisKK3ZvaWQgcHVzaEV4Y2VwdGlvbkhhbmRsZXIoRXhj
ZXB0aW9uSGFuZGxlciBoYW5kbGVyLCB2b2lkKiBkYXRhKQoreworICAgIEV4Y2VwdGlvbkhhbmRs
ZXJJbmZvKiBpbmZvID0gbmV3IEV4Y2VwdGlvbkhhbmRsZXJJbmZvOworICAgIGluZm8tPnByZXZp
b3VzID0gdG9wSGFuZGxlcjsKKyAgICBpbmZvLT5oYW5kbGVyID0gaGFuZGxlcjsKKyAgICBpbmZv
LT5kYXRhID0gZGF0YTsKKyAgICB0b3BIYW5kbGVyID0gaW5mbzsKK30KKwordm9pZCBwb3BFeGNl
cHRpb25IYW5kbGVyKCkKK3sKKyAgICBBU1NFUlQodG9wSGFuZGxlcik7CisgICAgRXhjZXB0aW9u
SGFuZGxlckluZm8qIGRvb21lZCA9IHRvcEhhbmRsZXI7CisgICAgdG9wSGFuZGxlciA9IHRvcEhh
bmRsZXItPnByZXZpb3VzOworICAgIGRlbGV0ZSBkb29tZWQ7Cit9CisKK0V4Y2VwdGlvbkNhdGNo
ZXI6OkV4Y2VwdGlvbkNhdGNoZXIoKQoreworICAgIGlmICghdG9wSGFuZGxlcikKKyAgICAgICAg
bV90cnlDYXRjaC5TZXRWZXJib3NlKHRydWUpOworfQorCitFeGNlcHRpb25DYXRjaGVyOjp+RXhj
ZXB0aW9uQ2F0Y2hlcigpCit7CisgICAgaWYgKCFtX3RyeUNhdGNoLkhhc0NhdWdodCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAodG9wSGFuZGxlcikKKyAgICAgICAgdG9wSGFuZGxlci0+
aGFuZGxlcih0b3BIYW5kbGVyLT5kYXRhLCAqdjg6OlN0cmluZzo6VXRmOFZhbHVlKG1fdHJ5Q2F0
Y2guRXhjZXB0aW9uKCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOE5QVXRpbHMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhOUFV0aWxzLmgJKHJldmlzaW9uIDU5ODE4KQorKysgV2ViQ29yZS9iaW5kaW5n
cy92OC9WOE5QVXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQAogCiAjaW5j
bHVkZSA8djguaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworCiAvLyBDb252ZXJ0IGEgVjggVmFs
dWUgb2YgYW55IHR5cGUgKHN0cmluZywgYm9vbCwgb2JqZWN0LCBldGMpIHRvIGEgTlBWYXJpYW50
Lgogdm9pZCBjb252ZXJ0VjhPYmplY3RUb05QVmFyaWFudCh2ODo6TG9jYWw8djg6OlZhbHVlPiwg
TlBPYmplY3QqLCBOUFZhcmlhbnQqKTsKIApAQCAtNDgsNCArNTAsMjIgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNvbnZlcnROUFZhcmlhbnRUbwogLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0
ZSBhbiBOUE4gU3RyaW5nIElkZW50aWZpZXIgZnJvbSBhIHY4IHN0cmluZy4KIE5QSWRlbnRpZmll
ciBnZXRTdHJpbmdJZGVudGlmaWVyKHY4OjpIYW5kbGU8djg6OlN0cmluZz4pOwogCisvLyBUaGUg
RXhjZXB0aW9uSGFuZGxlciB3aWxsIGJlIG5vdGlmaWVkIG9mIGFueSBleGNlcHRpb25zIHRocm93
biB3aGlsZQorLy8gb3BlcmF0aW5nIG9uIGEgTlBPYmplY3QuCit0eXBlZGVmIHZvaWQgKCpFeGNl
cHRpb25IYW5kbGVyKSh2b2lkKiBkYXRhLCBjb25zdCBOUFVURjgqIG1lc3NhZ2UpOwordm9pZCBw
dXNoRXhjZXB0aW9uSGFuZGxlcihFeGNlcHRpb25IYW5kbGVyLCB2b2lkKiBkYXRhKTsKK3ZvaWQg
cG9wRXhjZXB0aW9uSGFuZGxlcigpOworCisvLyBVcG9uIGRlc3RydWN0aW9uLCBhbiBFeGNlcHRp
b25DYXRjaGVyIHdpbGwgcGFzcyBhIGNhdWdodCBleGNlcHRpb24gdG8gdGhlCisvLyBjdXJyZW50
IEV4Y2VwdGlvbkhhbmRsZXIuCitjbGFzcyBFeGNlcHRpb25DYXRjaGVyIHsKK3B1YmxpYzoKKyAg
ICBFeGNlcHRpb25DYXRjaGVyKCk7CisgICAgfkV4Y2VwdGlvbkNhdGNoZXIoKTsKK3ByaXZhdGU6
CisgICAgdjg6OlRyeUNhdGNoIG1fdHJ5Q2F0Y2g7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKICNlbmRpZiAvLyBWOE5QVXRpbHNfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9u
cHJ1bnRpbWUuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9ucHJ1bnRp
bWUuY3BwCShyZXZpc2lvbiA1OTgxOCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvbnBydW50aW1l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKIC8vIEZJWE1FOiBDb25zaWRlciByZW1vdmluZyBsb2NrcyBpZiB3ZSdyZSBzaW5n
bGV0aHJlYWRlZCBhbHJlYWR5LgogLy8gVGhlIHN0YXRpYyBpbml0aWFsaXplciBoZXJlIHNob3Vs
ZCB3b3JrIG9rYXksIGJ1dCB3ZSB3YW50IHRvIGF2b2lkCiAvLyBzdGF0aWMgaW5pdGlhbGl6YXRp
b24gaW4gZ2VuZXJhbC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1OTgxOCkKKysrIFdl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwxOCBAQAog
MjAxMC0wNS0xOSAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0ub3JnPgogCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gUHJvdmlk
ZSBhIHdheSB0byBjYXRjaCBleGNlcHRpb25zIHRocm93biB3aGlsZSBpbnRlcmFjdGluZworICAg
ICAgICB3aXRoIGEgTlBPYmplY3QgdmlhIFdlYkJpbmRpbmdzIG1ldGhvZHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTM3OAorCisgICAgICAgICog
cHVibGljL1dlYkJpbmRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYkJpbmRpbmdzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQmluZGluZ3M6OnB1c2hFeGNlcHRpb25IYW5kbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmluZGluZ3M6OnBvcEV4Y2VwdGlvbkhhbmRsZXIpOgorCisyMDEwLTA1
LTE5ICBEYXJpbiBGaXNoZXIgIDxkYXJpbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2ZXJ0
IHI1OTc5MCBkdWUgdG8gZmFpbGluZyBDaHJvbWl1bSBucHJ1bnRpbWUgdGVzdHMuCiAKICAgICAg
ICAgKiBwdWJsaWMvV2ViQmluZGluZ3MuaDoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQmluZGluZ3MuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
QmluZGluZ3MuaAkocmV2aXNpb24gNTk4MTgpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkJpbmRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gTlBOX1VURjhGcm9tSWRlbnRpZmllcgogICAgIFdFQktJVF9BUEkgc3RhdGljIE5QVVRG
OCogdXRmOEZyb21JZGVudGlmaWVyKE5QSWRlbnRpZmllcik7CiAKLSAgICAvLyBNaXNjZWxsYW5l
b3VzIHV0aWxpdHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorICAgIC8vIE1pc2NlbGxhbmVvdXMgdXRpbGl0eSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gQ29tcGxlbWVudCB0byBOUE5fR2V0
X19fSWRlbnRpZmllciBmdW5jdGlvbnMuICBFeHRyYWN0cyBkYXRhIGZyb20gdGhlIE5QSWRlbnRp
ZmllciBkYXRhCiAgICAgLy8gc3RydWN0dXJlLiAgSWYgaXNTdHJpbmcgaXMgdHJ1ZSB1cG9uIHJl
dHVybiwgc3RyaW5nIHdpbGwgYmUgc2V0IGJ1dCBudW1iZXIncyB2YWx1ZSBpcwpAQCAtMTM4LDYg
KzEzOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRydWUgKHN1Y2Nlc3MpIGlmIHRoZSBn
aXZlbiBucG9iaiBpcyBhIHJhbmdlIG9iamVjdC4KICAgICAvLyBJZiBzbywgcmV0dXJuIHRoYXQg
cmFuZ2UgYXMgYSBXZWJSYW5nZSBvYmplY3QuCiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgYm9vbCBn
ZXRSYW5nZShOUE9iamVjdCogcmFuZ2UsIFdlYlJhbmdlKik7CisKKyAgICAvLyBFeGNlcHRpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworICAgIHR5cGVkZWYgdm9pZCAoRXhjZXB0aW9uSGFuZGxlcikodm9pZCogZGF0YSwg
Y29uc3QgTlBVVEY4KiBtZXNzYWdlKTsKKworICAgIC8vIFRoZSBleGNlcHRpb24gaGFuZGxlciB3
aWxsIGJlIG5vdGlmaWVkIG9mIGFueSBleGNlcHRpb25zIHRocm93biB3aGlsZQorICAgIC8vIG9w
ZXJhdGluZyBvbiBhIE5QT2JqZWN0LgorICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgcHVzaEV4
Y2VwdGlvbkhhbmRsZXIoRXhjZXB0aW9uSGFuZGxlciwgdm9pZCogZGF0YSk7CisgICAgV0VCS0lU
X0FQSSBzdGF0aWMgdm9pZCBwb3BFeGNlcHRpb25IYW5kbGVyKCk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAJKHJldmlz
aW9uIDU5ODE4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNp
bmNsdWRlICJWOEV2ZW50LmgiCiAjaW5jbHVkZSAiVjhIZWxwZXJzLmgiCisjaW5jbHVkZSAiVjhO
UFV0aWxzLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4UmFuZ2UuaCIKICNl
bGlmIFVTRShKU0MpCkBAIC0zMjIsNCArMzIzLDE0IEBAIGJvb2wgV2ViQmluZGluZ3M6OmdldFJh
bmdlKE5QT2JqZWN0KiByYW4KICNlbmRpZgogfQogCit2b2lkIFdlYkJpbmRpbmdzOjpwdXNoRXhj
ZXB0aW9uSGFuZGxlcihFeGNlcHRpb25IYW5kbGVyIGhhbmRsZXIsIHZvaWQqIGRhdGEpCit7Cisg
ICAgV2ViQ29yZTo6cHVzaEV4Y2VwdGlvbkhhbmRsZXIoaGFuZGxlciwgZGF0YSk7Cit9CisKK3Zv
aWQgV2ViQmluZGluZ3M6OnBvcEV4Y2VwdGlvbkhhbmRsZXIoKQoreworICAgIFdlYkNvcmU6OnBv
cEV4Y2VwdGlvbkhhbmRsZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="41014"
          type_id="1"
          status="+"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>