<?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>114938</bug_id>
          
          <creation_ts>2013-04-22 01:24:34 -0700</creation_ts>
          <short_desc>PDFPlugin: Support unlocking encrypted PDFs</short_desc>
          <delta_ts>2013-04-22 14:18:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>PDF</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>ap</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>879007</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 01:24:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/12872888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879016</commentid>
    <comment_count>1</comment_count>
      <attachid>199002</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 01:45:31 -0700</bug_when>
    <thetext>Created attachment 199002
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879235</commentid>
    <comment_count>2</comment_count>
      <attachid>199002</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-04-22 10:23:55 -0700</bug_when>
    <thetext>Comment on attachment 199002
patch

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

&gt; Source/WebKit2/ChangeLog:30
&gt; +        Try to unlock the PDF with the given password. If this succeeds, remove
&gt; +        the password field and relayout the scroll view.

Is there any feedback when the password is incorrect?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:96
&gt; +&quot;    -webkit-text-security: disc;&quot;

Does this actually enable secure text input, or do we need an &lt;input type=password&gt; for that?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:352
&gt; +        m_passwordField = 0;

nullptr

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:49
&gt; +    virtual bool handleEvent(WebCore::Event*) OVERRIDE;

I&apos;m a bit suspicious of the many public handleEvent functions in this patch. Most of the time, I expect functions with OVERRIDE to be private.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:58
&gt; +    WTF::String value() const;

s/WTF:://

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:100
&gt; +    if (textAnnotation) {

Can this be an early return instead?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:125
&gt; +    this-&gt;textAnnotation().stringValue = value();

I don&apos;t this that you need &quot;this-&gt;&quot; here any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879237</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 10:25:52 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 199002 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199002&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:30
&gt; &gt; +        Try to unlock the PDF with the given password. If this succeeds, remove
&gt; &gt; +        the password field and relayout the scroll view.
&gt; 
&gt; Is there any feedback when the password is incorrect?

Yes, but it&apos;s underneath us.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:96
&gt; &gt; +&quot;    -webkit-text-security: disc;&quot;
&gt; 
&gt; Does this actually enable secure text input, or do we need an &lt;input type=password&gt; for that?

I... don&apos;t know! I&apos;ll find out.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:352
&gt; &gt; +        m_passwordField = 0;
&gt; 
&gt; nullptr

Oooh la la.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:49
&gt; &gt; +    virtual bool handleEvent(WebCore::Event*) OVERRIDE;
&gt; 
&gt; I&apos;m a bit suspicious of the many public handleEvent functions in this patch. Most of the time, I expect functions with OVERRIDE to be private.

Err, yeah, you&apos;re right.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:58
&gt; &gt; +    WTF::String value() const;
&gt; 
&gt; s/WTF:://
&gt;
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:100
&gt; &gt; +    if (textAnnotation) {
&gt; 
&gt; Can this be an early return instead?
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:125
&gt; &gt; +    this-&gt;textAnnotation().stringValue = value();
&gt; 
&gt; I don&apos;t this that you need &quot;this-&gt;&quot; here any more.

Quite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879239</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 10:30:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm:96
&gt; &gt; &gt; +&quot;    -webkit-text-security: disc;&quot;
&gt; &gt; 
&gt; &gt; Does this actually enable secure text input, or do we need an &lt;input type=password&gt; for that?
&gt; 
&gt; I... don&apos;t know! I&apos;ll find out.

Looks like not, so I&apos;ll override createAnnotationElement() as well and make an &lt;input type=password&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879242</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-04-22 10:40:29 -0700</bug_when>
    <thetext>Maybe we should fix -webkit-text-security instead (and not necessarily right now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879308</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 12:00:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Maybe we should fix -webkit-text-security instead (and not necessarily right now).

Filed https://bugs.webkit.org/show_bug.cgi?id=114979 about that but I&apos;m not planning on working on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879428</commentid>
    <comment_count>7</comment_count>
      <attachid>199106</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 14:00:24 -0700</bug_when>
    <thetext>Created attachment 199106
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879432</commentid>
    <comment_count>8</comment_count>
      <attachid>199106</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-04-22 14:06:22 -0700</bug_when>
    <thetext>Comment on attachment 199106
patch

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

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginPasswordField.mm:28
&gt; +#if ENABLE(PDFKIT_PLUGIN)
&gt; +
&gt; +#import &quot;config.h&quot;

I think that ENABLE macros won&apos;t work before config.h.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginPasswordField.mm:43
&gt; +using namespace WebCore;
&gt; +
&gt; +namespace WebKit {
&gt; +
&gt; +using namespace HTMLNames;

Funny that using declarations are in different places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879434</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-04-22 14:07:25 -0700</bug_when>
    <thetext>s/declarations/directives/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879436</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 14:09:20 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 199106 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199106&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginPasswordField.mm:28
&gt; &gt; +#if ENABLE(PDFKIT_PLUGIN)
&gt; &gt; +
&gt; &gt; +#import &quot;config.h&quot;
&gt; 
&gt; I think that ENABLE macros won&apos;t work before config.h.

And yet they do. Will move it.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginPasswordField.mm:43
&gt; &gt; +using namespace WebCore;
&gt; &gt; +
&gt; &gt; +namespace WebKit {
&gt; &gt; +
&gt; &gt; +using namespace HTMLNames;
&gt; 
&gt; Funny that using declarations are in different places.

Oops!

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879438</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 14:18:26 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/148912</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199002</attachid>
            <date>2013-04-22 01:45:31 -0700</date>
            <delta_ts>2013-04-22 14:00:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pdf-password.diff</filename>
            <type>text/plain</type>
            <size>29676</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjMDllNmExLi4wMzFlZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAz
IEBACisyMDEzLTA0LTIyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIFBERlBsdWdpbjogU3VwcG9ydCB1bmxvY2tpbmcgZW5jcnlwdGVkIFBERnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDkzOAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTI4NzI4ODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgd2UgdHJ5IHRvIGxvYWQgYW4gZW5jcnlwdGVkIFBE
Riwgd2UgbmVlZCB0byBwcm92aWRlIGEgc2FuZSBtZWNoYW5pc20KKyAgICAgICAgdGhyb3VnaCB3
aGljaCB0aGUgdXNlciBjYW4gcHJvdmlkZSB0aGUgcGFzc3dvcmQuIEFkZCBhIHNsaWdodGx5LWJl
bG93LWNlbnRlcgorICAgICAgICBmb3JtIGZpZWxkIHRvIG1hdGNoIFBERktpdCdzIG5vcm1hbCBi
ZWhhdmlvci4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
QWRkIFBERlBsdWdpblBhc3N3b3JkRmllbGQue2gsbW19CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmg6IEFkZCBhdHRlbXB0VG9Vbmxv
Y2tXaXRoUGFzc3dvcmQ6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaDoKKyAgICAgICAgQWRkIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtLCBhdHRlbXB0VG9Vbmxv
Y2tQREYsIG1fcGFzc3dvcmRGaWVsZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbToKKyAgICAgICAgKGFubm90YXRpb25TdHlsZSk6IE1ha2UgI2Fubm90YXRp
b25Db250YWluZXIgYSBmbGV4Ym94IHRoYXQgY2VudGVycyBpdHMgY29udGVudHMuCisgICAgICAg
IFRoaXMgd29uJ3QgYWZmZWN0IHRoZSBub3JtYWwgYWJzb2x1dGVseS1wb3NpdGlvbmVkIGZvcm0g
ZmllbGRzLCBidXQgdGhlIGlubGluZQorICAgICAgICBwYXNzd29yZCBmaWVsZCB3aWxsIGJlIGNl
bnRlcmVkIHZlcnRpY2FsbHkgYW5kIGhvcml6b250YWxseS4KKworICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OnBkZkRvY3VtZW50RGlkTG9hZCk6CisgICAgICAgIElmIHRoZSBkb2N1bWVudCBp
cyBsb2NrZWQgd2hlbiBsb2FkZWQsIGNyZWF0ZSBhIHBhc3N3b3JkIGZpZWxkLgorCisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6Y3JlYXRlUGFzc3dvcmRFbnRyeUZvcm0pOgorICAgICAgICBD
cmVhdGUgYSBQREZQbHVnaW5QYXNzd29yZEZpZWxkIGFuZCBhdHRhY2ggaXQgdG8gdGhlIGRvY3Vt
ZW50LgorCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YXR0ZW1wdFRvVW5sb2NrUERGKToK
KyAgICAgICAgVHJ5IHRvIHVubG9jayB0aGUgUERGIHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkLiBJ
ZiB0aGlzIHN1Y2NlZWRzLCByZW1vdmUKKyAgICAgICAgdGhlIHBhc3N3b3JkIGZpZWxkIGFuZCBy
ZWxheW91dCB0aGUgc2Nyb2xsIHZpZXcuCisKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpj
YWxjdWxhdGVTaXplcyk6CisgICAgICAgIE1ha2UgdGhlIGRvY3VtZW50IDB4MCBpZiBpdCBpcyBs
b2NrZWQsIHByZXZlbnRpbmcgc2Nyb2xsaW5nLgorCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIERvbid0IHBhc3MgbW91c2UgZXZlbnRzIHRv
IFBERkxheWVyQ29udHJvbGxlciB3aGlsZSBpdCBpcyBsb2NrZWQsCisgICAgICAgIGFzIGl0IGhh
cyBubyB1c2VmdWwgZXZlbnRzIHRvIHByb3ZpZGUsIGFuZCB3aWxsIHRyeSB0byBwcmVzZW50IGEK
KyAgICAgICAgZGlhbG9nIGFza2luZyBmb3IgdGhlIHBhc3N3b3JkIGlmIHdlIGxldCBhIGNsaWNr
IHRocm91Z2guCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQW5ub3RhdGlvbjo6ZXZlbnRM
aXN0ZW5lcik6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQW5ub3RhdGlvbjo6
YXR0YWNoKToKKyAgICAgICAgTW92ZSBzZXR0aW5nIHRoZSBhbm5vdGF0aW9uIGVsZW1lbnQncyBj
bGFzcyBpbnRvIGNyZWF0ZUFubm90YXRpb25FbGVtZW50CisgICAgICAgIHNvIHRoYXQgc3ViY2xh
c3NlcyBjYW4gc2V0IHdoYXRldmVyIGNsYXNzIHRoZXkgd2FudC4KKworICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjpoYW5kbGVFdmVudCk6CisgICAgICAgIE1vdmUgZXZlbnQt
aGFuZGxpbmcgY29kZSBoZXJlIGZyb20gUERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI6
OmhhbmRsZUV2ZW50CisgICAgICAgIHNvIHRoYXQgc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhp
cyBpbnN0ZWFkIG9mIGhhdmluZyB0byBoYXZlIHRoZWlyIG93bgorICAgICAgICBldmVudCBsaXN0
ZW5lcnMgKHRoaXMgaXMgYWxzbyB3aHkgd2Ugbm93IGV4cG9zZSBldmVudExpc3RlbmVyKCkpLgor
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OlBERlBsdWdpbkFubm90YXRp
b25FdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgIEZvcndhcmQgdGhlIGV2ZW50
IHRvIG91ciBvd25pbmcgUERGUGx1Z2luQW5ub3RhdGlvbi4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQp
OgorICAgICAgICBNb3ZlIHNldHRpbmcgdGhlIGFubm90YXRpb24gZWxlbWVudCdzIGNsYXNzIGlu
dG8gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQKKyAgICAgICAgc28gdGhhdCBzdWJjbGFzc2VzIGNh
biBzZXQgd2hhdGV2ZXIgY2xhc3MgdGhleSB3YW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpQREZQbHVnaW5QYXNzd29yZEZpZWxkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW06
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFz
c3dvcmRGaWVsZCk6CisgICAgICAgIFVucmVnaXN0ZXIgZm9yIGtleXVwLgorCisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToK
KyAgICAgICAgUmVnaXN0ZXIgZm9yIGtleXVwLCBhbmQgc2V0IG91ciBlbGVtZW50J3MgY2xhc3Mg
dG8gInBhc3N3b3JkIi4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5QYXNzd29yZEZpZWxk
Ojp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgIEFkZGVkLiBPdmVycmlkZSB1cGRhdGVHZW9tZXRy
eSBhbmQgZG8gbm90aGluZywgYXMgdGhlIHBhc3N3b3JkIGZpZWxkCisgICAgICAgIGhhcyBhIGdl
b21ldHJ5IGRlZmluZWQgYnkgQ1NTIGluc3RlYWQgb2YgYnkgdGhlIFBERiBjb250ZW50LgorCisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmhhbmRsZUV2ZW50KToKKyAg
ICAgICAgSWYgdGhlIGVudGVyL3JldHVybiBrZXkgaXMgcHJlc3NlZCwgYXR0ZW1wdCB0byB1bmxv
Y2sgdGhlIFBERi4gQWxzbywKKyAgICAgICAgd2UgZG8gbm90IGNhbGwgZWl0aGVyIG9mIG91ciBz
dXBlcmNsYXNzJyBpbXBsZW1lbnRhdGlvbnMgb2YgaGFuZGxlRXZlbnQsCisgICAgICAgIGJlY2F1
c2UgYmx1cnJpbmcgdGhlIHBhc3N3b3JkIGZpZWxkIHNob3VsZCBub3QgZGVzdHJveSBpdCwgYW5k
IHRhYmJpbmcKKyAgICAgICAgYmV0d2VlbiBmaWVsZHMgaGFzIG5vIHJlbGV2YW5jZSB3aGVuIHRo
ZXJlIGNhbiBvbmx5IGJlIG9uZSBmaWVsZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luVGV4dEFubm90YXRpb246OlBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgIFJlbW92ZWQuIFdlIG5vdyBzaGFyZSBvdXIgc3VwZXJjbGFzcycgZXZlbnQgbGlz
dGVuZXIuCisKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OnRleHRB
bm5vdGF0aW9uKTogQ29uc3QuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFu
bm90YXRpb246On5QREZQbHVnaW5UZXh0QW5ub3RhdGlvbik6CisgICAgICAgIFBERlBsdWdpblRl
eHRBbm5vdGF0aW9uIG5vIGxvbmdlciBoYXMgaXRzIG93biBldmVudCBsaXN0ZW5lciwKKyAgICAg
ICAgc28gdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gY2xlYXIgaGVyZS4gSnVzdCBtYWtlIHN1cmUg
dG8gdW5yZWdpc3RlcgorICAgICAgICBvdXIgZXZlbnQgZnJvbSBQREZQbHVnaW5Bbm5vdGF0aW9u
J3Mgc2hhcmVkIGV2ZW50IGxpc3RlbmVyIQorCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblRl
eHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgIEVuc3VyZSB0
aGF0IHdlIGNhbiBjcmVhdGUgYSBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbiB3aXRoIGEgbnVsbCBh
bm5vdGF0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpj
b21taXQpOiBVc2UgdmFsdWUoKS4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90
YXRpb246OnZhbHVlKToKKyAgICAgICAgRmFjdG9yIHJldHJpZXZpbmcgdGhlIHZhbHVlIG9mIHRo
ZSBmb3JtIGNvbnRyb2wgb3V0IG9mIGNvbW1pdCgpLgorCisgICAgICAgIChXZWJLaXQ6OlBERlBs
dWdpblRleHRBbm5vdGF0aW9uOjpoYW5kbGVFdmVudCk6CisgICAgICAgIENhbGwgdXAgdG8gUERG
UGx1Z2luQW5ub3RhdGlvbidzIGhhbmRsZXIgc28gdGhhdCBkZWZvY3VzIGRlc3Ryb3lzIHRoZSBh
bm5vdGF0aW9uLgorCiAyMDEzLTA0LTE4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIFBERlBsdWdpbjogSG9vayB1cCB0aGUgc2VhcmNoLWluLVNwb3Rs
aWdodCBtZW51IGl0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA4ZmFkM2Q4Li43MTRhNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMTUsNiArMzE1LDcg
QEAKIAkJMkQyQURGMDkxNjM2MkRENTAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9u
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyQURG
MDYxNjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tICovOyB9Owog
CQkyRDJBREYwQjE2MzYyRERCMDAxOTdFNDcgLyogUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkFERjAzMTYzNjI0
MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0aW9uLm1tICovOyB9OwogCQkyRDJBREYxMDE2
MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkFERjBFMTYzNjREODIwMDE5
N0U0NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tICovOyB9OworCQkyRDQyOUJGRDE3
MjFFMkM3MDBFQzY4MUYgLyogUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENDI5QkZCMTcyMUUyQkEwMEVDNjgx
RiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tICovOyB9OwogCQkyRDg3MEQxMDE2MjM0RkZF
MDAwQTNGMjAgLyogUERGUGx1Z2luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQ4NzBEMEUxNjIyQjdGOTAwMEEzRjIwIC8qIFBERlBsdWdpbi5tbSAq
LzsgfTsKIAkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5
OTk3MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLzsgfTsK
IAkJMzEwOTk5QzcxNDZDOUUzRDAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwOTk5NjgxNDZD
NzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovOyB9OwpAQCAtMTcwOSw2
ICsxNzEwLDggQEAKIAkJMkQyQURGMEMxNjM2M0RFQzAwMTk3RTQ3IC8qIFBERkxheWVyQ29udHJv
bGxlckRldGFpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5o
OyBwYXRoID0gUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkQyQURGMEQxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2lj
ZUFubm90YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERGUGx1Z2lu
Q2hvaWNlQW5ub3RhdGlvbi5oOyBwYXRoID0gUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyQURGMEUxNjM2NEQ4MjAwMTk3RTQ3
IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tOyBwYXRoID0gUERG
L1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJENDI5QkZBMTcyMUUyQkEwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERlBsdWdpblBhc3N3b3JkRmllbGQu
aDsgcGF0aCA9IFBERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTJENDI5QkZCMTcyMUUyQkEwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29y
ZEZpZWxkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUERGUGx1
Z2luUGFzc3dvcmRGaWVsZC5tbTsgcGF0aCA9IFBERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDg3MEQwRDE2MjJCN0Y5MDAwQTNGMjAg
LyogUERGUGx1Z2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERlBsdWdp
bi5oOyBwYXRoID0gUERGL1BERlBsdWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDg3MEQwRTE2MjJCN0Y5MDAwQTNGMjAgLyogUERGUGx1Z2luLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUERGUGx1Z2luLm1tOyBwYXRoID0gUERGL1BERlBs
dWdpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwOTk5NjgxNDZDNzFGNTAw
MjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3Rp
ZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwODEsNiAr
NTA4NCw4IEBACiAJCQkJMkQyQURGMEUxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2lj
ZUFubm90YXRpb24ubW0gKi8sCiAJCQkJMkQyQURGMDUxNjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBs
dWdpblRleHRBbm5vdGF0aW9uLmggKi8sCiAJCQkJMkQyQURGMDYxNjM2MkRDNzAwMTk3RTQ3IC8q
IFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tICovLAorCQkJCTJENDI5QkZBMTcyMUUyQkEwMEVD
NjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLmggKi8sCisJCQkJMkQ0MjlCRkIxNzIxRTJC
QTAwRUM2ODFGIC8qIFBERlBsdWdpblBhc3N3b3JkRmllbGQubW0gKi8sCiAJCQkJRTE5OTg3NUEx
NDJCRjlCODAwQkIyREU3IC8qIFNpbXBsZVBERlBsdWdpbi5oICovLAogCQkJCUUxOTk4NzVDMTQy
QkZDOTcwMEJCMkRFNyAvKiBTaW1wbGVQREZQbHVnaW4ubW0gKi8sCiAJCQkpOwpAQCAtNjc4Miw2
ICs2Nzg3LDcgQEAKIAkJCQk2NTAxQkQxQTEyRjEyNDM0MDBFOUYyNDggLyogV0tCdW5kbGVJbnNw
ZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3MDQzQ0QxMkY3NUVFMDAwNjQ3MkI5IC8q
IFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzRCRUZF
MjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTJENDI5QkZEMTcyMUUyQzcwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxk
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMDUyODIxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVu
ZGxlUGFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdCNjMzRTEyQTQ1RDEyMDBEMTc0QTQg
LyogV0tCdW5kbGVQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRURDQTcxQjcxMjhE
REE4QzAwMjAxQjI2IC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVy
Q29udHJvbGxlckRldGFpbHMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCmluZGV4IGY0Zjc0YzQuLjQ4ZmU2MDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJD
b250cm9sbGVyRGV0YWlscy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCkBAIC0xMTAsNiArMTEwLDggQEAKIC0g
KENHUmVjdClib3VuZHNGb3JBbm5vdGF0aW9uOihQREZBbm5vdGF0aW9uICopYW5ub3RhdGlvbjsK
IC0gKHZvaWQpYWN0aXZhdGVOZXh0QW5ub3RhdGlvbjooQk9PTClwcmV2aW91czsKIAorLSAodm9p
ZClhdHRlbXB0VG9VbmxvY2tXaXRoUGFzc3dvcmQ6KE5TU3RyaW5nICopcGFzc3dvcmQ7CisKIC0g
KHZvaWQpc2VhcmNoSW5EaWN0aW9uYXJ5V2l0aFNlbGVjdGlvbjooUERGU2VsZWN0aW9uICopc2Vs
ZWN0aW9uOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaAppbmRleCBmMWQ1Y2Y5Li4zMjgzOTM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTU4LDYgKzU4
LDcgQEAgc3RydWN0IFBsdWdpbkluZm87CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUERG
UGx1Z2luQW5ub3RhdGlvbjsKK2NsYXNzIFBERlBsdWdpblBhc3N3b3JkRmllbGQ7CiBjbGFzcyBQ
bHVnaW5WaWV3OwogY2xhc3MgV2ViRnJhbWU7CiAKQEAgLTg2LDYgKzg3LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZm9jdXNOZXh0QW5ub3RhdGlvbigpOwogICAgIHZvaWQgZm9jdXNQcmV2aW91c0Fu
bm90YXRpb24oKTsKIAorICAgIHZvaWQgYXR0ZW1wdFRvVW5sb2NrUERGKGNvbnN0IFN0cmluZyYg
cGFzc3dvcmQpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFBERlBsdWdpbihXZWJGcmFtZSop
OwogCkBAIC0xMzMsNiArMTM2LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlUGFnZUFu
ZERldmljZVNjYWxlRmFjdG9ycygpOwogCisgICAgdm9pZCBjcmVhdGVQYXNzd29yZEVudHJ5Rm9y
bSgpOworCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydEZyb21QREZWaWV3VG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0OwogCiAgICAgUmV0YWluUHRyPENBTGF5
ZXI+IG1fY29udGFpbmVyTGF5ZXI7CkBAIC0xNDMsNiArMTQ4LDcgQEAgcHJpdmF0ZToKICAgICBS
ZXRhaW5QdHI8UERGTGF5ZXJDb250cm9sbGVyPiBtX3BkZkxheWVyQ29udHJvbGxlcjsKICAgICAK
ICAgICBSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbj4gbV9hY3RpdmVBbm5vdGF0aW9uOworICAg
IFJlZlB0cjxQREZQbHVnaW5QYXNzd29yZEZpZWxkPiBtX3Bhc3N3b3JkRmllbGQ7CiAgICAgUmVm
UHRyPFdlYkNvcmU6OkVsZW1lbnQ+IG1fYW5ub3RhdGlvbkNvbnRhaW5lcjsKIAogICAgIFdlYkNv
cmU6OkFmZmluZVRyYW5zZm9ybSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4
IGZkY2RhY2YuLjYwODViZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJQREZL
aXRJbXBvcnRzLmgiCiAjaW1wb3J0ICJQREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgiCiAjaW1w
b3J0ICJQREZQbHVnaW5Bbm5vdGF0aW9uLmgiCisjaW1wb3J0ICJQREZQbHVnaW5QYXNzd29yZEZp
ZWxkLmgiCiAjaW1wb3J0ICJQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIldlYkV2ZW50LmgiCkBAIC03NiwxNCArNzcsMjQgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIGFubm90YXRpb25TdHlsZSA9CiAiICAgIGxlZnQ6IDA7ICIKICIgICAgcmlnaHQ6
IDA7ICIKICIgICAgYm90dG9tOiAwOyAiCisiICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OyAiCisi
ICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7ICIKKyIgICAgLXdlYmtpdC1ib3gtcGFjazog
Y2VudGVyOyAiCiAifSAiCiAiLmFubm90YXRpb24geyAiCiAiICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsgIgotIiAgICBwb2ludGVyLWV2ZW50czogYXV0bzsgIgogIn0gIgogInRleHRhcmVhLmFubm90
YXRpb24geyAiCiAiICAgIHJlc2l6ZTogbm9uZTsgIgotIn0iOworIn0gIgorIi5hbm5vdGF0aW9u
LCAucGFzc3dvcmQgeyAiCisiICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOyAiCisifSAiCisiLnBh
c3N3b3JkIHsgIgorIiAgICB3aWR0aDogMjAwcHg7ICIKKyIgICAgbWFyZ2luLXRvcDogMTAwcHg7
ICIKKyIgICAgLXdlYmtpdC10ZXh0LXNlY3VyaXR5OiBkaXNjOyIKKyJ9ICI7CiAKIC8vIEluIG5v
bi1jb250aW51b3VzIG1vZGVzLCBhIHNpbmdsZSBzY3JvbGwgZXZlbnQgd2l0aCBhIG1hZ25pdHVk
ZSBvZiA+PSAyMHB4CiAvLyB3aWxsIGp1bXAgdG8gdGhlIG5leHQgb3IgcHJldmlvdXMgcGFnZSwg
dG8gbWF0Y2ggUERGS2l0IGJlaGF2aW9yLgpAQCAtMzIyLDYgKzMzMywyNyBAQCB2b2lkIFBERlBs
dWdpbjo6cGRmRG9jdW1lbnREaWRMb2FkKCkKICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7CiAKICAg
ICBydW5TY3JpcHRzSW5QREZEb2N1bWVudCgpOworCisgICAgaWYgKFtkb2N1bWVudC5nZXQoKSBp
c0xvY2tlZF0pCisgICAgICAgIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtKCk7Cit9CisKK3ZvaWQg
UERGUGx1Z2luOjpjcmVhdGVQYXNzd29yZEVudHJ5Rm9ybSgpCit7CisgICAgbV9wYXNzd29yZEZp
ZWxkID0gUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6Y3JlYXRlKG1fcGRmTGF5ZXJDb250cm9sbGVy
LmdldCgpLCB0aGlzKTsKKyAgICBtX3Bhc3N3b3JkRmllbGQtPmF0dGFjaChtX2Fubm90YXRpb25D
b250YWluZXIuZ2V0KCkpOworfQorCit2b2lkIFBERlBsdWdpbjo6YXR0ZW1wdFRvVW5sb2NrUERG
KGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCit7CisgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIGF0
dGVtcHRUb1VubG9ja1dpdGhQYXNzd29yZDpwYXNzd29yZF07CisKKyAgICBpZiAoIVtwZGZEb2N1
bWVudCgpIGlzTG9ja2VkXSkgeworICAgICAgICBtX3Bhc3N3b3JkRmllbGQgPSAwOworCisgICAg
ICAgIGNhbGN1bGF0ZVNpemVzKCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKKyAgICB9
CiB9CiAKIHZvaWQgUERGUGx1Z2luOjp1cGRhdGVQYWdlQW5kRGV2aWNlU2NhbGVGYWN0b3JzKCkK
QEAgLTM0MCw2ICszNzIsMTEgQEAgdm9pZCBQREZQbHVnaW46OmNvbnRlbnRzU2NhbGVGYWN0b3JD
aGFuZ2VkKGZsb2F0KQogCiB2b2lkIFBERlBsdWdpbjo6Y2FsY3VsYXRlU2l6ZXMoKQogeworICAg
IGlmIChbcGRmRG9jdW1lbnQoKSBpc0xvY2tlZF0pIHsKKyAgICAgICAgc2V0UERGRG9jdW1lbnRT
aXplKEludFNpemUoMCwgMCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGNvbWUgc3RyYWlnaHQgZnJvbSBQREZLaXQuCiAgICAgY29tcHV0ZVBh
Z2VCb3hlcygpOwogCkBAIC01NjcsNiArNjA0LDkgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRsZU1v
dXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1fc2Nyb2xsQ29y
bmVyTGF5ZXIgJiYgSW50UmVjdChtX3Njcm9sbENvcm5lckxheWVyLmdldCgpLmZyYW1lKS5jb250
YWlucyhtb3VzZVBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKFtw
ZGZEb2N1bWVudCgpIGlzTG9ja2VkXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgLy8g
UmlnaHQtY2xpY2tzIGFuZCBDb250cm9sLWNsaWNrcyBhbHdheXMgY2FsbCBoYW5kbGVDb250ZXh0
TWVudUV2ZW50IGFzIHdlbGwuCiAgICAgaWYgKGV2ZW50LmJ1dHRvbigpID09IFdlYk1vdXNlRXZl
bnQ6OlJpZ2h0QnV0dG9uIHx8IChldmVudC5idXR0b24oKSA9PSBXZWJNb3VzZUV2ZW50OjpMZWZ0
QnV0dG9uICYmIGV2ZW50LmNvbnRyb2xLZXkoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5B
bm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbkFubm90YXRpb24uaAppbmRleCA4YmQxMTI1Li4xM2NiZTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90
YXRpb24uaApAQCAtNzAsNiArNzAsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBXZWJDb3JlOjpFbGVt
ZW50KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIFBERkxheWVyQ29u
dHJvbGxlciAqcGRmTGF5ZXJDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wZGZMYXllckNv
bnRyb2xsZXI7IH0KKyAgICBXZWJDb3JlOjpFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgaGFuZGxlRXZlbnQoV2ViQ29yZTo6RXZlbnQqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KaW5kZXggNDM2MTEzOC4uYzAzODQxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5v
dGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luQW5ub3RhdGlvbi5tbQpAQCAtNjgsNyArNjgsNiBAQCB2b2lkIFBERlBsdWdpbkFubm90
YXRpb246OmF0dGFjaChFbGVtZW50KiBwYXJlbnQpCiAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CiAg
ICAgbV9lbGVtZW50ID0gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKIAotICAgIG1fZWxlbWVu
dC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgImFubm90YXRpb24iKTsKICAgICBtX2VsZW1lbnQt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCBtX2V2ZW50TGlzdGVu
ZXIsIGZhbHNlKTsKICAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmJsdXJFdmVudCwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CiAKQEAgLTEwOCwxMyArMTA3LDIw
IEBAIHZvaWQgUERGUGx1Z2luQW5ub3RhdGlvbjo6dXBkYXRlR2VvbWV0cnkoKQogICAgIHN0eWxl
ZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIGRvY3VtZW50
U2l6ZS5oZWlnaHQoKSAtIGFubm90YXRpb25SZWN0Lm9yaWdpbi55IC0gYW5ub3RhdGlvblJlY3Qu
c2l6ZS5oZWlnaHQgLSBzY3JvbGxQb3NpdGlvbi55KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOwogfQogCi12b2lkIFBERlBsdWdpbkFubm90YXRpb246OlBERlBsdWdpbkFubm90YXRpb25F
dmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQq
IGV2ZW50KQorYm9vbCBQREZQbHVnaW5Bbm5vdGF0aW9uOjpoYW5kbGVFdmVudChFdmVudCogZXZl
bnQpCiB7Ci0gICAgaWYgKCFtX2Fubm90YXRpb24pCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmx1ckV2ZW50IHx8IGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50KSB7CisgICAgICAgIG1fcGx1Z2luLT5zZXRBY3Rp
dmVBbm5vdGF0aW9uKDApOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CiAKLSAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmx1
ckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50KQotICAg
ICAgICBtX2Fubm90YXRpb24tPnBsdWdpbigpLT5zZXRBY3RpdmVBbm5vdGF0aW9uKDApOwordm9p
ZCBQREZQbHVnaW5Bbm5vdGF0aW9uOjpQREZQbHVnaW5Bbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6
aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKK3sKKyAg
ICBpZiAobV9hbm5vdGF0aW9uKQorICAgICAgICBtX2Fubm90YXRpb24tPmhhbmRsZUV2ZW50KGV2
ZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFu
bm90YXRpb24ubW0KaW5kZXggNGE5YmIwMC4uODY2ZjIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hv
aWNlQW5ub3RhdGlvbi5tbQpAQCAtNzIsNiArNzIsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBE
RlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKICAgICBQ
REZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0ICpjaG9pY2VBbm5vdGF0aW9uID0gdGhpcy0+Y2hvaWNl
QW5ub3RhdGlvbigpOwogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBkb2N1bWVudC0+
Y3JlYXRlRWxlbWVudChzZWxlY3RUYWcsIGZhbHNlKTsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1
dGUoY2xhc3NBdHRyLCAiYW5ub3RhdGlvbiIpOwogCiAgICAgU3R5bGVkRWxlbWVudCogc3R5bGVk
RWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50LmdldCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5QYXNzd29yZEZpZWxkLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpblBhc3N3b3JkRmllbGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44MmRkOGM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmgKQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgUERGUGx1Z2luUGFzc3dvcmRGaWVsZF9oCisjZGVmaW5lIFBE
RlBsdWdpblBhc3N3b3JkRmllbGRfaAorCisjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCisKKyNp
bmNsdWRlICJQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgUERGUGx1Z2luUGFzc3dvcmRGaWVsZCA6IHB1YmxpYyBQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UERGUGx1Z2luUGFzc3dv
cmRGaWVsZD4gY3JlYXRlKFBERkxheWVyQ29udHJvbGxlciAqLCBQREZQbHVnaW4qKTsKKyAgICB2
aXJ0dWFsIH5QREZQbHVnaW5QYXNzd29yZEZpZWxkKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlR2VvbWV0cnkoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChX
ZWJDb3JlOjpFdmVudCopIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFBERlBsdWdpblBhc3N3
b3JkRmllbGQoUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdp
biogcGx1Z2luKQorICAgICAgICA6IFBERlBsdWdpblRleHRBbm5vdGF0aW9uKDAsIHBkZkxheWVy
Q29udHJvbGxlciwgcGx1Z2luKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBPVkVSUklERTsK
KworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUERGS0lU
X1BMVUdJTikKKworI2VuZGlmIC8vIFBERlBsdWdpblRleHRBbm5vdGF0aW9uX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dv
cmRGaWVsZC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luUGFzc3dvcmRGaWVsZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
MDhjNWFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5oIgorCisjaW1wb3J0ICJQREZLaXRJbXBv
cnRzLmgiCisjaW1wb3J0ICJQREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgiCisjaW1wb3J0ICJQ
REZQbHVnaW4uaCIKKyNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RXZlbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvS2V5Ym9hcmRFdmVudC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK1Bhc3NSZWZQdHI8
UERGUGx1Z2luUGFzc3dvcmRGaWVsZD4gUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6Y3JlYXRlKFBE
RkxheWVyQ29udHJvbGxlciAqcGRmTGF5ZXJDb250cm9sbGVyLCBQREZQbHVnaW4qIHBsdWdpbikK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERlBsdWdpblBhc3N3b3JkRmllbGQocGRmTGF5
ZXJDb250cm9sbGVyLCBwbHVnaW4pKTsKK30KKworUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6flBE
RlBsdWdpblBhc3N3b3JkRmllbGQoKQoreworICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7Cit9
CisKK1Bhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6Y3JlYXRlQW5u
b3RhdGlvbkVsZW1lbnQoKQoreworICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gUERGUGx1
Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCk7CisgICAgZWxlbWVu
dC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgInBhc3N3b3JkIik7CisgICAgZWxlbWVudC0+YWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgZXZlbnRMaXN0ZW5lcigpLCBm
YWxzZSk7CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKK3ZvaWQgUERGUGx1Z2luUGFzc3dvcmRG
aWVsZDo6dXBkYXRlR2VvbWV0cnkoKQoreworfQorCitib29sIFBERlBsdWdpblBhc3N3b3JkRmll
bGQ6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OkV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQt
PmlzS2V5Ym9hcmRFdmVudCgpICYmIGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXVw
RXZlbnQpIHsKKyAgICAgICAgS2V5Ym9hcmRFdmVudCoga2V5Ym9hcmRFdmVudCA9IHN0YXRpY19j
YXN0PEtleWJvYXJkRXZlbnQqPihldmVudCk7CisKKyAgICAgICAgaWYgKGtleWJvYXJkRXZlbnQt
PmtleUlkZW50aWZpZXIoKSA9PSAiRW50ZXIiKSB7CisgICAgICAgICAgICBwbHVnaW4oKS0+YXR0
ZW1wdFRvVW5sb2NrUERGKHZhbHVlKCkpOworICAgICAgICAgICAgZXZlbnQtPnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKFBERktJVF9QTFVHSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmgKaW5k
ZXggYmM3MzUwOC4uNzZkZTYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaApAQCAt
NDYsNDEgKzQ2LDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnko
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KCkgT1ZFUlJJREU7CiAKLXByaXZh
dGU6CisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFdlYkNvcmU6OkV2ZW50KikgT1ZFUlJJ
REU7CisKK3Byb3RlY3RlZDoKICAgICBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbihQREZBbm5vdGF0
aW9uICphbm5vdGF0aW9uLCBQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJvbGxlciwg
UERGUGx1Z2luKiBwbHVnaW4pCiAgICAgICAgIDogUERGUGx1Z2luQW5ub3RhdGlvbihhbm5vdGF0
aW9uLCBwZGZMYXllckNvbnRyb2xsZXIsIHBsdWdpbikKLSAgICAgICAgLCBtX2V2ZW50TGlzdGVu
ZXIoUERGUGx1Z2luVGV4dEFubm90YXRpb25FdmVudExpc3RlbmVyOjpjcmVhdGUodGhpcykpCiAg
ICAgewogICAgIH0KIAotICAgIGNsYXNzIFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0
ZW5lciA6IHB1YmxpYyBXZWJDb3JlOjpFdmVudExpc3RlbmVyIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5l
cj4gY3JlYXRlKFBERlBsdWdpblRleHRBbm5vdGF0aW9uKiBhbm5vdGF0aW9uKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERlBsdWdpblRleHRBbm5vdGF0aW9u
RXZlbnRMaXN0ZW5lcihhbm5vdGF0aW9uKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFs
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgT1ZFUlJJREUg
eyByZXR1cm4gdGhpcyA9PSAmbGlzdGVuZXI7IH0KLQotICAgICAgICB2b2lkIHNldFRleHRBbm5v
dGF0aW9uKFBERlBsdWdpblRleHRBbm5vdGF0aW9uKiBhbm5vdGF0aW9uKSB7IG1fYW5ub3RhdGlv
biA9IGFubm90YXRpb247IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFBERlBsdWdpblRleHRB
bm5vdGF0aW9uRXZlbnRMaXN0ZW5lcihQREZQbHVnaW5UZXh0QW5ub3RhdGlvbiogYW5ub3RhdGlv
bikKLSAgICAgICAgICAgIDogV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcihXZWJDb3JlOjpFdmVudExp
c3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKLSAgICAgICAgICAgICwgbV9hbm5vdGF0aW9u
KGFubm90YXRpb24pCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6
RXZlbnQqKSBPVkVSUklERTsKLQotICAgICAgICBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbiogbV9h
bm5vdGF0aW9uOwotICAgIH07Ci0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxl
bWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBPVkVSUklERTsKKyAgICBXVEY6OlN0cmlu
ZyB2YWx1ZSgpIGNvbnN0OwogCi0gICAgUERGQW5ub3RhdGlvblRleHRXaWRnZXQgKiB0ZXh0QW5u
b3RhdGlvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFBERkFubm90YXRpb25UZXh0V2lkZ2V0ICo+
KGFubm90YXRpb24oKSk7IH0KLQotICAgIFJlZlB0cjxQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2
ZW50TGlzdGVuZXI+IG1fZXZlbnRMaXN0ZW5lcjsKK3ByaXZhdGU6CisgICAgUERGQW5ub3RhdGlv
blRleHRXaWRnZXQgKnRleHRBbm5vdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
UERGQW5ub3RhdGlvblRleHRXaWRnZXQgKj4oYW5ub3RhdGlvbigpKTsgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCA2ZmNh
ZWE4Li45ZWE1YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTQzLDcg
KzQzLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRleHRBcmVhRWxlbWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvV2luZG93c0tleWJvYXJkQ29kZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTc3LDggKzc2LDcgQEAgUGFzc1JlZlB0cjxQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbj4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZShQREZBbm5vdGF0aW8KIAog
UERGUGx1Z2luVGV4dEFubm90YXRpb246On5QREZQbHVnaW5UZXh0QW5ub3RhdGlvbigpCiB7Ci0g
ICAgZWxlbWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZl
bnQsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOwotICAgIG1fZXZlbnRMaXN0ZW5lci0+
c2V0VGV4dEFubm90YXRpb24oMCk7CisgICAgZWxlbWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIGV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogfQog
CiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5v
dGF0aW9uRWxlbWVudCgpCkBAIC05NCwxOSArOTIsMjIgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBQ
REZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogICAgIGVs
c2UKICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGlucHV0VGFnLCBm
YWxzZSk7CiAKLSAgICBlbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlk
b3duRXZlbnQsIG1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAgIGVsZW1lbnQtPnNldEF0dHJp
YnV0ZShjbGFzc0F0dHIsICJhbm5vdGF0aW9uIik7CisgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCBldmVudExpc3RlbmVyKCksIGZhbHNlKTsK
IAogICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRF
bGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7CiAKLSAgICAvLyBGSVhNRTogTWF0Y2ggZm9udCB3ZWln
aHQgYW5kIHN0eWxlIGFzIHdlbGw/Ci0gICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvckZyb21OU0NvbG9yKHRleHRBbm5vdGF0aW9u
LmZvbnRDb2xvcikuc2VyaWFsaXplZCgpKTsKLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgdGV4dEFubm90YXRpb24uZm9udC5m
YW1pbHlOYW1lKTsKLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5VGV4dEFsaWduLCBjc3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdubWVudCh0
ZXh0QW5ub3RhdGlvbi5hbGlnbm1lbnQpKTsKKyAgICBpZiAodGV4dEFubm90YXRpb24pIHsKKyAg
ICAgICAgLy8gRklYTUU6IE1hdGNoIGZvbnQgd2VpZ2h0IGFuZCBzdHlsZSBhcyB3ZWxsPworICAg
ICAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q29s
b3IsIGNvbG9yRnJvbU5TQ29sb3IodGV4dEFubm90YXRpb24uZm9udENvbG9yKS5zZXJpYWxpemVk
KCkpOworICAgICAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5Rm9udEZhbWlseSwgdGV4dEFubm90YXRpb24uZm9udC5mYW1pbHlOYW1lKTsKKyAgICAg
ICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRB
bGlnbiwgY3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQodGV4dEFubm90YXRpb24u
YWxpZ25tZW50KSk7CiAKLSAgICBpZiAoaXNNdWx0aWxpbmUpCi0gICAgICAgIHN0YXRpY19jYXN0
PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihzdHlsZWRFbGVtZW50KS0+c2V0VmFsdWUodGV4dEFubm90
YXRpb24uc3RyaW5nVmFsdWUpOwotICAgIGVsc2UKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTElu
cHV0RWxlbWVudCo+KHN0eWxlZEVsZW1lbnQpLT5zZXRWYWx1ZSh0ZXh0QW5ub3RhdGlvbi5zdHJp
bmdWYWx1ZSk7CisgICAgICAgIGlmIChpc011bHRpbGluZSkKKyAgICAgICAgICAgIHN0YXRpY19j
YXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihzdHlsZWRFbGVtZW50KS0+c2V0VmFsdWUodGV4dEFu
bm90YXRpb24uc3RyaW5nVmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc3R5bGVkRWxlbWVudCktPnNldFZhbHVlKHRleHRBbm5v
dGF0aW9uLnN0cmluZ1ZhbHVlKTsKKyAgICB9CiAKICAgICByZXR1cm4gZWxlbWVudDsKIH0KQEAg
LTEyMSwzNiArMTIyLDM4IEBAIHZvaWQgUERGUGx1Z2luVGV4dEFubm90YXRpb246OnVwZGF0ZUdl
b21ldHJ5KCkKIAogdm9pZCBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y29tbWl0KCkKIHsKLSAg
ICBQREZBbm5vdGF0aW9uVGV4dFdpZGdldCAqdGV4dEFubm90YXRpb24gPSB0aGlzLT50ZXh0QW5u
b3RhdGlvbigpOwotCi0gICAgaWYgKHRleHRBbm5vdGF0aW9uLmlzTXVsdGlsaW5lKQotICAgICAg
ICB0ZXh0QW5ub3RhdGlvbi5zdHJpbmdWYWx1ZSA9IHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVs
ZW1lbnQqPihlbGVtZW50KCkpLT52YWx1ZSgpOwotICAgIGVsc2UKLSAgICAgICAgdGV4dEFubm90
YXRpb24uc3RyaW5nVmFsdWUgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVu
dCgpKS0+dmFsdWUoKTsKLQorICAgIHRoaXMtPnRleHRBbm5vdGF0aW9uKCkuc3RyaW5nVmFsdWUg
PSB2YWx1ZSgpOwogICAgIFBERlBsdWdpbkFubm90YXRpb246OmNvbW1pdCgpOwogfQogCi12b2lk
IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlz
dGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQp
CitTdHJpbmcgUERGUGx1Z2luVGV4dEFubm90YXRpb246OnZhbHVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChlbGVtZW50KCkpLT52YWx1ZSgpOwor
fQorCitib29sIFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpoYW5kbGVFdmVudChFdmVudCogZXZl
bnQpCiB7Ci0gICAgaWYgKCFtX2Fubm90YXRpb24pCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAo
UERGUGx1Z2luQW5ub3RhdGlvbjo6aGFuZGxlRXZlbnQoZXZlbnQpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIGlmIChldmVudC0+aXNLZXlib2FyZEV2ZW50KCkgJiYgZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7CiAgICAgICAgIEtleWJvYXJkRXZlbnQq
IGtleWJvYXJkRXZlbnQgPSBzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZlbnQpOwogCiAg
ICAgICAgIGlmIChrZXlib2FyZEV2ZW50LT5rZXlJZGVudGlmaWVyKCkgPT0gIlUrMDAwOSIpIHsK
ICAgICAgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LT5jdHJsS2V5KCkgfHwga2V5Ym9hcmRFdmVu
dC0+bWV0YUtleSgpIHx8IGtleWJvYXJkRXZlbnQtPmFsdEdyYXBoS2V5KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAg
ICAgaWYgKGtleWJvYXJkRXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgbV9hbm5v
dGF0aW9uLT5wbHVnaW4oKS0+Zm9jdXNQcmV2aW91c0Fubm90YXRpb24oKTsKKyAgICAgICAgICAg
ICAgICBwbHVnaW4oKS0+Zm9jdXNQcmV2aW91c0Fubm90YXRpb24oKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBtX2Fubm90YXRpb24tPnBsdWdpbigpLT5mb2N1c05leHRBbm5v
dGF0aW9uKCk7Ci0KKyAgICAgICAgICAgICAgICBwbHVnaW4oKS0+Zm9jdXNOZXh0QW5ub3RhdGlv
bigpOworICAgICAgICAgICAgCiAgICAgICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="220689"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199106</attachid>
            <date>2013-04-22 14:00:24 -0700</date>
            <delta_ts>2013-04-22 14:06:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pdf-password.diff</filename>
            <type>text/plain</type>
            <size>28229</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4OTE1ZjgyLi44Y2FlYTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTMtMDQtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBTdXBwb3J0IHVubG9ja2luZyBlbmNyeXB0ZWQgUERGcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0OTM4CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xMjg3Mjg4OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvcnQgSFRNTE5hbWVzOjp0eXBlQXR0ci4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorCiAyMDEzLTA0LTE4ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nOyBmaXggYmluZGlu
Z3MgdGVzdHMgYWZ0ZXIgcjE0ODcwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggY2U0YjhjYS4u
Yzg5YTM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTExNjMsNiArMTE2Myw3IEBAIF9fWk43
V2ViQ29yZTlIVE1MTmFtZXM4aHJlZkF0dHJFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzOGlucHV0
VGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczhuYW1lQXR0ckUKIF9fWk43V2ViQ29yZTlIVE1M
TmFtZXM4c3R5bGVUYWdFCitfX1pON1dlYkNvcmU5SFRNTE5hbWVzOHR5cGVBdHRyRQogX19aTjdX
ZWJDb3JlOUhUTUxOYW1lczh2aWRlb1RhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM5YXBwbGV0
VGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczljbGFzc0F0dHJFCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzA5
ZTZhMS4uZGE1YTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEzLTA0LTIyICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFBERlBsdWdp
bjogU3VwcG9ydCB1bmxvY2tpbmcgZW5jcnlwdGVkIFBERnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDkzOAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTI4NzI4ODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSWYgd2UgdHJ5IHRvIGxvYWQgYW4gZW5jcnlwdGVkIFBERiwgd2UgbmVlZCB0byBwcm92
aWRlIGEgc2FuZSBtZWNoYW5pc20KKyAgICAgICAgdGhyb3VnaCB3aGljaCB0aGUgdXNlciBjYW4g
cHJvdmlkZSB0aGUgcGFzc3dvcmQuIEFkZCBhIHNsaWdodGx5LWJlbG93LWNlbnRlcgorICAgICAg
ICBwYXNzd29yZCBmaWVsZCB0byBtYXRjaCBQREZLaXQncyBub3JtYWwgYmVoYXZpb3IuCisKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBQREZQbHVnaW5Q
YXNzd29yZEZpZWxkLntoLG1tfQorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
TGF5ZXJDb250cm9sbGVyRGV0YWlscy5oOiBBZGQgYXR0ZW1wdFRvVW5sb2NrV2l0aFBhc3N3b3Jk
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
IEFkZCBjcmVhdGVQYXNzd29yZEVudHJ5Rm9ybSwgYXR0ZW1wdFRvVW5sb2NrUERGLCBtX3Bhc3N3
b3JkRmllbGQuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06
CisgICAgICAgIChhbm5vdGF0aW9uU3R5bGUpOiBNYWtlICNhbm5vdGF0aW9uQ29udGFpbmVyIGEg
ZmxleGJveCB0aGF0IGNlbnRlcnMgaXRzIGNvbnRlbnRzLgorICAgICAgICBUaGlzIHdvbid0IGFm
ZmVjdCB0aGUgbm9ybWFsIGFic29sdXRlbHktcG9zaXRpb25lZCBmb3JtIGZpZWxkcywgYnV0IHRo
ZSBpbmxpbmUKKyAgICAgICAgcGFzc3dvcmQgZmllbGQgd2lsbCBiZSBjZW50ZXJlZCB2ZXJ0aWNh
bGx5IGFuZCBob3Jpem9udGFsbHkuCisKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwZGZE
b2N1bWVudERpZExvYWQpOgorICAgICAgICBJZiB0aGUgZG9jdW1lbnQgaXMgbG9ja2VkIHdoZW4g
bG9hZGVkLCBjcmVhdGUgYSBwYXNzd29yZCBmaWVsZC4KKworICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46OmNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtKToKKyAgICAgICAgQ3JlYXRlIGEgUERGUGx1
Z2luUGFzc3dvcmRGaWVsZCBhbmQgYXR0YWNoIGl0IHRvIHRoZSBkb2N1bWVudC4KKworICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OmF0dGVtcHRUb1VubG9ja1BERik6CisgICAgICAgIFRyeSB0
byB1bmxvY2sgdGhlIFBERiB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZC4gSWYgdGhpcyBzdWNjZWVk
cywgcmVtb3ZlCisgICAgICAgIHRoZSBwYXNzd29yZCBmaWVsZCBhbmQgcmVsYXlvdXQgdGhlIHNj
cm9sbCB2aWV3LgorCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y2FsY3VsYXRlU2l6ZXMp
OgorICAgICAgICBNYWtlIHRoZSBkb2N1bWVudCAweDAgaWYgaXQgaXMgbG9ja2VkLCBwcmV2ZW50
aW5nIHNjcm9sbGluZy4KKworICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmhhbmRsZU1vdXNl
RXZlbnQpOgorICAgICAgICBEb24ndCBwYXNzIG1vdXNlIGV2ZW50cyB0byBQREZMYXllckNvbnRy
b2xsZXIgd2hpbGUgaXQgaXMgbG9ja2VkLAorICAgICAgICBhcyBpdCBoYXMgbm8gdXNlZnVsIGV2
ZW50cyB0byBwcm92aWRlLCBhbmQgd2lsbCB0cnkgdG8gcHJlc2VudCBhCisgICAgICAgIGRpYWxv
ZyBhc2tpbmcgZm9yIHRoZSBwYXNzd29yZCBpZiB3ZSBsZXQgYSBjbGljayB0aHJvdWdoLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg6Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmV2ZW50TGlzdGVuZXIpOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24u
bW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmhhbmRsZUV2ZW50KToK
KyAgICAgICAgTW92ZSBldmVudC1oYW5kbGluZyBjb2RlIGhlcmUgZnJvbSBQREZQbHVnaW5Bbm5v
dGF0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQKKyAgICAgICAgc28gdGhhdCBzdWJjbGFz
c2VzIGNhbiBvdmVycmlkZSB0aGlzIGluc3RlYWQgb2YgaGF2aW5nIHRvIGhhdmUgdGhlaXIgb3du
CisgICAgICAgIGV2ZW50IGxpc3RlbmVycyAodGhpcyBpcyBhbHNvIHdoeSB3ZSBub3cgZXhwb3Nl
IGV2ZW50TGlzdGVuZXIoKSkuCisKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQW5ub3RhdGlv
bjo6UERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAg
ICAgRm9yd2FyZCB0aGUgZXZlbnQgdG8gb3VyIG93bmluZyBQREZQbHVnaW5Bbm5vdGF0aW9uLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxk
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpQREZQ
bHVnaW5QYXNzd29yZEZpZWxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpblBhc3N3b3JkRmllbGQubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW5QYXNzd29yZEZpZWxkOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5QYXNz
d29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCk6CisgICAgICAgIFVucmVnaXN0ZXIg
Zm9yIGtleXVwLgorCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNy
ZWF0ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgUmVnaXN0ZXIgZm9yIGtleXVwLCBhbmQg
c2V0IG91ciBlbGVtZW50J3MgY2xhc3MgdG8gInBhc3N3b3JkIi4KKworICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW5QYXNzd29yZEZpZWxkOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgIEFkZGVk
LiBPdmVycmlkZSB1cGRhdGVHZW9tZXRyeSBhbmQgZG8gbm90aGluZywgYXMgdGhlIHBhc3N3b3Jk
IGZpZWxkCisgICAgICAgIGhhcyBhIGdlb21ldHJ5IGRlZmluZWQgYnkgQ1NTIGluc3RlYWQgb2Yg
YnkgdGhlIFBERiBjb250ZW50LgorCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3Jk
RmllbGQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgSWYgdGhlIGVudGVyL3JldHVybiBrZXkgaXMg
cHJlc3NlZCwgYXR0ZW1wdCB0byB1bmxvY2sgdGhlIFBERi4gQWxzbywKKyAgICAgICAgd2UgZG8g
bm90IGNhbGwgZWl0aGVyIG9mIG91ciBzdXBlcmNsYXNzJyBpbXBsZW1lbnRhdGlvbnMgb2YgaGFu
ZGxlRXZlbnQsCisgICAgICAgIGJlY2F1c2UgYmx1cnJpbmcgdGhlIHBhc3N3b3JkIGZpZWxkIHNo
b3VsZCBub3QgZGVzdHJveSBpdCwgYW5kIHRhYmJpbmcKKyAgICAgICAgYmV0d2VlbiBmaWVsZHMg
aGFzIG5vIHJlbGV2YW5jZSB3aGVuIHRoZXJlIGNhbiBvbmx5IGJlIG9uZSBmaWVsZC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaDoK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OlBERlBsdWdpblRleHRB
bm5vdGF0aW9uRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIFJlbW92ZWQuIFdlIG5vdyBzaGFyZSBv
dXIgc3VwZXJjbGFzcycgZXZlbnQgbGlzdGVuZXIuCisKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luVGV4dEFubm90YXRpb246OnRleHRBbm5vdGF0aW9uKTogQ29uc3QuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbToKKyAgICAgICAg
KFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246On5QREZQbHVnaW5UZXh0QW5ub3RhdGlv
bik6CisgICAgICAgIFBERlBsdWdpblRleHRBbm5vdGF0aW9uIG5vIGxvbmdlciBoYXMgaXRzIG93
biBldmVudCBsaXN0ZW5lciwKKyAgICAgICAgc28gdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gY2xl
YXIgaGVyZS4gSnVzdCBtYWtlIHN1cmUgdG8gdW5yZWdpc3RlcgorICAgICAgICBvdXIgZXZlbnQg
ZnJvbSBQREZQbHVnaW5Bbm5vdGF0aW9uJ3Mgc2hhcmVkIGV2ZW50IGxpc3RlbmVyIQorCisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCk6CisgICAgICAgIEVuc3VyZSB0aGF0IHdlIGNhbiBjcmVhdGUgYSBQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbiB3aXRoIGEgbnVsbCBhbm5vdGF0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpblRleHRBbm5vdGF0aW9uOjpjb21taXQpOiBVc2UgdmFsdWUoKS4KKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OnZhbHVlKToKKyAgICAgICAgRmFjdG9yIHJl
dHJpZXZpbmcgdGhlIHZhbHVlIG9mIHRoZSBmb3JtIGNvbnRyb2wgb3V0IG9mIGNvbW1pdCgpLgor
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpoYW5kbGVFdmVudCk6
CisgICAgICAgIENhbGwgdXAgdG8gUERGUGx1Z2luQW5ub3RhdGlvbidzIGhhbmRsZXIgc28gdGhh
dCBkZWZvY3VzIGRlc3Ryb3lzIHRoZSBhbm5vdGF0aW9uLgorCiAyMDEzLTA0LTE4ICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFBERlBsdWdpbjogSG9v
ayB1cCB0aGUgc2VhcmNoLWluLVNwb3RsaWdodCBtZW51IGl0ZW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZmFkM2Q4Li43MTRh
NDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zMTUsNiArMzE1LDcgQEAKIAkJMkQyQURGMDkxNjM2MkRENTAwMTk3RTQ3IC8q
IFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQyQURGMDYxNjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBsdWdpblRl
eHRBbm5vdGF0aW9uLm1tICovOyB9OwogCQkyRDJBREYwQjE2MzYyRERCMDAxOTdFNDcgLyogUERG
UGx1Z2luQW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEMkFERjAzMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0aW9u
Lm1tICovOyB9OwogCQkyRDJBREYxMDE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNl
QW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEMkFERjBFMTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lm1tICovOyB9OworCQkyRDQyOUJGRDE3MjFFMkM3MDBFQzY4MUYgLyogUERGUGx1Z2luUGFzc3dv
cmRGaWVsZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJENDI5QkZCMTcyMUUyQkEwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tICov
OyB9OwogCQkyRDg3MEQxMDE2MjM0RkZFMDAwQTNGMjAgLyogUERGUGx1Z2luLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4NzBEMEUxNjIyQjdGOTAw
MEEzRjIwIC8qIFBERlBsdWdpbi5tbSAqLzsgfTsKIAkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5
IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5OTk3MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmNwcCAqLzsgfTsKIAkJMzEwOTk5QzcxNDZDOUUzRDAwMjlERUI5IC8qIFdl
Yk5vdGlmaWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNs
aWVudC5oICovOyB9OwpAQCAtMTcwOSw2ICsxNzEwLDggQEAKIAkJMkQyQURGMEMxNjM2M0RFQzAw
MTk3RTQ3IC8qIFBERkxheWVyQ29udHJvbGxlckRldGFpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERG
TGF5ZXJDb250cm9sbGVyRGV0YWlscy5oOyBwYXRoID0gUERGL1BERkxheWVyQ29udHJvbGxlckRl
dGFpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyQURGMEQxNjM2NEQ4MjAw
MTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oOyBwYXRoID0gUERGL1BE
RlBsdWdpbkNob2ljZUFubm90YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQyQURGMEUxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQREZQbHVnaW5DaG9pY2VB
bm5vdGF0aW9uLm1tOyBwYXRoID0gUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJENDI5QkZBMTcyMUUyQkEwMEVDNjgxRiAvKiBQ
REZQbHVnaW5QYXNzd29yZEZpZWxkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFBERlBsdWdpblBhc3N3b3JkRmllbGQuaDsgcGF0aCA9IFBERi9QREZQbHVnaW5QYXNzd29yZEZp
ZWxkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJENDI5QkZCMTcyMUUyQkEwMEVD
NjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbTsgcGF0aCA9IFBERi9Q
REZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RDg3MEQwRDE2MjJCN0Y5MDAwQTNGMjAgLyogUERGUGx1Z2luLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFBERlBsdWdpbi5oOyBwYXRoID0gUERGL1BERlBsdWdpbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDg3MEQwRTE2MjJCN0Y5MDAwQTNGMjAgLyogUERG
UGx1Z2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUERGUGx1
Z2luLm1tOyBwYXRoID0gUERGL1BERlBsdWdpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTUwODEsNiArNTA4NCw4IEBACiAJCQkJMkQyQURGMEUxNjM2NEQ4MjAw
MTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gKi8sCiAJCQkJMkQyQURGMDUx
NjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLmggKi8sCiAJCQkJMkQy
QURGMDYxNjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tICovLAor
CQkJCTJENDI5QkZBMTcyMUUyQkEwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLmgg
Ki8sCisJCQkJMkQ0MjlCRkIxNzIxRTJCQTAwRUM2ODFGIC8qIFBERlBsdWdpblBhc3N3b3JkRmll
bGQubW0gKi8sCiAJCQkJRTE5OTg3NUExNDJCRjlCODAwQkIyREU3IC8qIFNpbXBsZVBERlBsdWdp
bi5oICovLAogCQkJCUUxOTk4NzVDMTQyQkZDOTcwMEJCMkRFNyAvKiBTaW1wbGVQREZQbHVnaW4u
bW0gKi8sCiAJCQkpOwpAQCAtNjc4Miw2ICs2Nzg3LDcgQEAKIAkJCQk2NTAxQkQxQTEyRjEyNDM0
MDBFOUYyNDggLyogV0tCdW5kbGVJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3
MDQzQ0QxMkY3NUVFMDAwNjQ3MkI5IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzRCRUZFMjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2Rl
SGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJENDI5QkZEMTcyMUUyQzcwMEVDNjgxRiAv
KiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMDUyODIx
MUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzdCNjMzRTEyQTQ1RDEyMDBEMTc0QTQgLyogV0tCdW5kbGVQYWdlR3JvdXAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRURDQTcxQjcxMjhEREE4QzAwMjAxQjI2IC8qIFdLQnVuZGxlUGFnZU92ZXJs
YXkuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCmlu
ZGV4IGY0Zjc0YzQuLjQ4ZmU2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5o
CkBAIC0xMTAsNiArMTEwLDggQEAKIC0gKENHUmVjdClib3VuZHNGb3JBbm5vdGF0aW9uOihQREZB
bm5vdGF0aW9uICopYW5ub3RhdGlvbjsKIC0gKHZvaWQpYWN0aXZhdGVOZXh0QW5ub3RhdGlvbjoo
Qk9PTClwcmV2aW91czsKIAorLSAodm9pZClhdHRlbXB0VG9VbmxvY2tXaXRoUGFzc3dvcmQ6KE5T
U3RyaW5nICopcGFzc3dvcmQ7CisKIC0gKHZvaWQpc2VhcmNoSW5EaWN0aW9uYXJ5V2l0aFNlbGVj
dGlvbjooUERGU2VsZWN0aW9uICopc2VsZWN0aW9uOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBmMWQ1Y2Y5Li4z
MjgzOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLmgKQEAgLTU4LDYgKzU4LDcgQEAgc3RydWN0IFBsdWdpbkluZm87CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgUERGUGx1Z2luQW5ub3RhdGlvbjsKK2NsYXNzIFBERlBsdWdp
blBhc3N3b3JkRmllbGQ7CiBjbGFzcyBQbHVnaW5WaWV3OwogY2xhc3MgV2ViRnJhbWU7CiAKQEAg
LTg2LDYgKzg3LDggQEAgcHVibGljOgogICAgIHZvaWQgZm9jdXNOZXh0QW5ub3RhdGlvbigpOwog
ICAgIHZvaWQgZm9jdXNQcmV2aW91c0Fubm90YXRpb24oKTsKIAorICAgIHZvaWQgYXR0ZW1wdFRv
VW5sb2NrUERGKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpOworCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFBERlBsdWdpbihXZWJGcmFtZSopOwogCkBAIC0xMzMsNiArMTM2LDggQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgdXBkYXRlUGFnZUFuZERldmljZVNjYWxlRmFjdG9ycygpOwogCisgICAgdm9p
ZCBjcmVhdGVQYXNzd29yZEVudHJ5Rm9ybSgpOworCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY29u
dmVydEZyb21QREZWaWV3VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0
OwogCiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY29udGFpbmVyTGF5ZXI7CkBAIC0xNDMsNiAr
MTQ4LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8UERGTGF5ZXJDb250cm9sbGVyPiBtX3Bk
ZkxheWVyQ29udHJvbGxlcjsKICAgICAKICAgICBSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbj4g
bV9hY3RpdmVBbm5vdGF0aW9uOworICAgIFJlZlB0cjxQREZQbHVnaW5QYXNzd29yZEZpZWxkPiBt
X3Bhc3N3b3JkRmllbGQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IG1fYW5ub3RhdGlv
bkNvbnRhaW5lcjsKIAogICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSBtX3Jvb3RWaWV3VG9Q
bHVnaW5UcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGZkY2RhY2YuLmJjMjA0YWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0zNiw2
ICszNiw3IEBACiAjaW1wb3J0ICJQREZLaXRJbXBvcnRzLmgiCiAjaW1wb3J0ICJQREZMYXllckNv
bnRyb2xsZXJEZXRhaWxzLmgiCiAjaW1wb3J0ICJQREZQbHVnaW5Bbm5vdGF0aW9uLmgiCisjaW1w
b3J0ICJQREZQbHVnaW5QYXNzd29yZEZpZWxkLmgiCiAjaW1wb3J0ICJQbHVnaW5WaWV3LmgiCiAj
aW1wb3J0ICJXZWJDb250ZXh0TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYkV2ZW50LmgiCkBAIC03
Niw2ICs3Nyw5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBhbm5vdGF0aW9uU3R5bGUgPQogIiAgICBs
ZWZ0OiAwOyAiCiAiICAgIHJpZ2h0OiAwOyAiCiAiICAgIGJvdHRvbTogMDsgIgorIiAgICBkaXNw
bGF5OiAtd2Via2l0LWJveDsgIgorIiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOyAiCisi
ICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsgIgogIn0gIgogIi5hbm5vdGF0aW9uIHsgIgog
IiAgICBwb3NpdGlvbjogYWJzb2x1dGU7ICIKQEAgLTgzLDcgKzg3LDEyIEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBhbm5vdGF0aW9uU3R5bGUgPQogIn0gIgogInRleHRhcmVhLmFubm90YXRpb24geyAi
CiAiICAgIHJlc2l6ZTogbm9uZTsgIgotIn0iOworIn0gIgorImlucHV0LmFubm90YXRpb25bdHlw
ZT0ncGFzc3dvcmQnXSB7ICIKKyIgICAgcG9zaXRpb246IHN0YXRpYzsgIgorIiAgICB3aWR0aDog
MjAwcHg7ICIKKyIgICAgbWFyZ2luLXRvcDogMTAwcHg7ICIKKyJ9ICI7CiAKIC8vIEluIG5vbi1j
b250aW51b3VzIG1vZGVzLCBhIHNpbmdsZSBzY3JvbGwgZXZlbnQgd2l0aCBhIG1hZ25pdHVkZSBv
ZiA+PSAyMHB4CiAvLyB3aWxsIGp1bXAgdG8gdGhlIG5leHQgb3IgcHJldmlvdXMgcGFnZSwgdG8g
bWF0Y2ggUERGS2l0IGJlaGF2aW9yLgpAQCAtMzIyLDYgKzMzMSwyNyBAQCB2b2lkIFBERlBsdWdp
bjo6cGRmRG9jdW1lbnREaWRMb2FkKCkKICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7CiAKICAgICBy
dW5TY3JpcHRzSW5QREZEb2N1bWVudCgpOworCisgICAgaWYgKFtkb2N1bWVudC5nZXQoKSBpc0xv
Y2tlZF0pCisgICAgICAgIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtKCk7Cit9CisKK3ZvaWQgUERG
UGx1Z2luOjpjcmVhdGVQYXNzd29yZEVudHJ5Rm9ybSgpCit7CisgICAgbV9wYXNzd29yZEZpZWxk
ID0gUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6Y3JlYXRlKG1fcGRmTGF5ZXJDb250cm9sbGVyLmdl
dCgpLCB0aGlzKTsKKyAgICBtX3Bhc3N3b3JkRmllbGQtPmF0dGFjaChtX2Fubm90YXRpb25Db250
YWluZXIuZ2V0KCkpOworfQorCit2b2lkIFBERlBsdWdpbjo6YXR0ZW1wdFRvVW5sb2NrUERGKGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQpCit7CisgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIGF0dGVt
cHRUb1VubG9ja1dpdGhQYXNzd29yZDpwYXNzd29yZF07CisKKyAgICBpZiAoIVtwZGZEb2N1bWVu
dCgpIGlzTG9ja2VkXSkgeworICAgICAgICBtX3Bhc3N3b3JkRmllbGQgPSBudWxscHRyOworCisg
ICAgICAgIGNhbGN1bGF0ZVNpemVzKCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUERGUGx1Z2luOjp1cGRhdGVQYWdlQW5kRGV2aWNlU2NhbGVGYWN0b3Jz
KCkKQEAgLTM0MCw2ICszNzAsMTEgQEAgdm9pZCBQREZQbHVnaW46OmNvbnRlbnRzU2NhbGVGYWN0
b3JDaGFuZ2VkKGZsb2F0KQogCiB2b2lkIFBERlBsdWdpbjo6Y2FsY3VsYXRlU2l6ZXMoKQogewor
ICAgIGlmIChbcGRmRG9jdW1lbnQoKSBpc0xvY2tlZF0pIHsKKyAgICAgICAgc2V0UERGRG9jdW1l
bnRTaXplKEludFNpemUoMCwgMCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGNvbWUgc3RyYWlnaHQgZnJvbSBQREZLaXQuCiAgICAgY29tcHV0
ZVBhZ2VCb3hlcygpOwogCkBAIC01NjcsNiArNjAyLDkgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRs
ZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1fc2Nyb2xs
Q29ybmVyTGF5ZXIgJiYgSW50UmVjdChtX3Njcm9sbENvcm5lckxheWVyLmdldCgpLmZyYW1lKS5j
b250YWlucyhtb3VzZVBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYg
KFtwZGZEb2N1bWVudCgpIGlzTG9ja2VkXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
Ly8gUmlnaHQtY2xpY2tzIGFuZCBDb250cm9sLWNsaWNrcyBhbHdheXMgY2FsbCBoYW5kbGVDb250
ZXh0TWVudUV2ZW50IGFzIHdlbGwuCiAgICAgaWYgKGV2ZW50LmJ1dHRvbigpID09IFdlYk1vdXNl
RXZlbnQ6OlJpZ2h0QnV0dG9uIHx8IChldmVudC5idXR0b24oKSA9PSBXZWJNb3VzZUV2ZW50OjpM
ZWZ0QnV0dG9uICYmIGV2ZW50LmNvbnRyb2xLZXkoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5Bbm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkFubm90YXRpb24uaAppbmRleCA4YmQxMTI1Li4xM2NiZTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24uaApAQCAtNzAsNiArNzAsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBXZWJDb3JlOjpF
bGVtZW50KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIFBERkxheWVy
Q29udHJvbGxlciAqcGRmTGF5ZXJDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wZGZMYXll
ckNvbnRyb2xsZXI7IH0KKyAgICBXZWJDb3JlOjpFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVy
KCkgY29uc3QgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyLmdldCgpOyB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlRXZlbnQoV2ViQ29yZTo6RXZlbnQqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQo
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbkFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KaW5kZXggNDM2MTEzOC4uNzRjNGVlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5B
bm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luQW5ub3RhdGlvbi5tbQpAQCAtMTA4LDEzICsxMDgsMjAgQEAgdm9pZCBQREZQbHVn
aW5Bbm5vdGF0aW9uOjp1cGRhdGVHZW9tZXRyeSgpCiAgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgZG9jdW1lbnRTaXplLmhlaWdodCgpIC0g
YW5ub3RhdGlvblJlY3Qub3JpZ2luLnkgLSBhbm5vdGF0aW9uUmVjdC5zaXplLmhlaWdodCAtIHNj
cm9sbFBvc2l0aW9uLnkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiB9CiAKLXZvaWQg
UERGUGx1Z2luQW5ub3RhdGlvbjo6UERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI6Omhh
bmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpCitib29sIFBE
RlBsdWdpbkFubm90YXRpb246OmhhbmRsZUV2ZW50KEV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAo
IW1fYW5ub3RhdGlvbikKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
Y2hhbmdlRXZlbnQpIHsKKyAgICAgICAgbV9wbHVnaW4tPnNldEFjdGl2ZUFubm90YXRpb24oMCk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KIAot
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQpCi0gICAgICAgIG1fYW5ub3RhdGlv
bi0+cGx1Z2luKCktPnNldEFjdGl2ZUFubm90YXRpb24oMCk7Cit2b2lkIFBERlBsdWdpbkFubm90
YXRpb246OlBERlBsdWdpbkFubm90YXRpb25FdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChtX2Fubm90YXRp
b24pCisgICAgICAgIG1fYW5ub3RhdGlvbi0+aGFuZGxlRXZlbnQoZXZlbnQpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhiNDdmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5o
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBERlBsdWdpblBhc3N3b3Jk
RmllbGRfaAorI2RlZmluZSBQREZQbHVnaW5QYXNzd29yZEZpZWxkX2gKKworI2lmIEVOQUJMRShQ
REZLSVRfUExVR0lOKQorCisjaW5jbHVkZSAiUERGUGx1Z2luVGV4dEFubm90YXRpb24uaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBERlBsdWdpblBhc3N3b3JkRmllbGQgOiBwdWJs
aWMgUERGUGx1Z2luVGV4dEFubm90YXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBERlBsdWdpblBhc3N3b3JkRmllbGQ+IGNyZWF0ZShQREZMYXllckNvbnRyb2xsZXIgKiwg
UERGUGx1Z2luKik7CisgICAgdmlydHVhbCB+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCgpOworCisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6Cisg
ICAgUERGUGx1Z2luUGFzc3dvcmRGaWVsZChQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29u
dHJvbGxlciwgUERGUGx1Z2luKiBwbHVnaW4pCisgICAgICAgIDogUERGUGx1Z2luVGV4dEFubm90
YXRpb24oMCwgcGRmTGF5ZXJDb250cm9sbGVyLCBwbHVnaW4pCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCgpIE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFdlYkNvcmU6
OkV2ZW50KikgT1ZFUlJJREU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShQREZLSVRfUExVR0lOKQorCisjZW5kaWYgLy8gUERGUGx1Z2luVGV4dEFubm90
YXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmE5OWIxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KQEAgLTAs
MCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQREZQbHVnaW5QYXNzd29yZEZpZWxkLmgiCisKKyNp
bXBvcnQgIlBERktpdEltcG9ydHMuaCIKKyNpbXBvcnQgIlBERkxheWVyQ29udHJvbGxlckRldGFp
bHMuaCIKKyNpbXBvcnQgIlBERlBsdWdpbi5oIgorI2ltcG9ydCA8UERGS2l0L1BERktpdC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxlbWVudC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKKworUGFzc1JlZlB0cjxQREZQbHVnaW5QYXNzd29yZEZpZWxkPiBQREZQbHVnaW5QYXNzd29y
ZEZpZWxkOjpjcmVhdGUoUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBE
RlBsdWdpbiogcGx1Z2luKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUERGUGx1Z2luUGFz
c3dvcmRGaWVsZChwZGZMYXllckNvbnRyb2xsZXIsIHBsdWdpbikpOworfQorCitQREZQbHVnaW5Q
YXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCgpCit7CisgICAgZWxlbWVudCgp
LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCBldmVudExpc3Rl
bmVyKCksIGZhbHNlKTsKK30KKworUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5QYXNzd29y
ZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+
IGVsZW1lbnQgPSBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1l
bnQoKTsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsICJwYXNzd29yZCIpOwor
ICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsIGV2
ZW50TGlzdGVuZXIoKSwgZmFsc2UpOworICAgIHJldHVybiBlbGVtZW50OworfQorCit2b2lkIFBE
RlBsdWdpblBhc3N3b3JkRmllbGQ6OnVwZGF0ZUdlb21ldHJ5KCkKK3sKK30KKworYm9vbCBQREZQ
bHVnaW5QYXNzd29yZEZpZWxkOjpoYW5kbGVFdmVudChXZWJDb3JlOjpFdmVudCogZXZlbnQpCit7
CisgICAgaWYgKGV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSAmJiBldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5rZXl1cEV2ZW50KSB7CisgICAgICAgIEtleWJvYXJkRXZlbnQqIGtleWJvYXJk
RXZlbnQgPSBzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZlbnQpOworCisgICAgICAgIGlm
IChrZXlib2FyZEV2ZW50LT5rZXlJZGVudGlmaWVyKCkgPT0gIkVudGVyIikgeworICAgICAgICAg
ICAgcGx1Z2luKCktPmF0dGVtcHRUb1VubG9ja1BERih2YWx1ZSgpKTsKKyAgICAgICAgICAgIGV2
ZW50LT5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQREZLSVRfUExVR0lOKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlv
bi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0
QW5ub3RhdGlvbi5oCmluZGV4IGJjNzM1MDguLjFmNGEwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRB
bm5vdGF0aW9uLmgKQEAgLTMwLDYgKzMwLDggQEAKIAogI2luY2x1ZGUgIlBERlBsdWdpbkFubm90
YXRpb24uaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBFbGVtZW50OwogfQpAQCAtNDYsNDEgKzQ4LDE5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0KCkgT1ZFUlJJREU7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgUERG
UGx1Z2luVGV4dEFubm90YXRpb24oUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiwgUERGTGF5ZXJD
b250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiogcGx1Z2luKQogICAgICAg
ICA6IFBERlBsdWdpbkFubm90YXRpb24oYW5ub3RhdGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBw
bHVnaW4pCi0gICAgICAgICwgbV9ldmVudExpc3RlbmVyKFBERlBsdWdpblRleHRBbm5vdGF0aW9u
RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHRoaXMpKQogICAgIHsKICAgICB9CiAKLSAgICBjbGFzcyBQ
REZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgV2ViQ29yZTo6RXZl
bnRMaXN0ZW5lciB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI+IGNyZWF0ZShQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbiogYW5ub3RhdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIoYW5ub3RhdGlvbikp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZl
bnRMaXN0ZW5lciYgbGlzdGVuZXIpIE9WRVJSSURFIHsgcmV0dXJuIHRoaXMgPT0gJmxpc3RlbmVy
OyB9Ci0KLSAgICAgICAgdm9pZCBzZXRUZXh0QW5ub3RhdGlvbihQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbiogYW5ub3RhdGlvbikgeyBtX2Fubm90YXRpb24gPSBhbm5vdGF0aW9uOyB9Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIoUERG
UGx1Z2luVGV4dEFubm90YXRpb24qIGFubm90YXRpb24pCi0gICAgICAgICAgICA6IFdlYkNvcmU6
OkV2ZW50TGlzdGVuZXIoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5
cGUpCi0gICAgICAgICAgICAsIG1fYW5ub3RhdGlvbihhbm5vdGF0aW9uKQotICAgICAgICB7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KikgT1ZFUlJJREU7Ci0KLSAgICAg
ICAgUERGUGx1Z2luVGV4dEFubm90YXRpb24qIG1fYW5ub3RhdGlvbjsKLSAgICB9OwotCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVt
ZW50KCkgT1ZFUlJJREU7CisgICAgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAKLSAgICBQREZBbm5v
dGF0aW9uVGV4dFdpZGdldCAqIHRleHRBbm5vdGF0aW9uKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
UERGQW5ub3RhdGlvblRleHRXaWRnZXQgKj4oYW5ub3RhdGlvbigpKTsgfQorcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoV2ViQ29yZTo6RXZlbnQqKSBPVkVSUklERTsKIAot
ICAgIFJlZlB0cjxQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI+IG1fZXZlbnRM
aXN0ZW5lcjsKKyAgICBQREZBbm5vdGF0aW9uVGV4dFdpZGdldCAqdGV4dEFubm90YXRpb24oKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQREZBbm5vdGF0aW9uVGV4dFdpZGdldCAqPihhbm5v
dGF0aW9uKCkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRl
eHRBbm5vdGF0aW9uLm1tCmluZGV4IDZmY2FlYTguLmQzMTJlMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbi5tbQpAQCAtNDMsNyArNDMsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
VGV4dEFyZWFFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGFnZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dzS2V5Ym9hcmRD
b2Rlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzcsOCArNzYsNyBAQCBQ
YXNzUmVmUHRyPFBERlBsdWdpblRleHRBbm5vdGF0aW9uPiBQREZQbHVnaW5UZXh0QW5ub3RhdGlv
bjo6Y3JlYXRlKFBERkFubm90YXRpbwogCiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBs
dWdpblRleHRBbm5vdGF0aW9uKCkKIHsKLSAgICBlbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgbV9ldmVudExpc3RlbmVyLmdldCgpLCBmYWxz
ZSk7Ci0gICAgbV9ldmVudExpc3RlbmVyLT5zZXRUZXh0QW5ub3RhdGlvbigwKTsKKyAgICBlbGVt
ZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgZXZl
bnRMaXN0ZW5lcigpLCBmYWxzZSk7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2lu
VGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKQEAgLTk0LDEwICs5Miwx
MyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVB
bm5vdGF0aW9uRWxlbWVudCgpCiAgICAgZWxzZQogICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQt
PmNyZWF0ZUVsZW1lbnQoaW5wdXRUYWcsIGZhbHNlKTsKIAotICAgIGVsZW1lbnQtPmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgbV9ldmVudExpc3RlbmVyLCBmYWxz
ZSk7CisgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93bkV2
ZW50LCBldmVudExpc3RlbmVyKCksIGZhbHNlKTsKIAogICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxl
ZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7CiAK
KyAgICBpZiAoIXRleHRBbm5vdGF0aW9uKQorICAgICAgICByZXR1cm4gZWxlbWVudDsKKwogICAg
IC8vIEZJWE1FOiBNYXRjaCBmb250IHdlaWdodCBhbmQgc3R5bGUgYXMgd2VsbD8KICAgICBzdHls
ZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9y
RnJvbU5TQ29sb3IodGV4dEFubm90YXRpb24uZm9udENvbG9yKS5zZXJpYWxpemVkKCkpOwogICAg
IHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFt
aWx5LCB0ZXh0QW5ub3RhdGlvbi5mb250LmZhbWlseU5hbWUpOwpAQCAtMTIxLDM2ICsxMjIsMzgg
QEAgdm9pZCBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6dXBkYXRlR2VvbWV0cnkoKQogCiB2b2lk
IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjb21taXQoKQogewotICAgIFBERkFubm90YXRpb25U
ZXh0V2lkZ2V0ICp0ZXh0QW5ub3RhdGlvbiA9IHRoaXMtPnRleHRBbm5vdGF0aW9uKCk7Ci0KLSAg
ICBpZiAodGV4dEFubm90YXRpb24uaXNNdWx0aWxpbmUpCi0gICAgICAgIHRleHRBbm5vdGF0aW9u
LnN0cmluZ1ZhbHVlID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVsZW1lbnQo
KSktPnZhbHVlKCk7Ci0gICAgZWxzZQotICAgICAgICB0ZXh0QW5ub3RhdGlvbi5zdHJpbmdWYWx1
ZSA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KCkpLT52YWx1ZSgpOwot
CisgICAgdGV4dEFubm90YXRpb24oKS5zdHJpbmdWYWx1ZSA9IHZhbHVlKCk7CiAgICAgUERGUGx1
Z2luQW5ub3RhdGlvbjo6Y29tbWl0KCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luVGV4dEFubm90YXRp
b246OlBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKK1N0cmluZyBQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbjo6dmFsdWUoKSBjb25zdAogewotICAgIGlmICghbV9hbm5vdGF0aW9uKQotICAg
ICAgICByZXR1cm47CisgICAgcmV0dXJuIHRvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoZWxl
bWVudCgpKS0+dmFsdWUoKTsKK30KKworYm9vbCBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6aGFu
ZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChQREZQbHVnaW5Bbm5vdGF0aW9uOjpo
YW5kbGVFdmVudChldmVudCkpCisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGV2ZW50
LT5pc0tleWJvYXJkRXZlbnQoKSAmJiBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlk
b3duRXZlbnQpIHsKICAgICAgICAgS2V5Ym9hcmRFdmVudCoga2V5Ym9hcmRFdmVudCA9IHN0YXRp
Y19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVudCk7CiAKICAgICAgICAgaWYgKGtleWJvYXJkRXZl
bnQtPmtleUlkZW50aWZpZXIoKSA9PSAiVSswMDA5IikgewogICAgICAgICAgICAgaWYgKGtleWJv
YXJkRXZlbnQtPmN0cmxLZXkoKSB8fCBrZXlib2FyZEV2ZW50LT5tZXRhS2V5KCkgfHwga2V5Ym9h
cmRFdmVudC0+YWx0R3JhcGhLZXkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBpZiAoa2V5Ym9hcmRFdmVudC0+
c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBtX2Fubm90YXRpb24tPnBsdWdpbigpLT5mb2N1
c1ByZXZpb3VzQW5ub3RhdGlvbigpOworICAgICAgICAgICAgICAgIHBsdWdpbigpLT5mb2N1c1By
ZXZpb3VzQW5ub3RhdGlvbigpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1f
YW5ub3RhdGlvbi0+cGx1Z2luKCktPmZvY3VzTmV4dEFubm90YXRpb24oKTsKLQorICAgICAgICAg
ICAgICAgIHBsdWdpbigpLT5mb2N1c05leHRBbm5vdGF0aW9uKCk7CisgICAgICAgICAgICAKICAg
ICAgICAgICAgIGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="220775"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>