<?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>33695</bug_id>
          
          <creation_ts>2010-01-14 15:53:25 -0800</creation_ts>
          <short_desc>[Chromium] Adds EventSource bindings for V8</short_desc>
          <delta_ts>2010-01-27 06:41:56 -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>Platform</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>0</everconfirmed>
          <reporter name="Marcus Bulach">bulach</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>180976</commentid>
    <comment_count>0</comment_count>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-01-14 15:53:25 -0800</bug_when>
    <thetext>Adds EventSource bindings for V8
Must pass existing LayoutTests:
* LayoutTests/fast/eventsource
* LayoutTests/http/tests/eventsource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180998</commentid>
    <comment_count>1</comment_count>
      <attachid>46619</attachid>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-01-14 16:29:44 -0800</bug_when>
    <thetext>Created attachment 46619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181005</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-14 16:48:00 -0800</bug_when>
    <thetext>Attachment 46619 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/186791</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181018</commentid>
    <comment_count>3</comment_count>
      <attachid>46619</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 17:18:05 -0800</bug_when>
    <thetext>Comment on attachment 46619
Patch

Breaking Chromium would be bad news bears.  Does this depend on some other fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181047</commentid>
    <comment_count>4</comment_count>
      <attachid>46626</attachid>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-01-14 17:54:03 -0800</bug_when>
    <thetext>Created attachment 46626
Patch

Ops, my bad, sorry! Forgot to add the #if ENABLE guards in the new cpp files.
Fixed, uploading again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181249</commentid>
    <comment_count>5</comment_count>
      <attachid>46626</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-15 09:20:25 -0800</bug_when>
    <thetext>Comment on attachment 46626
Patch

A couple of small nits...

In addition to the inline comments, I think you need to add the new files to WebCore/Android.v8bindings.mk as well.

&gt; Index: ChangeLog
&gt; ===================================================================
&gt; --- ChangeLog	(revision 53295)
&gt; +++ ChangeLog	(working copy)
&gt; @@ -1,3 +1,25 @@
&gt; +ï»¿2010-01-14  Marcus Bulach  &lt;bulach@chromium.org&gt;

Remove the garbage before the date.

&gt; +        * ../../WebCore.gypi:
&gt; +        * ../../bindings/scripts/CodeGeneratorV8.pm:
&gt; +        * ../../bindings/v8/DOMObjectsInclude.h:
&gt; +        * ../../bindings/v8/DerivedSourcesAllInOne.cpp:
&gt; +        * ../../bindings/v8/V8DOMWrapper.cpp:
&gt; +        * ../../bindings/v8/V8DOMWrapper.h:
&gt; +        * ../../bindings/v8/V8Index.cpp:
&gt; +        * ../../bindings/v8/V8Index.h:
&gt; +        * ../../bindings/v8/WorkerContextExecutionProxy.cpp:
&gt; +        * ../../bindings/v8/custom/V8CustomBinding.h:
&gt; +        * ../../bindings/v8/custom/V8EventSourceConstructor.cpp: Added.
&gt; +        * ../../bindings/v8/custom/V8EventSourceCustom.cpp: Added.

Remove the leading ../../

&gt; +#if ENABLE(EVENTSOURCE)
&gt; +    case V8ClassIndex::EVENTSOURCE: {
&gt; +        descriptor-&gt;SetCallHandler(USE_CALLBACK(EventSourceConstructor));
&gt; +        break;
&gt; +    }
&gt; +#endif

Add this block down with the other SetCallHandler() calls.

&gt; + * Copyright 2009, The Android Open Source Project

Here and in V8EventSourceConstructor.cpp, 2010

&gt; +using namespace std;
&gt; +using namespace WTF;

I don&apos;t think these are necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181251</commentid>
    <comment_count>6</comment_count>
      <attachid>46626</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-15 09:22:51 -0800</bug_when>
    <thetext>Comment on attachment 46626
Patch

r- based on Nate&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181286</commentid>
    <comment_count>7</comment_count>
      <attachid>46692</attachid>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-01-15 11:28:09 -0800</bug_when>
    <thetext>Created attachment 46692
Patch

Addressing Nate&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181288</commentid>
    <comment_count>8</comment_count>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-01-15 11:30:02 -0800</bug_when>
    <thetext>Thanks Nate!

All comments addressed, would you please take another look?

(In reply to comment #5)
&gt; (From update of attachment 46626 [details])
&gt; A couple of small nits...
&gt; 
&gt; In addition to the inline comments, I think you need to add the new files to
&gt; WebCore/Android.v8bindings.mk as well.
Added.

&gt; 
&gt; &gt; Index: ChangeLog
&gt; &gt; ===================================================================
&gt; &gt; --- ChangeLog	(revision 53295)
&gt; &gt; +++ ChangeLog	(working copy)
&gt; &gt; @@ -1,3 +1,25 @@
&gt; &gt; +ï»¿2010-01-14  Marcus Bulach  &lt;bulach@chromium.org&gt;
&gt; 
&gt; Remove the garbage before the date.

ouch, sorry, some editor added the UTF8 BOM... removed.

&gt; 
&gt; &gt; +        * ../../WebCore.gypi:
&gt; &gt; +        * ../../bindings/scripts/CodeGeneratorV8.pm:
&gt; &gt; +        * ../../bindings/v8/DOMObjectsInclude.h:
&gt; &gt; +        * ../../bindings/v8/DerivedSourcesAllInOne.cpp:
&gt; &gt; +        * ../../bindings/v8/V8DOMWrapper.cpp:
&gt; &gt; +        * ../../bindings/v8/V8DOMWrapper.h:
&gt; &gt; +        * ../../bindings/v8/V8Index.cpp:
&gt; &gt; +        * ../../bindings/v8/V8Index.h:
&gt; &gt; +        * ../../bindings/v8/WorkerContextExecutionProxy.cpp:
&gt; &gt; +        * ../../bindings/v8/custom/V8CustomBinding.h:
&gt; &gt; +        * ../../bindings/v8/custom/V8EventSourceConstructor.cpp: Added.
&gt; &gt; +        * ../../bindings/v8/custom/V8EventSourceCustom.cpp: Added.
&gt; 
&gt; Remove the leading ../../
done

&gt; 
&gt; &gt; +#if ENABLE(EVENTSOURCE)
&gt; &gt; +    case V8ClassIndex::EVENTSOURCE: {
&gt; &gt; +        descriptor-&gt;SetCallHandler(USE_CALLBACK(EventSourceConstructor));
&gt; &gt; +        break;
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; 
&gt; Add this block down with the other SetCallHandler() calls.
moved


&gt; 
&gt; &gt; + * Copyright 2009, The Android Open Source Project
&gt; 
&gt; Here and in V8EventSourceConstructor.cpp, 2010
fixed.

&gt; 
&gt; &gt; +using namespace std;
&gt; &gt; +using namespace WTF;
&gt; 
&gt; I don&apos;t think these are necessary?

removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183451</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-01-21 19:35:54 -0800</bug_when>
    <thetext>nice to see the v8 binding for this feature going in :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184559</commentid>
    <comment_count>10</comment_count>
    <who name="Marcus Bulach">bulach</who>
    <bug_when>2010-01-26 04:44:29 -0800</bug_when>
    <thetext>thanks Michael!

Nate: would you mind taking another look, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184876</commentid>
    <comment_count>11</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-26 17:54:20 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; thanks Michael!
&gt; 
&gt; Nate: would you mind taking another look, please?

LGTM

Really sorry for the delay :-(

Would someone with r+ please approve this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184899</commentid>
    <comment_count>12</comment_count>
      <attachid>46692</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-26 19:18:42 -0800</bug_when>
    <thetext>Comment on attachment 46692
Patch

aight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185074</commentid>
    <comment_count>13</comment_count>
      <attachid>46692</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-27 06:41:48 -0800</bug_when>
    <thetext>Comment on attachment 46692
Patch

Clearing flags on attachment: 46692

Committed r53931: &lt;http://trac.webkit.org/changeset/53931&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185075</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-27 06:41:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46619</attachid>
            <date>2010-01-14 16:29:44 -0800</date>
            <delta_ts>2010-01-14 17:54:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>33695_0.patch</filename>
            <type>text/plain</type>
            <size>17438</size>
            <attacher name="Marcus Bulach">bulach</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDUzMjk1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKK++7vzIwMTAt
MDEtMTQgIE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgRXZlbnRTb3VyY2UgYmlu
ZGluZ3MgZm9yIFY4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMzY5NQorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoZXhpc3RpbmcgbGF5b3V0IHRlc3Rz
IGZvciBFdmVudFNvdXJjZSBzaG91bGQgcGFzcykuCisKKyAgICAgICAgKiAuLi8uLi9XZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogLi4vLi4vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG06CisgICAgICAgICogLi4vLi4vYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaDoKKyAg
ICAgICAgKiAuLi8uLi9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcDoKKyAg
ICAgICAgKiAuLi8uLi9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIC4u
Ly4uL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAqIC4uLy4uL2JpbmRpbmdz
L3Y4L1Y4SW5kZXguY3BwOgorICAgICAgICAqIC4uLy4uL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaDoK
KyAgICAgICAgKiAuLi8uLi9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHku
Y3BwOgorICAgICAgICAqIC4uLy4uL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcu
aDoKKyAgICAgICAgKiAuLi8uLi9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUNvbnN0
cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgICogLi4vLi4vYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RXZlbnRTb3VyY2VDdXN0b20uY3BwOiBBZGRlZC4KKwogMjAxMC0wMS0xNCAgU3RldmUgQmxvY2sg
IDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2
aW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUuZ3lwaQkocmV2aXNpb24gNTMyOTEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29y
a2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSw3IEBACiAgICAgICAgICAgICAncGFnZS9Db29yZGlu
YXRlcy5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NU2VsZWN0aW9uLmlkbCcsCiAgICAgICAg
ICAgICAncGFnZS9ET01XaW5kb3cuaWRsJywKKyAgICAgICAgICAgICdwYWdlL0V2ZW50U291cmNl
LmlkbCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2NhdGlvbi5pZGwnLAogICAgICAgICAgICAg
J3BhZ2UvR2VvcG9zaXRpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0hpc3RvcnkuaWRsJywK
QEAgLTY4OCw2ICs2ODksOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERv
Y3VtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxl
bWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50
Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3Vy
Y2VDb25zdHJ1Y3Rvci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2
ZW50U291cmNlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
R2VvbG9jYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhIaXN0b3J5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yLmNwcCcsCkBAIC0xNzg3LDYgKzE3OTAsOCBAQAog
ICAgICAgICAgICAgJ3BhZ2UvRWRpdG9yQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9FdmVudEhhbmRsZXIuaCcsCisgICAg
ICAgICAgICAncGFnZS9FdmVudFNvdXJjZS5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvRXZlbnRT
b3VyY2UuaCcsCiAgICAgICAgICAgICAncGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwJywKICAgICAg
ICAgICAgICdwYWdlL0ZvY3VzQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL0ZvY3Vz
RGlyZWN0aW9uLmgnLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCShyZXZpc2lvbiA1MzI5MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw2ICszNTcsNyBAQCBzdWIg
R2V0SW50ZXJuYWxGaWVsZHMKICAgICByZXR1cm4gKCJjYWNoZUluZGV4IiwgImltcGxlbWVudGF0
aW9uSW5kZXgiKSBpZiAoJG5hbWUgZXEgIkRvY3VtZW50IikgfHwgKCRuYW1lIGVxICJTVkdEb2N1
bWVudCIpOwogICAgIHJldHVybiAoImNhY2hlSW5kZXgiLCAiaW1wbGVtZW50YXRpb25JbmRleCIs
ICJtYXJrZXJJbmRleCIsICJzaGFkb3dJbmRleCIpIGlmICRuYW1lIGVxICJIVE1MRG9jdW1lbnQi
OwogICAgIHJldHVybiAoImNhY2hlSW5kZXgiKSBpZiBJc05vZGVTdWJUeXBlKCRkYXRhTm9kZSk7
CisgICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJFdmVudFNvdXJjZSI7CiAg
ICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJYTUxIdHRwUmVxdWVzdCI7CiAg
ICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJYTUxIdHRwUmVxdWVzdFVwbG9h
ZCI7CiAgICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJNZXNzYWdlUG9ydCI7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCShyZXZpc2lvbiA1
MzI5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZl
bnRTb3VyY2UuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJGaWxlLmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDUzMjkxKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIzLDMgKzQyMyw3IEBACiAjaW5jbHVkZSAiYmluZGluZ3MvVjhJbnNwZWN0b3JCYWNr
ZW5kLmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAi
CiAjZW5kaWYKKworI2lmIEVOQUJMRShFVkVOVFNPVVJDRSkKKyNpbmNsdWRlICJiaW5kaW5ncy9W
OEV2ZW50U291cmNlLmNwcCIKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFw
cGVyLmNwcAkocmV2aXNpb24gNTMyOTEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw2ICszMDgsMTQgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RAogICAgICAgICBpbnN0YW5jZVRlbXBsYXRlLT5T
ZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrLCBW
OERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFz
c0luZGV4OjpET01XSU5ET1cpLCBmYWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworI2lm
IEVOQUJMRShFVkVOVFNPVVJDRSkKKyAgICBjYXNlIFY4Q2xhc3NJbmRleDo6RVZFTlRTT1VSQ0U6
IHsKKyAgICAgICAgZGVzY3JpcHRvci0+U2V0Q2FsbEhhbmRsZXIoVVNFX0NBTExCQUNLKEV2ZW50
U291cmNlQ29uc3RydWN0b3IpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmCisKICAg
ICBjYXNlIFY4Q2xhc3NJbmRleDo6TE9DQVRJT046IHsKICAgICAgICAgLy8gRm9yIHNlY3VyaXR5
IHJlYXNvbnMsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgb24gdGhlIGluc3RhbmNlCiAgICAgICAgIC8v
IGluc3RlYWQgb2Ygb24gdGhlIHByb3RvdHlwZSBvYmplY3QgdG8gaW5zdXJlIHRoYXQgdGhleSBj
YW5ub3QKQEAgLTEyODUsNiArMTI5MywxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01X
cmFwcGVyOjpjb252CiAgICAgICAgIHJldHVybiBjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5k
ZXg6OkRPTUFQUExJQ0FUSU9OQ0FDSEUsIGRvbUFwcENhY2hlKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKEVWRU5UU09VUkNFKQorICAgIEV2ZW50U291cmNlKiBldmVudFNvdXJjZSA9IHRhcmdldC0+
dG9FdmVudFNvdXJjZSgpOworICAgIGlmIChldmVudFNvdXJjZSkKKyAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6RVZFTlRTT1VSQ0UsIGV2ZW50U291cmNlKTsK
KyNlbmRpZgorCiAgICAgQVNTRVJUKDApOwogICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNl
cHRvcigpOwogfQpAQCAtMTM0OSw2ICsxMzYzLDIyIEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gVjhET01XcmFwcGVyOjoKICAgICByZXR1cm4gZ2V0RXZlbnRMaXN0ZW5lcih1cGxvYWQtPmFz
c29jaWF0ZWRYTUxIdHRwUmVxdWVzdCgpLCB2YWx1ZSwgaXNBdHRyaWJ1dGUsIGxvb2t1cCk7CiB9
CiAKKyNpZiBFTkFCTEUoRVZFTlRTT1VSQ0UpCitQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IFY4
RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcihFdmVudFNvdXJjZSogZXZlbnRTb3VyY2UsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0cmlidXRlLCBMaXN0ZW5lckxvb2t1
cFR5cGUgbG9va3VwKQoreworICAgIGlmIChWOFByb3h5OjpyZXRyaWV2ZShldmVudFNvdXJjZS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuIChsb29rdXAgPT0gTGlz
dGVuZXJGaW5kT25seSkgPyBWOEV2ZW50TGlzdGVuZXJMaXN0OjpmaW5kV3JhcHBlcih2YWx1ZSwg
aXNBdHRyaWJ1dGUpIDogVjhFdmVudExpc3RlbmVyTGlzdDo6ZmluZE9yQ3JlYXRlV3JhcHBlcjxW
OEV2ZW50TGlzdGVuZXI+KHZhbHVlLCBpc0F0dHJpYnV0ZSk7CisKKyNpZiBFTkFCTEUoV09SS0VS
UykKKyAgICBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHdvcmtlckNvbnRleHRQcm94eSA9
IFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6cmV0cmlldmUoKTsKKyAgICBpZiAod29ya2Vy
Q29udGV4dFByb3h5KQorICAgICAgICByZXR1cm4gd29ya2VyQ29udGV4dFByb3h5LT5maW5kT3JD
cmVhdGVFdmVudExpc3RlbmVyKHZhbHVlLCBpc0F0dHJpYnV0ZSwgbG9va3VwID09IExpc3RlbmVy
RmluZE9ubHkpOworI2VuZGlmCisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcihFdmVudFRh
cmdldCogZXZlbnRUYXJnZXQsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0
cmlidXRlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKQogewogICAgIGlmIChWOFByb3h5Ojpy
ZXRyaWV2ZShldmVudFRhcmdldC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAkocmV2aXNpb24gNTMyOTEpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNiArMTkwLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0cmlidXRlLCBMaXN0ZW5lckxv
b2t1cFR5cGUgbG9va3VwKTsKIAorI2lmIEVOQUJMRShFVkVOVFNPVVJDRSkKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihFdmVudFNvdXJj
ZSogZXZlbnRUYXJnZXQsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0cmli
dXRlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKTsKKyNlbmRpZgorCiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQq
IGV2ZW50VGFyZ2V0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCBpc0F0dHJpYnV0
ZSwgTGlzdGVuZXJMb29rdXBUeXBlIGxvb2t1cCk7CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihWOFByb3h5KiBwcm94eSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNBdHRyaWJ1dGUsIExpc3RlbmVyTG9va3VwVHlw
ZSBsb29rdXApOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCShyZXZpc2lvbiA1MzI5MSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
NCw2ICs0NDQsMTAgQEAKICNpbmNsdWRlICJWOEluc3BlY3RvckZyb250ZW5kSG9zdC5oIgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoRVZFTlRTT1VSQ0UpCisjaW5jbHVkZSAiVjhFdmVudFNvdXJjZS5o
IgorI2VuZGlmCisKIC8vIEdlb2xvY2F0aW9uCiAjaW5jbHVkZSAiVjhDb29yZGluYXRlcy5oIgog
I2luY2x1ZGUgIlY4R2VvbG9jYXRpb24uaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJ
bmRleC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCShyZXZp
c2lvbiA1MzI5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw2ICs4NSwxMyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsCiAjZGVmaW5lIFdPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMoVikKICNlbmRpZgog
CisjaWYgRU5BQkxFKEVWRU5UU09VUkNFKQorI2RlZmluZSBFVkVOVFNPVVJDRV9BQ1RJVkVfT0JK
RUNUX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoRVZFTlRT
T1VSQ0UsIEV2ZW50U291cmNlKQorI2Vsc2UKKyNkZWZpbmUgRVZFTlRTT1VSQ0VfQUNUSVZFX09C
SkVDVF9XUkFQUEVSX1RZUEVTKFYpCisjZW5kaWYKKwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlMpCiAjZGVmaW5lIEFQUExJQ0FUSU9OQ0FDSEVfTk9OTk9ERV9XUkFQUEVSX1RZ
UEVTKFYpICAgICAgICAgICAgICAgICAgICAgICBcCiAgIFYoRE9NQVBQTElDQVRJT05DQUNIRSwg
RE9NQXBwbGljYXRpb25DYWNoZSkKQEAgLTMyMSw3ICszMjgsOCBAQCB0eXBlZGVmIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihYTUxIVFRQUkVRVUVTVCwgWE1MSHR0cFJl
cXVlc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgV09SS0VSX0FD
VElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgU0hBUkVEX1dPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgV0VCU09DS0VUX0FDVElWRV9PQkpFQ1RfV1JBUFBF
Ul9UWVBFUyhWKQorICAgIFdFQlNPQ0tFVF9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVWRU5UU09VUkNFX0FDVElWRV9PQkpF
Q1RfV1JBUFBFUl9UWVBFUyhWKQogCiAvLyBOT1RFOiBET01fT0JKRUNUX1RZUEVTIGlzIHNwbGl0
IGludG8gdHdvIGhhbHZlcyBiZWNhdXNlCiAvLyAgICAgICBWaXN1YWwgU3R1ZGlvJ3MgSW50ZWxs
aW5vbnNlbnNlIGNyYXNoZXMgd2hlbiBtYWNyb3MgZ2V0CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCShyZXZpc2lvbiA1
MzI5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRPTUNvcmVF
eGNlcHRpb24uaCIKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudFNvdXJjZS5oIgogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIkV2ZW50
RXhjZXB0aW9uLmgiCkBAIC0zMjYsNiArMzI3LDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBX
b3JrZXJDb250ZXh0RXhlY3UKICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xh
c3NJbmRleDo6V0VCU09DS0VULCB3ZWJTb2NrZXQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRVZF
TlRTT1VSQ0UpCisgICAgRXZlbnRTb3VyY2UqIGV2ZW50U291cmNlID0gdGFyZ2V0LT50b0V2ZW50
U291cmNlKCk7CisgICAgaWYgKGV2ZW50U291cmNlKQorICAgICAgICByZXR1cm4gY29udmVydFRv
VjhPYmplY3QoVjhDbGFzc0luZGV4OjpFVkVOVFNPVVJDRSwgZXZlbnRTb3VyY2UpOworI2VuZGlm
CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCk7CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJp
bmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bUJpbmRpbmcuaAkocmV2aXNpb24gNTMyOTEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYlNvY2tldENvbnN0
cnVjdG9yKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVWRU5UU09VUkNFKQorICAgICAgICBERUNM
QVJFX0NBTExCQUNLKEV2ZW50U291cmNlQ29uc3RydWN0b3IpOworI2VuZGlmCisKICN1bmRlZiBE
RUNMQVJFX0NBTExCQUNLCiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUNvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhFdmVudFNvdXJjZS5oIgorCisj
aW5jbHVkZSAiRXZlbnRTb3VyY2UuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlY4
QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1ZGUgIlY4UHJv
eHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQu
aCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4RXZlbnRTb3Vy
Y2VDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAg
SU5DX1NUQVRTKCJET00uRXZlbnRTb3VyY2UuQ29uc3RydWN0b3IiKTsKKworICAgIGlmICghYXJn
cy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmpl
Y3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6
OlR5cGVFcnJvcik7CisKKyAgICAvLyBFeHBlY3Qgb25lIHBhcmFtZXRlci4KKyAgICAvLyBBbGxv
Y2F0ZSBhbiBFdmVudFNvdXJjZSBvYmplY3QgYXMgaXRzIGludGVybmFsIGZpZWxkLgorICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRXZlbnRT
b3VyY2UgY29uc3RydWN0b3IncyBhc3NvY2lhdGVkIGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIs
IFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAxKQor
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRXZlbnRTb3VyY2UgY29uc3RydWN0b3Igd3Jvbmcg
bnVtYmVyIG9mIHBhcmFtZXRlcnMiLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5nIHVybCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBd
KTsKKworICAgIFJlZlB0cjxFdmVudFNvdXJjZT4gZXZlbnRTb3VyY2UgPSBFdmVudFNvdXJjZTo6
Y3JlYXRlKHVybCwgY29udGV4dCwgZWMpOworICAgIAorICAgIGlmIChlYykKKyAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoZWMpOworCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFy
Z3MuSG9sZGVyKCksIFY4Q2xhc3NJbmRleDo6VG9JbnQoVjhDbGFzc0luZGV4OjpFVkVOVFNPVVJD
RSksIGV2ZW50U291cmNlLmdldCgpKTsKKworICAgIC8vIEFkZCBvYmplY3QgdG8gdGhlIHdyYXBw
ZXIgbWFwLgorICAgIGV2ZW50U291cmNlLT5yZWYoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckFjdGl2ZURPTU9iamVjdChldmVudFNvdXJjZS5nZXQoKSwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CisgICAgcmV0dXJuIGFyZ3MuSG9s
ZGVyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHAK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUN1c3RvbS5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ3VzdG9t
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5
LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlY4RXZlbnRTb3VyY2UuaCIKKworI2luY2x1ZGUgIkV2ZW50U291cmNl
LmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcu
aCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBu
YW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEV2ZW50U291cmNlOjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5FdmVudFNvdXJjZS5hZGRFdmVu
dExpc3RlbmVyKCkiKTsKKyAgICBFdmVudFNvdXJjZSogZXZlbnRTb3VyY2UgPSBWOEV2ZW50U291
cmNlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciA9IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcihldmVudFNvdXJjZSwg
YXJnc1sxXSwgZmFsc2UsIExpc3RlbmVyRmluZE9yQ3JlYXRlKTsKKyAgICBpZiAobGlzdGVuZXIp
IHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CisgICAg
ICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOworICAgICAgICBl
dmVudFNvdXJjZS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7
CisKKyAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFd
LCBjYWNoZUluZGV4KTsKKyAgICB9CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RXZlbnRTb3VyY2U6OnJlbW92ZUV2ZW50TGlzdGVuZXJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9N
LkV2ZW50U291cmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOworICAgIEV2ZW50U291cmNlKiBl
dmVudFNvdXJjZSA9IFY4RXZlbnRTb3VyY2U6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworCisg
ICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVu
dExpc3RlbmVyKGV2ZW50U291cmNlLCBhcmdzWzFdLCBmYWxzZSwgTGlzdGVuZXJGaW5kT25seSk7
CisgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pOworICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFu
VmFsdWUoKTsKKyAgICAgICAgZXZlbnRTb3VyY2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwg
bGlzdGVuZXIuZ2V0KCksIHVzZUNhcHR1cmUpOworCisgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVu
ZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgY2FjaGVJbmRleCk7CisgICAgfQorCisgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJv
cGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJj
ZUN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>
<flag name="review"
          id="28920"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46626</attachid>
            <date>2010-01-14 17:54:03 -0800</date>
            <delta_ts>2010-01-15 09:22:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>33695_1.patch</filename>
            <type>text/plain</type>
            <size>17558</size>
            <attacher name="Marcus Bulach">bulach</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDUzMjk1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKK++7vzIwMTAt
MDEtMTQgIE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgRXZlbnRTb3VyY2UgYmlu
ZGluZ3MgZm9yIFY4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMzY5NQorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoZXhpc3RpbmcgbGF5b3V0IHRlc3Rz
IGZvciBFdmVudFNvdXJjZSBzaG91bGQgcGFzcykuCisKKyAgICAgICAgKiAuLi8uLi9XZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogLi4vLi4vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG06CisgICAgICAgICogLi4vLi4vYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaDoKKyAg
ICAgICAgKiAuLi8uLi9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcDoKKyAg
ICAgICAgKiAuLi8uLi9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIC4u
Ly4uL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAqIC4uLy4uL2JpbmRpbmdz
L3Y4L1Y4SW5kZXguY3BwOgorICAgICAgICAqIC4uLy4uL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaDoK
KyAgICAgICAgKiAuLi8uLi9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHku
Y3BwOgorICAgICAgICAqIC4uLy4uL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcu
aDoKKyAgICAgICAgKiAuLi8uLi9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUNvbnN0
cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgICogLi4vLi4vYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RXZlbnRTb3VyY2VDdXN0b20uY3BwOiBBZGRlZC4KKwogMjAxMC0wMS0xNCAgU3RldmUgQmxvY2sg
IDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2
aW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUuZ3lwaQkocmV2aXNpb24gNTMyOTEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29y
a2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSw3IEBACiAgICAgICAgICAgICAncGFnZS9Db29yZGlu
YXRlcy5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NU2VsZWN0aW9uLmlkbCcsCiAgICAgICAg
ICAgICAncGFnZS9ET01XaW5kb3cuaWRsJywKKyAgICAgICAgICAgICdwYWdlL0V2ZW50U291cmNl
LmlkbCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2NhdGlvbi5pZGwnLAogICAgICAgICAgICAg
J3BhZ2UvR2VvcG9zaXRpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0hpc3RvcnkuaWRsJywK
QEAgLTY4OCw2ICs2ODksOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERv
Y3VtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxl
bWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50
Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3Vy
Y2VDb25zdHJ1Y3Rvci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2
ZW50U291cmNlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
R2VvbG9jYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhIaXN0b3J5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yLmNwcCcsCkBAIC0xNzg3LDYgKzE3OTAsOCBAQAog
ICAgICAgICAgICAgJ3BhZ2UvRWRpdG9yQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9FdmVudEhhbmRsZXIuaCcsCisgICAg
ICAgICAgICAncGFnZS9FdmVudFNvdXJjZS5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvRXZlbnRT
b3VyY2UuaCcsCiAgICAgICAgICAgICAncGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwJywKICAgICAg
ICAgICAgICdwYWdlL0ZvY3VzQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL0ZvY3Vz
RGlyZWN0aW9uLmgnLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCShyZXZpc2lvbiA1MzI5MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw2ICszNTcsNyBAQCBzdWIg
R2V0SW50ZXJuYWxGaWVsZHMKICAgICByZXR1cm4gKCJjYWNoZUluZGV4IiwgImltcGxlbWVudGF0
aW9uSW5kZXgiKSBpZiAoJG5hbWUgZXEgIkRvY3VtZW50IikgfHwgKCRuYW1lIGVxICJTVkdEb2N1
bWVudCIpOwogICAgIHJldHVybiAoImNhY2hlSW5kZXgiLCAiaW1wbGVtZW50YXRpb25JbmRleCIs
ICJtYXJrZXJJbmRleCIsICJzaGFkb3dJbmRleCIpIGlmICRuYW1lIGVxICJIVE1MRG9jdW1lbnQi
OwogICAgIHJldHVybiAoImNhY2hlSW5kZXgiKSBpZiBJc05vZGVTdWJUeXBlKCRkYXRhTm9kZSk7
CisgICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJFdmVudFNvdXJjZSI7CiAg
ICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJYTUxIdHRwUmVxdWVzdCI7CiAg
ICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJYTUxIdHRwUmVxdWVzdFVwbG9h
ZCI7CiAgICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJNZXNzYWdlUG9ydCI7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCShyZXZpc2lvbiA1
MzI5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZl
bnRTb3VyY2UuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJGaWxlLmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDUzMjkxKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIzLDMgKzQyMyw3IEBACiAjaW5jbHVkZSAiYmluZGluZ3MvVjhJbnNwZWN0b3JCYWNr
ZW5kLmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOEluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAi
CiAjZW5kaWYKKworI2lmIEVOQUJMRShFVkVOVFNPVVJDRSkKKyNpbmNsdWRlICJiaW5kaW5ncy9W
OEV2ZW50U291cmNlLmNwcCIKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFw
cGVyLmNwcAkocmV2aXNpb24gNTMyOTEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw2ICszMDgsMTQgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RAogICAgICAgICBpbnN0YW5jZVRlbXBsYXRlLT5T
ZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrLCBW
OERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFz
c0luZGV4OjpET01XSU5ET1cpLCBmYWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworI2lm
IEVOQUJMRShFVkVOVFNPVVJDRSkKKyAgICBjYXNlIFY4Q2xhc3NJbmRleDo6RVZFTlRTT1VSQ0U6
IHsKKyAgICAgICAgZGVzY3JpcHRvci0+U2V0Q2FsbEhhbmRsZXIoVVNFX0NBTExCQUNLKEV2ZW50
U291cmNlQ29uc3RydWN0b3IpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmCisKICAg
ICBjYXNlIFY4Q2xhc3NJbmRleDo6TE9DQVRJT046IHsKICAgICAgICAgLy8gRm9yIHNlY3VyaXR5
IHJlYXNvbnMsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgb24gdGhlIGluc3RhbmNlCiAgICAgICAgIC8v
IGluc3RlYWQgb2Ygb24gdGhlIHByb3RvdHlwZSBvYmplY3QgdG8gaW5zdXJlIHRoYXQgdGhleSBj
YW5ub3QKQEAgLTEyODUsNiArMTI5MywxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01X
cmFwcGVyOjpjb252CiAgICAgICAgIHJldHVybiBjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5k
ZXg6OkRPTUFQUExJQ0FUSU9OQ0FDSEUsIGRvbUFwcENhY2hlKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKEVWRU5UU09VUkNFKQorICAgIEV2ZW50U291cmNlKiBldmVudFNvdXJjZSA9IHRhcmdldC0+
dG9FdmVudFNvdXJjZSgpOworICAgIGlmIChldmVudFNvdXJjZSkKKyAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6RVZFTlRTT1VSQ0UsIGV2ZW50U291cmNlKTsK
KyNlbmRpZgorCiAgICAgQVNTRVJUKDApOwogICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNl
cHRvcigpOwogfQpAQCAtMTM0OSw2ICsxMzYzLDIyIEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gVjhET01XcmFwcGVyOjoKICAgICByZXR1cm4gZ2V0RXZlbnRMaXN0ZW5lcih1cGxvYWQtPmFz
c29jaWF0ZWRYTUxIdHRwUmVxdWVzdCgpLCB2YWx1ZSwgaXNBdHRyaWJ1dGUsIGxvb2t1cCk7CiB9
CiAKKyNpZiBFTkFCTEUoRVZFTlRTT1VSQ0UpCitQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IFY4
RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcihFdmVudFNvdXJjZSogZXZlbnRTb3VyY2UsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0cmlidXRlLCBMaXN0ZW5lckxvb2t1
cFR5cGUgbG9va3VwKQoreworICAgIGlmIChWOFByb3h5OjpyZXRyaWV2ZShldmVudFNvdXJjZS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuIChsb29rdXAgPT0gTGlz
dGVuZXJGaW5kT25seSkgPyBWOEV2ZW50TGlzdGVuZXJMaXN0OjpmaW5kV3JhcHBlcih2YWx1ZSwg
aXNBdHRyaWJ1dGUpIDogVjhFdmVudExpc3RlbmVyTGlzdDo6ZmluZE9yQ3JlYXRlV3JhcHBlcjxW
OEV2ZW50TGlzdGVuZXI+KHZhbHVlLCBpc0F0dHJpYnV0ZSk7CisKKyNpZiBFTkFCTEUoV09SS0VS
UykKKyAgICBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHdvcmtlckNvbnRleHRQcm94eSA9
IFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6cmV0cmlldmUoKTsKKyAgICBpZiAod29ya2Vy
Q29udGV4dFByb3h5KQorICAgICAgICByZXR1cm4gd29ya2VyQ29udGV4dFByb3h5LT5maW5kT3JD
cmVhdGVFdmVudExpc3RlbmVyKHZhbHVlLCBpc0F0dHJpYnV0ZSwgbG9va3VwID09IExpc3RlbmVy
RmluZE9ubHkpOworI2VuZGlmCisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcihFdmVudFRh
cmdldCogZXZlbnRUYXJnZXQsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0
cmlidXRlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKQogewogICAgIGlmIChWOFByb3h5Ojpy
ZXRyaWV2ZShldmVudFRhcmdldC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAkocmV2aXNpb24gNTMyOTEpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNiArMTkwLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0cmlidXRlLCBMaXN0ZW5lckxv
b2t1cFR5cGUgbG9va3VwKTsKIAorI2lmIEVOQUJMRShFVkVOVFNPVVJDRSkKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihFdmVudFNvdXJj
ZSogZXZlbnRUYXJnZXQsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0cmli
dXRlLCBMaXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKTsKKyNlbmRpZgorCiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQq
IGV2ZW50VGFyZ2V0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCBpc0F0dHJpYnV0
ZSwgTGlzdGVuZXJMb29rdXBUeXBlIGxvb2t1cCk7CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihWOFByb3h5KiBwcm94eSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNBdHRyaWJ1dGUsIExpc3RlbmVyTG9va3VwVHlw
ZSBsb29rdXApOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCShyZXZpc2lvbiA1MzI5MSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
NCw2ICs0NDQsMTAgQEAKICNpbmNsdWRlICJWOEluc3BlY3RvckZyb250ZW5kSG9zdC5oIgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoRVZFTlRTT1VSQ0UpCisjaW5jbHVkZSAiVjhFdmVudFNvdXJjZS5o
IgorI2VuZGlmCisKIC8vIEdlb2xvY2F0aW9uCiAjaW5jbHVkZSAiVjhDb29yZGluYXRlcy5oIgog
I2luY2x1ZGUgIlY4R2VvbG9jYXRpb24uaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJ
bmRleC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCShyZXZp
c2lvbiA1MzI5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw2ICs4NSwxMyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsCiAjZGVmaW5lIFdPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMoVikKICNlbmRpZgog
CisjaWYgRU5BQkxFKEVWRU5UU09VUkNFKQorI2RlZmluZSBFVkVOVFNPVVJDRV9BQ1RJVkVfT0JK
RUNUX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoRVZFTlRT
T1VSQ0UsIEV2ZW50U291cmNlKQorI2Vsc2UKKyNkZWZpbmUgRVZFTlRTT1VSQ0VfQUNUSVZFX09C
SkVDVF9XUkFQUEVSX1RZUEVTKFYpCisjZW5kaWYKKwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlMpCiAjZGVmaW5lIEFQUExJQ0FUSU9OQ0FDSEVfTk9OTk9ERV9XUkFQUEVSX1RZ
UEVTKFYpICAgICAgICAgICAgICAgICAgICAgICBcCiAgIFYoRE9NQVBQTElDQVRJT05DQUNIRSwg
RE9NQXBwbGljYXRpb25DYWNoZSkKQEAgLTMyMSw3ICszMjgsOCBAQCB0eXBlZGVmIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihYTUxIVFRQUkVRVUVTVCwgWE1MSHR0cFJl
cXVlc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgV09SS0VSX0FD
VElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgU0hBUkVEX1dPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgV0VCU09DS0VUX0FDVElWRV9PQkpFQ1RfV1JBUFBF
Ul9UWVBFUyhWKQorICAgIFdFQlNPQ0tFVF9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVWRU5UU09VUkNFX0FDVElWRV9PQkpF
Q1RfV1JBUFBFUl9UWVBFUyhWKQogCiAvLyBOT1RFOiBET01fT0JKRUNUX1RZUEVTIGlzIHNwbGl0
IGludG8gdHdvIGhhbHZlcyBiZWNhdXNlCiAvLyAgICAgICBWaXN1YWwgU3R1ZGlvJ3MgSW50ZWxs
aW5vbnNlbnNlIGNyYXNoZXMgd2hlbiBtYWNyb3MgZ2V0CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCShyZXZpc2lvbiA1
MzI5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRPTUNvcmVF
eGNlcHRpb24uaCIKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudFNvdXJjZS5oIgogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIkV2ZW50
RXhjZXB0aW9uLmgiCkBAIC0zMjYsNiArMzI3LDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBX
b3JrZXJDb250ZXh0RXhlY3UKICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xh
c3NJbmRleDo6V0VCU09DS0VULCB3ZWJTb2NrZXQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRVZF
TlRTT1VSQ0UpCisgICAgRXZlbnRTb3VyY2UqIGV2ZW50U291cmNlID0gdGFyZ2V0LT50b0V2ZW50
U291cmNlKCk7CisgICAgaWYgKGV2ZW50U291cmNlKQorICAgICAgICByZXR1cm4gY29udmVydFRv
VjhPYmplY3QoVjhDbGFzc0luZGV4OjpFVkVOVFNPVVJDRSwgZXZlbnRTb3VyY2UpOworI2VuZGlm
CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCk7CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJp
bmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bUJpbmRpbmcuaAkocmV2aXNpb24gNTMyOTEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYlNvY2tldENvbnN0
cnVjdG9yKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEVWRU5UU09VUkNFKQorICAgICAgICBERUNM
QVJFX0NBTExCQUNLKEV2ZW50U291cmNlQ29uc3RydWN0b3IpOworI2VuZGlmCisKICN1bmRlZiBE
RUNMQVJFX0NBTExCQUNLCiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUNvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoRVZFTlRTT1VSQ0UpCisjaW5j
bHVkZSAiVjhFdmVudFNvdXJjZS5oIgorCisjaW5jbHVkZSAiRXZlbnRTb3VyY2UuaCIKKyNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9t
QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5o
IgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhDdXN0b206OnY4RXZlbnRTb3VyY2VDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uRXZlbnRTb3VyY2UuQ29u
c3RydWN0b3IiKTsKKworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxl
ZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICAvLyBFeHBlY3Qg
b25lIHBhcmFtZXRlci4KKyAgICAvLyBBbGxvY2F0ZSBhbiBFdmVudFNvdXJjZSBvYmplY3QgYXMg
aXRzIGludGVybmFsIGZpZWxkLgorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcigiRXZlbnRTb3VyY2UgY29uc3RydWN0b3IncyBhc3NvY2lhdGVk
IGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSAhPSAxKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRXZl
bnRTb3VyY2UgY29uc3RydWN0b3Igd3JvbmcgbnVtYmVyIG9mIHBhcmFtZXRlcnMiLCBWOFByb3h5
OjpUeXBlRXJyb3IpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5nIHVy
bCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKworICAgIFJlZlB0cjxFdmVudFNvdXJjZT4g
ZXZlbnRTb3VyY2UgPSBFdmVudFNvdXJjZTo6Y3JlYXRlKHVybCwgY29udGV4dCwgZWMpOworICAg
IAorICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOworCisgICAgVjhE
T01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksIFY4Q2xhc3NJbmRleDo6VG9J
bnQoVjhDbGFzc0luZGV4OjpFVkVOVFNPVVJDRSksIGV2ZW50U291cmNlLmdldCgpKTsKKworICAg
IC8vIEFkZCBvYmplY3QgdG8gdGhlIHdyYXBwZXIgbWFwLgorICAgIGV2ZW50U291cmNlLT5yZWYo
KTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdChldmVu
dFNvdXJjZS5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRl
cigpKSk7CisgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShFVkVOVFNPVVJDRSkKClByb3BlcnR5IGNoYW5nZXMg
b246IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5j
cHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUN1c3RvbS5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ3Vz
dG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAy
MDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKEVWRU5UU09VUkNFKQorI2luY2x1ZGUgIlY4RXZlbnRTb3Vy
Y2UuaCIKKworI2luY2x1ZGUgIkV2ZW50U291cmNlLmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcu
aCIKKyNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEV2ZW50U291cmNlOjphZGRFdmVu
dExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNf
U1RBVFMoIkRPTS5FdmVudFNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCkiKTsKKyAgICBFdmVudFNv
dXJjZSogZXZlbnRTb3VyY2UgPSBWOEV2ZW50U291cmNlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKKworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IFY4RE9NV3JhcHBlcjo6
Z2V0RXZlbnRMaXN0ZW5lcihldmVudFNvdXJjZSwgYXJnc1sxXSwgZmFsc2UsIExpc3RlbmVyRmlu
ZE9yQ3JlYXRlKTsKKyAgICBpZiAobGlzdGVuZXIpIHsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSB0
b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CisgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3Nb
Ml0tPkJvb2xlYW5WYWx1ZSgpOworICAgICAgICBldmVudFNvdXJjZS0+YWRkRXZlbnRMaXN0ZW5l
cih0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisKKyAgICAgICAgY3JlYXRlSGlkZGVuRGVw
ZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBjYWNoZUluZGV4KTsKKyAgICB9CisgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RXZl
bnRTb3VyY2U6OnJlbW92ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkV2ZW50U291cmNlLnJlbW92ZUV2ZW50TGlz
dGVuZXIoKSIpOworICAgIEV2ZW50U291cmNlKiBldmVudFNvdXJjZSA9IFY4RXZlbnRTb3VyY2U6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworCisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKGV2ZW50U291cmNlLCBhcmdz
WzFdLCBmYWxzZSwgTGlzdGVuZXJGaW5kT25seSk7CisgICAgaWYgKGxpc3RlbmVyKSB7CisgICAg
ICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOworICAgICAgICBib29s
IHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKKyAgICAgICAgZXZlbnRTb3Vy
Y2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIuZ2V0KCksIHVzZUNhcHR1cmUp
OworCisgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sx
XSwgY2FjaGVJbmRleCk7CisgICAgfQorCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEVWRU5UU09VUkNF
KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVu
dFNvdXJjZUN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExG
Cgo=
</data>
<flag name="review"
          id="28928"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46692</attachid>
            <date>2010-01-15 11:28:09 -0800</date>
            <delta_ts>2010-01-27 06:41:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>33695_2.patch</filename>
            <type>text/plain</type>
            <size>17921</size>
            <attacher name="Marcus Bulach">bulach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzI5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDEtMTUgIE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZHMgRXZlbnRTb3VyY2UgYmluZGluZ3MgZm9yIFY4CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzY5NQorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
ZXhpc3RpbmcgbGF5b3V0IHRlc3RzIGZvciBFdmVudFNvdXJjZSBzaG91bGQgcGFzcykuCisKKyAg
ICAgICAgKiBBbmRyb2lkLnY4YmluZGluZ3MubWs6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmg6CisgICAgICAgICogYmluZGluZ3Mvdjgv
RGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOElu
ZGV4Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHA6
IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ3VzdG9t
LmNwcDogQWRkZWQuCisKIDIwMTAtMDEtMTQgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgbWl0ekB3ZWJraXQub3JnLgpJbmRl
eDogV2ViQ29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9B
bmRyb2lkLnY4YmluZGluZ3MubWsJKHJldmlzaW9uIDUzMjkxKQorKysgV2ViQ29yZS9BbmRyb2lk
LnY4YmluZGluZ3MubWsJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsOCBAQCBMT0NBTF9T
UkNfRklMRVMgKz0gXAogCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0
b20uY3BwIFwKIAliaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcCBcCiAJYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwIFwKKwliaW5kaW5ncy92OC9jdXN0b20v
VjhFdmVudFNvdXJjZUNvbnN0cnVjdG9yLmNwcCBcCisJYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZl
bnRTb3VyY2VDdXN0b20uY3BwIFwKIAliaW5kaW5ncy92OC9jdXN0b20vVjhGaWxlTGlzdEN1c3Rv
bS5jcHAgXAogCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcCBcCiAJ
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIFwKSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBp
CShyZXZpc2lvbiA1MzI5MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTUsNiArMTk1LDcgQEAKICAgICAgICAgICAgICdwYWdlL0Nvb3JkaW5hdGVzLmlkbCcs
CiAgICAgICAgICAgICAncGFnZS9ET01TZWxlY3Rpb24uaWRsJywKICAgICAgICAgICAgICdwYWdl
L0RPTVdpbmRvdy5pZGwnLAorICAgICAgICAgICAgJ3BhZ2UvRXZlbnRTb3VyY2UuaWRsJywKICAg
ICAgICAgICAgICdwYWdlL0dlb2xvY2F0aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9HZW9w
b3NpdGlvbi5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvSGlzdG9yeS5pZGwnLApAQCAtNjg4LDYg
KzY4OSw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3Bw
JywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUNvbnN0cnVj
dG9yLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlv
bkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQXVkaW9F
bGVtZW50Q29uc3RydWN0b3IuY3BwJywKQEAgLTE3ODcsNiArMTc5MCw4IEBACiAgICAgICAgICAg
ICAncGFnZS9FZGl0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAncGFnZS9FdmVudEhhbmRsZXIu
Y3BwJywKICAgICAgICAgICAgICdwYWdlL0V2ZW50SGFuZGxlci5oJywKKyAgICAgICAgICAgICdw
YWdlL0V2ZW50U291cmNlLmNwcCcsCisgICAgICAgICAgICAncGFnZS9FdmVudFNvdXJjZS5oJywK
ICAgICAgICAgICAgICdwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ3BhZ2UvRm9jdXNEaXJlY3Rpb24u
aCcsCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0J
KHJldmlzaW9uIDUzMjkxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMzU3LDYgKzM1Nyw3IEBAIHN1YiBHZXRJbnRlcm5h
bEZpZWxkcwogICAgIHJldHVybiAoImNhY2hlSW5kZXgiLCAiaW1wbGVtZW50YXRpb25JbmRleCIp
IGlmICgkbmFtZSBlcSAiRG9jdW1lbnQiKSB8fCAoJG5hbWUgZXEgIlNWR0RvY3VtZW50Iik7CiAg
ICAgcmV0dXJuICgiY2FjaGVJbmRleCIsICJpbXBsZW1lbnRhdGlvbkluZGV4IiwgIm1hcmtlcklu
ZGV4IiwgInNoYWRvd0luZGV4IikgaWYgJG5hbWUgZXEgIkhUTUxEb2N1bWVudCI7CiAgICAgcmV0
dXJuICgiY2FjaGVJbmRleCIpIGlmIElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKTsKKyAgICByZXR1
cm4gKCJjYWNoZUluZGV4IikgaWYgJG5hbWUgZXEgIkV2ZW50U291cmNlIjsKICAgICByZXR1cm4g
KCJjYWNoZUluZGV4IikgaWYgJG5hbWUgZXEgIlhNTEh0dHBSZXF1ZXN0IjsKICAgICByZXR1cm4g
KCJjYWNoZUluZGV4IikgaWYgJG5hbWUgZXEgIlhNTEh0dHBSZXF1ZXN0VXBsb2FkIjsKICAgICBy
ZXR1cm4gKCJjYWNoZUluZGV4IikgaWYgJG5hbWUgZXEgIk1lc3NhZ2VQb3J0IjsKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgJKHJldmlzaW9uIDUzMjkxKQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xODcsNiArMTg3LDEwIEBACiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiAjZW5kaWYgLy8g
RE9NX1NUT1JBR0UKIAorI2lmIEVOQUJMRShFVkVOVFNPVVJDRSkKKyNpbmNsdWRlICJFdmVudFNv
dXJjZS5oIgorI2VuZGlmIC8vIEVWRU5UU09VUkNFCisKIC8vIEdFT0xPQ0FUSU9OCiAjaW5jbHVk
ZSAiQ29vcmRpbmF0ZXMuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA1
MzI5MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyMywzICs0MjMsNyBAQAogI2luY2x1ZGUgImJpbmRpbmdzL1Y4
SW5zcGVjdG9yQmFja2VuZC5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwIgogI2VuZGlmCisKKyNpZiBFTkFCTEUoRVZFTlRTT1VSQ0UpCisjaW5jbHVk
ZSAiYmluZGluZ3MvVjhFdmVudFNvdXJjZS5jcHAiCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHJldmlzaW9uIDUzMjkxKQorKysgV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIzLDEzIEBA
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEQKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisjaWYgRU5BQkxFKEVWRU5UU09VUkNFKQorICAgIGNhc2UgVjhDbGFzc0luZGV4
OjpFVkVOVFNPVVJDRTogeworICAgICAgICBkZXNjcmlwdG9yLT5TZXRDYWxsSGFuZGxlcihVU0Vf
Q0FMTEJBQ0soRXZlbnRTb3VyY2VDb25zdHJ1Y3RvcikpOworICAgICAgICBicmVhazsKKyAgICB9
CisjZW5kaWYKKwogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGNhc2UgVjhDbGFzc0luZGV4OjpX
T1JLRVI6IHsKICAgICAgICAgZGVzY3JpcHRvci0+U2V0Q2FsbEhhbmRsZXIoVVNFX0NBTExCQUNL
KFdvcmtlckNvbnN0cnVjdG9yKSk7CkBAIC0xMjg1LDYgKzEyOTIsMTIgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udgogICAgICAgICByZXR1cm4gY29udmVydFRvVjhP
YmplY3QoVjhDbGFzc0luZGV4OjpET01BUFBMSUNBVElPTkNBQ0hFLCBkb21BcHBDYWNoZSk7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShFVkVOVFNPVVJDRSkKKyAgICBFdmVudFNvdXJjZSogZXZlbnRT
b3VyY2UgPSB0YXJnZXQtPnRvRXZlbnRTb3VyY2UoKTsKKyAgICBpZiAoZXZlbnRTb3VyY2UpCisg
ICAgICAgIHJldHVybiBjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OkVWRU5UU09VUkNF
LCBldmVudFNvdXJjZSk7CisjZW5kaWYKKwogICAgIEFTU0VSVCgwKTsKICAgICByZXR1cm4gbm90
SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIH0KQEAgLTEzNDksNiArMTM2MiwyMiBAQCBQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IFY4RE9NV3JhcHBlcjo6CiAgICAgcmV0dXJuIGdldEV2ZW50TGlz
dGVuZXIodXBsb2FkLT5hc3NvY2lhdGVkWE1MSHR0cFJlcXVlc3QoKSwgdmFsdWUsIGlzQXR0cmli
dXRlLCBsb29rdXApOwogfQogCisjaWYgRU5BQkxFKEVWRU5UU09VUkNFKQorUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiBWOERPTVdyYXBwZXI6OmdldEV2ZW50TGlzdGVuZXIoRXZlbnRTb3VyY2Uq
IGV2ZW50U291cmNlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCBpc0F0dHJpYnV0
ZSwgTGlzdGVuZXJMb29rdXBUeXBlIGxvb2t1cCkKK3sKKyAgICBpZiAoVjhQcm94eTo6cmV0cmll
dmUoZXZlbnRTb3VyY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgIHJldHVy
biAobG9va3VwID09IExpc3RlbmVyRmluZE9ubHkpID8gVjhFdmVudExpc3RlbmVyTGlzdDo6Zmlu
ZFdyYXBwZXIodmFsdWUsIGlzQXR0cmlidXRlKSA6IFY4RXZlbnRMaXN0ZW5lckxpc3Q6OmZpbmRP
ckNyZWF0ZVdyYXBwZXI8VjhFdmVudExpc3RlbmVyPih2YWx1ZSwgaXNBdHRyaWJ1dGUpOworCisj
aWYgRU5BQkxFKFdPUktFUlMpCisgICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiB3b3Jr
ZXJDb250ZXh0UHJveHkgPSBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OnJldHJpZXZlKCk7
CisgICAgaWYgKHdvcmtlckNvbnRleHRQcm94eSkKKyAgICAgICAgcmV0dXJuIHdvcmtlckNvbnRl
eHRQcm94eS0+ZmluZE9yQ3JlYXRlRXZlbnRMaXN0ZW5lcih2YWx1ZSwgaXNBdHRyaWJ1dGUsIGxv
b2t1cCA9PSBMaXN0ZW5lckZpbmRPbmx5KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIDA7Cit9Cisj
ZW5kaWYKKwogUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBWOERPTVdyYXBwZXI6OmdldEV2ZW50
TGlzdGVuZXIoRXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgYm9vbCBpc0F0dHJpYnV0ZSwgTGlzdGVuZXJMb29rdXBUeXBlIGxvb2t1cCkKIHsKICAg
ICBpZiAoVjhQcm94eTo6cmV0cmlldmUoZXZlbnRUYXJnZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgJKHJldmlzaW9uIDUzMjkx
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTkwLDYgKzE5MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihYTUxIdHRwUmVxdWVz
dFVwbG9hZCogdXBsb2FkLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCBpc0F0dHJp
YnV0ZSwgTGlzdGVuZXJMb29rdXBUeXBlIGxvb2t1cCk7CiAKKyNpZiBFTkFCTEUoRVZFTlRTT1VS
Q0UpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlz
dGVuZXIoRXZlbnRTb3VyY2UqIGV2ZW50VGFyZ2V0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgYm9vbCBpc0F0dHJpYnV0ZSwgTGlzdGVuZXJMb29rdXBUeXBlIGxvb2t1cCk7CisjZW5kaWYK
KwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVudExpc3Rl
bmVyKEV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGJvb2wgaXNBdHRyaWJ1dGUsIExpc3RlbmVyTG9va3VwVHlwZSBsb29rdXApOwogCiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoVjhQcm94
eSogcHJveHksIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0cmlidXRlLCBM
aXN0ZW5lckxvb2t1cFR5cGUgbG9va3VwKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJ
bmRleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcAko
cmV2aXNpb24gNTMyOTEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NDQsNiArNDQ0LDEwIEBACiAjaW5jbHVkZSAiVjhJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEVWRU5UU09VUkNFKQorI2luY2x1ZGUg
IlY4RXZlbnRTb3VyY2UuaCIKKyNlbmRpZgorCiAvLyBHZW9sb2NhdGlvbgogI2luY2x1ZGUgIlY4
Q29vcmRpbmF0ZXMuaCIKICNpbmNsdWRlICJWOEdlb2xvY2F0aW9uLmgiCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4SW5kZXguaAkocmV2aXNpb24gNTMyOTEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5k
ZXguaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMTMgQEAgdHlwZWRlZiB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbAogI2RlZmluZSBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZ
UEVTKFYpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShFVkVOVFNPVVJDRSkKKyNkZWZpbmUgRVZFTlRT
T1VSQ0VfQUNUSVZFX09CSkVDVF9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBWKEVWRU5UU09VUkNFLCBFdmVudFNvdXJjZSkKKyNlbHNlCisjZGVmaW5lIEVWRU5U
U09VUkNFX0FDVElWRV9PQkpFQ1RfV1JBUFBFUl9UWVBFUyhWKQorI2VuZGlmCisKICNpZiBFTkFC
TEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogI2RlZmluZSBBUFBMSUNBVElPTkNBQ0hFX05P
Tk5PREVfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgXAogICBWKERPTUFQ
UExJQ0FUSU9OQ0FDSEUsIERPTUFwcGxpY2F0aW9uQ2FjaGUpCkBAIC0zMjEsNyArMzI4LDggQEAg
dHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAogICAgIFYoWE1MSFRUUFJF
UVVFU1QsIFhNTEh0dHBSZXF1ZXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIFdPUktFUl9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIFNIQVJFRF9XT1JLRVJfQUNUSVZFX09CSkVDVF9XUkFQ
UEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFdFQlNPQ0tFVF9BQ1RJ
VkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikKKyAgICBXRUJTT0NLRVRfQUNUSVZFX09CSkVDVF9X
UkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFVkVOVFNP
VVJDRV9BQ1RJVkVfT0JKRUNUX1dSQVBQRVJfVFlQRVMoVikKIAogLy8gTk9URTogRE9NX09CSkVD
VF9UWVBFUyBpcyBzcGxpdCBpbnRvIHR3byBoYWx2ZXMgYmVjYXVzZQogLy8gICAgICAgVmlzdWFs
IFN0dWRpbydzIEludGVsbGlub25zZW5zZSBjcmFzaGVzIHdoZW4gbWFjcm9zIGdldApJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
LmNwcAkocmV2aXNpb24gNTMyOTEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlICJET01Db3JlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRTb3VyY2UuaCIKICNp
bmNsdWRlICJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25DZW50ZXIuaCIK
ICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgpAQCAtMzI2LDYgKzMyNywxMiBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gV29ya2VyQ29udGV4dEV4ZWN1CiAgICAgICAgIHJldHVybiBjb252ZXJ0
VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OldFQlNPQ0tFVCwgd2ViU29ja2V0KTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKEVWRU5UU09VUkNFKQorICAgIEV2ZW50U291cmNlKiBldmVudFNvdXJjZSA9
IHRhcmdldC0+dG9FdmVudFNvdXJjZSgpOworICAgIGlmIChldmVudFNvdXJjZSkKKyAgICAgICAg
cmV0dXJuIGNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6RVZFTlRTT1VSQ0UsIGV2ZW50
U291cmNlKTsKKyNlbmRpZgorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHJldmlzaW9uIDUzMjkxKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDYgKzc1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhXZWJTb2NrZXRDb25zdHJ1Y3Rvcik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFVkVOVFNPVVJD
RSkKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhFdmVudFNvdXJjZUNvbnN0cnVjdG9yKTsKKyNl
bmRpZgorCiAjdW5kZWYgREVDTEFSRV9DQUxMQkFDSwogICAgIH07CiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEVWRU5UU09V
UkNFKQorI2luY2x1ZGUgIlY4RXZlbnRTb3VyY2UuaCIKKworI2luY2x1ZGUgIkV2ZW50U291cmNl
LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRl
ICJWOEN1c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhV
dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OEV2ZW50U291cmNlQ29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkV2ZW50
U291cmNlLkNvbnN0cnVjdG9yIik7CisKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5v
dCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAg
Ly8gRXhwZWN0IG9uZSBwYXJhbWV0ZXIuCisgICAgLy8gQWxsb2NhdGUgYW4gRXZlbnRTb3VyY2Ug
b2JqZWN0IGFzIGl0cyBpbnRlcm5hbCBmaWVsZC4KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4
dCkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkV2ZW50U291cmNlIGNvbnN0cnVjdG9yJ3Mg
YXNzb2NpYXRlZCBjb250ZXh0IGlzIG5vdCBhdmFpbGFibGUiLCBWOFByb3h5OjpSZWZlcmVuY2VF
cnJvcik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoIkV2ZW50U291cmNlIGNvbnN0cnVjdG9yIHdyb25nIG51bWJlciBvZiBwYXJhbWV0ZXJz
IiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IFN0cmluZyB1cmwgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CisKKyAgICBSZWZQdHI8RXZl
bnRTb3VyY2U+IGV2ZW50U291cmNlID0gRXZlbnRTb3VyY2U6OmNyZWF0ZSh1cmwsIGNvbnRleHQs
IGVjKTsKKyAgICAKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsK
KworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCBWOENsYXNz
SW5kZXg6OlRvSW50KFY4Q2xhc3NJbmRleDo6RVZFTlRTT1VSQ0UpLCBldmVudFNvdXJjZS5nZXQo
KSk7CisKKyAgICAvLyBBZGQgb2JqZWN0IHRvIHRoZSB3cmFwcGVyIG1hcC4KKyAgICBldmVudFNv
dXJjZS0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01P
YmplY3QoZXZlbnRTb3VyY2UuZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXco
YXJncy5Ib2xkZXIoKSkpOworICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRVZFTlRTT1VSQ0UpCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ29u
c3RydWN0b3IuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVu
dFNvdXJjZUN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShFVkVOVFNPVVJDRSkKKyNpbmNsdWRlICJW
OEV2ZW50U291cmNlLmgiCisKKyNpbmNsdWRlICJFdmVudFNvdXJjZS5oIgorCisjaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQ
cm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEV2ZW50U291cmNlOjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5FdmVudFNvdXJjZS5hZGRFdmVudExpc3Rl
bmVyKCkiKTsKKyAgICBFdmVudFNvdXJjZSogZXZlbnRTb3VyY2UgPSBWOEV2ZW50U291cmNlOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0
ZW5lciA9IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcihldmVudFNvdXJjZSwgYXJnc1sx
XSwgZmFsc2UsIExpc3RlbmVyRmluZE9yQ3JlYXRlKTsKKyAgICBpZiAobGlzdGVuZXIpIHsKKyAg
ICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CisgICAgICAgIGJv
b2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOworICAgICAgICBldmVudFNv
dXJjZS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisKKyAg
ICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBjYWNo
ZUluZGV4KTsKKyAgICB9CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RXZlbnRTb3VyY2U6OnJlbW92ZUV2ZW50TGlzdGVuZXJDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkV2ZW50
U291cmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOworICAgIEV2ZW50U291cmNlKiBldmVudFNv
dXJjZSA9IFY4RXZlbnRTb3VyY2U6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworCisgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3Rl
bmVyKGV2ZW50U291cmNlLCBhcmdzWzFdLCBmYWxzZSwgTGlzdGVuZXJGaW5kT25seSk7CisgICAg
aWYgKGxpc3RlbmVyKSB7CisgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pOworICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUo
KTsKKyAgICAgICAgZXZlbnRTb3VyY2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVu
ZXIuZ2V0KCksIHVzZUNhcHR1cmUpOworCisgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3ko
YXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgY2FjaGVJbmRleCk7CisgICAgfQorCisgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEVWRU5UU09VUkNFKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDog
c3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>