<?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>70325</bug_id>
          
          <creation_ts>2011-10-18 06:35:47 -0700</creation_ts>
          <short_desc>Web Inspector: CSS background-image applied inline shows a warning, but still works.</short_desc>
          <delta_ts>2011-10-28 02:43:54 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>486004</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-18 06:35:47 -0700</bug_when>
    <thetext>1. declare a CSS background-image inline (within the style
attribute of a &lt;tag&gt;)

What do you see instead?

Chrome&apos;s Developer Tools shows a warning icon
and strikethrough of the rule, yet the image still renders fine. No
warning is shown if the background-image is declared as a CSS rule.

Changing the inline rule from &apos;background-image&apos; to just
&apos;background&apos; (but leaving only the url value) causes the warning to go
away. This seems very strange and I am curious if it is a bug.

Please see this example where there are 3 background-images (1 CSS
rule, 2 inline). The 2 inline have warnings. Change one of them to be
just &apos;background&apos; and the warning will go away.

http://jsfiddle.net/sandeep/RDmRz/2/show/


Upstreaming http://code.google.com/p/chromium/issues/detail?id=100646</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486674</commentid>
    <comment_count>1</comment_count>
      <attachid>111591</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-19 04:34:12 -0700</bug_when>
    <thetext>Created attachment 111591
[PATCH] Suggested fix

The whitespace fixes are included into this change not a separate one, as suggested by Zoltan on #webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486675</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-19 04:36:23 -0700</bug_when>
    <thetext>Attachment 111591 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/insp...&quot; exit_code: 1

Source/WebCore/css/CSSParser.cpp:5689:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/css/CSSParser.cpp:5716:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486676</commentid>
    <comment_count>3</comment_count>
      <attachid>111592</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-19 04:36:44 -0700</bug_when>
    <thetext>Created attachment 111592
[PATCH] Added a couple of required drive-by style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486686</commentid>
    <comment_count>4</comment_count>
      <attachid>111592</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-19 05:11:53 -0700</bug_when>
    <thetext>Comment on attachment 111592
[PATCH] Added a couple of required drive-by style fixes

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

&gt; Source/WebCore/css/CSSParser.cpp:557
&gt; +    if (!m_styleSheet)

Please do not mix semantics changes with the lint fixes.

&gt; Source/WebCore/css/CSSParser.h:259
&gt; +    void setStyleSheet(CSSStyleSheet*);

I would add CSSStyleSheet* contextStyleSheet parameter into the parseDeclaration and make existing call sites (~3 of them) explicitly pass either parent stylesheet or 0 there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486735</commentid>
    <comment_count>5</comment_count>
      <attachid>111606</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-19 06:38:22 -0700</bug_when>
    <thetext>Created attachment 111606
[PATCH] Removed whitespace fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486743</commentid>
    <comment_count>6</comment_count>
      <attachid>111608</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-19 06:56:30 -0700</bug_when>
    <thetext>Created attachment 111608
[PATCH] Retry attachment for bots (they should have caught up with the previous commit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486761</commentid>
    <comment_count>7</comment_count>
      <attachid>111612</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-19 07:13:49 -0700</bug_when>
    <thetext>Created attachment 111612
[PATCH] Retry, take 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486764</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-19 07:15:48 -0700</bug_when>
    <thetext>Attachment 111612 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/insp...&quot; exit_code: 1

Source/WebCore/css/CSSParser.cpp:551:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/css/CSSParser.h:73:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486765</commentid>
    <comment_count>9</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-19 07:17:16 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Attachment 111612 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/insp...&quot; exit_code: 1
&gt; 
&gt; Source/WebCore/css/CSSParser.cpp:551:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/css/CSSParser.h:73:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
&gt; Total errors found: 2 in 7 files

These are false positives (AFAIK, the lint fix is in the works).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486780</commentid>
    <comment_count>10</comment_count>
      <attachid>111612</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-10-19 07:34:23 -0700</bug_when>
    <thetext>Comment on attachment 111612
[PATCH] Retry, take 2

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

Inspector change looks good.

&gt; LayoutTests/ChangeLog:5
&gt; +

Please describe the change here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486785</commentid>
    <comment_count>11</comment_count>
      <attachid>111617</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-19 07:43:34 -0700</bug_when>
    <thetext>Created attachment 111617
[PATCH] ChangeLog entry made more verbose</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486787</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-19 07:45:51 -0700</bug_when>
    <thetext>Attachment 111617 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/insp...&quot; exit_code: 1

Source/WebCore/css/CSSParser.cpp:551:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/css/CSSParser.h:73:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492323</commentid>
    <comment_count>13</comment_count>
      <attachid>111617</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-28 02:11:29 -0700</bug_when>
    <thetext>Comment on attachment 111617
[PATCH] ChangeLog entry made more verbose

r=me but please fix the style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492342</commentid>
    <comment_count>14</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-28 02:30:17 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 111617 [details])
&gt; r=me but please fix the style.

The style issues are due to a stylebot bug, filed as bug 71101.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492350</commentid>
    <comment_count>15</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-10-28 02:43:54 -0700</bug_when>
    <thetext>Committed r98714: &lt;http://trac.webkit.org/changeset/98714&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111591</attachid>
            <date>2011-10-19 04:34:12 -0700</date>
            <delta_ts>2011-10-19 04:36:44 -0700</delta_ts>
            <desc>[PATCH] Suggested fix</desc>
            <filename>bgimage.patch</filename>
            <type>text/plain</type>
            <size>28509</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDdjYzhjYzAwMGM4OTM2NDMzZTdjNzU5MWExYzUxNmUxOWIyMjBjODEKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgT2N0IDE4
IDE5OjE2OjQzIDIwMTEgKzA0MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2RkN2QwZi4uMzViYjA0NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEwLTE5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NTIGJhY2tncm91
bmQtaW1hZ2UgYXBwbGllZCBpbmxpbmUgc2hvd3MgYSB3YXJuaW5nLCBidXQgc3RpbGwgd29ya3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDMyNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sOgorCiAyMDExLTEwLTE5ICBZdXpvIEZ1amlz
aGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFRlc3QgZXhwZWN0
YXRpb24gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dAppbmRleCBlMGQ4YmI1Li45NDY4ZDAzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJ
LWV4cGVjdGVkLnR4dApAQCAtODcsNyArODcsOCBAQCBodG1sOiBbXQogc3R5bGUKIHJhdyBzdHls
ZQogWydmb250LXdlaWdodCc6J25vcm1hbCddIEBbMC0yMF0gYWN0aXZlCi1bJ3dpZHRoJzonODUl
J10gQFsyMS0zMV0gYWN0aXZlCitbJ3dpZHRoJzonODUlJ10gQFsyMS0zMl0gYWN0aXZlCitbJ2Jh
Y2tncm91bmQtaW1hZ2UnOid1cmwoYmFyLnBuZyknXSBAWzMzLTYzXSBhY3RpdmUKIAogPT09IEF0
dHJpYnV0ZSBzdHlsZXMgZm9yIHRhYmxlID09PQogQXR0cmlidXRlOiB3aWR0aApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sCmluZGV4IDZkZjBl
ZDAuLmMwMDA5YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLW5ldy1BUEkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxl
cy1uZXctQVBJLmh0bWwKQEAgLTM0OCw3ICszNDgsNyBAQCBib2R5Lm1haW5wYWdlIHsKIDwvc3R5
bGU+CiA8L2hlYWQ+CiAKLTxib2R5IGlkPSJtYWluQm9keSIgY2xhc3M9Im1haW4xIG1haW4yIG1h
aW5wYWdlIiBvbmxvYWQ9InJ1blRlc3QoKSIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7IHdp
ZHRoOiA4NSUiPgorPGJvZHkgaWQ9Im1haW5Cb2R5IiBjbGFzcz0ibWFpbjEgbWFpbjIgbWFpbnBh
Z2UiIG9ubG9hZD0icnVuVGVzdCgpIiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsgd2lkdGg6
IDg1JTsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGJhci5wbmcpIj4KIDxwPgogVGVzdHMgdGhhdCBJ
bnNwZWN0b3JDU1NBZ2VudCBBUEkgbWV0aG9kcyB3b3JrIGFzIGV4cGVjdGVkLgogPC9wPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGQ3NGIxYjUuLmIwYzQ4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAor
MjAxMS0xMC0xOSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IENTUyBiYWNrZ3JvdW5kLWltYWdlIGFwcGxpZWQgaW5saW5l
IHNob3dzIGEgd2FybmluZywgYnV0IHN0aWxsIHdvcmtzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxTaG9y
dGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWlu
Z0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVDaXJjbGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZUVsbGlwc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZVBvbHlnb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZSk6CisgICAgICAgIChXZWJD
b3JlOjpCb3JkZXJJbWFnZVBhcnNlQ29udGV4dDo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZVJlcGVhdCk6CisgICAgICAgIChX
ZWJDb3JlOjpCb3JkZXJJbWFnZVF1YWRQYXJzZUNvbnRleHQ6OmNvbW1pdE51bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlRGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VMaW5lYXJHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZUdyYWRpZW50Q29sb3JTdG9wcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OmlzVmFsaWRGaWx0ZXJBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VMaW5lQm94
Q29udGFpbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVs
ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hl
ZXRGb3JJbmxpbmVTdHlsZTo6Z2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMpOgorCiAyMDExLTEwLTE5
ICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdW1dLMl0gQWRkZWQgbWlzc2luZyBmaWxlcyB0byBidWlsZCBXZWJLaXQyIEVGTApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzMDViMGNmLi43ZmUxMTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcApAQCAtMzY2LDcgKzM2Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBs
ZUxlbmd0aFByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQsIGJvb2wmIGFjY2VwdHNOZWdhdGl2CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKLSAgICBjYXNlIENTU1By
b3BlcnR5UGFkZGluZ1JpZ2h0OiAKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0Ogog
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRMb2dpY2FsV2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6
CkBAIC0zODEsOCArMzgxLDggQEAgc3RhdGljIGlubGluZSBib29sIGlzU2ltcGxlTGVuZ3RoUHJv
cGVydHlJRChpbnQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXYKICAgICBjYXNlIENT
U1Byb3BlcnR5Qm90dG9tOgogICAgIGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW5Cb3R0b206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ6IAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDogCisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpbkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OgogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW5Ub3A6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0SW5kZW50OgpAQCAtNTU0LDcgKzU1NCw4IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlv
biwgY29uc3QKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJlZml4TGVuZ3RoID0gMTU7CiAK
ICAgICBBU1NFUlQoIWRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCkgfHwgZGVjbGFyYXRpb24tPnN0
eWxlc2hlZXQoKS0+aXNDU1NTdHlsZVNoZWV0KCkpOwotICAgIHNldFN0eWxlU2hlZXQoc3RhdGlj
X2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KGRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCkpKTsKKyAgICBp
ZiAoIW1fc3R5bGVTaGVldCkKKyAgICAgICAgc2V0U3R5bGVTaGVldChzdGF0aWNfY2FzdDxDU1NT
dHlsZVNoZWV0Kj4oZGVjbGFyYXRpb24tPnN0eWxlc2hlZXQoKSkpOwogICAgIGlmIChzdHlsZVNv
dXJjZURhdGEpIHsKICAgICAgICAgbV9jdXJyZW50UnVsZURhdGEgPSBDU1NSdWxlU291cmNlRGF0
YTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhLT5zdHlsZVNvdXJjZURhdGEg
PSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOwpAQCAtNjQyLDcgKzY0Myw3IEBAIHZvaWQg
Q1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMoKQogICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0Jl
Zm9yZU1hcmdpbkJveCA9IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTOwogICAgIG1faGFz
Rm9udEZhY2VPbmx5VmFsdWVzID0gZmFsc2U7CiB9Ci0gICAgCisKIHZvaWQgQ1NTUGFyc2VyOjpz
ZXRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiB7CiAgICAgbV9zdHlsZVNo
ZWV0ID0gc3R5bGVTaGVldDsKQEAgLTEyNjAsMTEgKzEyNjEsMTEgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlT
cGVhazogICAgICAgICAgIC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBs
aXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24gfCBpbmhlcml0Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NT
VmFsdWVTcGVsbE91dCB8fCBpZCA9PSBDU1NWYWx1ZURpZ2l0cyAKKyAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNw
ZWxsT3V0IHx8IGlkID09IENTU1ZhbHVlRGlnaXRzCiAgICAgICAgICAgICB8fCBpZCA9PSBDU1NW
YWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vUHVuY3R1YXRpb24pCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgCisKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDogICAgICAgICAgLy8gPGxl
bmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
KCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xNjAyLDcgKzE2MDMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENT
U1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVT
dHJldGNoOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEZs
b3c6Ci0gICAgICAgIC8vIEZJWE1FOiAtd2Via2l0LWZsZXgtZmxvdyB0YWtlcyBhIHNlY29uZCAi
d3JhcCIgdmFsdWUuICAgIAorICAgICAgICAvLyBGSVhNRTogLXdlYmtpdC1mbGV4LWZsb3cgdGFr
ZXMgYSBzZWNvbmQgIndyYXAiIHZhbHVlLgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09
IENTU1ZhbHVlUm93IHx8IGlkID09IENTU1ZhbHVlUm93UmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1
ZUNvbHVtbiB8fCBpZCA9PSBDU1NWYWx1ZUNvbHVtblJldmVyc2U7CiAgICAgICAgIGJyZWFrOwog
I2VuZGlmCkBAIC0yMjQ2LDcgKzIyNDcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsU2hv
cnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVBybwogICAg
ICAgICAgICAgICAgICAgICBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kT3JpZ2luIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2lu
KSAmJiAhcGFyc2VkUHJvcGVydHlbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm
IGJhY2tncm91bmQtb3JpZ2luIHdhc24ndCBwcmVzZW50LCB0aGVuIHJlc2V0IGJhY2tncm91bmQt
Y2xpcCBhbHNvLgogICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKGNsaXBWYWx1
ZSwgQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVJbXBsaWNpdCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlbaV0gPSBmYWxzZTsKICAg
ICAgICAgICAgIH0KQEAgLTMzMzIsNyArMzMzMyw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbigpCiAKICAgICAgICAgcmV0dXJu
IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKG51bVN0ZXBzLCBzdGVwQXRTdGFy
dCk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5j
dGlvbi0+bmFtZSwgImN1YmljLWJlemllcigiKSkgewogICAgICAgICAvLyBGb3IgY3ViaWMgYmV6
aWVyLCA0IHZhbHVlcyBtdXN0IGJlIHNwZWNpZmllZC4KICAgICAgICAgaWYgKCFhcmdzIHx8IGFy
Z3MtPnNpemUoKSAhPSA3KQpAQCAtMzM1Miw3ICszMzUzLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkKIAogICAgICAgICBy
ZXR1cm4gQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoeDEsIHkxLCB4
MiwgeTIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNzA1LDIwICsz
NzA2LDIwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNoYXBlKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hh
cGVSZWN0KENTU1BhcnNlclZhbHVlTGlzdCogYXJncykKIHsKICAgICBBU1NFUlQoYXJncyk7Ci0g
ICAgCisKICAgICAvLyByZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIFtbcnhdLCByeV0pCiAgICAg
aWYgKGFyZ3MtPnNpemUoKSAhPSA3ICYmIGFyZ3MtPnNpemUoKSAhPSA5ICYmIGFyZ3MtPnNpemUo
KSAhPSAxMSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICBSZWZQdHI8Q1NTV3JhcFNo
YXBlUmVjdD4gc2hhcGUgPSBDU1NXcmFwU2hhcGVSZWN0OjpjcmVhdGUoKTsKLSAgICAKKwogICAg
IHVuc2lnbmVkIGFyZ3VtZW50TnVtYmVyID0gMDsKICAgICBDU1NQYXJzZXJWYWx1ZSogYXJndW1l
bnQgPSBhcmdzLT5jdXJyZW50KCk7CiAgICAgd2hpbGUgKGFyZ3VtZW50KSB7CiAgICAgICAgIGlm
ICghdmFsaWRVbml0KGFyZ3VtZW50LCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVu
Z3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVWYWx1ZShhcmd1bWVudC0+ZlZhbHVl
LCAKKworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAg
IChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAg
IEFTU0VSVChhcmd1bWVudE51bWJlciA8IDYpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVt
YmVyKSB7CkBAIC0zNzQ1LDM0ICszNzQ2LDM0IEBAIFBhc3NSZWZQdHI8Q1NTV3JhcFNoYXBlPiBD
U1NQYXJzZXI6OnBhcnNlV3JhcFNoYXBlUmVjdChDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MpCiAg
ICAgICAgIGlmIChhcmd1bWVudCkgewogICAgICAgICAgICAgaWYgKGFyZ3VtZW50LT51bml0ICE9
IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciB8fCBhcmd1bWVudC0+aVZhbHVlICE9ICcsJykKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBhcmd1
bWVudCA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgfQogICAgICAgICBhcmd1bWVudE51bWJlcisr
OwogICAgIH0KLSAgICAKKwogICAgIGlmIChhcmd1bWVudE51bWJlciA8IDQpCi0gICAgICAgIHJl
dHVybiAwOyAgICAKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHNoYXBlOwogfQogCiBQ
YXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZUNpcmNsZShD
U1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MpCiB7CiAgICAgQVNTRVJUKGFyZ3MpOwotICAgIAorCiAg
ICAgLy8gY2lyY2xlKHgsIHksIHIpCiAgICAgaWYgKGFyZ3MtPnNpemUoKSAhPSA1KQogICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgCisKICAgICBSZWZQdHI8Q1NTV3JhcFNoYXBlQ2lyY2xlPiBz
aGFwZSA9IENTU1dyYXBTaGFwZUNpcmNsZTo6Y3JlYXRlKCk7Ci0gICAgCisKICAgICB1bnNpZ25l
ZCBhcmd1bWVudE51bWJlciA9IDA7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIGFyZ3VtZW50ID0gYXJn
cy0+Y3VycmVudCgpOwogICAgIHdoaWxlIChhcmd1bWVudCkgewogICAgICAgICBpZiAoIXZhbGlk
VW5pdChhcmd1bWVudCwgRkxlbmd0aCwgbV9zdHJpY3QpKQogICAgICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsZW5ndGggPSBwcmltaXRpdmVW
YWx1ZUNhY2hlKCktPmNyZWF0ZVZhbHVlKGFyZ3VtZW50LT5mVmFsdWUsIAorICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUoKS0+Y3Jl
YXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAgIChDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAgIEFTU0VSVChhcmd1bWVudE51
bWJlciA8IDMpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVtYmVyKSB7CkBAIC0zNzg2LDM3
ICszNzg3LDM3IEBAIFBhc3NSZWZQdHI8Q1NTV3JhcFNoYXBlPiBDU1NQYXJzZXI6OnBhcnNlV3Jh
cFNoYXBlQ2lyY2xlKENTU1BhcnNlclZhbHVlTGlzdCogYXJnCiAgICAgICAgICAgICBzaGFwZS0+
c2V0UmFkaXVzKGxlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBhcmd1bWVudCA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgaWYgKGFyZ3Vt
ZW50KSB7CiAgICAgICAgICAgICBpZiAoYXJndW1lbnQtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6
Ok9wZXJhdG9yIHx8IGFyZ3VtZW50LT5pVmFsdWUgIT0gJywnKQotICAgICAgICAgICAgICAgIHJl
dHVybiAwOyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
ICAgYXJndW1lbnQgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIH0KICAgICAgICAgYXJndW1lbnRO
dW1iZXIrKzsKICAgICB9Ci0gICAgCisKICAgICBpZiAoYXJndW1lbnROdW1iZXIgPCAzKQotICAg
ICAgICByZXR1cm4gMDsgICAgCisgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzaGFwZTsK
IH0KIAogUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVF
bGxpcHNlKENTU1BhcnNlclZhbHVlTGlzdCogYXJncykKIHsKICAgICBBU1NFUlQoYXJncyk7Ci0g
ICAgCisKICAgICAvLyBlbGxpcHNlKHgsIHksIHJ4LCByeSkKICAgICBpZiAoYXJncy0+c2l6ZSgp
ICE9IDcpCiAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKKwogICAgIFJlZlB0cjxDU1NXcmFw
U2hhcGVFbGxpcHNlPiBzaGFwZSA9IENTU1dyYXBTaGFwZUVsbGlwc2U6OmNyZWF0ZSgpOwogICAg
IHVuc2lnbmVkIGFyZ3VtZW50TnVtYmVyID0gMDsKICAgICBDU1NQYXJzZXJWYWx1ZSogYXJndW1l
bnQgPSBhcmdzLT5jdXJyZW50KCk7CiAgICAgd2hpbGUgKGFyZ3VtZW50KSB7CiAgICAgICAgIGlm
ICghdmFsaWRVbml0KGFyZ3VtZW50LCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVu
Z3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVWYWx1ZShhcmd1bWVudC0+ZlZhbHVl
LCAKKworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAg
IChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAg
IEFTU0VSVChhcmd1bWVudE51bWJlciA8IDQpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVt
YmVyKSB7CkBAIC0zODMzLDcgKzM4MzQsNyBAQCBQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NT
UGFyc2VyOjpwYXJzZVdyYXBTaGFwZUVsbGlwc2UoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcgogICAg
ICAgICAgICAgc2hhcGUtPnNldFJhZGl1c1kobGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGFyZ3VtZW50ID0gYXJncy0+bmV4dCgpOwog
ICAgICAgICBpZiAoYXJndW1lbnQpIHsKICAgICAgICAgICAgIGlmIChhcmd1bWVudC0+dW5pdCAh
PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgfHwgYXJndW1lbnQtPmlWYWx1ZSAhPSAnLCcpCkBA
IC0zODQyLDcgKzM4NDMsNyBAQCBQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NTUGFyc2VyOjpw
YXJzZVdyYXBTaGFwZUVsbGlwc2UoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcgogICAgICAgICB9CiAg
ICAgICAgIGFyZ3VtZW50TnVtYmVyKys7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGFyZ3VtZW50
TnVtYmVyIDwgNCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHNoYXBlOwpAQCAtMzg1
NSw3ICszODU2LDcgQEAgUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VX
cmFwU2hhcGVQb2x5Z29uKENTU1BhcnNlclZhbHVlTGlzdCogYXIKICAgICB1bnNpZ25lZCBzaXpl
ID0gYXJncy0+c2l6ZSgpOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
CisKICAgICBSZWZQdHI8Q1NTV3JhcFNoYXBlUG9seWdvbj4gc2hhcGUgPSBDU1NXcmFwU2hhcGVQ
b2x5Z29uOjpjcmVhdGUoKTsKIAogICAgIENTU1BhcnNlclZhbHVlKiBhcmd1bWVudCA9IGFyZ3Mt
PmN1cnJlbnQoKTsKQEAgLTM4NjksMzQgKzM4NzAsMzQgQEAgUGFzc1JlZlB0cjxDU1NXcmFwU2hh
cGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVQb2x5Z29uKENTU1BhcnNlclZhbHVlTGlzdCog
YXIKICAgICAgICAgYXJndW1lbnQgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIHNpemUgLT0gMjsK
ICAgICB9Ci0gICAgCisKICAgICAvLyA8bGVuZ3RoPiwgPGxlbmd0aD4gLi4uIDxsZW5ndGg+LCA8
bGVuZ3RoPiAtPiBlYWNoIHBhaXIgaGFzIDMgZWxlbWVudHMKICAgICBpZiAoIXNpemUgfHwgKHNp
emUgJSAzKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICBDU1NQYXJzZXJWYWx1ZSog
YXJndW1lbnRYID0gYXJndW1lbnQ7CiAgICAgd2hpbGUgKGFyZ3VtZW50WCkgewogICAgICAgICBp
ZiAoIXZhbGlkVW5pdChhcmd1bWVudFgsIEZMZW5ndGgsIG1fc3RyaWN0KSkKICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICAKKwogICAgICAgICBDU1NQYXJzZXJWYWx1ZSogY29tbWEgPSBh
cmdzLT5uZXh0KCk7CiAgICAgICAgIGlmICghY29tbWEgfHwgY29tbWEtPnVuaXQgIT0gQ1NTUGFy
c2VyVmFsdWU6Ok9wZXJhdG9yIHx8IGNvbW1hLT5pVmFsdWUgIT0gJywnKQogICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIAorCiAgICAgICAgIENTU1BhcnNlclZhbHVlKiBhcmd1bWVudFkg
PSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIGlmICghYXJndW1lbnRZIHx8ICF2YWxpZFVuaXQoYXJn
dW1lbnRZLCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geExlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRYLT5mVmFsdWUsIAorCisgICAgICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geExlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUo
KS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRYLT5mVmFsdWUsCiAgICAgICAgICAgICAoQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlcykgYXJndW1lbnRYLT51bml0KTsKLSAgICAgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiB5TGVuZ3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVW
YWx1ZShhcmd1bWVudFktPmZWYWx1ZSwgCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4geUxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRZ
LT5mVmFsdWUsCiAgICAgICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgYXJn
dW1lbnRZLT51bml0KTsKLSAgICAgICAgCisKICAgICAgICAgc2hhcGUtPmFwcGVuZFBvaW50KHhM
ZW5ndGgucmVsZWFzZSgpLCB5TGVuZ3RoLnJlbGVhc2UoKSk7Ci0gICAgICAgIAorCiAgICAgICAg
IGFyZ3VtZW50WCA9IGFyZ3MtPm5leHQoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gc2hh
cGU7CiB9CiAKQEAgLTM5MDcsOSArMzkwOCw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVdyYXBT
aGFwZShib29sIGltcG9ydGFudCkKIAogICAgIGlmICghYXJncykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAorCiAgICAgUmVmUHRyPENTU1dyYXBTaGFwZT4gc2hhcGU7Ci0gICAgCisKICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAicmVjdCgiKSkK
ICAgICAgICAgc2hhcGUgPSBwYXJzZVdyYXBTaGFwZVJlY3QoYXJncyk7CiAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAiY2lyY2xlKCIpKQpAQCAt
NTEzOSw3ICs1MTQwLDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0IHsKICAgICAs
IG1fYWxsb3dSZXBlYXQodHJ1ZSkKICAgICAsIG1fYWxsb3dTbGFzaChmYWxzZSkKICAgICAsIG1f
cmVxdWlyZVdpZHRoKGZhbHNlKQotICAgICwgbV9yZXF1aXJlT3V0c2V0KGZhbHNlKSAgICAKKyAg
ICAsIG1fcmVxdWlyZU91dHNldChmYWxzZSkKICAgICB7fQogCiAgICAgYm9vbCBjYW5BZHZhbmNl
KCkgY29uc3QgeyByZXR1cm4gbV9jYW5BZHZhbmNlOyB9CkBAIC01MTUzLDcgKzUxNTQsNyBAQCBz
dHJ1Y3QgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogCiAgICAgYm9vbCByZXF1aXJlV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVXaWR0aDsgfQogICAgIGJvb2wgcmVxdWlyZU91dHNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZU91dHNldDsgfQotICAgIAorCiAgICAgdm9pZCBj
b21taXRJbWFnZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZSkKICAgICB7CiAgICAgICAgIG1f
aW1hZ2UgPSBpbWFnZTsKQEAgLTUyMTcsNyArNTIxOCw3IEBAIHN0cnVjdCBCb3JkZXJJbWFnZVBh
cnNlQ29udGV4dCB7CiAgICAgICAgIC8vIE1ha2Ugb3VyIG5ldyBib3JkZXIgaW1hZ2UgdmFsdWUg
bm93LgogICAgICAgICByZXR1cm4gQ1NTQm9yZGVySW1hZ2VWYWx1ZTo6Y3JlYXRlKG1faW1hZ2Us
IG1faW1hZ2VTbGljZSwgbV9ib3JkZXJTbGljZSwgbV9vdXRzZXQsIG1fcmVwZWF0KTsKICAgICB9
Ci0gICAgCisKICAgICBDU1NQcmltaXRpdmVWYWx1ZUNhY2hlKiBtX3ByaW1pdGl2ZVZhbHVlQ2Fj
aGU7CiAKICAgICBib29sIG1fY2FuQWR2YW5jZTsKQEAgLTUyMjcsNyArNTIyOCw3IEBAIHN0cnVj
dCBCb3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAgYm9vbCBtX2FsbG93SW1hZ2VTbGljZTsK
ICAgICBib29sIG1fYWxsb3dSZXBlYXQ7CiAgICAgYm9vbCBtX2FsbG93U2xhc2g7Ci0gICAgCisK
ICAgICBib29sIG1fcmVxdWlyZVdpZHRoOwogICAgIGJvb2wgbV9yZXF1aXJlT3V0c2V0OwogCkBA
IC01MjQ4LDcgKzUyNDksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZShpbnQg
cHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCiAKICAgICAgICAgaWYgKCFjb250ZXh0
LmNhbkFkdmFuY2UoKSAmJiBjb250ZXh0LmFsbG93U2xhc2goKSAmJiB2YWwtPnVuaXQgPT0gQ1NT
UGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbC0+aVZhbHVlID09ICcvJykKICAgICAgICAgICAg
IGNvbnRleHQuY29tbWl0U2xhc2goKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFjb250ZXh0
LmNhbkFkdmFuY2UoKSAmJiBjb250ZXh0LmFsbG93SW1hZ2UoKSkgewogICAgICAgICAgICAgaWYg
KHZhbC0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSAmJiBtX3N0eWxlU2hlZXQp
IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIGNvbXBsZXRlVVJMIGNhbGwgc2hvdWxk
IGJlIGRvbmUgd2hlbiB1c2luZyB0aGUgQ1NTSW1hZ2VWYWx1ZSwKQEAgLTUyNjMsMzQgKzUyNjQs
MzQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVySW1hZ2UoaW50IHByb3BJZCwgUmVmUHRy
PENTU1ZhbHVlPiYgcmVzdWx0KQogICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwtPmlkID09IENT
U1ZhbHVlTm9uZSkKICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdEltYWdlKENTU0ltYWdl
VmFsdWU6OmNyZWF0ZSgpKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoIWNv
bnRleHQuY2FuQWR2YW5jZSgpICYmIGNvbnRleHQuYWxsb3dJbWFnZVNsaWNlKCkpIHsKICAgICAg
ICAgICAgIFJlZlB0cjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+IGltYWdlU2xpY2U7CiAgICAg
ICAgICAgICBpZiAocGFyc2VCb3JkZXJJbWFnZVNsaWNlKHByb3BJZCwgaW1hZ2VTbGljZSkpCiAg
ICAgICAgICAgICAgICAgY29udGV4dC5jb21taXRJbWFnZVNsaWNlKGltYWdlU2xpY2UucmVsZWFz
ZSgpKTsKLSAgICAgICAgfSAKLSAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBpZiAoIWNv
bnRleHQuY2FuQWR2YW5jZSgpICYmIGNvbnRleHQuYWxsb3dSZXBlYXQoKSkgewogICAgICAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQ7CiAgICAgICAgICAgICBpZiAocGFyc2VCb3JkZXJJ
bWFnZVJlcGVhdChyZXBlYXQpKQogICAgICAgICAgICAgICAgIGNvbnRleHQuY29tbWl0UmVwZWF0
KHJlcGVhdCk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFjb250ZXh0LmNh
bkFkdmFuY2UoKSAmJiBjb250ZXh0LnJlcXVpcmVXaWR0aCgpKSB7CiAgICAgICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvcmRlclNsaWNlOwogICAgICAgICAgICAgaWYgKHBhcnNl
Qm9yZGVySW1hZ2VXaWR0aChib3JkZXJTbGljZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC5j
b21taXRCb3JkZXJXaWR0aChib3JkZXJTbGljZS5yZWxlYXNlKCkpOwotICAgICAgICB9IAotICAg
ICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIGlmICghY29udGV4dC5jYW5BZHZhbmNlKCkgJiYg
Y29udGV4dC5yZXF1aXJlT3V0c2V0KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gYm9yZGVyT3V0c2V0OwogICAgICAgICAgICAgaWYgKHBhcnNlQm9yZGVySW1hZ2VP
dXRzZXQoYm9yZGVyT3V0c2V0KSkKICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdEJvcmRl
ck91dHNldChib3JkZXJPdXRzZXQucmVsZWFzZSgpKTsKLSAgICAgICAgfSAKLSAgICAgICAgCisg
ICAgICAgIH0KKwogICAgICAgICBpZiAoIWNvbnRleHQuY2FuQWR2YW5jZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAg
ICAgfQogCkBAIC01MzE3LDcgKzUzMTgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJ
bWFnZVJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCiAgICAgICAgIGZpcnN0VmFsdWUg
PSBwcmltaXRpdmVWYWx1ZUNhY2hlKCktPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWwtPmlkKTsK
ICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHZhbCA9IG1fdmFs
dWVMaXN0LT5uZXh0KCk7CiAgICAgaWYgKHZhbCkgewogICAgICAgICBpZiAoaXNCb3JkZXJJbWFn
ZVJlcGVhdEtleXdvcmQodmFsLT5pZCkpCkBAIC01NDAyLDcgKzU0MDMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIE1ha2Ugb3VyIG5ldyBib3JkZXIgaW1hZ2UgdmFsdWUgbm93LgogICAgICAgICBy
ZXR1cm4gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjcmVhdGUobV9wcmltaXRpdmVWYWx1ZUNh
Y2hlLT5jcmVhdGVWYWx1ZShxdWFkLnJlbGVhc2UoKSksIG1fZmlsbCk7CiAgICAgfQotICAgIAor
CiBwcml2YXRlOgogICAgIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUqIG1fcHJpbWl0aXZlVmFsdWVD
YWNoZTsKIApAQCAtNTQxNCw3ICs1NDE1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IG1fcmlnaHQ7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2Jv
dHRvbTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fbGVmdDsKLSAgICAKKwogICAg
IGJvb2wgbV9maWxsOwogfTsKIApAQCAtNTQ3Myw3ICs1NDc0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgdmFsID0gbV9wcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
di0+aWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YWwgPSBtX3ByaW1pdGl2ZVZhbHVl
Q2FjaGUtPmNyZWF0ZVZhbHVlKHYtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMpdi0+dW5pdCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbV90b3ApCiAgICAgICAgICAg
ICBtX3RvcCA9IHZhbDsKICAgICAgICAgZWxzZSBpZiAoIW1fcmlnaHQpCkBAIC01NTE4LDcgKzU1
MTksNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE1ha2Ugb3VyIG5ldyB2YWx1ZSBub3cuCiAgICAg
ICAgIHJldHVybiBtX3ByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHF1YWQucmVsZWFz
ZSgpKTsKICAgICB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWVDYWNo
ZSogbV9wcmltaXRpdmVWYWx1ZUNhY2hlOwogCkBAIC01Njg1LDcgKzU2ODYsNyBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VEZXByZWNhdGVkR3JhZGllbnRQb2lu
dChDU1NQYXJzZXJWYWx1ZQogewogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0
OwogICAgIGlmIChhLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKLSAg
ICAgICAgaWYgKChlcXVhbElnbm9yaW5nQ2FzZShhLT5zdHJpbmcsICJsZWZ0IikgJiYgaG9yaXpv
bnRhbCkgfHwgCisgICAgICAgIGlmICgoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+c3RyaW5nLCAibGVm
dCIpICYmIGhvcml6b250YWwpIHx8CiAgICAgICAgICAgICAoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+
c3RyaW5nLCAidG9wIikgJiYgIWhvcml6b250YWwpKQogICAgICAgICAgICAgcmVzdWx0ID0gcHJp
bWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoMC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSk7CiAgICAgICAgIGVsc2UgaWYgKChlcXVhbElnbm9yaW5nQ2FzZShhLT5zdHJp
bmcsICJyaWdodCIpICYmIGhvcml6b250YWwpIHx8CkBAIC01NzEyLDcgKzU3MTMsNyBAQCBzdGF0
aWMgYm9vbCBwYXJzZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChDU1NQYXJzZXIqIHAsIENT
U1BhcnNlclZhbHVlKiBhLCBDUwogICAgIGlmICghYXJncykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGEtPmZ1bmN0aW9uLT5uYW1lLCAiZnJvbSgi
KSB8fCAKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+ZnVuY3Rpb24tPm5hbWUsICJmcm9t
KCIpIHx8CiAgICAgICAgIGVxdWFsSWdub3JpbmdDYXNlKGEtPmZ1bmN0aW9uLT5uYW1lLCAidG8o
IikpIHsKICAgICAgICAgLy8gVGhlICJmcm9tIiBhbmQgInRvIiBzdG9wcyBleHBlY3QgMSBhcmd1
bWVudC4KICAgICAgICAgaWYgKGFyZ3MtPnNpemUoKSAhPSAxKQpAQCAtNTkyNCw3ICs1OTI1LDcg
QEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlR3JhZGllbnRDb2xv
ck9yS2V5d29yZChDU1NQYXJzZXIqIHAsIEMKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUxpbmVhckdy
YWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJlcGVhdCByZXBl
YXRpbmcpCiB7CiAgICAgUmVmUHRyPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENT
U0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcpOwotICAgIAorCiAgICAgLy8g
V2FsayB0aGUgYXJndW1lbnRzLgogICAgIENTU1BhcnNlclZhbHVlTGlzdCogYXJncyA9IG1fdmFs
dWVMaXN0LT5jdXJyZW50KCktPmZ1bmN0aW9uLT5hcmdzLmdldCgpOwogICAgIGlmICghYXJncyB8
fCAhYXJncy0+c2l6ZSgpKQpAQCAtNTkzOCwxMyArNTkzOSwxMyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VMaW5lYXJHcmFkaWVudChSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3JhZGll
bnRSZXBlYQogICAgIC8vIExvb2sgZm9yIGFuZ2xlLgogICAgIGlmICh2YWxpZFVuaXQoYSwgRkFu
Z2xlLCB0cnVlKSkgewogICAgICAgICByZXN1bHQtPnNldEFuZ2xlKGNyZWF0ZVByaW1pdGl2ZU51
bWVyaWNWYWx1ZShhKSk7Ci0gICAgICAgIAorCiAgICAgICAgIGEgPSBhcmdzLT5uZXh0KCk7CiAg
ICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBMb29r
IG9uZSBvciB0d28gb3B0aW9uYWwga2V5d29yZHMgdGhhdCBpbmRpY2F0ZSBhIHNpZGUgb3IgY29y
bmVyLgogICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0YXJ0WCwgc3RhcnRZOwot
ICAgICAgICAKKwogICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxvY2F0aW9uOwog
ICAgICAgICBib29sIGlzSG9yaXpvbnRhbCA9IGZhbHNlOwogICAgICAgICBpZiAoKGxvY2F0aW9u
ID0gdmFsdWVGcm9tU2lkZUtleXdvcmQoYSwgaXNIb3Jpem9udGFsLCBwcmltaXRpdmVWYWx1ZUNh
Y2hlKCkpKSkgewpAQCAtNTk1Miw3ICs1OTUzLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlTGlu
ZWFyR3JhZGllbnQoUmVmUHRyPENTU1ZhbHVlPiYgZ3JhZGllbnQsIENTU0dyYWRpZW50UmVwZWEK
ICAgICAgICAgICAgICAgICBzdGFydFggPSBsb2NhdGlvbjsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBzdGFydFkgPSBsb2NhdGlvbjsKLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBhID0gYXJncy0+bmV4dCgpOwogICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAg
ICAgICBpZiAoKGxvY2F0aW9uID0gdmFsdWVGcm9tU2lkZUtleXdvcmQoYSwgaXNIb3Jpem9udGFs
LCBwcmltaXRpdmVWYWx1ZUNhY2hlKCkpKSkgewpAQCAtNTk3MiwxMCArNTk3MywxMCBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VMaW5lYXJHcmFkaWVudChSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVu
dCwgQ1NTR3JhZGllbnRSZXBlYQogCiAgICAgICAgICAgICBleHBlY3RDb21tYSA9IHRydWU7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFzdGFydFggJiYgIXN0YXJ0WSkKICAg
ICAgICAgICAgIHN0YXJ0WSA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlVG9wKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgIHJlc3VsdC0+c2V0
Rmlyc3RYKHN0YXJ0WC5yZWxlYXNlKCkpOwogICAgICAgICByZXN1bHQtPnNldEZpcnN0WShzdGFy
dFkucmVsZWFzZSgpKTsKICAgICB9CkBAIC01OTk0LDcgKzU5OTUsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VMaW5lYXJHcmFkaWVudChSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3Jh
ZGllbnRSZXBlYQogYm9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQoUmVmUHRyPENT
U1ZhbHVlPiYgZ3JhZGllbnQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKIHsKICAgICBS
ZWZQdHI8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRW
YWx1ZTo6Y3JlYXRlKHJlcGVhdGluZyk7Ci0gICAgCisKICAgICAvLyBXYWxrIHRoZSBhcmd1bWVu
dHMuCiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQo
KS0+ZnVuY3Rpb24tPmFyZ3MuZ2V0KCk7CiAgICAgaWYgKCFhcmdzIHx8ICFhcmdzLT5zaXplKCkp
CkBAIC02MDE0LDcgKzYwMTUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VSYWRpYWxHcmFkaWVu
dChSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYQogICAgIGEgPSBh
cmdzLT5jdXJyZW50KCk7CiAgICAgaWYgKCFhKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CisKICAgICBpZiAoY2VudGVyWCB8fCBjZW50ZXJZKSB7CiAgICAgICAgIC8vIENvbW1hCiAgICAg
ICAgIGlmIChhLT51bml0ICE9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciB8fCBhLT5pVmFsdWUg
IT0gJywnKQpAQCAtNjAyNCw3ICs2MDI1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaWFs
R3JhZGllbnQoUmVmUHRyPENTU1ZhbHVlPiYgZ3JhZGllbnQsIENTU0dyYWRpZW50UmVwZWEKICAg
ICAgICAgaWYgKCFhKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwog
ICAgIEFTU0VSVCghY2VudGVyWCB8fCBjZW50ZXJYLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwogICAg
IEFTU0VSVCghY2VudGVyWSB8fCBjZW50ZXJZLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwogCkBAIC02
MDMzLDcgKzYwMzQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VSYWRpYWxHcmFkaWVudChSZWZQ
dHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYQogICAgIC8vIENTUzMgcmFk
aWFsIGdyYWRpZW50cyBhbHdheXMgc2hhcmUgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBwb2ludC4K
ICAgICByZXN1bHQtPnNldEZpcnN0WShzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNl
bnRlclkuZ2V0KCkpKTsKICAgICByZXN1bHQtPnNldFNlY29uZFkoc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihjZW50ZXJZLmdldCgpKSk7Ci0gICAgCisKICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHNoYXBlVmFsdWU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBz
aXplVmFsdWU7CiAKQEAgLTYwNDEsNyArNjA0Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJh
ZGlhbEdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJlcGVh
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyArK2kpIHsKICAgICAgICAgaWYgKGEtPnVuaXQg
IT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKICAgICAgICAgICAgIGJyZWFrOwotICAg
IAorCiAgICAgICAgIGJvb2wgZm91bmRWYWx1ZSA9IGZhbHNlOwogICAgICAgICBzd2l0Y2ggKGEt
PmlkKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVDaXJjbGU6CkBAIC02MDY4LDEwICs2MDY5LDEw
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4m
IGdyYWRpZW50LCBDU1NHcmFkaWVudFJlcGVhCiAgICAgICAgICAgICBleHBlY3RDb21tYSA9IHRy
dWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXN1bHQtPnNldFNoYXBlKHNoYXBl
VmFsdWUpOwogICAgIHJlc3VsdC0+c2V0U2l6aW5nQmVoYXZpb3Ioc2l6ZVZhbHVlKTsKLSAgICAK
KwogICAgIC8vIE9yLCB0d28gbGVuZ3RocyBvciBwZXJjZW50YWdlcwogICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gaG9yaXpvbnRhbFNpemU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiB2ZXJ0aWNhbFNpemU7CkBAIC02MDk5LDcgKzYxMDAsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VSYWRpYWxHcmFkaWVudChSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3JhZGll
bnRSZXBlYQogICAgIC8vIE11c3QgaGF2ZSBuZWl0aGVyIG9yIGJvdGguCiAgICAgaWYgKCFob3Jp
em9udGFsU2l6ZSAhPSAhdmVydGljYWxTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CisKICAgICByZXN1bHQtPnNldEVuZEhvcml6b250YWxTaXplKGhvcml6b250YWxTaXplKTsKICAg
ICByZXN1bHQtPnNldEVuZFZlcnRpY2FsU2l6ZSh2ZXJ0aWNhbFNpemUpOwogCkBAIC02MTM5LDcg
KzYxNDAsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VHcmFkaWVudENvbG9yU3RvcHMoQ1NTUGFy
c2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIENTU0dyYWRpZQogICAgICAgICAgICAgICAgIGEgPSB2
YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICBncmFkaWVudC0+YWRkU3RvcChzdG9wKTsKICAgICAgICAgZXhwZWN0Q29tbWEgPSB0
cnVlOwogICAgIH0KQEAgLTY0MTcsNyArNjQxOCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjppc1ZhbGlk
RmlsdGVyQXJndW1lbnQoQ1NTUGFyc2VyVmFsdWUqIGFyZ3VtZW50LCBXZWJLaXRDU1NGaWx0ZXJW
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSBlbHNlIGlmICghdmFsaWRVbml0KGFy
Z3VtZW50LCBGTnVtYmVyLCB0cnVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAg
ICAgLy8gQ2hlY2sgcGFyYW1ldGVyIHZhbHVlcy4KICAgICBpZiAoZmlsdGVyVHlwZSA9PSBXZWJL
aXRDU1NGaWx0ZXJWYWx1ZTo6R3JheXNjYWxlRmlsdGVyT3BlcmF0aW9uCiAgICAgICAgIHx8IGZp
bHRlclR5cGUgPT0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OlNlcGlhRmlsdGVyT3BlcmF0aW9uCkBA
IC02NDY2LDEyICs2NDY3LDEyIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6
OnBhcnNlRmlsdGVyKCkKICAgICAgICAgICAgIFJlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4g
cmVmZXJlbmNlRmlsdGVyVmFsdWUgPSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y3JlYXRlKFdlYktp
dENTU0ZpbHRlclZhbHVlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKHJlZmVyZW5jZUZpbHRlclZhbHVlKTsKICAgICAgICAgICAgIHJlZmVyZW5j
ZUZpbHRlclZhbHVlLT5hcHBlbmQocHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVWYWx1ZSh2
YWx1ZS0+c3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwotICAgICAgICB9
IGVsc2UgeyAgICAgICAgCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBDU1NQ
YXJzZXJTdHJpbmcgbmFtZSA9IHZhbHVlLT5mdW5jdGlvbi0+bmFtZTsKICAgICAgICAgICAgIHVu
c2lnbmVkIG1heGltdW1Bcmd1bWVudENvdW50ID0gMTsKIAogICAgICAgICAgICAgZmlsdGVySW5m
b0Zvck5hbWUobmFtZSwgZmlsdGVyVHlwZSwgbWF4aW11bUFyZ3VtZW50Q291bnQpOwotICAgICAg
ICAgICAgCisKICAgICAgICAgICAgIGlmIChmaWx0ZXJUeXBlID09IFdlYktpdENTU0ZpbHRlclZh
bHVlOjpVbmtub3duRmlsdGVyT3BlcmF0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwog
CkBAIC02NDgyLDcgKzY0ODMsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2Vy
OjpwYXJzZUZpbHRlcigpCiAgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIG5ldyBXZWJLaXRDU1NG
aWx0ZXJWYWx1ZSBmb3IgdGhpcyBvcGVyYXRpb24gYW5kIGFkZCBpdCB0byBvdXIgbGlzdC4KICAg
ICAgICAgICAgIFJlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gZmlsdGVyVmFsdWUgPSBXZWJL
aXRDU1NGaWx0ZXJWYWx1ZTo6Y3JlYXRlKGZpbHRlclR5cGUpOwogICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGZpbHRlclZhbHVlKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBDU1NQYXJz
ZXJWYWx1ZSogYXJndW1lbnQgPSBhcmdzLT5jdXJyZW50KCk7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBhcmd1bWVudENvdW50ID0gMDsKIApAQCAtNjczNyw3ICs2NzM4LDcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlTGluZUJveENvbnRhaW4oYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIGlmICghbGluZUJv
eENvbnRhaW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzI1MSw3ICs3MjUyLDcgQEAg
Q1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogICAgICAgICAgICAgcHJv
cGVydHktPm1fdmFsdWUgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPihwcm9wZXJ0eS0+dmFsdWUoKSkt
PmFwcGVuZCh2YWx1ZS5yZWxlYXNlKCkpOwogICAgICAgICB9IGVsc2UgaWYgKGlkID09IENTU1By
b3BlcnR5Rm9udEZhbWlseSAmJiAoIXByb3BlcnR5LT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpIHx8
IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHByb3BlcnR5LT52YWx1ZSgpKS0+bGVuZ3RoKCkg
IT0gMSkpIHsKLSAgICAgICAgICAgIC8vIFVubGlrZSBmb250LWZhbWlseSBwcm9wZXJ0eSwgZm9u
dC1mYW1pbHkgZGVzY3JpcHRvciBpbiBAZm9udC1mYWNlIHJ1bGUgCisgICAgICAgICAgICAvLyBV
bmxpa2UgZm9udC1mYW1pbHkgcHJvcGVydHksIGZvbnQtZmFtaWx5IGRlc2NyaXB0b3IgaW4gQGZv
bnQtZmFjZSBydWxlCiAgICAgICAgICAgICAvLyBoYXMgdG8gYmUgYSB2YWx1ZSBsaXN0IHdpdGgg
ZXhhY3RseSBvbmUgZmFtaWx5IG5hbWUuIEl0IGNhbm5vdCBoYXZlIGEKICAgICAgICAgICAgIC8v
IGhhdmUgJ2luaXRpYWwnIHZhbHVlIGFuZCBjYW5ub3QgJ2luaGVyaXQnIGZyb20gcGFyZW50Lgog
ICAgICAgICAgICAgLy8gU2VlIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtZm9udHMvI2Zv
bnQtZmFtaWx5LWRlc2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBlMzkxYjM5Li5hYTZkNzBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxQb3NpdGlvblgoQ1NTUGFyc2VyVmFsdWVMaXN0
Kik7CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VGaWxsUG9zaXRpb25ZKENTU1BhcnNl
clZhbHVlTGlzdCopOwogICAgIHZvaWQgcGFyc2VGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVM
aXN0KiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKLSAgICAKKwogICAg
IHZvaWQgcGFyc2VGaWxsUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+
Jik7CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VGaWxsU2l6ZShpbnQgcHJvcElkLCBi
b29sICZhbGxvd0NvbW1hKTsKIApAQCAtMjU2LDYgKzI1Niw4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKKyAgICB2b2lkIHNldFN0eWxlU2hlZXQoQ1NTU3R5bGVT
aGVldCopOworCiAgICAgYm9vbCBtX3N0cmljdDsKICAgICBib29sIG1faW1wb3J0YW50OwogICAg
IGludCBtX2lkOwpAQCAtMzA0LDggKzMwNiw2IEBAIHB1YmxpYzoKICAgICBpbnQgbGV4KCk7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBzZXRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKLSAgICAK
ICAgICB2b2lkIHJlY2hlY2tBdEtleXdvcmQoY29uc3QgVUNoYXIqIHN0ciwgaW50IGxlbik7CiAK
ICAgICB2b2lkIHNldHVwUGFyc2VyKGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgY2hhciogc3VmZml4KTsKQEAgLTM4NSw3ICszODUsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBib29sIHZhbGlkVW5pdChDU1NQYXJzZXJWYWx1ZSosIFVuaXRzLCBib29sIHN0cmljdCk7
CiAKICAgICBib29sIHBhcnNlQm9yZGVySW1hZ2VRdWFkKFVuaXRzLCBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+Jik7Ci0gICAgCisKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
cmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsKICAgICBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVTdHJpbmdWYWx1ZShDU1NQYXJz
ZXJWYWx1ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKaW5kZXggYTBjZDU3NS4uYWZiMjliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMTE5Niw2ICsxMTk2LDcg
QEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmdldFN0eWxlQXR0cmli
dXRlUmFuZ2VzKFJlZlB0cjxDU1NTdHlsZVMKIAogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbj4gdGVtcERlY2xhcmF0aW9uID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OmNyZWF0ZSgpOwogICAgIENTU1BhcnNlciBwOworICAgIHAuc2V0U3R5bGVTaGVldChtX2VsZW1l
bnQtPmRvY3VtZW50KCktPmVsZW1lbnRTaGVldCgpKTsKICAgICBwLnBhcnNlRGVjbGFyYXRpb24o
dGVtcERlY2xhcmF0aW9uLmdldCgpLCBtX3N0eWxlVGV4dCwgcmVzdWx0KTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111592</attachid>
            <date>2011-10-19 04:36:44 -0700</date>
            <delta_ts>2011-10-19 06:38:22 -0700</delta_ts>
            <desc>[PATCH] Added a couple of required drive-by style fixes</desc>
            <filename>bgimage.patch</filename>
            <type>text/plain</type>
            <size>29132</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGUxZDIzZDU1ZmYyZDY4MjUxODM2YTAzOTcyOWMyZTAyMjQxNTY3OGQKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgT2N0IDE4
IDE5OjE2OjQzIDIwMTEgKzA0MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2RkN2QwZi4uMzViYjA0NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEwLTE5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NTIGJhY2tncm91
bmQtaW1hZ2UgYXBwbGllZCBpbmxpbmUgc2hvd3MgYSB3YXJuaW5nLCBidXQgc3RpbGwgd29ya3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDMyNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sOgorCiAyMDExLTEwLTE5ICBZdXpvIEZ1amlz
aGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFRlc3QgZXhwZWN0
YXRpb24gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dAppbmRleCBlMGQ4YmI1Li45NDY4ZDAzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJ
LWV4cGVjdGVkLnR4dApAQCAtODcsNyArODcsOCBAQCBodG1sOiBbXQogc3R5bGUKIHJhdyBzdHls
ZQogWydmb250LXdlaWdodCc6J25vcm1hbCddIEBbMC0yMF0gYWN0aXZlCi1bJ3dpZHRoJzonODUl
J10gQFsyMS0zMV0gYWN0aXZlCitbJ3dpZHRoJzonODUlJ10gQFsyMS0zMl0gYWN0aXZlCitbJ2Jh
Y2tncm91bmQtaW1hZ2UnOid1cmwoYmFyLnBuZyknXSBAWzMzLTYzXSBhY3RpdmUKIAogPT09IEF0
dHJpYnV0ZSBzdHlsZXMgZm9yIHRhYmxlID09PQogQXR0cmlidXRlOiB3aWR0aApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sCmluZGV4IDZkZjBl
ZDAuLmMwMDA5YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLW5ldy1BUEkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxl
cy1uZXctQVBJLmh0bWwKQEAgLTM0OCw3ICszNDgsNyBAQCBib2R5Lm1haW5wYWdlIHsKIDwvc3R5
bGU+CiA8L2hlYWQ+CiAKLTxib2R5IGlkPSJtYWluQm9keSIgY2xhc3M9Im1haW4xIG1haW4yIG1h
aW5wYWdlIiBvbmxvYWQ9InJ1blRlc3QoKSIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7IHdp
ZHRoOiA4NSUiPgorPGJvZHkgaWQ9Im1haW5Cb2R5IiBjbGFzcz0ibWFpbjEgbWFpbjIgbWFpbnBh
Z2UiIG9ubG9hZD0icnVuVGVzdCgpIiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsgd2lkdGg6
IDg1JTsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGJhci5wbmcpIj4KIDxwPgogVGVzdHMgdGhhdCBJ
bnNwZWN0b3JDU1NBZ2VudCBBUEkgbWV0aG9kcyB3b3JrIGFzIGV4cGVjdGVkLgogPC9wPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGQ3NGIxYjUuLmIwYzQ4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAor
MjAxMS0xMC0xOSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IENTUyBiYWNrZ3JvdW5kLWltYWdlIGFwcGxpZWQgaW5saW5l
IHNob3dzIGEgd2FybmluZywgYnV0IHN0aWxsIHdvcmtzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxTaG9y
dGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWlu
Z0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVDaXJjbGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZUVsbGlwc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZVBvbHlnb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZSk6CisgICAgICAgIChXZWJD
b3JlOjpCb3JkZXJJbWFnZVBhcnNlQ29udGV4dDo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZVJlcGVhdCk6CisgICAgICAgIChX
ZWJDb3JlOjpCb3JkZXJJbWFnZVF1YWRQYXJzZUNvbnRleHQ6OmNvbW1pdE51bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlRGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VMaW5lYXJHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZUdyYWRpZW50Q29sb3JTdG9wcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OmlzVmFsaWRGaWx0ZXJBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VMaW5lQm94
Q29udGFpbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVs
ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hl
ZXRGb3JJbmxpbmVTdHlsZTo6Z2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMpOgorCiAyMDExLTEwLTE5
ICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdW1dLMl0gQWRkZWQgbWlzc2luZyBmaWxlcyB0byBidWlsZCBXZWJLaXQyIEVGTApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzMDViMGNmLi44ZDA4OTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcApAQCAtMzY2LDcgKzM2Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBs
ZUxlbmd0aFByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQsIGJvb2wmIGFjY2VwdHNOZWdhdGl2CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKLSAgICBjYXNlIENTU1By
b3BlcnR5UGFkZGluZ1JpZ2h0OiAKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0Ogog
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRMb2dpY2FsV2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6
CkBAIC0zODEsOCArMzgxLDggQEAgc3RhdGljIGlubGluZSBib29sIGlzU2ltcGxlTGVuZ3RoUHJv
cGVydHlJRChpbnQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXYKICAgICBjYXNlIENT
U1Byb3BlcnR5Qm90dG9tOgogICAgIGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW5Cb3R0b206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ6IAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDogCisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpbkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OgogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW5Ub3A6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0SW5kZW50OgpAQCAtNTU0LDcgKzU1NCw4IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlv
biwgY29uc3QKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJlZml4TGVuZ3RoID0gMTU7CiAK
ICAgICBBU1NFUlQoIWRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCkgfHwgZGVjbGFyYXRpb24tPnN0
eWxlc2hlZXQoKS0+aXNDU1NTdHlsZVNoZWV0KCkpOwotICAgIHNldFN0eWxlU2hlZXQoc3RhdGlj
X2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KGRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCkpKTsKKyAgICBp
ZiAoIW1fc3R5bGVTaGVldCkKKyAgICAgICAgc2V0U3R5bGVTaGVldChzdGF0aWNfY2FzdDxDU1NT
dHlsZVNoZWV0Kj4oZGVjbGFyYXRpb24tPnN0eWxlc2hlZXQoKSkpOwogICAgIGlmIChzdHlsZVNv
dXJjZURhdGEpIHsKICAgICAgICAgbV9jdXJyZW50UnVsZURhdGEgPSBDU1NSdWxlU291cmNlRGF0
YTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhLT5zdHlsZVNvdXJjZURhdGEg
PSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOwpAQCAtNjQyLDcgKzY0Myw3IEBAIHZvaWQg
Q1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMoKQogICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0Jl
Zm9yZU1hcmdpbkJveCA9IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTOwogICAgIG1faGFz
Rm9udEZhY2VPbmx5VmFsdWVzID0gZmFsc2U7CiB9Ci0gICAgCisKIHZvaWQgQ1NTUGFyc2VyOjpz
ZXRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiB7CiAgICAgbV9zdHlsZVNo
ZWV0ID0gc3R5bGVTaGVldDsKQEAgLTEyNjAsMTEgKzEyNjEsMTEgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlT
cGVhazogICAgICAgICAgIC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBs
aXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24gfCBpbmhlcml0Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NT
VmFsdWVTcGVsbE91dCB8fCBpZCA9PSBDU1NWYWx1ZURpZ2l0cyAKKyAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNw
ZWxsT3V0IHx8IGlkID09IENTU1ZhbHVlRGlnaXRzCiAgICAgICAgICAgICB8fCBpZCA9PSBDU1NW
YWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vUHVuY3R1YXRpb24pCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgCisKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDogICAgICAgICAgLy8gPGxl
bmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
KCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xNjAyLDcgKzE2MDMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENT
U1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVT
dHJldGNoOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEZs
b3c6Ci0gICAgICAgIC8vIEZJWE1FOiAtd2Via2l0LWZsZXgtZmxvdyB0YWtlcyBhIHNlY29uZCAi
d3JhcCIgdmFsdWUuICAgIAorICAgICAgICAvLyBGSVhNRTogLXdlYmtpdC1mbGV4LWZsb3cgdGFr
ZXMgYSBzZWNvbmQgIndyYXAiIHZhbHVlLgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09
IENTU1ZhbHVlUm93IHx8IGlkID09IENTU1ZhbHVlUm93UmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1
ZUNvbHVtbiB8fCBpZCA9PSBDU1NWYWx1ZUNvbHVtblJldmVyc2U7CiAgICAgICAgIGJyZWFrOwog
I2VuZGlmCkBAIC0yMjQ2LDcgKzIyNDcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsU2hv
cnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVBybwogICAg
ICAgICAgICAgICAgICAgICBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kT3JpZ2luIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2lu
KSAmJiAhcGFyc2VkUHJvcGVydHlbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm
IGJhY2tncm91bmQtb3JpZ2luIHdhc24ndCBwcmVzZW50LCB0aGVuIHJlc2V0IGJhY2tncm91bmQt
Y2xpcCBhbHNvLgogICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKGNsaXBWYWx1
ZSwgQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVJbXBsaWNpdCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlbaV0gPSBmYWxzZTsKICAg
ICAgICAgICAgIH0KQEAgLTMzMzIsNyArMzMzMyw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbigpCiAKICAgICAgICAgcmV0dXJu
IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKG51bVN0ZXBzLCBzdGVwQXRTdGFy
dCk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5j
dGlvbi0+bmFtZSwgImN1YmljLWJlemllcigiKSkgewogICAgICAgICAvLyBGb3IgY3ViaWMgYmV6
aWVyLCA0IHZhbHVlcyBtdXN0IGJlIHNwZWNpZmllZC4KICAgICAgICAgaWYgKCFhcmdzIHx8IGFy
Z3MtPnNpemUoKSAhPSA3KQpAQCAtMzM1Miw3ICszMzUzLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkKIAogICAgICAgICBy
ZXR1cm4gQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoeDEsIHkxLCB4
MiwgeTIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNzA1LDIwICsz
NzA2LDIwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNoYXBlKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hh
cGVSZWN0KENTU1BhcnNlclZhbHVlTGlzdCogYXJncykKIHsKICAgICBBU1NFUlQoYXJncyk7Ci0g
ICAgCisKICAgICAvLyByZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIFtbcnhdLCByeV0pCiAgICAg
aWYgKGFyZ3MtPnNpemUoKSAhPSA3ICYmIGFyZ3MtPnNpemUoKSAhPSA5ICYmIGFyZ3MtPnNpemUo
KSAhPSAxMSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICBSZWZQdHI8Q1NTV3JhcFNo
YXBlUmVjdD4gc2hhcGUgPSBDU1NXcmFwU2hhcGVSZWN0OjpjcmVhdGUoKTsKLSAgICAKKwogICAg
IHVuc2lnbmVkIGFyZ3VtZW50TnVtYmVyID0gMDsKICAgICBDU1NQYXJzZXJWYWx1ZSogYXJndW1l
bnQgPSBhcmdzLT5jdXJyZW50KCk7CiAgICAgd2hpbGUgKGFyZ3VtZW50KSB7CiAgICAgICAgIGlm
ICghdmFsaWRVbml0KGFyZ3VtZW50LCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVu
Z3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVWYWx1ZShhcmd1bWVudC0+ZlZhbHVl
LCAKKworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAg
IChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAg
IEFTU0VSVChhcmd1bWVudE51bWJlciA8IDYpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVt
YmVyKSB7CkBAIC0zNzQ1LDM0ICszNzQ2LDM0IEBAIFBhc3NSZWZQdHI8Q1NTV3JhcFNoYXBlPiBD
U1NQYXJzZXI6OnBhcnNlV3JhcFNoYXBlUmVjdChDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MpCiAg
ICAgICAgIGlmIChhcmd1bWVudCkgewogICAgICAgICAgICAgaWYgKGFyZ3VtZW50LT51bml0ICE9
IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciB8fCBhcmd1bWVudC0+aVZhbHVlICE9ICcsJykKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBhcmd1
bWVudCA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgfQogICAgICAgICBhcmd1bWVudE51bWJlcisr
OwogICAgIH0KLSAgICAKKwogICAgIGlmIChhcmd1bWVudE51bWJlciA8IDQpCi0gICAgICAgIHJl
dHVybiAwOyAgICAKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHNoYXBlOwogfQogCiBQ
YXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZUNpcmNsZShD
U1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MpCiB7CiAgICAgQVNTRVJUKGFyZ3MpOwotICAgIAorCiAg
ICAgLy8gY2lyY2xlKHgsIHksIHIpCiAgICAgaWYgKGFyZ3MtPnNpemUoKSAhPSA1KQogICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgCisKICAgICBSZWZQdHI8Q1NTV3JhcFNoYXBlQ2lyY2xlPiBz
aGFwZSA9IENTU1dyYXBTaGFwZUNpcmNsZTo6Y3JlYXRlKCk7Ci0gICAgCisKICAgICB1bnNpZ25l
ZCBhcmd1bWVudE51bWJlciA9IDA7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIGFyZ3VtZW50ID0gYXJn
cy0+Y3VycmVudCgpOwogICAgIHdoaWxlIChhcmd1bWVudCkgewogICAgICAgICBpZiAoIXZhbGlk
VW5pdChhcmd1bWVudCwgRkxlbmd0aCwgbV9zdHJpY3QpKQogICAgICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsZW5ndGggPSBwcmltaXRpdmVW
YWx1ZUNhY2hlKCktPmNyZWF0ZVZhbHVlKGFyZ3VtZW50LT5mVmFsdWUsIAorICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUoKS0+Y3Jl
YXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAgIChDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAgIEFTU0VSVChhcmd1bWVudE51
bWJlciA8IDMpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVtYmVyKSB7CkBAIC0zNzg2LDM3
ICszNzg3LDM3IEBAIFBhc3NSZWZQdHI8Q1NTV3JhcFNoYXBlPiBDU1NQYXJzZXI6OnBhcnNlV3Jh
cFNoYXBlQ2lyY2xlKENTU1BhcnNlclZhbHVlTGlzdCogYXJnCiAgICAgICAgICAgICBzaGFwZS0+
c2V0UmFkaXVzKGxlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBhcmd1bWVudCA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgaWYgKGFyZ3Vt
ZW50KSB7CiAgICAgICAgICAgICBpZiAoYXJndW1lbnQtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6
Ok9wZXJhdG9yIHx8IGFyZ3VtZW50LT5pVmFsdWUgIT0gJywnKQotICAgICAgICAgICAgICAgIHJl
dHVybiAwOyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
ICAgYXJndW1lbnQgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIH0KICAgICAgICAgYXJndW1lbnRO
dW1iZXIrKzsKICAgICB9Ci0gICAgCisKICAgICBpZiAoYXJndW1lbnROdW1iZXIgPCAzKQotICAg
ICAgICByZXR1cm4gMDsgICAgCisgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzaGFwZTsK
IH0KIAogUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVF
bGxpcHNlKENTU1BhcnNlclZhbHVlTGlzdCogYXJncykKIHsKICAgICBBU1NFUlQoYXJncyk7Ci0g
ICAgCisKICAgICAvLyBlbGxpcHNlKHgsIHksIHJ4LCByeSkKICAgICBpZiAoYXJncy0+c2l6ZSgp
ICE9IDcpCiAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKKwogICAgIFJlZlB0cjxDU1NXcmFw
U2hhcGVFbGxpcHNlPiBzaGFwZSA9IENTU1dyYXBTaGFwZUVsbGlwc2U6OmNyZWF0ZSgpOwogICAg
IHVuc2lnbmVkIGFyZ3VtZW50TnVtYmVyID0gMDsKICAgICBDU1NQYXJzZXJWYWx1ZSogYXJndW1l
bnQgPSBhcmdzLT5jdXJyZW50KCk7CiAgICAgd2hpbGUgKGFyZ3VtZW50KSB7CiAgICAgICAgIGlm
ICghdmFsaWRVbml0KGFyZ3VtZW50LCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVu
Z3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVWYWx1ZShhcmd1bWVudC0+ZlZhbHVl
LCAKKworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAg
IChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAg
IEFTU0VSVChhcmd1bWVudE51bWJlciA8IDQpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVt
YmVyKSB7CkBAIC0zODMzLDcgKzM4MzQsNyBAQCBQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NT
UGFyc2VyOjpwYXJzZVdyYXBTaGFwZUVsbGlwc2UoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcgogICAg
ICAgICAgICAgc2hhcGUtPnNldFJhZGl1c1kobGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGFyZ3VtZW50ID0gYXJncy0+bmV4dCgpOwog
ICAgICAgICBpZiAoYXJndW1lbnQpIHsKICAgICAgICAgICAgIGlmIChhcmd1bWVudC0+dW5pdCAh
PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgfHwgYXJndW1lbnQtPmlWYWx1ZSAhPSAnLCcpCkBA
IC0zODQyLDcgKzM4NDMsNyBAQCBQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NTUGFyc2VyOjpw
YXJzZVdyYXBTaGFwZUVsbGlwc2UoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcgogICAgICAgICB9CiAg
ICAgICAgIGFyZ3VtZW50TnVtYmVyKys7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGFyZ3VtZW50
TnVtYmVyIDwgNCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHNoYXBlOwpAQCAtMzg1
NSw3ICszODU2LDcgQEAgUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VX
cmFwU2hhcGVQb2x5Z29uKENTU1BhcnNlclZhbHVlTGlzdCogYXIKICAgICB1bnNpZ25lZCBzaXpl
ID0gYXJncy0+c2l6ZSgpOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
CisKICAgICBSZWZQdHI8Q1NTV3JhcFNoYXBlUG9seWdvbj4gc2hhcGUgPSBDU1NXcmFwU2hhcGVQ
b2x5Z29uOjpjcmVhdGUoKTsKIAogICAgIENTU1BhcnNlclZhbHVlKiBhcmd1bWVudCA9IGFyZ3Mt
PmN1cnJlbnQoKTsKQEAgLTM4NjksMzQgKzM4NzAsMzQgQEAgUGFzc1JlZlB0cjxDU1NXcmFwU2hh
cGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVQb2x5Z29uKENTU1BhcnNlclZhbHVlTGlzdCog
YXIKICAgICAgICAgYXJndW1lbnQgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIHNpemUgLT0gMjsK
ICAgICB9Ci0gICAgCisKICAgICAvLyA8bGVuZ3RoPiwgPGxlbmd0aD4gLi4uIDxsZW5ndGg+LCA8
bGVuZ3RoPiAtPiBlYWNoIHBhaXIgaGFzIDMgZWxlbWVudHMKICAgICBpZiAoIXNpemUgfHwgKHNp
emUgJSAzKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICBDU1NQYXJzZXJWYWx1ZSog
YXJndW1lbnRYID0gYXJndW1lbnQ7CiAgICAgd2hpbGUgKGFyZ3VtZW50WCkgewogICAgICAgICBp
ZiAoIXZhbGlkVW5pdChhcmd1bWVudFgsIEZMZW5ndGgsIG1fc3RyaWN0KSkKICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICAKKwogICAgICAgICBDU1NQYXJzZXJWYWx1ZSogY29tbWEgPSBh
cmdzLT5uZXh0KCk7CiAgICAgICAgIGlmICghY29tbWEgfHwgY29tbWEtPnVuaXQgIT0gQ1NTUGFy
c2VyVmFsdWU6Ok9wZXJhdG9yIHx8IGNvbW1hLT5pVmFsdWUgIT0gJywnKQogICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIAorCiAgICAgICAgIENTU1BhcnNlclZhbHVlKiBhcmd1bWVudFkg
PSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIGlmICghYXJndW1lbnRZIHx8ICF2YWxpZFVuaXQoYXJn
dW1lbnRZLCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geExlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRYLT5mVmFsdWUsIAorCisgICAgICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geExlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUo
KS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRYLT5mVmFsdWUsCiAgICAgICAgICAgICAoQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlcykgYXJndW1lbnRYLT51bml0KTsKLSAgICAgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiB5TGVuZ3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVW
YWx1ZShhcmd1bWVudFktPmZWYWx1ZSwgCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4geUxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRZ
LT5mVmFsdWUsCiAgICAgICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgYXJn
dW1lbnRZLT51bml0KTsKLSAgICAgICAgCisKICAgICAgICAgc2hhcGUtPmFwcGVuZFBvaW50KHhM
ZW5ndGgucmVsZWFzZSgpLCB5TGVuZ3RoLnJlbGVhc2UoKSk7Ci0gICAgICAgIAorCiAgICAgICAg
IGFyZ3VtZW50WCA9IGFyZ3MtPm5leHQoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gc2hh
cGU7CiB9CiAKQEAgLTM5MDcsOSArMzkwOCw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVdyYXBT
aGFwZShib29sIGltcG9ydGFudCkKIAogICAgIGlmICghYXJncykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAorCiAgICAgUmVmUHRyPENTU1dyYXBTaGFwZT4gc2hhcGU7Ci0gICAgCisKICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAicmVjdCgiKSkK
ICAgICAgICAgc2hhcGUgPSBwYXJzZVdyYXBTaGFwZVJlY3QoYXJncyk7CiAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAiY2lyY2xlKCIpKQpAQCAt
NTEzOSw3ICs1MTQwLDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0IHsKICAgICAs
IG1fYWxsb3dSZXBlYXQodHJ1ZSkKICAgICAsIG1fYWxsb3dTbGFzaChmYWxzZSkKICAgICAsIG1f
cmVxdWlyZVdpZHRoKGZhbHNlKQotICAgICwgbV9yZXF1aXJlT3V0c2V0KGZhbHNlKSAgICAKKyAg
ICAsIG1fcmVxdWlyZU91dHNldChmYWxzZSkKICAgICB7fQogCiAgICAgYm9vbCBjYW5BZHZhbmNl
KCkgY29uc3QgeyByZXR1cm4gbV9jYW5BZHZhbmNlOyB9CkBAIC01MTUzLDcgKzUxNTQsNyBAQCBz
dHJ1Y3QgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogCiAgICAgYm9vbCByZXF1aXJlV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVXaWR0aDsgfQogICAgIGJvb2wgcmVxdWlyZU91dHNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZU91dHNldDsgfQotICAgIAorCiAgICAgdm9pZCBj
b21taXRJbWFnZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZSkKICAgICB7CiAgICAgICAgIG1f
aW1hZ2UgPSBpbWFnZTsKQEAgLTUyMTcsNyArNTIxOCw3IEBAIHN0cnVjdCBCb3JkZXJJbWFnZVBh
cnNlQ29udGV4dCB7CiAgICAgICAgIC8vIE1ha2Ugb3VyIG5ldyBib3JkZXIgaW1hZ2UgdmFsdWUg
bm93LgogICAgICAgICByZXR1cm4gQ1NTQm9yZGVySW1hZ2VWYWx1ZTo6Y3JlYXRlKG1faW1hZ2Us
IG1faW1hZ2VTbGljZSwgbV9ib3JkZXJTbGljZSwgbV9vdXRzZXQsIG1fcmVwZWF0KTsKICAgICB9
Ci0gICAgCisKICAgICBDU1NQcmltaXRpdmVWYWx1ZUNhY2hlKiBtX3ByaW1pdGl2ZVZhbHVlQ2Fj
aGU7CiAKICAgICBib29sIG1fY2FuQWR2YW5jZTsKQEAgLTUyMjcsNyArNTIyOCw3IEBAIHN0cnVj
dCBCb3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAgYm9vbCBtX2FsbG93SW1hZ2VTbGljZTsK
ICAgICBib29sIG1fYWxsb3dSZXBlYXQ7CiAgICAgYm9vbCBtX2FsbG93U2xhc2g7Ci0gICAgCisK
ICAgICBib29sIG1fcmVxdWlyZVdpZHRoOwogICAgIGJvb2wgbV9yZXF1aXJlT3V0c2V0OwogCkBA
IC01MjQ4LDcgKzUyNDksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZShpbnQg
cHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCiAKICAgICAgICAgaWYgKCFjb250ZXh0
LmNhbkFkdmFuY2UoKSAmJiBjb250ZXh0LmFsbG93U2xhc2goKSAmJiB2YWwtPnVuaXQgPT0gQ1NT
UGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbC0+aVZhbHVlID09ICcvJykKICAgICAgICAgICAg
IGNvbnRleHQuY29tbWl0U2xhc2goKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFjb250ZXh0
LmNhbkFkdmFuY2UoKSAmJiBjb250ZXh0LmFsbG93SW1hZ2UoKSkgewogICAgICAgICAgICAgaWYg
KHZhbC0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSAmJiBtX3N0eWxlU2hlZXQp
IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIGNvbXBsZXRlVVJMIGNhbGwgc2hvdWxk
IGJlIGRvbmUgd2hlbiB1c2luZyB0aGUgQ1NTSW1hZ2VWYWx1ZSwKQEAgLTUyNjMsMzQgKzUyNjQs
MzQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVySW1hZ2UoaW50IHByb3BJZCwgUmVmUHRy
PENTU1ZhbHVlPiYgcmVzdWx0KQogICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwtPmlkID09IENT
U1ZhbHVlTm9uZSkKICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdEltYWdlKENTU0ltYWdl
VmFsdWU6OmNyZWF0ZSgpKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoIWNv
bnRleHQuY2FuQWR2YW5jZSgpICYmIGNvbnRleHQuYWxsb3dJbWFnZVNsaWNlKCkpIHsKICAgICAg
ICAgICAgIFJlZlB0cjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+IGltYWdlU2xpY2U7CiAgICAg
ICAgICAgICBpZiAocGFyc2VCb3JkZXJJbWFnZVNsaWNlKHByb3BJZCwgaW1hZ2VTbGljZSkpCiAg
ICAgICAgICAgICAgICAgY29udGV4dC5jb21taXRJbWFnZVNsaWNlKGltYWdlU2xpY2UucmVsZWFz
ZSgpKTsKLSAgICAgICAgfSAKLSAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBpZiAoIWNv
bnRleHQuY2FuQWR2YW5jZSgpICYmIGNvbnRleHQuYWxsb3dSZXBlYXQoKSkgewogICAgICAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQ7CiAgICAgICAgICAgICBpZiAocGFyc2VCb3JkZXJJ
bWFnZVJlcGVhdChyZXBlYXQpKQogICAgICAgICAgICAgICAgIGNvbnRleHQuY29tbWl0UmVwZWF0
KHJlcGVhdCk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFjb250ZXh0LmNh
bkFkdmFuY2UoKSAmJiBjb250ZXh0LnJlcXVpcmVXaWR0aCgpKSB7CiAgICAgICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvcmRlclNsaWNlOwogICAgICAgICAgICAgaWYgKHBhcnNl
Qm9yZGVySW1hZ2VXaWR0aChib3JkZXJTbGljZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC5j
b21taXRCb3JkZXJXaWR0aChib3JkZXJTbGljZS5yZWxlYXNlKCkpOwotICAgICAgICB9IAotICAg
ICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIGlmICghY29udGV4dC5jYW5BZHZhbmNlKCkgJiYg
Y29udGV4dC5yZXF1aXJlT3V0c2V0KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gYm9yZGVyT3V0c2V0OwogICAgICAgICAgICAgaWYgKHBhcnNlQm9yZGVySW1hZ2VP
dXRzZXQoYm9yZGVyT3V0c2V0KSkKICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdEJvcmRl
ck91dHNldChib3JkZXJPdXRzZXQucmVsZWFzZSgpKTsKLSAgICAgICAgfSAKLSAgICAgICAgCisg
ICAgICAgIH0KKwogICAgICAgICBpZiAoIWNvbnRleHQuY2FuQWR2YW5jZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAg
ICAgfQogCkBAIC01MzE3LDcgKzUzMTgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJ
bWFnZVJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCiAgICAgICAgIGZpcnN0VmFsdWUg
PSBwcmltaXRpdmVWYWx1ZUNhY2hlKCktPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWwtPmlkKTsK
ICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHZhbCA9IG1fdmFs
dWVMaXN0LT5uZXh0KCk7CiAgICAgaWYgKHZhbCkgewogICAgICAgICBpZiAoaXNCb3JkZXJJbWFn
ZVJlcGVhdEtleXdvcmQodmFsLT5pZCkpCkBAIC01NDAyLDcgKzU0MDMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIE1ha2Ugb3VyIG5ldyBib3JkZXIgaW1hZ2UgdmFsdWUgbm93LgogICAgICAgICBy
ZXR1cm4gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjcmVhdGUobV9wcmltaXRpdmVWYWx1ZUNh
Y2hlLT5jcmVhdGVWYWx1ZShxdWFkLnJlbGVhc2UoKSksIG1fZmlsbCk7CiAgICAgfQotICAgIAor
CiBwcml2YXRlOgogICAgIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUqIG1fcHJpbWl0aXZlVmFsdWVD
YWNoZTsKIApAQCAtNTQxNCw3ICs1NDE1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IG1fcmlnaHQ7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2Jv
dHRvbTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fbGVmdDsKLSAgICAKKwogICAg
IGJvb2wgbV9maWxsOwogfTsKIApAQCAtNTQ3Myw3ICs1NDc0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgdmFsID0gbV9wcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
di0+aWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YWwgPSBtX3ByaW1pdGl2ZVZhbHVl
Q2FjaGUtPmNyZWF0ZVZhbHVlKHYtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMpdi0+dW5pdCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbV90b3ApCiAgICAgICAgICAg
ICBtX3RvcCA9IHZhbDsKICAgICAgICAgZWxzZSBpZiAoIW1fcmlnaHQpCkBAIC01NTE4LDcgKzU1
MTksNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE1ha2Ugb3VyIG5ldyB2YWx1ZSBub3cuCiAgICAg
ICAgIHJldHVybiBtX3ByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHF1YWQucmVsZWFz
ZSgpKTsKICAgICB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWVDYWNo
ZSogbV9wcmltaXRpdmVWYWx1ZUNhY2hlOwogCkBAIC01Njg1LDExICs1Njg2LDExIEBAIHN0YXRp
YyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZURlcHJlY2F0ZWRHcmFkaWVudFBv
aW50KENTU1BhcnNlclZhbHVlCiB7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1
bHQ7CiAgICAgaWYgKGEtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkgewot
ICAgICAgICBpZiAoKGVxdWFsSWdub3JpbmdDYXNlKGEtPnN0cmluZywgImxlZnQiKSAmJiBob3Jp
em9udGFsKSB8fCAKLSAgICAgICAgICAgIChlcXVhbElnbm9yaW5nQ2FzZShhLT5zdHJpbmcsICJ0
b3AiKSAmJiAhaG9yaXpvbnRhbCkpCisgICAgICAgIGlmICgoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+
c3RyaW5nLCAibGVmdCIpICYmIGhvcml6b250YWwpCisgICAgICAgICAgICB8fCAoZXF1YWxJZ25v
cmluZ0Nhc2UoYS0+c3RyaW5nLCAidG9wIikgJiYgIWhvcml6b250YWwpKQogICAgICAgICAgICAg
cmVzdWx0ID0gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoMC4sIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAgICAgIGVsc2UgaWYgKChlcXVhbElnbm9yaW5n
Q2FzZShhLT5zdHJpbmcsICJyaWdodCIpICYmIGhvcml6b250YWwpIHx8Ci0gICAgICAgICAgICAg
ICAgIChlcXVhbElnbm9yaW5nQ2FzZShhLT5zdHJpbmcsICJib3R0b20iKSAmJiAhaG9yaXpvbnRh
bCkpCisgICAgICAgIGVsc2UgaWYgKChlcXVhbElnbm9yaW5nQ2FzZShhLT5zdHJpbmcsICJyaWdo
dCIpICYmIGhvcml6b250YWwpCisgICAgICAgICAgICB8fCAoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+
c3RyaW5nLCAiYm90dG9tIikgJiYgIWhvcml6b250YWwpKQogICAgICAgICAgICAgcmVzdWx0ID0g
cHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoMTAwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+
c3RyaW5nLCAiY2VudGVyIikpCiAgICAgICAgICAgICByZXN1bHQgPSBwcmltaXRpdmVWYWx1ZUNh
Y2hlLT5jcmVhdGVWYWx1ZSg1MC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7
CkBAIC01NzEyLDggKzU3MTMsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZURlcHJlY2F0ZWRHcmFkaWVu
dENvbG9yU3RvcChDU1NQYXJzZXIqIHAsIENTU1BhcnNlclZhbHVlKiBhLCBDUwogICAgIGlmICgh
YXJncykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGEtPmZ1bmN0aW9uLT5uYW1lLCAiZnJvbSgiKSB8fCAKLSAgICAgICAgZXF1YWxJZ25vcmluZ0Nh
c2UoYS0+ZnVuY3Rpb24tPm5hbWUsICJ0bygiKSkgeworICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShhLT5mdW5jdGlvbi0+bmFtZSwgImZyb20oIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UoYS0+ZnVuY3Rpb24tPm5hbWUsICJ0bygiKSkgewogICAgICAgICAvLyBUaGUgImZyb20iIGFu
ZCAidG8iIHN0b3BzIGV4cGVjdCAxIGFyZ3VtZW50LgogICAgICAgICBpZiAoYXJncy0+c2l6ZSgp
ICE9IDEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTI0LDcgKzU5MjUsNyBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VHcmFkaWVudENvbG9yT3JL
ZXl3b3JkKENTU1BhcnNlciogcCwgQwogYm9vbCBDU1NQYXJzZXI6OnBhcnNlTGluZWFyR3JhZGll
bnQoUmVmUHRyPENTU1ZhbHVlPiYgZ3JhZGllbnQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGlu
ZykKIHsKICAgICBSZWZQdHI8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZyk7Ci0gICAgCisKICAgICAvLyBXYWxr
IHRoZSBhcmd1bWVudHMuCiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gbV92YWx1ZUxp
c3QtPmN1cnJlbnQoKS0+ZnVuY3Rpb24tPmFyZ3MuZ2V0KCk7CiAgICAgaWYgKCFhcmdzIHx8ICFh
cmdzLT5zaXplKCkpCkBAIC01OTM4LDEzICs1OTM5LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUxpbmVhckdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJl
cGVhCiAgICAgLy8gTG9vayBmb3IgYW5nbGUuCiAgICAgaWYgKHZhbGlkVW5pdChhLCBGQW5nbGUs
IHRydWUpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0QW5nbGUoY3JlYXRlUHJpbWl0aXZlTnVtZXJp
Y1ZhbHVlKGEpKTsKLSAgICAgICAgCisKICAgICAgICAgYSA9IGFyZ3MtPm5leHQoKTsKICAgICAg
ICAgZXhwZWN0Q29tbWEgPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIExvb2sgb25l
IG9yIHR3byBvcHRpb25hbCBrZXl3b3JkcyB0aGF0IGluZGljYXRlIGEgc2lkZSBvciBjb3JuZXIu
CiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3RhcnRYLCBzdGFydFk7Ci0gICAg
ICAgIAorCiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbG9jYXRpb247CiAgICAg
ICAgIGJvb2wgaXNIb3Jpem9udGFsID0gZmFsc2U7CiAgICAgICAgIGlmICgobG9jYXRpb24gPSB2
YWx1ZUZyb21TaWRlS2V5d29yZChhLCBpc0hvcml6b250YWwsIHByaW1pdGl2ZVZhbHVlQ2FjaGUo
KSkpKSB7CkBAIC01OTUyLDcgKzU5NTMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VMaW5lYXJH
cmFkaWVudChSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYQogICAg
ICAgICAgICAgICAgIHN0YXJ0WCA9IGxvY2F0aW9uOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIHN0YXJ0WSA9IGxvY2F0aW9uOwotICAgICAgICAgICAgCisKICAgICAgICAgICAg
IGEgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAg
IGlmICgobG9jYXRpb24gPSB2YWx1ZUZyb21TaWRlS2V5d29yZChhLCBpc0hvcml6b250YWwsIHBy
aW1pdGl2ZVZhbHVlQ2FjaGUoKSkpKSB7CkBAIC01OTcyLDEwICs1OTczLDEwIEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZUxpbmVhckdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBD
U1NHcmFkaWVudFJlcGVhCiAKICAgICAgICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsKICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoIXN0YXJ0WCAmJiAhc3RhcnRZKQogICAgICAg
ICAgICAgc3RhcnRZID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVUb3ApOwotICAgICAgICAgICAgCisKICAgICAgICAgcmVzdWx0LT5zZXRGaXJz
dFgoc3RhcnRYLnJlbGVhc2UoKSk7CiAgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKHN0YXJ0WS5y
ZWxlYXNlKCkpOwogICAgIH0KQEAgLTU5OTQsNyArNTk5NSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUxpbmVhckdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVu
dFJlcGVhCiBib29sIENTU1BhcnNlcjo6cGFyc2VSYWRpYWxHcmFkaWVudChSZWZQdHI8Q1NTVmFs
dWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewogICAgIFJlZlB0
cjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVl
OjpjcmVhdGUocmVwZWF0aW5nKTsKLSAgICAKKwogICAgIC8vIFdhbGsgdGhlIGFyZ3VtZW50cy4K
ICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5m
dW5jdGlvbi0+YXJncy5nZXQoKTsKICAgICBpZiAoIWFyZ3MgfHwgIWFyZ3MtPnNpemUoKSkKQEAg
LTYwMTQsNyArNjAxNSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KFJl
ZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJlcGVhCiAgICAgYSA9IGFyZ3Mt
PmN1cnJlbnQoKTsKICAgICBpZiAoIWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwog
ICAgIGlmIChjZW50ZXJYIHx8IGNlbnRlclkpIHsKICAgICAgICAgLy8gQ29tbWEKICAgICAgICAg
aWYgKGEtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yIHx8IGEtPmlWYWx1ZSAhPSAn
LCcpCkBAIC02MDI0LDcgKzYwMjUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VSYWRpYWxHcmFk
aWVudChSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYQogICAgICAg
ICBpZiAoIWEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAg
QVNTRVJUKCFjZW50ZXJYIHx8IGNlbnRlclgtPmlzUHJpbWl0aXZlVmFsdWUoKSk7CiAgICAgQVNT
RVJUKCFjZW50ZXJZIHx8IGNlbnRlclktPmlzUHJpbWl0aXZlVmFsdWUoKSk7CiAKQEAgLTYwMzMs
NyArNjAzNCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KFJlZlB0cjxD
U1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJlcGVhCiAgICAgLy8gQ1NTMyByYWRpYWwg
Z3JhZGllbnRzIGFsd2F5cyBzaGFyZSB0aGUgc2FtZSBzdGFydCBhbmQgZW5kIHBvaW50LgogICAg
IHJlc3VsdC0+c2V0Rmlyc3RZKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY2VudGVy
WS5nZXQoKSkpOwogICAgIHJlc3VsdC0+c2V0U2Vjb25kWShzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KGNlbnRlclkuZ2V0KCkpKTsKLSAgICAKKwogICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gc2hhcGVWYWx1ZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNpemVW
YWx1ZTsKIApAQCAtNjA0MSw3ICs2MDQyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaWFs
R3JhZGllbnQoUmVmUHRyPENTU1ZhbHVlPiYgZ3JhZGllbnQsIENTU0dyYWRpZW50UmVwZWEKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDI7ICsraSkgewogICAgICAgICBpZiAoYS0+dW5pdCAhPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgCisK
ICAgICAgICAgYm9vbCBmb3VuZFZhbHVlID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaCAoYS0+aWQp
IHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUNpcmNsZToKQEAgLTYwNjgsMTAgKzYwNjksMTAgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQoUmVmUHRyPENTU1ZhbHVlPiYgZ3Jh
ZGllbnQsIENTU0dyYWRpZW50UmVwZWEKICAgICAgICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsK
ICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJlc3VsdC0+c2V0U2hhcGUoc2hhcGVWYWx1
ZSk7CiAgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihzaXplVmFsdWUpOwotICAgIAorCiAg
ICAgLy8gT3IsIHR3byBsZW5ndGhzIG9yIHBlcmNlbnRhZ2VzCiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBob3Jpem9udGFsU2l6ZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZlcnRpY2FsU2l6ZTsKQEAgLTYwOTksNyArNjEwMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVJhZGlhbEdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJl
cGVhCiAgICAgLy8gTXVzdCBoYXZlIG5laXRoZXIgb3IgYm90aC4KICAgICBpZiAoIWhvcml6b250
YWxTaXplICE9ICF2ZXJ0aWNhbFNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwog
ICAgIHJlc3VsdC0+c2V0RW5kSG9yaXpvbnRhbFNpemUoaG9yaXpvbnRhbFNpemUpOwogICAgIHJl
c3VsdC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CiAKQEAgLTYxMzksNyArNjE0
MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyYWRpZW50Q29sb3JTdG9wcyhDU1NQYXJzZXJW
YWx1ZUxpc3QqIHZhbHVlTGlzdCwgQ1NTR3JhZGllCiAgICAgICAgICAgICAgICAgYSA9IHZhbHVl
TGlzdC0+bmV4dCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIGdyYWRpZW50LT5hZGRTdG9wKHN0b3ApOwogICAgICAgICBleHBlY3RDb21tYSA9IHRydWU7
CiAgICAgfQpAQCAtNjQxNyw3ICs2NDE4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OmlzVmFsaWRGaWx0
ZXJBcmd1bWVudChDU1NQYXJzZXJWYWx1ZSogYXJndW1lbnQsIFdlYktpdENTU0ZpbHRlclYKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IGVsc2UgaWYgKCF2YWxpZFVuaXQoYXJndW1l
bnQsIEZOdW1iZXIsIHRydWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAv
LyBDaGVjayBwYXJhbWV0ZXIgdmFsdWVzLgogICAgIGlmIChmaWx0ZXJUeXBlID09IFdlYktpdENT
U0ZpbHRlclZhbHVlOjpHcmF5c2NhbGVGaWx0ZXJPcGVyYXRpb24KICAgICAgICAgfHwgZmlsdGVy
VHlwZSA9PSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6U2VwaWFGaWx0ZXJPcGVyYXRpb24KQEAgLTY0
NjYsMTIgKzY0NjcsMTIgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFy
c2VGaWx0ZXIoKQogICAgICAgICAgICAgUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiByZWZl
cmVuY2VGaWx0ZXJWYWx1ZSA9IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjcmVhdGUoV2ViS2l0Q1NT
RmlsdGVyVmFsdWU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQocmVmZXJlbmNlRmlsdGVyVmFsdWUpOwogICAgICAgICAgICAgcmVmZXJlbmNlRmls
dGVyVmFsdWUtPmFwcGVuZChwcmltaXRpdmVWYWx1ZUNhY2hlKCktPmNyZWF0ZVZhbHVlKHZhbHVl
LT5zdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Ci0gICAgICAgIH0gZWxz
ZSB7ICAgICAgICAKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnN0IENTU1BhcnNl
clN0cmluZyBuYW1lID0gdmFsdWUtPmZ1bmN0aW9uLT5uYW1lOwogICAgICAgICAgICAgdW5zaWdu
ZWQgbWF4aW11bUFyZ3VtZW50Q291bnQgPSAxOwogCiAgICAgICAgICAgICBmaWx0ZXJJbmZvRm9y
TmFtZShuYW1lLCBmaWx0ZXJUeXBlLCBtYXhpbXVtQXJndW1lbnRDb3VudCk7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICAgICAgaWYgKGZpbHRlclR5cGUgPT0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6
OlVua25vd25GaWx0ZXJPcGVyYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAg
LTY0ODIsNyArNjQ4Myw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBh
cnNlRmlsdGVyKCkKICAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgbmV3IFdlYktpdENTU0ZpbHRl
clZhbHVlIGZvciB0aGlzIG9wZXJhdGlvbiBhbmQgYWRkIGl0IHRvIG91ciBsaXN0LgogICAgICAg
ICAgICAgUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBmaWx0ZXJWYWx1ZSA9IFdlYktpdENT
U0ZpbHRlclZhbHVlOjpjcmVhdGUoZmlsdGVyVHlwZSk7CiAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoZmlsdGVyVmFsdWUpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIENTU1BhcnNlclZh
bHVlKiBhcmd1bWVudCA9IGFyZ3MtPmN1cnJlbnQoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGFy
Z3VtZW50Q291bnQgPSAwOwogCkBAIC02NzM3LDcgKzY3MzgsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VMaW5lQm94Q29udGFpbihib29sIGltcG9ydGFudCkKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFsaW5lQm94Q29u
dGFpbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03MjUxLDcgKzcyNTIsNyBAQCBDU1NS
dWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiAgICAgICAgICAgICBwcm9wZXJ0
eS0+bV92YWx1ZSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHByb3BlcnR5LT52YWx1ZSgpKS0+YXBw
ZW5kKHZhbHVlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTUHJvcGVy
dHlGb250RmFtaWx5ICYmICghcHJvcGVydHktPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgfHwgc3Rh
dGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4ocHJvcGVydHktPnZhbHVlKCkpLT5sZW5ndGgoKSAhPSAx
KSkgewotICAgICAgICAgICAgLy8gVW5saWtlIGZvbnQtZmFtaWx5IHByb3BlcnR5LCBmb250LWZh
bWlseSBkZXNjcmlwdG9yIGluIEBmb250LWZhY2UgcnVsZSAKKyAgICAgICAgICAgIC8vIFVubGlr
ZSBmb250LWZhbWlseSBwcm9wZXJ0eSwgZm9udC1mYW1pbHkgZGVzY3JpcHRvciBpbiBAZm9udC1m
YWNlIHJ1bGUKICAgICAgICAgICAgIC8vIGhhcyB0byBiZSBhIHZhbHVlIGxpc3Qgd2l0aCBleGFj
dGx5IG9uZSBmYW1pbHkgbmFtZS4gSXQgY2Fubm90IGhhdmUgYQogICAgICAgICAgICAgLy8gaGF2
ZSAnaW5pdGlhbCcgdmFsdWUgYW5kIGNhbm5vdCAnaW5oZXJpdCcgZnJvbSBwYXJlbnQuCiAgICAg
ICAgICAgICAvLyBTZWUgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1mb250cy8jZm9udC1m
YW1pbHktZGVzYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGUzOTFiMzkuLmFhNmQ3MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHBhcnNlRmlsbFBvc2l0aW9uWChDU1NQYXJzZXJWYWx1ZUxpc3QqKTsK
ICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxQb3NpdGlvblkoQ1NTUGFyc2VyVmFs
dWVMaXN0Kik7CiAgICAgdm9pZCBwYXJzZUZpbGxQb3NpdGlvbihDU1NQYXJzZXJWYWx1ZUxpc3Qq
LCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIAorCiAgICAgdm9p
ZCBwYXJzZUZpbGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsK
ICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxTaXplKGludCBwcm9wSWQsIGJvb2wg
JmFsbG93Q29tbWEpOwogCkBAIC0yNTYsNiArMjU2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBj
bGVhclByb3BlcnRpZXMoKTsKIAorICAgIHZvaWQgc2V0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0
Kik7CisKICAgICBib29sIG1fc3RyaWN0OwogICAgIGJvb2wgbV9pbXBvcnRhbnQ7CiAgICAgaW50
IG1faWQ7CkBAIC0zMDQsOCArMzA2LDYgQEAgcHVibGljOgogICAgIGludCBsZXgoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIHNldFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopOwotICAgIAogICAg
IHZvaWQgcmVjaGVja0F0S2V5d29yZChjb25zdCBVQ2hhciogc3RyLCBpbnQgbGVuKTsKIAogICAg
IHZvaWQgc2V0dXBQYXJzZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBTdHJpbmcmLCBjb25z
dCBjaGFyKiBzdWZmaXgpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGJvb2wgdmFsaWRVbml0KENTU1BhcnNlclZhbHVlKiwgVW5pdHMsIGJvb2wgc3RyaWN0KTsKIAog
ICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZVF1YWQoVW5pdHMsIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4mKTsKLSAgICAKKwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0
ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShDU1NQYXJzZXJWYWx1ZSopOwogICAgIFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKENTU1BhcnNlclZh
bHVlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAppbmRleCBhMGNkNTc1Li5hZmIyOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xMTk2LDYgKzExOTYsNyBAQCBi
b29sIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Z2V0U3R5bGVBdHRyaWJ1dGVS
YW5nZXMoUmVmUHRyPENTU1N0eWxlUwogCiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiB0ZW1wRGVjbGFyYXRpb24gPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3Jl
YXRlKCk7CiAgICAgQ1NTUGFyc2VyIHA7CisgICAgcC5zZXRTdHlsZVNoZWV0KG1fZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwogICAgIHAucGFyc2VEZWNsYXJhdGlvbih0ZW1w
RGVjbGFyYXRpb24uZ2V0KCksIG1fc3R5bGVUZXh0LCByZXN1bHQpOwogICAgIHJldHVybiB0cnVl
OwogfQo=
</data>
<flag name="review"
          id="109459"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111606</attachid>
            <date>2011-10-19 06:38:22 -0700</date>
            <delta_ts>2011-10-19 06:56:30 -0700</delta_ts>
            <desc>[PATCH] Removed whitespace fixes</desc>
            <filename>bgimage.patch</filename>
            <type>text/plain</type>
            <size>29132</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGUxZDIzZDU1ZmYyZDY4MjUxODM2YTAzOTcyOWMyZTAyMjQxNTY3OGQKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgT2N0IDE4
IDE5OjE2OjQzIDIwMTEgKzA0MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2RkN2QwZi4uMzViYjA0NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEwLTE5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NTIGJhY2tncm91
bmQtaW1hZ2UgYXBwbGllZCBpbmxpbmUgc2hvd3MgYSB3YXJuaW5nLCBidXQgc3RpbGwgd29ya3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDMyNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sOgorCiAyMDExLTEwLTE5ICBZdXpvIEZ1amlz
aGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFRlc3QgZXhwZWN0
YXRpb24gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dAppbmRleCBlMGQ4YmI1Li45NDY4ZDAzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJ
LWV4cGVjdGVkLnR4dApAQCAtODcsNyArODcsOCBAQCBodG1sOiBbXQogc3R5bGUKIHJhdyBzdHls
ZQogWydmb250LXdlaWdodCc6J25vcm1hbCddIEBbMC0yMF0gYWN0aXZlCi1bJ3dpZHRoJzonODUl
J10gQFsyMS0zMV0gYWN0aXZlCitbJ3dpZHRoJzonODUlJ10gQFsyMS0zMl0gYWN0aXZlCitbJ2Jh
Y2tncm91bmQtaW1hZ2UnOid1cmwoYmFyLnBuZyknXSBAWzMzLTYzXSBhY3RpdmUKIAogPT09IEF0
dHJpYnV0ZSBzdHlsZXMgZm9yIHRhYmxlID09PQogQXR0cmlidXRlOiB3aWR0aApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sCmluZGV4IDZkZjBl
ZDAuLmMwMDA5YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLW5ldy1BUEkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxl
cy1uZXctQVBJLmh0bWwKQEAgLTM0OCw3ICszNDgsNyBAQCBib2R5Lm1haW5wYWdlIHsKIDwvc3R5
bGU+CiA8L2hlYWQ+CiAKLTxib2R5IGlkPSJtYWluQm9keSIgY2xhc3M9Im1haW4xIG1haW4yIG1h
aW5wYWdlIiBvbmxvYWQ9InJ1blRlc3QoKSIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7IHdp
ZHRoOiA4NSUiPgorPGJvZHkgaWQ9Im1haW5Cb2R5IiBjbGFzcz0ibWFpbjEgbWFpbjIgbWFpbnBh
Z2UiIG9ubG9hZD0icnVuVGVzdCgpIiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsgd2lkdGg6
IDg1JTsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGJhci5wbmcpIj4KIDxwPgogVGVzdHMgdGhhdCBJ
bnNwZWN0b3JDU1NBZ2VudCBBUEkgbWV0aG9kcyB3b3JrIGFzIGV4cGVjdGVkLgogPC9wPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGQ3NGIxYjUuLmIwYzQ4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAor
MjAxMS0xMC0xOSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IENTUyBiYWNrZ3JvdW5kLWltYWdlIGFwcGxpZWQgaW5saW5l
IHNob3dzIGEgd2FybmluZywgYnV0IHN0aWxsIHdvcmtzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxTaG9y
dGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWlu
Z0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVDaXJjbGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZUVsbGlwc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZVBvbHlnb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZSk6CisgICAgICAgIChXZWJD
b3JlOjpCb3JkZXJJbWFnZVBhcnNlQ29udGV4dDo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZVJlcGVhdCk6CisgICAgICAgIChX
ZWJDb3JlOjpCb3JkZXJJbWFnZVF1YWRQYXJzZUNvbnRleHQ6OmNvbW1pdE51bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlRGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VMaW5lYXJHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZUdyYWRpZW50Q29sb3JTdG9wcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OmlzVmFsaWRGaWx0ZXJBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VMaW5lQm94
Q29udGFpbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVs
ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hl
ZXRGb3JJbmxpbmVTdHlsZTo6Z2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMpOgorCiAyMDExLTEwLTE5
ICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdW1dLMl0gQWRkZWQgbWlzc2luZyBmaWxlcyB0byBidWlsZCBXZWJLaXQyIEVGTApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzMDViMGNmLi44ZDA4OTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcApAQCAtMzY2LDcgKzM2Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBs
ZUxlbmd0aFByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQsIGJvb2wmIGFjY2VwdHNOZWdhdGl2CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKLSAgICBjYXNlIENTU1By
b3BlcnR5UGFkZGluZ1JpZ2h0OiAKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0Ogog
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRMb2dpY2FsV2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6
CkBAIC0zODEsOCArMzgxLDggQEAgc3RhdGljIGlubGluZSBib29sIGlzU2ltcGxlTGVuZ3RoUHJv
cGVydHlJRChpbnQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXYKICAgICBjYXNlIENT
U1Byb3BlcnR5Qm90dG9tOgogICAgIGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW5Cb3R0b206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ6IAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDogCisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpbkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OgogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW5Ub3A6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0SW5kZW50OgpAQCAtNTU0LDcgKzU1NCw4IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlv
biwgY29uc3QKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJlZml4TGVuZ3RoID0gMTU7CiAK
ICAgICBBU1NFUlQoIWRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCkgfHwgZGVjbGFyYXRpb24tPnN0
eWxlc2hlZXQoKS0+aXNDU1NTdHlsZVNoZWV0KCkpOwotICAgIHNldFN0eWxlU2hlZXQoc3RhdGlj
X2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KGRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCkpKTsKKyAgICBp
ZiAoIW1fc3R5bGVTaGVldCkKKyAgICAgICAgc2V0U3R5bGVTaGVldChzdGF0aWNfY2FzdDxDU1NT
dHlsZVNoZWV0Kj4oZGVjbGFyYXRpb24tPnN0eWxlc2hlZXQoKSkpOwogICAgIGlmIChzdHlsZVNv
dXJjZURhdGEpIHsKICAgICAgICAgbV9jdXJyZW50UnVsZURhdGEgPSBDU1NSdWxlU291cmNlRGF0
YTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhLT5zdHlsZVNvdXJjZURhdGEg
PSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOwpAQCAtNjQyLDcgKzY0Myw3IEBAIHZvaWQg
Q1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMoKQogICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0Jl
Zm9yZU1hcmdpbkJveCA9IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTOwogICAgIG1faGFz
Rm9udEZhY2VPbmx5VmFsdWVzID0gZmFsc2U7CiB9Ci0gICAgCisKIHZvaWQgQ1NTUGFyc2VyOjpz
ZXRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiB7CiAgICAgbV9zdHlsZVNo
ZWV0ID0gc3R5bGVTaGVldDsKQEAgLTEyNjAsMTEgKzEyNjEsMTEgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlT
cGVhazogICAgICAgICAgIC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBs
aXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24gfCBpbmhlcml0Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NT
VmFsdWVTcGVsbE91dCB8fCBpZCA9PSBDU1NWYWx1ZURpZ2l0cyAKKyAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNw
ZWxsT3V0IHx8IGlkID09IENTU1ZhbHVlRGlnaXRzCiAgICAgICAgICAgICB8fCBpZCA9PSBDU1NW
YWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vUHVuY3R1YXRpb24pCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgCisKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDogICAgICAgICAgLy8gPGxl
bmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
KCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xNjAyLDcgKzE2MDMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENT
U1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVT
dHJldGNoOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEZs
b3c6Ci0gICAgICAgIC8vIEZJWE1FOiAtd2Via2l0LWZsZXgtZmxvdyB0YWtlcyBhIHNlY29uZCAi
d3JhcCIgdmFsdWUuICAgIAorICAgICAgICAvLyBGSVhNRTogLXdlYmtpdC1mbGV4LWZsb3cgdGFr
ZXMgYSBzZWNvbmQgIndyYXAiIHZhbHVlLgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09
IENTU1ZhbHVlUm93IHx8IGlkID09IENTU1ZhbHVlUm93UmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1
ZUNvbHVtbiB8fCBpZCA9PSBDU1NWYWx1ZUNvbHVtblJldmVyc2U7CiAgICAgICAgIGJyZWFrOwog
I2VuZGlmCkBAIC0yMjQ2LDcgKzIyNDcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsU2hv
cnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVBybwogICAg
ICAgICAgICAgICAgICAgICBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kT3JpZ2luIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2lu
KSAmJiAhcGFyc2VkUHJvcGVydHlbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm
IGJhY2tncm91bmQtb3JpZ2luIHdhc24ndCBwcmVzZW50LCB0aGVuIHJlc2V0IGJhY2tncm91bmQt
Y2xpcCBhbHNvLgogICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKGNsaXBWYWx1
ZSwgQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVJbXBsaWNpdCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlbaV0gPSBmYWxzZTsKICAg
ICAgICAgICAgIH0KQEAgLTMzMzIsNyArMzMzMyw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbigpCiAKICAgICAgICAgcmV0dXJu
IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKG51bVN0ZXBzLCBzdGVwQXRTdGFy
dCk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5j
dGlvbi0+bmFtZSwgImN1YmljLWJlemllcigiKSkgewogICAgICAgICAvLyBGb3IgY3ViaWMgYmV6
aWVyLCA0IHZhbHVlcyBtdXN0IGJlIHNwZWNpZmllZC4KICAgICAgICAgaWYgKCFhcmdzIHx8IGFy
Z3MtPnNpemUoKSAhPSA3KQpAQCAtMzM1Miw3ICszMzUzLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkKIAogICAgICAgICBy
ZXR1cm4gQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoeDEsIHkxLCB4
MiwgeTIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNzA1LDIwICsz
NzA2LDIwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNoYXBlKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hh
cGVSZWN0KENTU1BhcnNlclZhbHVlTGlzdCogYXJncykKIHsKICAgICBBU1NFUlQoYXJncyk7Ci0g
ICAgCisKICAgICAvLyByZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIFtbcnhdLCByeV0pCiAgICAg
aWYgKGFyZ3MtPnNpemUoKSAhPSA3ICYmIGFyZ3MtPnNpemUoKSAhPSA5ICYmIGFyZ3MtPnNpemUo
KSAhPSAxMSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICBSZWZQdHI8Q1NTV3JhcFNo
YXBlUmVjdD4gc2hhcGUgPSBDU1NXcmFwU2hhcGVSZWN0OjpjcmVhdGUoKTsKLSAgICAKKwogICAg
IHVuc2lnbmVkIGFyZ3VtZW50TnVtYmVyID0gMDsKICAgICBDU1NQYXJzZXJWYWx1ZSogYXJndW1l
bnQgPSBhcmdzLT5jdXJyZW50KCk7CiAgICAgd2hpbGUgKGFyZ3VtZW50KSB7CiAgICAgICAgIGlm
ICghdmFsaWRVbml0KGFyZ3VtZW50LCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVu
Z3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVWYWx1ZShhcmd1bWVudC0+ZlZhbHVl
LCAKKworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAg
IChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAg
IEFTU0VSVChhcmd1bWVudE51bWJlciA8IDYpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVt
YmVyKSB7CkBAIC0zNzQ1LDM0ICszNzQ2LDM0IEBAIFBhc3NSZWZQdHI8Q1NTV3JhcFNoYXBlPiBD
U1NQYXJzZXI6OnBhcnNlV3JhcFNoYXBlUmVjdChDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MpCiAg
ICAgICAgIGlmIChhcmd1bWVudCkgewogICAgICAgICAgICAgaWYgKGFyZ3VtZW50LT51bml0ICE9
IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciB8fCBhcmd1bWVudC0+aVZhbHVlICE9ICcsJykKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBhcmd1
bWVudCA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgfQogICAgICAgICBhcmd1bWVudE51bWJlcisr
OwogICAgIH0KLSAgICAKKwogICAgIGlmIChhcmd1bWVudE51bWJlciA8IDQpCi0gICAgICAgIHJl
dHVybiAwOyAgICAKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHNoYXBlOwogfQogCiBQ
YXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZUNpcmNsZShD
U1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MpCiB7CiAgICAgQVNTRVJUKGFyZ3MpOwotICAgIAorCiAg
ICAgLy8gY2lyY2xlKHgsIHksIHIpCiAgICAgaWYgKGFyZ3MtPnNpemUoKSAhPSA1KQogICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgCisKICAgICBSZWZQdHI8Q1NTV3JhcFNoYXBlQ2lyY2xlPiBz
aGFwZSA9IENTU1dyYXBTaGFwZUNpcmNsZTo6Y3JlYXRlKCk7Ci0gICAgCisKICAgICB1bnNpZ25l
ZCBhcmd1bWVudE51bWJlciA9IDA7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIGFyZ3VtZW50ID0gYXJn
cy0+Y3VycmVudCgpOwogICAgIHdoaWxlIChhcmd1bWVudCkgewogICAgICAgICBpZiAoIXZhbGlk
VW5pdChhcmd1bWVudCwgRkxlbmd0aCwgbV9zdHJpY3QpKQogICAgICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsZW5ndGggPSBwcmltaXRpdmVW
YWx1ZUNhY2hlKCktPmNyZWF0ZVZhbHVlKGFyZ3VtZW50LT5mVmFsdWUsIAorICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUoKS0+Y3Jl
YXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAgIChDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAgIEFTU0VSVChhcmd1bWVudE51
bWJlciA8IDMpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVtYmVyKSB7CkBAIC0zNzg2LDM3
ICszNzg3LDM3IEBAIFBhc3NSZWZQdHI8Q1NTV3JhcFNoYXBlPiBDU1NQYXJzZXI6OnBhcnNlV3Jh
cFNoYXBlQ2lyY2xlKENTU1BhcnNlclZhbHVlTGlzdCogYXJnCiAgICAgICAgICAgICBzaGFwZS0+
c2V0UmFkaXVzKGxlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBhcmd1bWVudCA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgaWYgKGFyZ3Vt
ZW50KSB7CiAgICAgICAgICAgICBpZiAoYXJndW1lbnQtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6
Ok9wZXJhdG9yIHx8IGFyZ3VtZW50LT5pVmFsdWUgIT0gJywnKQotICAgICAgICAgICAgICAgIHJl
dHVybiAwOyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
ICAgYXJndW1lbnQgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIH0KICAgICAgICAgYXJndW1lbnRO
dW1iZXIrKzsKICAgICB9Ci0gICAgCisKICAgICBpZiAoYXJndW1lbnROdW1iZXIgPCAzKQotICAg
ICAgICByZXR1cm4gMDsgICAgCisgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzaGFwZTsK
IH0KIAogUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVF
bGxpcHNlKENTU1BhcnNlclZhbHVlTGlzdCogYXJncykKIHsKICAgICBBU1NFUlQoYXJncyk7Ci0g
ICAgCisKICAgICAvLyBlbGxpcHNlKHgsIHksIHJ4LCByeSkKICAgICBpZiAoYXJncy0+c2l6ZSgp
ICE9IDcpCiAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKKwogICAgIFJlZlB0cjxDU1NXcmFw
U2hhcGVFbGxpcHNlPiBzaGFwZSA9IENTU1dyYXBTaGFwZUVsbGlwc2U6OmNyZWF0ZSgpOwogICAg
IHVuc2lnbmVkIGFyZ3VtZW50TnVtYmVyID0gMDsKICAgICBDU1NQYXJzZXJWYWx1ZSogYXJndW1l
bnQgPSBhcmdzLT5jdXJyZW50KCk7CiAgICAgd2hpbGUgKGFyZ3VtZW50KSB7CiAgICAgICAgIGlm
ICghdmFsaWRVbml0KGFyZ3VtZW50LCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVu
Z3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVWYWx1ZShhcmd1bWVudC0+ZlZhbHVl
LCAKKworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAg
IChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAg
IEFTU0VSVChhcmd1bWVudE51bWJlciA8IDQpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVt
YmVyKSB7CkBAIC0zODMzLDcgKzM4MzQsNyBAQCBQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NT
UGFyc2VyOjpwYXJzZVdyYXBTaGFwZUVsbGlwc2UoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcgogICAg
ICAgICAgICAgc2hhcGUtPnNldFJhZGl1c1kobGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGFyZ3VtZW50ID0gYXJncy0+bmV4dCgpOwog
ICAgICAgICBpZiAoYXJndW1lbnQpIHsKICAgICAgICAgICAgIGlmIChhcmd1bWVudC0+dW5pdCAh
PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgfHwgYXJndW1lbnQtPmlWYWx1ZSAhPSAnLCcpCkBA
IC0zODQyLDcgKzM4NDMsNyBAQCBQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NTUGFyc2VyOjpw
YXJzZVdyYXBTaGFwZUVsbGlwc2UoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcgogICAgICAgICB9CiAg
ICAgICAgIGFyZ3VtZW50TnVtYmVyKys7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGFyZ3VtZW50
TnVtYmVyIDwgNCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHNoYXBlOwpAQCAtMzg1
NSw3ICszODU2LDcgQEAgUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VX
cmFwU2hhcGVQb2x5Z29uKENTU1BhcnNlclZhbHVlTGlzdCogYXIKICAgICB1bnNpZ25lZCBzaXpl
ID0gYXJncy0+c2l6ZSgpOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
CisKICAgICBSZWZQdHI8Q1NTV3JhcFNoYXBlUG9seWdvbj4gc2hhcGUgPSBDU1NXcmFwU2hhcGVQ
b2x5Z29uOjpjcmVhdGUoKTsKIAogICAgIENTU1BhcnNlclZhbHVlKiBhcmd1bWVudCA9IGFyZ3Mt
PmN1cnJlbnQoKTsKQEAgLTM4NjksMzQgKzM4NzAsMzQgQEAgUGFzc1JlZlB0cjxDU1NXcmFwU2hh
cGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVQb2x5Z29uKENTU1BhcnNlclZhbHVlTGlzdCog
YXIKICAgICAgICAgYXJndW1lbnQgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIHNpemUgLT0gMjsK
ICAgICB9Ci0gICAgCisKICAgICAvLyA8bGVuZ3RoPiwgPGxlbmd0aD4gLi4uIDxsZW5ndGg+LCA8
bGVuZ3RoPiAtPiBlYWNoIHBhaXIgaGFzIDMgZWxlbWVudHMKICAgICBpZiAoIXNpemUgfHwgKHNp
emUgJSAzKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICBDU1NQYXJzZXJWYWx1ZSog
YXJndW1lbnRYID0gYXJndW1lbnQ7CiAgICAgd2hpbGUgKGFyZ3VtZW50WCkgewogICAgICAgICBp
ZiAoIXZhbGlkVW5pdChhcmd1bWVudFgsIEZMZW5ndGgsIG1fc3RyaWN0KSkKICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICAKKwogICAgICAgICBDU1NQYXJzZXJWYWx1ZSogY29tbWEgPSBh
cmdzLT5uZXh0KCk7CiAgICAgICAgIGlmICghY29tbWEgfHwgY29tbWEtPnVuaXQgIT0gQ1NTUGFy
c2VyVmFsdWU6Ok9wZXJhdG9yIHx8IGNvbW1hLT5pVmFsdWUgIT0gJywnKQogICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIAorCiAgICAgICAgIENTU1BhcnNlclZhbHVlKiBhcmd1bWVudFkg
PSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIGlmICghYXJndW1lbnRZIHx8ICF2YWxpZFVuaXQoYXJn
dW1lbnRZLCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geExlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRYLT5mVmFsdWUsIAorCisgICAgICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geExlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUo
KS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRYLT5mVmFsdWUsCiAgICAgICAgICAgICAoQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlcykgYXJndW1lbnRYLT51bml0KTsKLSAgICAgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiB5TGVuZ3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVW
YWx1ZShhcmd1bWVudFktPmZWYWx1ZSwgCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4geUxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRZ
LT5mVmFsdWUsCiAgICAgICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgYXJn
dW1lbnRZLT51bml0KTsKLSAgICAgICAgCisKICAgICAgICAgc2hhcGUtPmFwcGVuZFBvaW50KHhM
ZW5ndGgucmVsZWFzZSgpLCB5TGVuZ3RoLnJlbGVhc2UoKSk7Ci0gICAgICAgIAorCiAgICAgICAg
IGFyZ3VtZW50WCA9IGFyZ3MtPm5leHQoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gc2hh
cGU7CiB9CiAKQEAgLTM5MDcsOSArMzkwOCw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVdyYXBT
aGFwZShib29sIGltcG9ydGFudCkKIAogICAgIGlmICghYXJncykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAorCiAgICAgUmVmUHRyPENTU1dyYXBTaGFwZT4gc2hhcGU7Ci0gICAgCisKICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAicmVjdCgiKSkK
ICAgICAgICAgc2hhcGUgPSBwYXJzZVdyYXBTaGFwZVJlY3QoYXJncyk7CiAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAiY2lyY2xlKCIpKQpAQCAt
NTEzOSw3ICs1MTQwLDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0IHsKICAgICAs
IG1fYWxsb3dSZXBlYXQodHJ1ZSkKICAgICAsIG1fYWxsb3dTbGFzaChmYWxzZSkKICAgICAsIG1f
cmVxdWlyZVdpZHRoKGZhbHNlKQotICAgICwgbV9yZXF1aXJlT3V0c2V0KGZhbHNlKSAgICAKKyAg
ICAsIG1fcmVxdWlyZU91dHNldChmYWxzZSkKICAgICB7fQogCiAgICAgYm9vbCBjYW5BZHZhbmNl
KCkgY29uc3QgeyByZXR1cm4gbV9jYW5BZHZhbmNlOyB9CkBAIC01MTUzLDcgKzUxNTQsNyBAQCBz
dHJ1Y3QgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogCiAgICAgYm9vbCByZXF1aXJlV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVXaWR0aDsgfQogICAgIGJvb2wgcmVxdWlyZU91dHNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZU91dHNldDsgfQotICAgIAorCiAgICAgdm9pZCBj
b21taXRJbWFnZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZSkKICAgICB7CiAgICAgICAgIG1f
aW1hZ2UgPSBpbWFnZTsKQEAgLTUyMTcsNyArNTIxOCw3IEBAIHN0cnVjdCBCb3JkZXJJbWFnZVBh
cnNlQ29udGV4dCB7CiAgICAgICAgIC8vIE1ha2Ugb3VyIG5ldyBib3JkZXIgaW1hZ2UgdmFsdWUg
bm93LgogICAgICAgICByZXR1cm4gQ1NTQm9yZGVySW1hZ2VWYWx1ZTo6Y3JlYXRlKG1faW1hZ2Us
IG1faW1hZ2VTbGljZSwgbV9ib3JkZXJTbGljZSwgbV9vdXRzZXQsIG1fcmVwZWF0KTsKICAgICB9
Ci0gICAgCisKICAgICBDU1NQcmltaXRpdmVWYWx1ZUNhY2hlKiBtX3ByaW1pdGl2ZVZhbHVlQ2Fj
aGU7CiAKICAgICBib29sIG1fY2FuQWR2YW5jZTsKQEAgLTUyMjcsNyArNTIyOCw3IEBAIHN0cnVj
dCBCb3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAgYm9vbCBtX2FsbG93SW1hZ2VTbGljZTsK
ICAgICBib29sIG1fYWxsb3dSZXBlYXQ7CiAgICAgYm9vbCBtX2FsbG93U2xhc2g7Ci0gICAgCisK
ICAgICBib29sIG1fcmVxdWlyZVdpZHRoOwogICAgIGJvb2wgbV9yZXF1aXJlT3V0c2V0OwogCkBA
IC01MjQ4LDcgKzUyNDksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZShpbnQg
cHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCiAKICAgICAgICAgaWYgKCFjb250ZXh0
LmNhbkFkdmFuY2UoKSAmJiBjb250ZXh0LmFsbG93U2xhc2goKSAmJiB2YWwtPnVuaXQgPT0gQ1NT
UGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbC0+aVZhbHVlID09ICcvJykKICAgICAgICAgICAg
IGNvbnRleHQuY29tbWl0U2xhc2goKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFjb250ZXh0
LmNhbkFkdmFuY2UoKSAmJiBjb250ZXh0LmFsbG93SW1hZ2UoKSkgewogICAgICAgICAgICAgaWYg
KHZhbC0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSAmJiBtX3N0eWxlU2hlZXQp
IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIGNvbXBsZXRlVVJMIGNhbGwgc2hvdWxk
IGJlIGRvbmUgd2hlbiB1c2luZyB0aGUgQ1NTSW1hZ2VWYWx1ZSwKQEAgLTUyNjMsMzQgKzUyNjQs
MzQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVySW1hZ2UoaW50IHByb3BJZCwgUmVmUHRy
PENTU1ZhbHVlPiYgcmVzdWx0KQogICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwtPmlkID09IENT
U1ZhbHVlTm9uZSkKICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdEltYWdlKENTU0ltYWdl
VmFsdWU6OmNyZWF0ZSgpKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoIWNv
bnRleHQuY2FuQWR2YW5jZSgpICYmIGNvbnRleHQuYWxsb3dJbWFnZVNsaWNlKCkpIHsKICAgICAg
ICAgICAgIFJlZlB0cjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+IGltYWdlU2xpY2U7CiAgICAg
ICAgICAgICBpZiAocGFyc2VCb3JkZXJJbWFnZVNsaWNlKHByb3BJZCwgaW1hZ2VTbGljZSkpCiAg
ICAgICAgICAgICAgICAgY29udGV4dC5jb21taXRJbWFnZVNsaWNlKGltYWdlU2xpY2UucmVsZWFz
ZSgpKTsKLSAgICAgICAgfSAKLSAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBpZiAoIWNv
bnRleHQuY2FuQWR2YW5jZSgpICYmIGNvbnRleHQuYWxsb3dSZXBlYXQoKSkgewogICAgICAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQ7CiAgICAgICAgICAgICBpZiAocGFyc2VCb3JkZXJJ
bWFnZVJlcGVhdChyZXBlYXQpKQogICAgICAgICAgICAgICAgIGNvbnRleHQuY29tbWl0UmVwZWF0
KHJlcGVhdCk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFjb250ZXh0LmNh
bkFkdmFuY2UoKSAmJiBjb250ZXh0LnJlcXVpcmVXaWR0aCgpKSB7CiAgICAgICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvcmRlclNsaWNlOwogICAgICAgICAgICAgaWYgKHBhcnNl
Qm9yZGVySW1hZ2VXaWR0aChib3JkZXJTbGljZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC5j
b21taXRCb3JkZXJXaWR0aChib3JkZXJTbGljZS5yZWxlYXNlKCkpOwotICAgICAgICB9IAotICAg
ICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIGlmICghY29udGV4dC5jYW5BZHZhbmNlKCkgJiYg
Y29udGV4dC5yZXF1aXJlT3V0c2V0KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gYm9yZGVyT3V0c2V0OwogICAgICAgICAgICAgaWYgKHBhcnNlQm9yZGVySW1hZ2VP
dXRzZXQoYm9yZGVyT3V0c2V0KSkKICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdEJvcmRl
ck91dHNldChib3JkZXJPdXRzZXQucmVsZWFzZSgpKTsKLSAgICAgICAgfSAKLSAgICAgICAgCisg
ICAgICAgIH0KKwogICAgICAgICBpZiAoIWNvbnRleHQuY2FuQWR2YW5jZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAg
ICAgfQogCkBAIC01MzE3LDcgKzUzMTgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJ
bWFnZVJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCiAgICAgICAgIGZpcnN0VmFsdWUg
PSBwcmltaXRpdmVWYWx1ZUNhY2hlKCktPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWwtPmlkKTsK
ICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHZhbCA9IG1fdmFs
dWVMaXN0LT5uZXh0KCk7CiAgICAgaWYgKHZhbCkgewogICAgICAgICBpZiAoaXNCb3JkZXJJbWFn
ZVJlcGVhdEtleXdvcmQodmFsLT5pZCkpCkBAIC01NDAyLDcgKzU0MDMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIE1ha2Ugb3VyIG5ldyBib3JkZXIgaW1hZ2UgdmFsdWUgbm93LgogICAgICAgICBy
ZXR1cm4gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjcmVhdGUobV9wcmltaXRpdmVWYWx1ZUNh
Y2hlLT5jcmVhdGVWYWx1ZShxdWFkLnJlbGVhc2UoKSksIG1fZmlsbCk7CiAgICAgfQotICAgIAor
CiBwcml2YXRlOgogICAgIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUqIG1fcHJpbWl0aXZlVmFsdWVD
YWNoZTsKIApAQCAtNTQxNCw3ICs1NDE1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IG1fcmlnaHQ7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2Jv
dHRvbTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fbGVmdDsKLSAgICAKKwogICAg
IGJvb2wgbV9maWxsOwogfTsKIApAQCAtNTQ3Myw3ICs1NDc0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgdmFsID0gbV9wcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
di0+aWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YWwgPSBtX3ByaW1pdGl2ZVZhbHVl
Q2FjaGUtPmNyZWF0ZVZhbHVlKHYtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMpdi0+dW5pdCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbV90b3ApCiAgICAgICAgICAg
ICBtX3RvcCA9IHZhbDsKICAgICAgICAgZWxzZSBpZiAoIW1fcmlnaHQpCkBAIC01NTE4LDcgKzU1
MTksNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE1ha2Ugb3VyIG5ldyB2YWx1ZSBub3cuCiAgICAg
ICAgIHJldHVybiBtX3ByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHF1YWQucmVsZWFz
ZSgpKTsKICAgICB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWVDYWNo
ZSogbV9wcmltaXRpdmVWYWx1ZUNhY2hlOwogCkBAIC01Njg1LDExICs1Njg2LDExIEBAIHN0YXRp
YyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZURlcHJlY2F0ZWRHcmFkaWVudFBv
aW50KENTU1BhcnNlclZhbHVlCiB7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1
bHQ7CiAgICAgaWYgKGEtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkgewot
ICAgICAgICBpZiAoKGVxdWFsSWdub3JpbmdDYXNlKGEtPnN0cmluZywgImxlZnQiKSAmJiBob3Jp
em9udGFsKSB8fCAKLSAgICAgICAgICAgIChlcXVhbElnbm9yaW5nQ2FzZShhLT5zdHJpbmcsICJ0
b3AiKSAmJiAhaG9yaXpvbnRhbCkpCisgICAgICAgIGlmICgoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+
c3RyaW5nLCAibGVmdCIpICYmIGhvcml6b250YWwpCisgICAgICAgICAgICB8fCAoZXF1YWxJZ25v
cmluZ0Nhc2UoYS0+c3RyaW5nLCAidG9wIikgJiYgIWhvcml6b250YWwpKQogICAgICAgICAgICAg
cmVzdWx0ID0gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoMC4sIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAgICAgIGVsc2UgaWYgKChlcXVhbElnbm9yaW5n
Q2FzZShhLT5zdHJpbmcsICJyaWdodCIpICYmIGhvcml6b250YWwpIHx8Ci0gICAgICAgICAgICAg
ICAgIChlcXVhbElnbm9yaW5nQ2FzZShhLT5zdHJpbmcsICJib3R0b20iKSAmJiAhaG9yaXpvbnRh
bCkpCisgICAgICAgIGVsc2UgaWYgKChlcXVhbElnbm9yaW5nQ2FzZShhLT5zdHJpbmcsICJyaWdo
dCIpICYmIGhvcml6b250YWwpCisgICAgICAgICAgICB8fCAoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+
c3RyaW5nLCAiYm90dG9tIikgJiYgIWhvcml6b250YWwpKQogICAgICAgICAgICAgcmVzdWx0ID0g
cHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoMTAwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+
c3RyaW5nLCAiY2VudGVyIikpCiAgICAgICAgICAgICByZXN1bHQgPSBwcmltaXRpdmVWYWx1ZUNh
Y2hlLT5jcmVhdGVWYWx1ZSg1MC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7
CkBAIC01NzEyLDggKzU3MTMsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZURlcHJlY2F0ZWRHcmFkaWVu
dENvbG9yU3RvcChDU1NQYXJzZXIqIHAsIENTU1BhcnNlclZhbHVlKiBhLCBDUwogICAgIGlmICgh
YXJncykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGEtPmZ1bmN0aW9uLT5uYW1lLCAiZnJvbSgiKSB8fCAKLSAgICAgICAgZXF1YWxJZ25vcmluZ0Nh
c2UoYS0+ZnVuY3Rpb24tPm5hbWUsICJ0bygiKSkgeworICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShhLT5mdW5jdGlvbi0+bmFtZSwgImZyb20oIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UoYS0+ZnVuY3Rpb24tPm5hbWUsICJ0bygiKSkgewogICAgICAgICAvLyBUaGUgImZyb20iIGFu
ZCAidG8iIHN0b3BzIGV4cGVjdCAxIGFyZ3VtZW50LgogICAgICAgICBpZiAoYXJncy0+c2l6ZSgp
ICE9IDEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTI0LDcgKzU5MjUsNyBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VHcmFkaWVudENvbG9yT3JL
ZXl3b3JkKENTU1BhcnNlciogcCwgQwogYm9vbCBDU1NQYXJzZXI6OnBhcnNlTGluZWFyR3JhZGll
bnQoUmVmUHRyPENTU1ZhbHVlPiYgZ3JhZGllbnQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGlu
ZykKIHsKICAgICBSZWZQdHI8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZyk7Ci0gICAgCisKICAgICAvLyBXYWxr
IHRoZSBhcmd1bWVudHMuCiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gbV92YWx1ZUxp
c3QtPmN1cnJlbnQoKS0+ZnVuY3Rpb24tPmFyZ3MuZ2V0KCk7CiAgICAgaWYgKCFhcmdzIHx8ICFh
cmdzLT5zaXplKCkpCkBAIC01OTM4LDEzICs1OTM5LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUxpbmVhckdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJl
cGVhCiAgICAgLy8gTG9vayBmb3IgYW5nbGUuCiAgICAgaWYgKHZhbGlkVW5pdChhLCBGQW5nbGUs
IHRydWUpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0QW5nbGUoY3JlYXRlUHJpbWl0aXZlTnVtZXJp
Y1ZhbHVlKGEpKTsKLSAgICAgICAgCisKICAgICAgICAgYSA9IGFyZ3MtPm5leHQoKTsKICAgICAg
ICAgZXhwZWN0Q29tbWEgPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIExvb2sgb25l
IG9yIHR3byBvcHRpb25hbCBrZXl3b3JkcyB0aGF0IGluZGljYXRlIGEgc2lkZSBvciBjb3JuZXIu
CiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3RhcnRYLCBzdGFydFk7Ci0gICAg
ICAgIAorCiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbG9jYXRpb247CiAgICAg
ICAgIGJvb2wgaXNIb3Jpem9udGFsID0gZmFsc2U7CiAgICAgICAgIGlmICgobG9jYXRpb24gPSB2
YWx1ZUZyb21TaWRlS2V5d29yZChhLCBpc0hvcml6b250YWwsIHByaW1pdGl2ZVZhbHVlQ2FjaGUo
KSkpKSB7CkBAIC01OTUyLDcgKzU5NTMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VMaW5lYXJH
cmFkaWVudChSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYQogICAg
ICAgICAgICAgICAgIHN0YXJ0WCA9IGxvY2F0aW9uOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIHN0YXJ0WSA9IGxvY2F0aW9uOwotICAgICAgICAgICAgCisKICAgICAgICAgICAg
IGEgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAg
IGlmICgobG9jYXRpb24gPSB2YWx1ZUZyb21TaWRlS2V5d29yZChhLCBpc0hvcml6b250YWwsIHBy
aW1pdGl2ZVZhbHVlQ2FjaGUoKSkpKSB7CkBAIC01OTcyLDEwICs1OTczLDEwIEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZUxpbmVhckdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBD
U1NHcmFkaWVudFJlcGVhCiAKICAgICAgICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsKICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoIXN0YXJ0WCAmJiAhc3RhcnRZKQogICAgICAg
ICAgICAgc3RhcnRZID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVUb3ApOwotICAgICAgICAgICAgCisKICAgICAgICAgcmVzdWx0LT5zZXRGaXJz
dFgoc3RhcnRYLnJlbGVhc2UoKSk7CiAgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKHN0YXJ0WS5y
ZWxlYXNlKCkpOwogICAgIH0KQEAgLTU5OTQsNyArNTk5NSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUxpbmVhckdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVu
dFJlcGVhCiBib29sIENTU1BhcnNlcjo6cGFyc2VSYWRpYWxHcmFkaWVudChSZWZQdHI8Q1NTVmFs
dWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewogICAgIFJlZlB0
cjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVl
OjpjcmVhdGUocmVwZWF0aW5nKTsKLSAgICAKKwogICAgIC8vIFdhbGsgdGhlIGFyZ3VtZW50cy4K
ICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5m
dW5jdGlvbi0+YXJncy5nZXQoKTsKICAgICBpZiAoIWFyZ3MgfHwgIWFyZ3MtPnNpemUoKSkKQEAg
LTYwMTQsNyArNjAxNSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KFJl
ZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJlcGVhCiAgICAgYSA9IGFyZ3Mt
PmN1cnJlbnQoKTsKICAgICBpZiAoIWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwog
ICAgIGlmIChjZW50ZXJYIHx8IGNlbnRlclkpIHsKICAgICAgICAgLy8gQ29tbWEKICAgICAgICAg
aWYgKGEtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yIHx8IGEtPmlWYWx1ZSAhPSAn
LCcpCkBAIC02MDI0LDcgKzYwMjUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VSYWRpYWxHcmFk
aWVudChSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYQogICAgICAg
ICBpZiAoIWEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAg
QVNTRVJUKCFjZW50ZXJYIHx8IGNlbnRlclgtPmlzUHJpbWl0aXZlVmFsdWUoKSk7CiAgICAgQVNT
RVJUKCFjZW50ZXJZIHx8IGNlbnRlclktPmlzUHJpbWl0aXZlVmFsdWUoKSk7CiAKQEAgLTYwMzMs
NyArNjAzNCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KFJlZlB0cjxD
U1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJlcGVhCiAgICAgLy8gQ1NTMyByYWRpYWwg
Z3JhZGllbnRzIGFsd2F5cyBzaGFyZSB0aGUgc2FtZSBzdGFydCBhbmQgZW5kIHBvaW50LgogICAg
IHJlc3VsdC0+c2V0Rmlyc3RZKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY2VudGVy
WS5nZXQoKSkpOwogICAgIHJlc3VsdC0+c2V0U2Vjb25kWShzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KGNlbnRlclkuZ2V0KCkpKTsKLSAgICAKKwogICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gc2hhcGVWYWx1ZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNpemVW
YWx1ZTsKIApAQCAtNjA0MSw3ICs2MDQyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaWFs
R3JhZGllbnQoUmVmUHRyPENTU1ZhbHVlPiYgZ3JhZGllbnQsIENTU0dyYWRpZW50UmVwZWEKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDI7ICsraSkgewogICAgICAgICBpZiAoYS0+dW5pdCAhPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgCisK
ICAgICAgICAgYm9vbCBmb3VuZFZhbHVlID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaCAoYS0+aWQp
IHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUNpcmNsZToKQEAgLTYwNjgsMTAgKzYwNjksMTAgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQoUmVmUHRyPENTU1ZhbHVlPiYgZ3Jh
ZGllbnQsIENTU0dyYWRpZW50UmVwZWEKICAgICAgICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsK
ICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJlc3VsdC0+c2V0U2hhcGUoc2hhcGVWYWx1
ZSk7CiAgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihzaXplVmFsdWUpOwotICAgIAorCiAg
ICAgLy8gT3IsIHR3byBsZW5ndGhzIG9yIHBlcmNlbnRhZ2VzCiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBob3Jpem9udGFsU2l6ZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZlcnRpY2FsU2l6ZTsKQEAgLTYwOTksNyArNjEwMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVJhZGlhbEdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJl
cGVhCiAgICAgLy8gTXVzdCBoYXZlIG5laXRoZXIgb3IgYm90aC4KICAgICBpZiAoIWhvcml6b250
YWxTaXplICE9ICF2ZXJ0aWNhbFNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwog
ICAgIHJlc3VsdC0+c2V0RW5kSG9yaXpvbnRhbFNpemUoaG9yaXpvbnRhbFNpemUpOwogICAgIHJl
c3VsdC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CiAKQEAgLTYxMzksNyArNjE0
MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyYWRpZW50Q29sb3JTdG9wcyhDU1NQYXJzZXJW
YWx1ZUxpc3QqIHZhbHVlTGlzdCwgQ1NTR3JhZGllCiAgICAgICAgICAgICAgICAgYSA9IHZhbHVl
TGlzdC0+bmV4dCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIGdyYWRpZW50LT5hZGRTdG9wKHN0b3ApOwogICAgICAgICBleHBlY3RDb21tYSA9IHRydWU7
CiAgICAgfQpAQCAtNjQxNyw3ICs2NDE4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OmlzVmFsaWRGaWx0
ZXJBcmd1bWVudChDU1NQYXJzZXJWYWx1ZSogYXJndW1lbnQsIFdlYktpdENTU0ZpbHRlclYKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IGVsc2UgaWYgKCF2YWxpZFVuaXQoYXJndW1l
bnQsIEZOdW1iZXIsIHRydWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAv
LyBDaGVjayBwYXJhbWV0ZXIgdmFsdWVzLgogICAgIGlmIChmaWx0ZXJUeXBlID09IFdlYktpdENT
U0ZpbHRlclZhbHVlOjpHcmF5c2NhbGVGaWx0ZXJPcGVyYXRpb24KICAgICAgICAgfHwgZmlsdGVy
VHlwZSA9PSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6U2VwaWFGaWx0ZXJPcGVyYXRpb24KQEAgLTY0
NjYsMTIgKzY0NjcsMTIgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFy
c2VGaWx0ZXIoKQogICAgICAgICAgICAgUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiByZWZl
cmVuY2VGaWx0ZXJWYWx1ZSA9IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjcmVhdGUoV2ViS2l0Q1NT
RmlsdGVyVmFsdWU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQocmVmZXJlbmNlRmlsdGVyVmFsdWUpOwogICAgICAgICAgICAgcmVmZXJlbmNlRmls
dGVyVmFsdWUtPmFwcGVuZChwcmltaXRpdmVWYWx1ZUNhY2hlKCktPmNyZWF0ZVZhbHVlKHZhbHVl
LT5zdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Ci0gICAgICAgIH0gZWxz
ZSB7ICAgICAgICAKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnN0IENTU1BhcnNl
clN0cmluZyBuYW1lID0gdmFsdWUtPmZ1bmN0aW9uLT5uYW1lOwogICAgICAgICAgICAgdW5zaWdu
ZWQgbWF4aW11bUFyZ3VtZW50Q291bnQgPSAxOwogCiAgICAgICAgICAgICBmaWx0ZXJJbmZvRm9y
TmFtZShuYW1lLCBmaWx0ZXJUeXBlLCBtYXhpbXVtQXJndW1lbnRDb3VudCk7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICAgICAgaWYgKGZpbHRlclR5cGUgPT0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6
OlVua25vd25GaWx0ZXJPcGVyYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAg
LTY0ODIsNyArNjQ4Myw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBh
cnNlRmlsdGVyKCkKICAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgbmV3IFdlYktpdENTU0ZpbHRl
clZhbHVlIGZvciB0aGlzIG9wZXJhdGlvbiBhbmQgYWRkIGl0IHRvIG91ciBsaXN0LgogICAgICAg
ICAgICAgUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBmaWx0ZXJWYWx1ZSA9IFdlYktpdENT
U0ZpbHRlclZhbHVlOjpjcmVhdGUoZmlsdGVyVHlwZSk7CiAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoZmlsdGVyVmFsdWUpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIENTU1BhcnNlclZh
bHVlKiBhcmd1bWVudCA9IGFyZ3MtPmN1cnJlbnQoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGFy
Z3VtZW50Q291bnQgPSAwOwogCkBAIC02NzM3LDcgKzY3MzgsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VMaW5lQm94Q29udGFpbihib29sIGltcG9ydGFudCkKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFsaW5lQm94Q29u
dGFpbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03MjUxLDcgKzcyNTIsNyBAQCBDU1NS
dWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiAgICAgICAgICAgICBwcm9wZXJ0
eS0+bV92YWx1ZSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHByb3BlcnR5LT52YWx1ZSgpKS0+YXBw
ZW5kKHZhbHVlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTUHJvcGVy
dHlGb250RmFtaWx5ICYmICghcHJvcGVydHktPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgfHwgc3Rh
dGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4ocHJvcGVydHktPnZhbHVlKCkpLT5sZW5ndGgoKSAhPSAx
KSkgewotICAgICAgICAgICAgLy8gVW5saWtlIGZvbnQtZmFtaWx5IHByb3BlcnR5LCBmb250LWZh
bWlseSBkZXNjcmlwdG9yIGluIEBmb250LWZhY2UgcnVsZSAKKyAgICAgICAgICAgIC8vIFVubGlr
ZSBmb250LWZhbWlseSBwcm9wZXJ0eSwgZm9udC1mYW1pbHkgZGVzY3JpcHRvciBpbiBAZm9udC1m
YWNlIHJ1bGUKICAgICAgICAgICAgIC8vIGhhcyB0byBiZSBhIHZhbHVlIGxpc3Qgd2l0aCBleGFj
dGx5IG9uZSBmYW1pbHkgbmFtZS4gSXQgY2Fubm90IGhhdmUgYQogICAgICAgICAgICAgLy8gaGF2
ZSAnaW5pdGlhbCcgdmFsdWUgYW5kIGNhbm5vdCAnaW5oZXJpdCcgZnJvbSBwYXJlbnQuCiAgICAg
ICAgICAgICAvLyBTZWUgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1mb250cy8jZm9udC1m
YW1pbHktZGVzYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGUzOTFiMzkuLmFhNmQ3MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHBhcnNlRmlsbFBvc2l0aW9uWChDU1NQYXJzZXJWYWx1ZUxpc3QqKTsK
ICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxQb3NpdGlvblkoQ1NTUGFyc2VyVmFs
dWVMaXN0Kik7CiAgICAgdm9pZCBwYXJzZUZpbGxQb3NpdGlvbihDU1NQYXJzZXJWYWx1ZUxpc3Qq
LCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIAorCiAgICAgdm9p
ZCBwYXJzZUZpbGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsK
ICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxTaXplKGludCBwcm9wSWQsIGJvb2wg
JmFsbG93Q29tbWEpOwogCkBAIC0yNTYsNiArMjU2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBj
bGVhclByb3BlcnRpZXMoKTsKIAorICAgIHZvaWQgc2V0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0
Kik7CisKICAgICBib29sIG1fc3RyaWN0OwogICAgIGJvb2wgbV9pbXBvcnRhbnQ7CiAgICAgaW50
IG1faWQ7CkBAIC0zMDQsOCArMzA2LDYgQEAgcHVibGljOgogICAgIGludCBsZXgoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIHNldFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopOwotICAgIAogICAg
IHZvaWQgcmVjaGVja0F0S2V5d29yZChjb25zdCBVQ2hhciogc3RyLCBpbnQgbGVuKTsKIAogICAg
IHZvaWQgc2V0dXBQYXJzZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBTdHJpbmcmLCBjb25z
dCBjaGFyKiBzdWZmaXgpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGJvb2wgdmFsaWRVbml0KENTU1BhcnNlclZhbHVlKiwgVW5pdHMsIGJvb2wgc3RyaWN0KTsKIAog
ICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZVF1YWQoVW5pdHMsIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4mKTsKLSAgICAKKwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0
ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShDU1NQYXJzZXJWYWx1ZSopOwogICAgIFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKENTU1BhcnNlclZh
bHVlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAppbmRleCBhMGNkNTc1Li5hZmIyOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xMTk2LDYgKzExOTYsNyBAQCBi
b29sIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Z2V0U3R5bGVBdHRyaWJ1dGVS
YW5nZXMoUmVmUHRyPENTU1N0eWxlUwogCiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiB0ZW1wRGVjbGFyYXRpb24gPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3Jl
YXRlKCk7CiAgICAgQ1NTUGFyc2VyIHA7CisgICAgcC5zZXRTdHlsZVNoZWV0KG1fZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwogICAgIHAucGFyc2VEZWNsYXJhdGlvbih0ZW1w
RGVjbGFyYXRpb24uZ2V0KCksIG1fc3R5bGVUZXh0LCByZXN1bHQpOwogICAgIHJldHVybiB0cnVl
OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111608</attachid>
            <date>2011-10-19 06:56:30 -0700</date>
            <delta_ts>2011-10-19 07:13:49 -0700</delta_ts>
            <desc>[PATCH] Retry attachment for bots (they should have caught up with the previous commit)</desc>
            <filename>bgimage.patch</filename>
            <type>text/plain</type>
            <size>29132</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGUxZDIzZDU1ZmYyZDY4MjUxODM2YTAzOTcyOWMyZTAyMjQxNTY3OGQKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgT2N0IDE4
IDE5OjE2OjQzIDIwMTEgKzA0MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2RkN2QwZi4uMzViYjA0NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEwLTE5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NTIGJhY2tncm91
bmQtaW1hZ2UgYXBwbGllZCBpbmxpbmUgc2hvd3MgYSB3YXJuaW5nLCBidXQgc3RpbGwgd29ya3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDMyNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sOgorCiAyMDExLTEwLTE5ICBZdXpvIEZ1amlz
aGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFRlc3QgZXhwZWN0
YXRpb24gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9z
dHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3N0eWxlcy1uZXctQVBJLWV4cGVjdGVkLnR4dAppbmRleCBlMGQ4YmI1Li45NDY4ZDAzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJ
LWV4cGVjdGVkLnR4dApAQCAtODcsNyArODcsOCBAQCBodG1sOiBbXQogc3R5bGUKIHJhdyBzdHls
ZQogWydmb250LXdlaWdodCc6J25vcm1hbCddIEBbMC0yMF0gYWN0aXZlCi1bJ3dpZHRoJzonODUl
J10gQFsyMS0zMV0gYWN0aXZlCitbJ3dpZHRoJzonODUlJ10gQFsyMS0zMl0gYWN0aXZlCitbJ2Jh
Y2tncm91bmQtaW1hZ2UnOid1cmwoYmFyLnBuZyknXSBAWzMzLTYzXSBhY3RpdmUKIAogPT09IEF0
dHJpYnV0ZSBzdHlsZXMgZm9yIHRhYmxlID09PQogQXR0cmlidXRlOiB3aWR0aApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sCmluZGV4IDZkZjBl
ZDAuLmMwMDA5YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLW5ldy1BUEkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxl
cy1uZXctQVBJLmh0bWwKQEAgLTM0OCw3ICszNDgsNyBAQCBib2R5Lm1haW5wYWdlIHsKIDwvc3R5
bGU+CiA8L2hlYWQ+CiAKLTxib2R5IGlkPSJtYWluQm9keSIgY2xhc3M9Im1haW4xIG1haW4yIG1h
aW5wYWdlIiBvbmxvYWQ9InJ1blRlc3QoKSIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7IHdp
ZHRoOiA4NSUiPgorPGJvZHkgaWQ9Im1haW5Cb2R5IiBjbGFzcz0ibWFpbjEgbWFpbjIgbWFpbnBh
Z2UiIG9ubG9hZD0icnVuVGVzdCgpIiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsgd2lkdGg6
IDg1JTsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGJhci5wbmcpIj4KIDxwPgogVGVzdHMgdGhhdCBJ
bnNwZWN0b3JDU1NBZ2VudCBBUEkgbWV0aG9kcyB3b3JrIGFzIGV4cGVjdGVkLgogPC9wPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGQ3NGIxYjUuLmIwYzQ4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAor
MjAxMS0xMC0xOSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IENTUyBiYWNrZ3JvdW5kLWltYWdlIGFwcGxpZWQgaW5saW5l
IHNob3dzIGEgd2FybmluZywgYnV0IHN0aWxsIHdvcmtzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxTaG9y
dGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWlu
Z0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVDaXJjbGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZUVsbGlwc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZVBvbHlnb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZSk6CisgICAgICAgIChXZWJD
b3JlOjpCb3JkZXJJbWFnZVBhcnNlQ29udGV4dDo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZVJlcGVhdCk6CisgICAgICAgIChX
ZWJDb3JlOjpCb3JkZXJJbWFnZVF1YWRQYXJzZUNvbnRleHQ6OmNvbW1pdE51bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlRGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VMaW5lYXJHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZUdyYWRpZW50Q29sb3JTdG9wcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OmlzVmFsaWRGaWx0ZXJBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VMaW5lQm94
Q29udGFpbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVs
ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hl
ZXRGb3JJbmxpbmVTdHlsZTo6Z2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMpOgorCiAyMDExLTEwLTE5
ICBUb21hc3ogTW9yYXdza2kgIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdW1dLMl0gQWRkZWQgbWlzc2luZyBmaWxlcyB0byBidWlsZCBXZWJLaXQyIEVGTApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAppbmRleCAzMDViMGNmLi44ZDA4OTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcApAQCAtMzY2LDcgKzM2Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBs
ZUxlbmd0aFByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQsIGJvb2wmIGFjY2VwdHNOZWdhdGl2CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKLSAgICBjYXNlIENTU1By
b3BlcnR5UGFkZGluZ1JpZ2h0OiAKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0Ogog
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRMb2dpY2FsV2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6
CkBAIC0zODEsOCArMzgxLDggQEAgc3RhdGljIGlubGluZSBib29sIGlzU2ltcGxlTGVuZ3RoUHJv
cGVydHlJRChpbnQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXYKICAgICBjYXNlIENT
U1Byb3BlcnR5Qm90dG9tOgogICAgIGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW5Cb3R0b206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ6IAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDogCisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpbkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OgogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW5Ub3A6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0SW5kZW50OgpAQCAtNTU0LDcgKzU1NCw4IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlv
biwgY29uc3QKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJlZml4TGVuZ3RoID0gMTU7CiAK
ICAgICBBU1NFUlQoIWRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCkgfHwgZGVjbGFyYXRpb24tPnN0
eWxlc2hlZXQoKS0+aXNDU1NTdHlsZVNoZWV0KCkpOwotICAgIHNldFN0eWxlU2hlZXQoc3RhdGlj
X2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KGRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCkpKTsKKyAgICBp
ZiAoIW1fc3R5bGVTaGVldCkKKyAgICAgICAgc2V0U3R5bGVTaGVldChzdGF0aWNfY2FzdDxDU1NT
dHlsZVNoZWV0Kj4oZGVjbGFyYXRpb24tPnN0eWxlc2hlZXQoKSkpOwogICAgIGlmIChzdHlsZVNv
dXJjZURhdGEpIHsKICAgICAgICAgbV9jdXJyZW50UnVsZURhdGEgPSBDU1NSdWxlU291cmNlRGF0
YTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhLT5zdHlsZVNvdXJjZURhdGEg
PSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOwpAQCAtNjQyLDcgKzY0Myw3IEBAIHZvaWQg
Q1NTUGFyc2VyOjpjbGVhclByb3BlcnRpZXMoKQogICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0Jl
Zm9yZU1hcmdpbkJveCA9IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTOwogICAgIG1faGFz
Rm9udEZhY2VPbmx5VmFsdWVzID0gZmFsc2U7CiB9Ci0gICAgCisKIHZvaWQgQ1NTUGFyc2VyOjpz
ZXRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiB7CiAgICAgbV9zdHlsZVNo
ZWV0ID0gc3R5bGVTaGVldDsKQEAgLTEyNjAsMTEgKzEyNjEsMTEgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlT
cGVhazogICAgICAgICAgIC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBs
aXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24gfCBpbmhlcml0Ci0gICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NT
VmFsdWVTcGVsbE91dCB8fCBpZCA9PSBDU1NWYWx1ZURpZ2l0cyAKKyAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNw
ZWxsT3V0IHx8IGlkID09IENTU1ZhbHVlRGlnaXRzCiAgICAgICAgICAgICB8fCBpZCA9PSBDU1NW
YWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vUHVuY3R1YXRpb24pCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgCisKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDogICAgICAgICAgLy8gPGxl
bmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
KCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xNjAyLDcgKzE2MDMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENT
U1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVT
dHJldGNoOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEZs
b3c6Ci0gICAgICAgIC8vIEZJWE1FOiAtd2Via2l0LWZsZXgtZmxvdyB0YWtlcyBhIHNlY29uZCAi
d3JhcCIgdmFsdWUuICAgIAorICAgICAgICAvLyBGSVhNRTogLXdlYmtpdC1mbGV4LWZsb3cgdGFr
ZXMgYSBzZWNvbmQgIndyYXAiIHZhbHVlLgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09
IENTU1ZhbHVlUm93IHx8IGlkID09IENTU1ZhbHVlUm93UmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1
ZUNvbHVtbiB8fCBpZCA9PSBDU1NWYWx1ZUNvbHVtblJldmVyc2U7CiAgICAgICAgIGJyZWFrOwog
I2VuZGlmCkBAIC0yMjQ2LDcgKzIyNDcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsU2hv
cnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVBybwogICAg
ICAgICAgICAgICAgICAgICBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kT3JpZ2luIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2lu
KSAmJiAhcGFyc2VkUHJvcGVydHlbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm
IGJhY2tncm91bmQtb3JpZ2luIHdhc24ndCBwcmVzZW50LCB0aGVuIHJlc2V0IGJhY2tncm91bmQt
Y2xpcCBhbHNvLgogICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKGNsaXBWYWx1
ZSwgQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVJbXBsaWNpdCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlbaV0gPSBmYWxzZTsKICAg
ICAgICAgICAgIH0KQEAgLTMzMzIsNyArMzMzMyw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbigpCiAKICAgICAgICAgcmV0dXJu
IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKG51bVN0ZXBzLCBzdGVwQXRTdGFy
dCk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5j
dGlvbi0+bmFtZSwgImN1YmljLWJlemllcigiKSkgewogICAgICAgICAvLyBGb3IgY3ViaWMgYmV6
aWVyLCA0IHZhbHVlcyBtdXN0IGJlIHNwZWNpZmllZC4KICAgICAgICAgaWYgKCFhcmdzIHx8IGFy
Z3MtPnNpemUoKSAhPSA3KQpAQCAtMzM1Miw3ICszMzUzLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkKIAogICAgICAgICBy
ZXR1cm4gQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoeDEsIHkxLCB4
MiwgeTIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNzA1LDIwICsz
NzA2LDIwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNoYXBlKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hh
cGVSZWN0KENTU1BhcnNlclZhbHVlTGlzdCogYXJncykKIHsKICAgICBBU1NFUlQoYXJncyk7Ci0g
ICAgCisKICAgICAvLyByZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIFtbcnhdLCByeV0pCiAgICAg
aWYgKGFyZ3MtPnNpemUoKSAhPSA3ICYmIGFyZ3MtPnNpemUoKSAhPSA5ICYmIGFyZ3MtPnNpemUo
KSAhPSAxMSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICBSZWZQdHI8Q1NTV3JhcFNo
YXBlUmVjdD4gc2hhcGUgPSBDU1NXcmFwU2hhcGVSZWN0OjpjcmVhdGUoKTsKLSAgICAKKwogICAg
IHVuc2lnbmVkIGFyZ3VtZW50TnVtYmVyID0gMDsKICAgICBDU1NQYXJzZXJWYWx1ZSogYXJndW1l
bnQgPSBhcmdzLT5jdXJyZW50KCk7CiAgICAgd2hpbGUgKGFyZ3VtZW50KSB7CiAgICAgICAgIGlm
ICghdmFsaWRVbml0KGFyZ3VtZW50LCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVu
Z3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVWYWx1ZShhcmd1bWVudC0+ZlZhbHVl
LCAKKworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAg
IChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAg
IEFTU0VSVChhcmd1bWVudE51bWJlciA8IDYpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVt
YmVyKSB7CkBAIC0zNzQ1LDM0ICszNzQ2LDM0IEBAIFBhc3NSZWZQdHI8Q1NTV3JhcFNoYXBlPiBD
U1NQYXJzZXI6OnBhcnNlV3JhcFNoYXBlUmVjdChDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MpCiAg
ICAgICAgIGlmIChhcmd1bWVudCkgewogICAgICAgICAgICAgaWYgKGFyZ3VtZW50LT51bml0ICE9
IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciB8fCBhcmd1bWVudC0+aVZhbHVlICE9ICcsJykKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBhcmd1
bWVudCA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgfQogICAgICAgICBhcmd1bWVudE51bWJlcisr
OwogICAgIH0KLSAgICAKKwogICAgIGlmIChhcmd1bWVudE51bWJlciA8IDQpCi0gICAgICAgIHJl
dHVybiAwOyAgICAKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHNoYXBlOwogfQogCiBQ
YXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZVdyYXBTaGFwZUNpcmNsZShD
U1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MpCiB7CiAgICAgQVNTRVJUKGFyZ3MpOwotICAgIAorCiAg
ICAgLy8gY2lyY2xlKHgsIHksIHIpCiAgICAgaWYgKGFyZ3MtPnNpemUoKSAhPSA1KQogICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgCisKICAgICBSZWZQdHI8Q1NTV3JhcFNoYXBlQ2lyY2xlPiBz
aGFwZSA9IENTU1dyYXBTaGFwZUNpcmNsZTo6Y3JlYXRlKCk7Ci0gICAgCisKICAgICB1bnNpZ25l
ZCBhcmd1bWVudE51bWJlciA9IDA7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIGFyZ3VtZW50ID0gYXJn
cy0+Y3VycmVudCgpOwogICAgIHdoaWxlIChhcmd1bWVudCkgewogICAgICAgICBpZiAoIXZhbGlk
VW5pdChhcmd1bWVudCwgRkxlbmd0aCwgbV9zdHJpY3QpKQogICAgICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsZW5ndGggPSBwcmltaXRpdmVW
YWx1ZUNhY2hlKCktPmNyZWF0ZVZhbHVlKGFyZ3VtZW50LT5mVmFsdWUsIAorICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUoKS0+Y3Jl
YXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAgIChDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAgIEFTU0VSVChhcmd1bWVudE51
bWJlciA8IDMpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVtYmVyKSB7CkBAIC0zNzg2LDM3
ICszNzg3LDM3IEBAIFBhc3NSZWZQdHI8Q1NTV3JhcFNoYXBlPiBDU1NQYXJzZXI6OnBhcnNlV3Jh
cFNoYXBlQ2lyY2xlKENTU1BhcnNlclZhbHVlTGlzdCogYXJnCiAgICAgICAgICAgICBzaGFwZS0+
c2V0UmFkaXVzKGxlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBhcmd1bWVudCA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgaWYgKGFyZ3Vt
ZW50KSB7CiAgICAgICAgICAgICBpZiAoYXJndW1lbnQtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6
Ok9wZXJhdG9yIHx8IGFyZ3VtZW50LT5pVmFsdWUgIT0gJywnKQotICAgICAgICAgICAgICAgIHJl
dHVybiAwOyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
ICAgYXJndW1lbnQgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIH0KICAgICAgICAgYXJndW1lbnRO
dW1iZXIrKzsKICAgICB9Ci0gICAgCisKICAgICBpZiAoYXJndW1lbnROdW1iZXIgPCAzKQotICAg
ICAgICByZXR1cm4gMDsgICAgCisgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzaGFwZTsK
IH0KIAogUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVF
bGxpcHNlKENTU1BhcnNlclZhbHVlTGlzdCogYXJncykKIHsKICAgICBBU1NFUlQoYXJncyk7Ci0g
ICAgCisKICAgICAvLyBlbGxpcHNlKHgsIHksIHJ4LCByeSkKICAgICBpZiAoYXJncy0+c2l6ZSgp
ICE9IDcpCiAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKKwogICAgIFJlZlB0cjxDU1NXcmFw
U2hhcGVFbGxpcHNlPiBzaGFwZSA9IENTU1dyYXBTaGFwZUVsbGlwc2U6OmNyZWF0ZSgpOwogICAg
IHVuc2lnbmVkIGFyZ3VtZW50TnVtYmVyID0gMDsKICAgICBDU1NQYXJzZXJWYWx1ZSogYXJndW1l
bnQgPSBhcmdzLT5jdXJyZW50KCk7CiAgICAgd2hpbGUgKGFyZ3VtZW50KSB7CiAgICAgICAgIGlm
ICghdmFsaWRVbml0KGFyZ3VtZW50LCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGVu
Z3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVWYWx1ZShhcmd1bWVudC0+ZlZhbHVl
LCAKKworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnQtPmZWYWx1ZSwKICAgICAgICAgICAg
IChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSBhcmd1bWVudC0+dW5pdCk7CiAgICAgICAg
IEFTU0VSVChhcmd1bWVudE51bWJlciA8IDQpOwogICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50TnVt
YmVyKSB7CkBAIC0zODMzLDcgKzM4MzQsNyBAQCBQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NT
UGFyc2VyOjpwYXJzZVdyYXBTaGFwZUVsbGlwc2UoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcgogICAg
ICAgICAgICAgc2hhcGUtPnNldFJhZGl1c1kobGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGFyZ3VtZW50ID0gYXJncy0+bmV4dCgpOwog
ICAgICAgICBpZiAoYXJndW1lbnQpIHsKICAgICAgICAgICAgIGlmIChhcmd1bWVudC0+dW5pdCAh
PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgfHwgYXJndW1lbnQtPmlWYWx1ZSAhPSAnLCcpCkBA
IC0zODQyLDcgKzM4NDMsNyBAQCBQYXNzUmVmUHRyPENTU1dyYXBTaGFwZT4gQ1NTUGFyc2VyOjpw
YXJzZVdyYXBTaGFwZUVsbGlwc2UoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcgogICAgICAgICB9CiAg
ICAgICAgIGFyZ3VtZW50TnVtYmVyKys7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGFyZ3VtZW50
TnVtYmVyIDwgNCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHNoYXBlOwpAQCAtMzg1
NSw3ICszODU2LDcgQEAgUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VX
cmFwU2hhcGVQb2x5Z29uKENTU1BhcnNlclZhbHVlTGlzdCogYXIKICAgICB1bnNpZ25lZCBzaXpl
ID0gYXJncy0+c2l6ZSgpOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
CisKICAgICBSZWZQdHI8Q1NTV3JhcFNoYXBlUG9seWdvbj4gc2hhcGUgPSBDU1NXcmFwU2hhcGVQ
b2x5Z29uOjpjcmVhdGUoKTsKIAogICAgIENTU1BhcnNlclZhbHVlKiBhcmd1bWVudCA9IGFyZ3Mt
PmN1cnJlbnQoKTsKQEAgLTM4NjksMzQgKzM4NzAsMzQgQEAgUGFzc1JlZlB0cjxDU1NXcmFwU2hh
cGU+IENTU1BhcnNlcjo6cGFyc2VXcmFwU2hhcGVQb2x5Z29uKENTU1BhcnNlclZhbHVlTGlzdCog
YXIKICAgICAgICAgYXJndW1lbnQgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIHNpemUgLT0gMjsK
ICAgICB9Ci0gICAgCisKICAgICAvLyA8bGVuZ3RoPiwgPGxlbmd0aD4gLi4uIDxsZW5ndGg+LCA8
bGVuZ3RoPiAtPiBlYWNoIHBhaXIgaGFzIDMgZWxlbWVudHMKICAgICBpZiAoIXNpemUgfHwgKHNp
emUgJSAzKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICBDU1NQYXJzZXJWYWx1ZSog
YXJndW1lbnRYID0gYXJndW1lbnQ7CiAgICAgd2hpbGUgKGFyZ3VtZW50WCkgewogICAgICAgICBp
ZiAoIXZhbGlkVW5pdChhcmd1bWVudFgsIEZMZW5ndGgsIG1fc3RyaWN0KSkKICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICAKKwogICAgICAgICBDU1NQYXJzZXJWYWx1ZSogY29tbWEgPSBh
cmdzLT5uZXh0KCk7CiAgICAgICAgIGlmICghY29tbWEgfHwgY29tbWEtPnVuaXQgIT0gQ1NTUGFy
c2VyVmFsdWU6Ok9wZXJhdG9yIHx8IGNvbW1hLT5pVmFsdWUgIT0gJywnKQogICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIAorCiAgICAgICAgIENTU1BhcnNlclZhbHVlKiBhcmd1bWVudFkg
PSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIGlmICghYXJndW1lbnRZIHx8ICF2YWxpZFVuaXQoYXJn
dW1lbnRZLCBGTGVuZ3RoLCBtX3N0cmljdCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgCi0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geExlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRYLT5mVmFsdWUsIAorCisgICAgICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geExlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUo
KS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRYLT5mVmFsdWUsCiAgICAgICAgICAgICAoQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlcykgYXJndW1lbnRYLT51bml0KTsKLSAgICAgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiB5TGVuZ3RoID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVW
YWx1ZShhcmd1bWVudFktPmZWYWx1ZSwgCisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4geUxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlQ2FjaGUoKS0+Y3JlYXRlVmFsdWUoYXJndW1lbnRZ
LT5mVmFsdWUsCiAgICAgICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgYXJn
dW1lbnRZLT51bml0KTsKLSAgICAgICAgCisKICAgICAgICAgc2hhcGUtPmFwcGVuZFBvaW50KHhM
ZW5ndGgucmVsZWFzZSgpLCB5TGVuZ3RoLnJlbGVhc2UoKSk7Ci0gICAgICAgIAorCiAgICAgICAg
IGFyZ3VtZW50WCA9IGFyZ3MtPm5leHQoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gc2hh
cGU7CiB9CiAKQEAgLTM5MDcsOSArMzkwOCw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVdyYXBT
aGFwZShib29sIGltcG9ydGFudCkKIAogICAgIGlmICghYXJncykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAorCiAgICAgUmVmUHRyPENTU1dyYXBTaGFwZT4gc2hhcGU7Ci0gICAgCisKICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAicmVjdCgiKSkK
ICAgICAgICAgc2hhcGUgPSBwYXJzZVdyYXBTaGFwZVJlY3QoYXJncyk7CiAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAiY2lyY2xlKCIpKQpAQCAt
NTEzOSw3ICs1MTQwLDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0IHsKICAgICAs
IG1fYWxsb3dSZXBlYXQodHJ1ZSkKICAgICAsIG1fYWxsb3dTbGFzaChmYWxzZSkKICAgICAsIG1f
cmVxdWlyZVdpZHRoKGZhbHNlKQotICAgICwgbV9yZXF1aXJlT3V0c2V0KGZhbHNlKSAgICAKKyAg
ICAsIG1fcmVxdWlyZU91dHNldChmYWxzZSkKICAgICB7fQogCiAgICAgYm9vbCBjYW5BZHZhbmNl
KCkgY29uc3QgeyByZXR1cm4gbV9jYW5BZHZhbmNlOyB9CkBAIC01MTUzLDcgKzUxNTQsNyBAQCBz
dHJ1Y3QgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogCiAgICAgYm9vbCByZXF1aXJlV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVXaWR0aDsgfQogICAgIGJvb2wgcmVxdWlyZU91dHNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZU91dHNldDsgfQotICAgIAorCiAgICAgdm9pZCBj
b21taXRJbWFnZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZSkKICAgICB7CiAgICAgICAgIG1f
aW1hZ2UgPSBpbWFnZTsKQEAgLTUyMTcsNyArNTIxOCw3IEBAIHN0cnVjdCBCb3JkZXJJbWFnZVBh
cnNlQ29udGV4dCB7CiAgICAgICAgIC8vIE1ha2Ugb3VyIG5ldyBib3JkZXIgaW1hZ2UgdmFsdWUg
bm93LgogICAgICAgICByZXR1cm4gQ1NTQm9yZGVySW1hZ2VWYWx1ZTo6Y3JlYXRlKG1faW1hZ2Us
IG1faW1hZ2VTbGljZSwgbV9ib3JkZXJTbGljZSwgbV9vdXRzZXQsIG1fcmVwZWF0KTsKICAgICB9
Ci0gICAgCisKICAgICBDU1NQcmltaXRpdmVWYWx1ZUNhY2hlKiBtX3ByaW1pdGl2ZVZhbHVlQ2Fj
aGU7CiAKICAgICBib29sIG1fY2FuQWR2YW5jZTsKQEAgLTUyMjcsNyArNTIyOCw3IEBAIHN0cnVj
dCBCb3JkZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAgYm9vbCBtX2FsbG93SW1hZ2VTbGljZTsK
ICAgICBib29sIG1fYWxsb3dSZXBlYXQ7CiAgICAgYm9vbCBtX2FsbG93U2xhc2g7Ci0gICAgCisK
ICAgICBib29sIG1fcmVxdWlyZVdpZHRoOwogICAgIGJvb2wgbV9yZXF1aXJlT3V0c2V0OwogCkBA
IC01MjQ4LDcgKzUyNDksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZShpbnQg
cHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCiAKICAgICAgICAgaWYgKCFjb250ZXh0
LmNhbkFkdmFuY2UoKSAmJiBjb250ZXh0LmFsbG93U2xhc2goKSAmJiB2YWwtPnVuaXQgPT0gQ1NT
UGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbC0+aVZhbHVlID09ICcvJykKICAgICAgICAgICAg
IGNvbnRleHQuY29tbWl0U2xhc2goKTsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFjb250ZXh0
LmNhbkFkdmFuY2UoKSAmJiBjb250ZXh0LmFsbG93SW1hZ2UoKSkgewogICAgICAgICAgICAgaWYg
KHZhbC0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSAmJiBtX3N0eWxlU2hlZXQp
IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIGNvbXBsZXRlVVJMIGNhbGwgc2hvdWxk
IGJlIGRvbmUgd2hlbiB1c2luZyB0aGUgQ1NTSW1hZ2VWYWx1ZSwKQEAgLTUyNjMsMzQgKzUyNjQs
MzQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVySW1hZ2UoaW50IHByb3BJZCwgUmVmUHRy
PENTU1ZhbHVlPiYgcmVzdWx0KQogICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwtPmlkID09IENT
U1ZhbHVlTm9uZSkKICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdEltYWdlKENTU0ltYWdl
VmFsdWU6OmNyZWF0ZSgpKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoIWNv
bnRleHQuY2FuQWR2YW5jZSgpICYmIGNvbnRleHQuYWxsb3dJbWFnZVNsaWNlKCkpIHsKICAgICAg
ICAgICAgIFJlZlB0cjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+IGltYWdlU2xpY2U7CiAgICAg
ICAgICAgICBpZiAocGFyc2VCb3JkZXJJbWFnZVNsaWNlKHByb3BJZCwgaW1hZ2VTbGljZSkpCiAg
ICAgICAgICAgICAgICAgY29udGV4dC5jb21taXRJbWFnZVNsaWNlKGltYWdlU2xpY2UucmVsZWFz
ZSgpKTsKLSAgICAgICAgfSAKLSAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBpZiAoIWNv
bnRleHQuY2FuQWR2YW5jZSgpICYmIGNvbnRleHQuYWxsb3dSZXBlYXQoKSkgewogICAgICAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQ7CiAgICAgICAgICAgICBpZiAocGFyc2VCb3JkZXJJ
bWFnZVJlcGVhdChyZXBlYXQpKQogICAgICAgICAgICAgICAgIGNvbnRleHQuY29tbWl0UmVwZWF0
KHJlcGVhdCk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCFjb250ZXh0LmNh
bkFkdmFuY2UoKSAmJiBjb250ZXh0LnJlcXVpcmVXaWR0aCgpKSB7CiAgICAgICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvcmRlclNsaWNlOwogICAgICAgICAgICAgaWYgKHBhcnNl
Qm9yZGVySW1hZ2VXaWR0aChib3JkZXJTbGljZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC5j
b21taXRCb3JkZXJXaWR0aChib3JkZXJTbGljZS5yZWxlYXNlKCkpOwotICAgICAgICB9IAotICAg
ICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIGlmICghY29udGV4dC5jYW5BZHZhbmNlKCkgJiYg
Y29udGV4dC5yZXF1aXJlT3V0c2V0KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gYm9yZGVyT3V0c2V0OwogICAgICAgICAgICAgaWYgKHBhcnNlQm9yZGVySW1hZ2VP
dXRzZXQoYm9yZGVyT3V0c2V0KSkKICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdEJvcmRl
ck91dHNldChib3JkZXJPdXRzZXQucmVsZWFzZSgpKTsKLSAgICAgICAgfSAKLSAgICAgICAgCisg
ICAgICAgIH0KKwogICAgICAgICBpZiAoIWNvbnRleHQuY2FuQWR2YW5jZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAg
ICAgfQogCkBAIC01MzE3LDcgKzUzMTgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJ
bWFnZVJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCiAgICAgICAgIGZpcnN0VmFsdWUg
PSBwcmltaXRpdmVWYWx1ZUNhY2hlKCktPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWwtPmlkKTsK
ICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIHZhbCA9IG1fdmFs
dWVMaXN0LT5uZXh0KCk7CiAgICAgaWYgKHZhbCkgewogICAgICAgICBpZiAoaXNCb3JkZXJJbWFn
ZVJlcGVhdEtleXdvcmQodmFsLT5pZCkpCkBAIC01NDAyLDcgKzU0MDMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIE1ha2Ugb3VyIG5ldyBib3JkZXIgaW1hZ2UgdmFsdWUgbm93LgogICAgICAgICBy
ZXR1cm4gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjcmVhdGUobV9wcmltaXRpdmVWYWx1ZUNh
Y2hlLT5jcmVhdGVWYWx1ZShxdWFkLnJlbGVhc2UoKSksIG1fZmlsbCk7CiAgICAgfQotICAgIAor
CiBwcml2YXRlOgogICAgIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUqIG1fcHJpbWl0aXZlVmFsdWVD
YWNoZTsKIApAQCAtNTQxNCw3ICs1NDE1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IG1fcmlnaHQ7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2Jv
dHRvbTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fbGVmdDsKLSAgICAKKwogICAg
IGJvb2wgbV9maWxsOwogfTsKIApAQCAtNTQ3Myw3ICs1NDc0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgdmFsID0gbV9wcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
di0+aWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2YWwgPSBtX3ByaW1pdGl2ZVZhbHVl
Q2FjaGUtPmNyZWF0ZVZhbHVlKHYtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMpdi0+dW5pdCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbV90b3ApCiAgICAgICAgICAg
ICBtX3RvcCA9IHZhbDsKICAgICAgICAgZWxzZSBpZiAoIW1fcmlnaHQpCkBAIC01NTE4LDcgKzU1
MTksNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE1ha2Ugb3VyIG5ldyB2YWx1ZSBub3cuCiAgICAg
ICAgIHJldHVybiBtX3ByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHF1YWQucmVsZWFz
ZSgpKTsKICAgICB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWVDYWNo
ZSogbV9wcmltaXRpdmVWYWx1ZUNhY2hlOwogCkBAIC01Njg1LDExICs1Njg2LDExIEBAIHN0YXRp
YyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZURlcHJlY2F0ZWRHcmFkaWVudFBv
aW50KENTU1BhcnNlclZhbHVlCiB7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1
bHQ7CiAgICAgaWYgKGEtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkgewot
ICAgICAgICBpZiAoKGVxdWFsSWdub3JpbmdDYXNlKGEtPnN0cmluZywgImxlZnQiKSAmJiBob3Jp
em9udGFsKSB8fCAKLSAgICAgICAgICAgIChlcXVhbElnbm9yaW5nQ2FzZShhLT5zdHJpbmcsICJ0
b3AiKSAmJiAhaG9yaXpvbnRhbCkpCisgICAgICAgIGlmICgoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+
c3RyaW5nLCAibGVmdCIpICYmIGhvcml6b250YWwpCisgICAgICAgICAgICB8fCAoZXF1YWxJZ25v
cmluZ0Nhc2UoYS0+c3RyaW5nLCAidG9wIikgJiYgIWhvcml6b250YWwpKQogICAgICAgICAgICAg
cmVzdWx0ID0gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoMC4sIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAgICAgIGVsc2UgaWYgKChlcXVhbElnbm9yaW5n
Q2FzZShhLT5zdHJpbmcsICJyaWdodCIpICYmIGhvcml6b250YWwpIHx8Ci0gICAgICAgICAgICAg
ICAgIChlcXVhbElnbm9yaW5nQ2FzZShhLT5zdHJpbmcsICJib3R0b20iKSAmJiAhaG9yaXpvbnRh
bCkpCisgICAgICAgIGVsc2UgaWYgKChlcXVhbElnbm9yaW5nQ2FzZShhLT5zdHJpbmcsICJyaWdo
dCIpICYmIGhvcml6b250YWwpCisgICAgICAgICAgICB8fCAoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+
c3RyaW5nLCAiYm90dG9tIikgJiYgIWhvcml6b250YWwpKQogICAgICAgICAgICAgcmVzdWx0ID0g
cHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoMTAwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYS0+
c3RyaW5nLCAiY2VudGVyIikpCiAgICAgICAgICAgICByZXN1bHQgPSBwcmltaXRpdmVWYWx1ZUNh
Y2hlLT5jcmVhdGVWYWx1ZSg1MC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7
CkBAIC01NzEyLDggKzU3MTMsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZURlcHJlY2F0ZWRHcmFkaWVu
dENvbG9yU3RvcChDU1NQYXJzZXIqIHAsIENTU1BhcnNlclZhbHVlKiBhLCBDUwogICAgIGlmICgh
YXJncykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGEtPmZ1bmN0aW9uLT5uYW1lLCAiZnJvbSgiKSB8fCAKLSAgICAgICAgZXF1YWxJZ25vcmluZ0Nh
c2UoYS0+ZnVuY3Rpb24tPm5hbWUsICJ0bygiKSkgeworICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShhLT5mdW5jdGlvbi0+bmFtZSwgImZyb20oIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UoYS0+ZnVuY3Rpb24tPm5hbWUsICJ0bygiKSkgewogICAgICAgICAvLyBUaGUgImZyb20iIGFu
ZCAidG8iIHN0b3BzIGV4cGVjdCAxIGFyZ3VtZW50LgogICAgICAgICBpZiAoYXJncy0+c2l6ZSgp
ICE9IDEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTI0LDcgKzU5MjUsNyBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VHcmFkaWVudENvbG9yT3JL
ZXl3b3JkKENTU1BhcnNlciogcCwgQwogYm9vbCBDU1NQYXJzZXI6OnBhcnNlTGluZWFyR3JhZGll
bnQoUmVmUHRyPENTU1ZhbHVlPiYgZ3JhZGllbnQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGlu
ZykKIHsKICAgICBSZWZQdHI8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZyk7Ci0gICAgCisKICAgICAvLyBXYWxr
IHRoZSBhcmd1bWVudHMuCiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gbV92YWx1ZUxp
c3QtPmN1cnJlbnQoKS0+ZnVuY3Rpb24tPmFyZ3MuZ2V0KCk7CiAgICAgaWYgKCFhcmdzIHx8ICFh
cmdzLT5zaXplKCkpCkBAIC01OTM4LDEzICs1OTM5LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUxpbmVhckdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJl
cGVhCiAgICAgLy8gTG9vayBmb3IgYW5nbGUuCiAgICAgaWYgKHZhbGlkVW5pdChhLCBGQW5nbGUs
IHRydWUpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0QW5nbGUoY3JlYXRlUHJpbWl0aXZlTnVtZXJp
Y1ZhbHVlKGEpKTsKLSAgICAgICAgCisKICAgICAgICAgYSA9IGFyZ3MtPm5leHQoKTsKICAgICAg
ICAgZXhwZWN0Q29tbWEgPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIExvb2sgb25l
IG9yIHR3byBvcHRpb25hbCBrZXl3b3JkcyB0aGF0IGluZGljYXRlIGEgc2lkZSBvciBjb3JuZXIu
CiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3RhcnRYLCBzdGFydFk7Ci0gICAg
ICAgIAorCiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbG9jYXRpb247CiAgICAg
ICAgIGJvb2wgaXNIb3Jpem9udGFsID0gZmFsc2U7CiAgICAgICAgIGlmICgobG9jYXRpb24gPSB2
YWx1ZUZyb21TaWRlS2V5d29yZChhLCBpc0hvcml6b250YWwsIHByaW1pdGl2ZVZhbHVlQ2FjaGUo
KSkpKSB7CkBAIC01OTUyLDcgKzU5NTMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VMaW5lYXJH
cmFkaWVudChSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYQogICAg
ICAgICAgICAgICAgIHN0YXJ0WCA9IGxvY2F0aW9uOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIHN0YXJ0WSA9IGxvY2F0aW9uOwotICAgICAgICAgICAgCisKICAgICAgICAgICAg
IGEgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAg
IGlmICgobG9jYXRpb24gPSB2YWx1ZUZyb21TaWRlS2V5d29yZChhLCBpc0hvcml6b250YWwsIHBy
aW1pdGl2ZVZhbHVlQ2FjaGUoKSkpKSB7CkBAIC01OTcyLDEwICs1OTczLDEwIEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZUxpbmVhckdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBD
U1NHcmFkaWVudFJlcGVhCiAKICAgICAgICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsKICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoIXN0YXJ0WCAmJiAhc3RhcnRZKQogICAgICAg
ICAgICAgc3RhcnRZID0gcHJpbWl0aXZlVmFsdWVDYWNoZSgpLT5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVUb3ApOwotICAgICAgICAgICAgCisKICAgICAgICAgcmVzdWx0LT5zZXRGaXJz
dFgoc3RhcnRYLnJlbGVhc2UoKSk7CiAgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKHN0YXJ0WS5y
ZWxlYXNlKCkpOwogICAgIH0KQEAgLTU5OTQsNyArNTk5NSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUxpbmVhckdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVu
dFJlcGVhCiBib29sIENTU1BhcnNlcjo6cGFyc2VSYWRpYWxHcmFkaWVudChSZWZQdHI8Q1NTVmFs
dWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewogICAgIFJlZlB0
cjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVl
OjpjcmVhdGUocmVwZWF0aW5nKTsKLSAgICAKKwogICAgIC8vIFdhbGsgdGhlIGFyZ3VtZW50cy4K
ICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5m
dW5jdGlvbi0+YXJncy5nZXQoKTsKICAgICBpZiAoIWFyZ3MgfHwgIWFyZ3MtPnNpemUoKSkKQEAg
LTYwMTQsNyArNjAxNSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KFJl
ZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJlcGVhCiAgICAgYSA9IGFyZ3Mt
PmN1cnJlbnQoKTsKICAgICBpZiAoIWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwog
ICAgIGlmIChjZW50ZXJYIHx8IGNlbnRlclkpIHsKICAgICAgICAgLy8gQ29tbWEKICAgICAgICAg
aWYgKGEtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yIHx8IGEtPmlWYWx1ZSAhPSAn
LCcpCkBAIC02MDI0LDcgKzYwMjUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VSYWRpYWxHcmFk
aWVudChSZWZQdHI8Q1NTVmFsdWU+JiBncmFkaWVudCwgQ1NTR3JhZGllbnRSZXBlYQogICAgICAg
ICBpZiAoIWEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAg
QVNTRVJUKCFjZW50ZXJYIHx8IGNlbnRlclgtPmlzUHJpbWl0aXZlVmFsdWUoKSk7CiAgICAgQVNT
RVJUKCFjZW50ZXJZIHx8IGNlbnRlclktPmlzUHJpbWl0aXZlVmFsdWUoKSk7CiAKQEAgLTYwMzMs
NyArNjAzNCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KFJlZlB0cjxD
U1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJlcGVhCiAgICAgLy8gQ1NTMyByYWRpYWwg
Z3JhZGllbnRzIGFsd2F5cyBzaGFyZSB0aGUgc2FtZSBzdGFydCBhbmQgZW5kIHBvaW50LgogICAg
IHJlc3VsdC0+c2V0Rmlyc3RZKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY2VudGVy
WS5nZXQoKSkpOwogICAgIHJlc3VsdC0+c2V0U2Vjb25kWShzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KGNlbnRlclkuZ2V0KCkpKTsKLSAgICAKKwogICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gc2hhcGVWYWx1ZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNpemVW
YWx1ZTsKIApAQCAtNjA0MSw3ICs2MDQyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaWFs
R3JhZGllbnQoUmVmUHRyPENTU1ZhbHVlPiYgZ3JhZGllbnQsIENTU0dyYWRpZW50UmVwZWEKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDI7ICsraSkgewogICAgICAgICBpZiAoYS0+dW5pdCAhPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgCisK
ICAgICAgICAgYm9vbCBmb3VuZFZhbHVlID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaCAoYS0+aWQp
IHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUNpcmNsZToKQEAgLTYwNjgsMTAgKzYwNjksMTAgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQoUmVmUHRyPENTU1ZhbHVlPiYgZ3Jh
ZGllbnQsIENTU0dyYWRpZW50UmVwZWEKICAgICAgICAgICAgIGV4cGVjdENvbW1hID0gdHJ1ZTsK
ICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJlc3VsdC0+c2V0U2hhcGUoc2hhcGVWYWx1
ZSk7CiAgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihzaXplVmFsdWUpOwotICAgIAorCiAg
ICAgLy8gT3IsIHR3byBsZW5ndGhzIG9yIHBlcmNlbnRhZ2VzCiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBob3Jpem9udGFsU2l6ZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHZlcnRpY2FsU2l6ZTsKQEAgLTYwOTksNyArNjEwMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVJhZGlhbEdyYWRpZW50KFJlZlB0cjxDU1NWYWx1ZT4mIGdyYWRpZW50LCBDU1NHcmFkaWVudFJl
cGVhCiAgICAgLy8gTXVzdCBoYXZlIG5laXRoZXIgb3IgYm90aC4KICAgICBpZiAoIWhvcml6b250
YWxTaXplICE9ICF2ZXJ0aWNhbFNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwog
ICAgIHJlc3VsdC0+c2V0RW5kSG9yaXpvbnRhbFNpemUoaG9yaXpvbnRhbFNpemUpOwogICAgIHJl
c3VsdC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CiAKQEAgLTYxMzksNyArNjE0
MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyYWRpZW50Q29sb3JTdG9wcyhDU1NQYXJzZXJW
YWx1ZUxpc3QqIHZhbHVlTGlzdCwgQ1NTR3JhZGllCiAgICAgICAgICAgICAgICAgYSA9IHZhbHVl
TGlzdC0+bmV4dCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIGdyYWRpZW50LT5hZGRTdG9wKHN0b3ApOwogICAgICAgICBleHBlY3RDb21tYSA9IHRydWU7
CiAgICAgfQpAQCAtNjQxNyw3ICs2NDE4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OmlzVmFsaWRGaWx0
ZXJBcmd1bWVudChDU1NQYXJzZXJWYWx1ZSogYXJndW1lbnQsIFdlYktpdENTU0ZpbHRlclYKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IGVsc2UgaWYgKCF2YWxpZFVuaXQoYXJndW1l
bnQsIEZOdW1iZXIsIHRydWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAv
LyBDaGVjayBwYXJhbWV0ZXIgdmFsdWVzLgogICAgIGlmIChmaWx0ZXJUeXBlID09IFdlYktpdENT
U0ZpbHRlclZhbHVlOjpHcmF5c2NhbGVGaWx0ZXJPcGVyYXRpb24KICAgICAgICAgfHwgZmlsdGVy
VHlwZSA9PSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6U2VwaWFGaWx0ZXJPcGVyYXRpb24KQEAgLTY0
NjYsMTIgKzY0NjcsMTIgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFy
c2VGaWx0ZXIoKQogICAgICAgICAgICAgUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiByZWZl
cmVuY2VGaWx0ZXJWYWx1ZSA9IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjcmVhdGUoV2ViS2l0Q1NT
RmlsdGVyVmFsdWU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQocmVmZXJlbmNlRmlsdGVyVmFsdWUpOwogICAgICAgICAgICAgcmVmZXJlbmNlRmls
dGVyVmFsdWUtPmFwcGVuZChwcmltaXRpdmVWYWx1ZUNhY2hlKCktPmNyZWF0ZVZhbHVlKHZhbHVl
LT5zdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Ci0gICAgICAgIH0gZWxz
ZSB7ICAgICAgICAKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnN0IENTU1BhcnNl
clN0cmluZyBuYW1lID0gdmFsdWUtPmZ1bmN0aW9uLT5uYW1lOwogICAgICAgICAgICAgdW5zaWdu
ZWQgbWF4aW11bUFyZ3VtZW50Q291bnQgPSAxOwogCiAgICAgICAgICAgICBmaWx0ZXJJbmZvRm9y
TmFtZShuYW1lLCBmaWx0ZXJUeXBlLCBtYXhpbXVtQXJndW1lbnRDb3VudCk7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICAgICAgaWYgKGZpbHRlclR5cGUgPT0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6
OlVua25vd25GaWx0ZXJPcGVyYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAg
LTY0ODIsNyArNjQ4Myw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBh
cnNlRmlsdGVyKCkKICAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgbmV3IFdlYktpdENTU0ZpbHRl
clZhbHVlIGZvciB0aGlzIG9wZXJhdGlvbiBhbmQgYWRkIGl0IHRvIG91ciBsaXN0LgogICAgICAg
ICAgICAgUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBmaWx0ZXJWYWx1ZSA9IFdlYktpdENT
U0ZpbHRlclZhbHVlOjpjcmVhdGUoZmlsdGVyVHlwZSk7CiAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoZmlsdGVyVmFsdWUpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIENTU1BhcnNlclZh
bHVlKiBhcmd1bWVudCA9IGFyZ3MtPmN1cnJlbnQoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGFy
Z3VtZW50Q291bnQgPSAwOwogCkBAIC02NzM3LDcgKzY3MzgsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VMaW5lQm94Q29udGFpbihib29sIGltcG9ydGFudCkKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFsaW5lQm94Q29u
dGFpbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03MjUxLDcgKzcyNTIsNyBAQCBDU1NS
dWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiAgICAgICAgICAgICBwcm9wZXJ0
eS0+bV92YWx1ZSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHByb3BlcnR5LT52YWx1ZSgpKS0+YXBw
ZW5kKHZhbHVlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTUHJvcGVy
dHlGb250RmFtaWx5ICYmICghcHJvcGVydHktPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgfHwgc3Rh
dGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4ocHJvcGVydHktPnZhbHVlKCkpLT5sZW5ndGgoKSAhPSAx
KSkgewotICAgICAgICAgICAgLy8gVW5saWtlIGZvbnQtZmFtaWx5IHByb3BlcnR5LCBmb250LWZh
bWlseSBkZXNjcmlwdG9yIGluIEBmb250LWZhY2UgcnVsZSAKKyAgICAgICAgICAgIC8vIFVubGlr
ZSBmb250LWZhbWlseSBwcm9wZXJ0eSwgZm9udC1mYW1pbHkgZGVzY3JpcHRvciBpbiBAZm9udC1m
YWNlIHJ1bGUKICAgICAgICAgICAgIC8vIGhhcyB0byBiZSBhIHZhbHVlIGxpc3Qgd2l0aCBleGFj
dGx5IG9uZSBmYW1pbHkgbmFtZS4gSXQgY2Fubm90IGhhdmUgYQogICAgICAgICAgICAgLy8gaGF2
ZSAnaW5pdGlhbCcgdmFsdWUgYW5kIGNhbm5vdCAnaW5oZXJpdCcgZnJvbSBwYXJlbnQuCiAgICAg
ICAgICAgICAvLyBTZWUgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1mb250cy8jZm9udC1m
YW1pbHktZGVzYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGUzOTFiMzkuLmFhNmQ3MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHBhcnNlRmlsbFBvc2l0aW9uWChDU1NQYXJzZXJWYWx1ZUxpc3QqKTsK
ICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxQb3NpdGlvblkoQ1NTUGFyc2VyVmFs
dWVMaXN0Kik7CiAgICAgdm9pZCBwYXJzZUZpbGxQb3NpdGlvbihDU1NQYXJzZXJWYWx1ZUxpc3Qq
LCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIAorCiAgICAgdm9p
ZCBwYXJzZUZpbGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsK
ICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxTaXplKGludCBwcm9wSWQsIGJvb2wg
JmFsbG93Q29tbWEpOwogCkBAIC0yNTYsNiArMjU2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBj
bGVhclByb3BlcnRpZXMoKTsKIAorICAgIHZvaWQgc2V0U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0
Kik7CisKICAgICBib29sIG1fc3RyaWN0OwogICAgIGJvb2wgbV9pbXBvcnRhbnQ7CiAgICAgaW50
IG1faWQ7CkBAIC0zMDQsOCArMzA2LDYgQEAgcHVibGljOgogICAgIGludCBsZXgoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIHNldFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopOwotICAgIAogICAg
IHZvaWQgcmVjaGVja0F0S2V5d29yZChjb25zdCBVQ2hhciogc3RyLCBpbnQgbGVuKTsKIAogICAg
IHZvaWQgc2V0dXBQYXJzZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBTdHJpbmcmLCBjb25z
dCBjaGFyKiBzdWZmaXgpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGJvb2wgdmFsaWRVbml0KENTU1BhcnNlclZhbHVlKiwgVW5pdHMsIGJvb2wgc3RyaWN0KTsKIAog
ICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZVF1YWQoVW5pdHMsIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4mKTsKLSAgICAKKwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0
ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShDU1NQYXJzZXJWYWx1ZSopOwogICAgIFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKENTU1BhcnNlclZh
bHVlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAppbmRleCBhMGNkNTc1Li5hZmIyOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xMTk2LDYgKzExOTYsNyBAQCBi
b29sIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Z2V0U3R5bGVBdHRyaWJ1dGVS
YW5nZXMoUmVmUHRyPENTU1N0eWxlUwogCiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiB0ZW1wRGVjbGFyYXRpb24gPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3Jl
YXRlKCk7CiAgICAgQ1NTUGFyc2VyIHA7CisgICAgcC5zZXRTdHlsZVNoZWV0KG1fZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwogICAgIHAucGFyc2VEZWNsYXJhdGlvbih0ZW1w
RGVjbGFyYXRpb24uZ2V0KCksIG1fc3R5bGVUZXh0LCByZXN1bHQpOwogICAgIHJldHVybiB0cnVl
OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111612</attachid>
            <date>2011-10-19 07:13:49 -0700</date>
            <delta_ts>2011-10-19 07:43:34 -0700</delta_ts>
            <desc>[PATCH] Retry, take 2</desc>
            <filename>bgimage.patch</filename>
            <type>text/plain</type>
            <size>6510</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGU5MjkxOTczODU0YmU1ZjYzMGQ3YjJkMzhiZGExMDJjMWIxYjJhMzYKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgT2N0IDE4
IDE5OjE2OjQzIDIwMTEgKzA0MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGYwMDA0OS4uNDA5NTEzZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEwLTE5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NTIGJhY2tncm91
bmQtaW1hZ2UgYXBwbGllZCBpbmxpbmUgc2hvd3MgYSB3YXJuaW5nLCBidXQgc3RpbGwgd29ya3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDMyNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sOgorCiAyMDExLTEwLTE5ICBCYWxhenMgS2Vs
ZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIDIgaW5zcGVjdG9yL2V4
dGVuc2lvbnMgdGVzdHMgdGltZXMgb3V0IG9uIE1hYyBhZnRlciByOTc4NTAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50
eHQKaW5kZXggZTBkOGJiNS4uOTQ2OGQwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQKQEAgLTg3LDcgKzg3
LDggQEAgaHRtbDogW10KIHN0eWxlCiByYXcgc3R5bGUKIFsnZm9udC13ZWlnaHQnOidub3JtYWwn
XSBAWzAtMjBdIGFjdGl2ZQotWyd3aWR0aCc6Jzg1JSddIEBbMjEtMzFdIGFjdGl2ZQorWyd3aWR0
aCc6Jzg1JSddIEBbMjEtMzJdIGFjdGl2ZQorWydiYWNrZ3JvdW5kLWltYWdlJzondXJsKGJhci5w
bmcpJ10gQFszMy02M10gYWN0aXZlCiAKID09PSBBdHRyaWJ1dGUgc3R5bGVzIGZvciB0YWJsZSA9
PT0KIEF0dHJpYnV0ZTogd2lkdGgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
c3R5bGVzLW5ldy1BUEkuaHRtbAppbmRleCA2ZGYwZWQwLi5jMDAwOWEyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sCkBAIC0zNDgsNyAr
MzQ4LDcgQEAgYm9keS5tYWlucGFnZSB7CiA8L3N0eWxlPgogPC9oZWFkPgogCi08Ym9keSBpZD0i
bWFpbkJvZHkiIGNsYXNzPSJtYWluMSBtYWluMiBtYWlucGFnZSIgb25sb2FkPSJydW5UZXN0KCki
IHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyB3aWR0aDogODUlIj4KKzxib2R5IGlkPSJtYWlu
Qm9keSIgY2xhc3M9Im1haW4xIG1haW4yIG1haW5wYWdlIiBvbmxvYWQ9InJ1blRlc3QoKSIgc3R5
bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7IHdpZHRoOiA4NSU7IGJhY2tncm91bmQtaW1hZ2U6IHVy
bChiYXIucG5nKSI+CiA8cD4KIFRlc3RzIHRoYXQgSW5zcGVjdG9yQ1NTQWdlbnQgQVBJIG1ldGhv
ZHMgd29yayBhcyBleHBlY3RlZC4KIDwvcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3Y2I1ZmUxLi45NTg5ZmU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMTAtMTkgIEFsZXhhbmRlciBQYXZs
b3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1Mg
YmFja2dyb3VuZC1pbWFnZSBhcHBsaWVkIGlubGluZSBzaG93cyBhIHdhcm5pbmcsIGJ1dCBzdGls
bCB3b3Jrcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcwMzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VE
ZWNsYXJhdGlvbik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clN0eWxlOjpzZXRQcm9wZXJ0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlOjpnZXRTdHlsZUF0dHJpYnV0ZVJhbmdlcyk6CisKIDIwMTEt
MTAtMTkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBB
WDogYnV0dG9ucyBvZiBudW1iZXIgdHlwZSA8aW5wdXQ+IGNvbnRyb2xzIGFyZSBub3QgZnVsbHkg
YWNjZXNzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBjMTk0NDdiLi40NTQyMjEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNTQ4LDEzICs1NDgsMTcgQEAgdm9pZCBD
U1NQYXJzZXI6OnBhcnNlU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50KiBk
b2MsIENTU1NlbGVjdG9yTGkKICAgICBBU1NFUlQoZHVtbXlTdHlsZVNoZWV0LT5oYXNPbmVSZWYo
KSk7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIFJlZlB0cjxD
U1NTdHlsZVNvdXJjZURhdGE+KiBzdHlsZVNvdXJjZURhdGEpCitib29sIENTU1BhcnNlcjo6cGFy
c2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24sIGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBSZWZQdHI8Q1NTU3R5bGVTb3VyY2VEYXRhPiogc3R5bGVTb3Vy
Y2VEYXRhLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICAvLyBMZW5n
dGggb2YgdGhlICJALXdlYmtpdC1kZWNsc3siIHByZWZpeC4KICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgcHJlZml4TGVuZ3RoID0gMTU7CiAKLSAgICBBU1NFUlQoIWRlY2xhcmF0aW9uLT5zdHls
ZXNoZWV0KCkgfHwgZGVjbGFyYXRpb24tPnN0eWxlc2hlZXQoKS0+aXNDU1NTdHlsZVNoZWV0KCkp
OwotICAgIHNldFN0eWxlU2hlZXQoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KGRlY2xhcmF0
aW9uLT5zdHlsZXNoZWV0KCkpKTsKKyAgICBpZiAoY29udGV4dFN0eWxlU2hlZXQpCisgICAgICAg
IHNldFN0eWxlU2hlZXQoY29udGV4dFN0eWxlU2hlZXQpOworICAgIGVsc2UgeworICAgICAgICBB
U1NFUlQoIWRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCkgfHwgZGVjbGFyYXRpb24tPnN0eWxlc2hl
ZXQoKS0+aXNDU1NTdHlsZVNoZWV0KCkpOworICAgICAgICBzZXRTdHlsZVNoZWV0KHN0YXRpY19j
YXN0PENTU1N0eWxlU2hlZXQqPihkZWNsYXJhdGlvbi0+c3R5bGVzaGVldCgpKSk7CisgICAgfQog
ICAgIGlmIChzdHlsZVNvdXJjZURhdGEpIHsKICAgICAgICAgbV9jdXJyZW50UnVsZURhdGEgPSBD
U1NSdWxlU291cmNlRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhLT5z
dHlsZVNvdXJjZURhdGEgPSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oCmluZGV4IGM4MDRlNGIuLjI4NzVmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgK
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBhcnNlU3lzdGVtQ29s
b3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqKTsKICAgICBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZVZhbGlkUHJpbWl0aXZlKGludCBwcm9wSWQsIENT
U1BhcnNlclZhbHVlKik7CiAgICAgYm9vbCBwYXJzZUNvbG9yKENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBwYXJzZURlY2xhcmF0aW9uKENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5nJiwgUmVmUHRyPENTU1N0eWxlU291
cmNlRGF0YT4qIHN0eWxlU291cmNlRGF0YSA9IDApOworICAgIGJvb2wgcGFyc2VEZWNsYXJhdGlv
bihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IFN0cmluZyYsIFJlZlB0cjxDU1NT
dHlsZVNvdXJjZURhdGE+KiA9IDAsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0ID0g
MCk7CiAgICAgYm9vbCBwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0KiwgY29uc3QgU3RyaW5nJik7
CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCBhMGNkNTc1Li5lZmY2MGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCkBAIC0xODksOSArMTg5LDEwIEBAIGJvb2wgSW5zcGVjdG9yU3R5bGU6OnNldFByb3BlcnR5
VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIHVuc2lnbmVkIGluZGV4LCBjCiAKICAgICBp
ZiAocHJvcGVydHlUZXh0LnN0cmlwV2hpdGVTcGFjZSgpLmxlbmd0aCgpKSB7CiAgICAgICAgIFJl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gdGVtcE11dGFibGVTdHlsZSA9IENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKLSAgICAgICAgQ1NTUGFyc2VyIHA7CiAg
ICAgICAgIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+IHNvdXJjZURhdGEgPSBDU1NTdHlsZVNv
dXJjZURhdGE6OmNyZWF0ZSgpOwotICAgICAgICBwLnBhcnNlRGVjbGFyYXRpb24odGVtcE11dGFi
bGVTdHlsZS5nZXQoKSwgcHJvcGVydHlUZXh0ICsgIiAiICsgYm9ndXNQcm9wZXJ0eU5hbWUgKyAi
OiBub25lIiwgJnNvdXJjZURhdGEpOworICAgICAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0
ID0gbV9zdHlsZS0+c3R5bGVzaGVldCgpLT5pc0NTU1N0eWxlU2hlZXQoKSA/IHN0YXRpY19jYXN0
PENTU1N0eWxlU2hlZXQqPihtX3N0eWxlLT5zdHlsZXNoZWV0KCkpIDogMDsKKyAgICAgICAgQ1NT
UGFyc2VyIHA7CisgICAgICAgIHAucGFyc2VEZWNsYXJhdGlvbih0ZW1wTXV0YWJsZVN0eWxlLmdl
dCgpLCBwcm9wZXJ0eVRleHQgKyAiICIgKyBib2d1c1Byb3BlcnR5TmFtZSArICI6IG5vbmUiLCAm
c291cmNlRGF0YSwgc3R5bGVTaGVldCk7CiAgICAgICAgIFZlY3RvcjxDU1NQcm9wZXJ0eVNvdXJj
ZURhdGE+JiBwcm9wZXJ0eURhdGEgPSBzb3VyY2VEYXRhLT5wcm9wZXJ0eURhdGE7CiAgICAgICAg
IHVuc2lnbmVkIHByb3BlcnR5Q291bnQgPSBwcm9wZXJ0eURhdGEuc2l6ZSgpOwogCkBAIC0xMTk2
LDcgKzExOTcsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Z2V0
U3R5bGVBdHRyaWJ1dGVSYW5nZXMoUmVmUHRyPENTU1N0eWxlUwogCiAgICAgUmVmUHRyPENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uPiB0ZW1wRGVjbGFyYXRpb24gPSBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgQ1NTUGFyc2VyIHA7Ci0gICAgcC5wYXJzZURlY2xh
cmF0aW9uKHRlbXBEZWNsYXJhdGlvbi5nZXQoKSwgbV9zdHlsZVRleHQsIHJlc3VsdCk7CisgICAg
cC5wYXJzZURlY2xhcmF0aW9uKHRlbXBEZWNsYXJhdGlvbi5nZXQoKSwgbV9zdHlsZVRleHQsIHJl
c3VsdCwgbV9lbGVtZW50LT5kb2N1bWVudCgpLT5lbGVtZW50U2hlZXQoKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111617</attachid>
            <date>2011-10-19 07:43:34 -0700</date>
            <delta_ts>2011-10-28 02:11:29 -0700</delta_ts>
            <desc>[PATCH] ChangeLog entry made more verbose</desc>
            <filename>bgimage.patch</filename>
            <type>text/plain</type>
            <size>6667</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDE0NzM2YjlkMzg5ODUwMzkxODU4NWNmZDcyYmEzZmU5NzI1YjRmMDUKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgT2N0IDE4
IDE5OjE2OjQzIDIwMTEgKzA0MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGYwMDA0OS4uNDA5NTEzZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEwLTE5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NTIGJhY2tncm91
bmQtaW1hZ2UgYXBwbGllZCBpbmxpbmUgc2hvd3MgYSB3YXJuaW5nLCBidXQgc3RpbGwgd29ya3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDMyNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sOgorCiAyMDExLTEwLTE5ICBCYWxhenMgS2Vs
ZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIDIgaW5zcGVjdG9yL2V4
dGVuc2lvbnMgdGVzdHMgdGltZXMgb3V0IG9uIE1hYyBhZnRlciByOTc4NTAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50
eHQKaW5kZXggZTBkOGJiNS4uOTQ2OGQwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS1leHBlY3RlZC50eHQKQEAgLTg3LDcgKzg3
LDggQEAgaHRtbDogW10KIHN0eWxlCiByYXcgc3R5bGUKIFsnZm9udC13ZWlnaHQnOidub3JtYWwn
XSBAWzAtMjBdIGFjdGl2ZQotWyd3aWR0aCc6Jzg1JSddIEBbMjEtMzFdIGFjdGl2ZQorWyd3aWR0
aCc6Jzg1JSddIEBbMjEtMzJdIGFjdGl2ZQorWydiYWNrZ3JvdW5kLWltYWdlJzondXJsKGJhci5w
bmcpJ10gQFszMy02M10gYWN0aXZlCiAKID09PSBBdHRyaWJ1dGUgc3R5bGVzIGZvciB0YWJsZSA9
PT0KIEF0dHJpYnV0ZTogd2lkdGgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
c3R5bGVzLW5ldy1BUEkuaHRtbAppbmRleCA2ZGYwZWQwLi5jMDAwOWEyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sCkBAIC0zNDgsNyAr
MzQ4LDcgQEAgYm9keS5tYWlucGFnZSB7CiA8L3N0eWxlPgogPC9oZWFkPgogCi08Ym9keSBpZD0i
bWFpbkJvZHkiIGNsYXNzPSJtYWluMSBtYWluMiBtYWlucGFnZSIgb25sb2FkPSJydW5UZXN0KCki
IHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyB3aWR0aDogODUlIj4KKzxib2R5IGlkPSJtYWlu
Qm9keSIgY2xhc3M9Im1haW4xIG1haW4yIG1haW5wYWdlIiBvbmxvYWQ9InJ1blRlc3QoKSIgc3R5
bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7IHdpZHRoOiA4NSU7IGJhY2tncm91bmQtaW1hZ2U6IHVy
bChiYXIucG5nKSI+CiA8cD4KIFRlc3RzIHRoYXQgSW5zcGVjdG9yQ1NTQWdlbnQgQVBJIG1ldGhv
ZHMgd29yayBhcyBleHBlY3RlZC4KIDwvcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3Y2I1ZmUxLi4xNzkxYjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTAtMTkgIEFsZXhhbmRlciBQYXZs
b3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1Mg
YmFja2dyb3VuZC1pbWFnZSBhcHBsaWVkIGlubGluZSBzaG93cyBhIHdhcm5pbmcsIGJ1dCBzdGls
bCB3b3Jrcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcwMzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgZWxpbWluYXRlcyB0aGUgIm5vbi1wYXJzZWQgcHJvcGVydHkiIHdhcm5pbmcg
ZGlzcGxheWVkIG5leHQgdG8gYW55CisgICAgICAgICJiYWNrZ3JvdW5kLWltYWdlIiBwcm9wZXJ0
eSBvZiBhbiBlbGVtZW50J3MgaW5saW5lIHN0eWxlLgorCisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24pOgor
ICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6c2V0UHJv
cGVydHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZTo6Z2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMpOgorCiAyMDExLTEwLTE5ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IGJ1dHRvbnMgb2Yg
bnVtYmVyIHR5cGUgPGlucHV0PiBjb250cm9scyBhcmUgbm90IGZ1bGx5IGFjY2Vzc2libGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggYzE5NDQ3Yi4uNDU0MjIxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKQEAgLTU0OCwxMyArNTQ4LDE3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJz
ZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBEb2N1bWVudCogZG9jLCBDU1NTZWxlY3Rv
ckxpCiAgICAgQVNTRVJUKGR1bW15U3R5bGVTaGVldC0+aGFzT25lUmVmKCkpOwogfQogCi1ib29s
IENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiog
ZGVjbGFyYXRpb24sIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBSZWZQdHI8Q1NTU3R5bGVTb3VyY2VE
YXRhPiogc3R5bGVTb3VyY2VEYXRhKQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24o
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGRlY2xhcmF0aW9uLCBjb25zdCBTdHJpbmcmIHN0
cmluZywgUmVmUHRyPENTU1N0eWxlU291cmNlRGF0YT4qIHN0eWxlU291cmNlRGF0YSwgQ1NTU3R5
bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgLy8gTGVuZ3RoIG9mIHRoZSAiQC13
ZWJraXQtZGVjbHN7IiBwcmVmaXguCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByZWZpeExl
bmd0aCA9IDE1OwogCi0gICAgQVNTRVJUKCFkZWNsYXJhdGlvbi0+c3R5bGVzaGVldCgpIHx8IGRl
Y2xhcmF0aW9uLT5zdHlsZXNoZWV0KCktPmlzQ1NTU3R5bGVTaGVldCgpKTsKLSAgICBzZXRTdHls
ZVNoZWV0KHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihkZWNsYXJhdGlvbi0+c3R5bGVzaGVl
dCgpKSk7CisgICAgaWYgKGNvbnRleHRTdHlsZVNoZWV0KQorICAgICAgICBzZXRTdHlsZVNoZWV0
KGNvbnRleHRTdHlsZVNoZWV0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCFkZWNsYXJh
dGlvbi0+c3R5bGVzaGVldCgpIHx8IGRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCktPmlzQ1NTU3R5
bGVTaGVldCgpKTsKKyAgICAgICAgc2V0U3R5bGVTaGVldChzdGF0aWNfY2FzdDxDU1NTdHlsZVNo
ZWV0Kj4oZGVjbGFyYXRpb24tPnN0eWxlc2hlZXQoKSkpOworICAgIH0KICAgICBpZiAoc3R5bGVT
b3VyY2VEYXRhKSB7CiAgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhID0gQ1NTUnVsZVNvdXJjZURh
dGE6OmNyZWF0ZSgpOwogICAgICAgICBtX2N1cnJlbnRSdWxlRGF0YS0+c3R5bGVTb3VyY2VEYXRh
ID0gQ1NTU3R5bGVTb3VyY2VEYXRhOjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRl
eCBjODA0ZTRiLi4yODc1ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYXJzZVN5c3RlbUNvbG9yKFJHQkEzMiYgY29s
b3IsIGNvbnN0IFN0cmluZyYsIERvY3VtZW50Kik7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gcGFyc2VWYWxpZFByaW1pdGl2ZShpbnQgcHJvcElkLCBDU1NQYXJzZXJWYWx1ZSop
OwogICAgIGJvb2wgcGFyc2VDb2xvcihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0
IFN0cmluZyYpOwotICAgIGJvb2wgcGFyc2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiosIGNvbnN0IFN0cmluZyYsIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+KiBzdHls
ZVNvdXJjZURhdGEgPSAwKTsKKyAgICBib29sIHBhcnNlRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmLCBSZWZQdHI8Q1NTU3R5bGVTb3VyY2VEYXRh
PiogPSAwLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCA9IDApOwogICAgIGJvb2wg
cGFyc2VNZWRpYVF1ZXJ5KE1lZGlhTGlzdCosIGNvbnN0IFN0cmluZyYpOwogCiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggYTBjZDU3NS4uZWZmNjBjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMTg5LDkg
KzE4OSwxMCBAQCBib29sIEluc3BlY3RvclN0eWxlOjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgYwogCiAgICAgaWYgKHByb3BlcnR5VGV4
dC5zdHJpcFdoaXRlU3BhY2UoKS5sZW5ndGgoKSkgewogICAgICAgICBSZWZQdHI8Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24+IHRlbXBNdXRhYmxlU3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgICAgIENTU1BhcnNlciBwOwogICAgICAgICBSZWZQdHI8
Q1NTU3R5bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRhID0gQ1NTU3R5bGVTb3VyY2VEYXRhOjpjcmVh
dGUoKTsKLSAgICAgICAgcC5wYXJzZURlY2xhcmF0aW9uKHRlbXBNdXRhYmxlU3R5bGUuZ2V0KCks
IHByb3BlcnR5VGV4dCArICIgIiArIGJvZ3VzUHJvcGVydHlOYW1lICsgIjogbm9uZSIsICZzb3Vy
Y2VEYXRhKTsKKyAgICAgICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IG1fc3R5bGUtPnN0
eWxlc2hlZXQoKS0+aXNDU1NTdHlsZVNoZWV0KCkgPyBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0
Kj4obV9zdHlsZS0+c3R5bGVzaGVldCgpKSA6IDA7CisgICAgICAgIENTU1BhcnNlciBwOworICAg
ICAgICBwLnBhcnNlRGVjbGFyYXRpb24odGVtcE11dGFibGVTdHlsZS5nZXQoKSwgcHJvcGVydHlU
ZXh0ICsgIiAiICsgYm9ndXNQcm9wZXJ0eU5hbWUgKyAiOiBub25lIiwgJnNvdXJjZURhdGEsIHN0
eWxlU2hlZXQpOwogICAgICAgICBWZWN0b3I8Q1NTUHJvcGVydHlTb3VyY2VEYXRhPiYgcHJvcGVy
dHlEYXRhID0gc291cmNlRGF0YS0+cHJvcGVydHlEYXRhOwogICAgICAgICB1bnNpZ25lZCBwcm9w
ZXJ0eUNvdW50ID0gcHJvcGVydHlEYXRhLnNpemUoKTsKIApAQCAtMTE5Niw3ICsxMTk3LDcgQEAg
Ym9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmdldFN0eWxlQXR0cmlidXRl
UmFuZ2VzKFJlZlB0cjxDU1NTdHlsZVMKIAogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbj4gdGVtcERlY2xhcmF0aW9uID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNy
ZWF0ZSgpOwogICAgIENTU1BhcnNlciBwOwotICAgIHAucGFyc2VEZWNsYXJhdGlvbih0ZW1wRGVj
bGFyYXRpb24uZ2V0KCksIG1fc3R5bGVUZXh0LCByZXN1bHQpOworICAgIHAucGFyc2VEZWNsYXJh
dGlvbih0ZW1wRGVjbGFyYXRpb24uZ2V0KCksIG1fc3R5bGVUZXh0LCByZXN1bHQsIG1fZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCg==
</data>
<flag name="review"
          id="109488"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>