<?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>7882</bug_id>
          
          <creation_ts>2006-03-20 17:08:53 -0800</creation_ts>
          <short_desc>Remove more DeprecatedString usage</short_desc>
          <delta_ts>2006-03-22 15:35:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>37082</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-03-20 17:08:53 -0800</bug_when>
    <thetext>Remove more DeprecatedString usage.... it&apos;s existance bothers me greatly ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37083</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-03-20 17:09:35 -0800</bug_when>
    <thetext>its even.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37084</commentid>
    <comment_count>2</comment_count>
      <attachid>7201</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-03-20 17:10:00 -0800</bug_when>
    <thetext>Created attachment 7201
Remove more DeprecatedString</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37085</commentid>
    <comment_count>3</comment_count>
      <attachid>7202</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-03-20 17:10:45 -0800</bug_when>
    <thetext>Created attachment 7202
Same patch as above, ignoring whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37346</commentid>
    <comment_count>4</comment_count>
      <attachid>7201</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-22 08:07:59 -0800</bug_when>
    <thetext>Comment on attachment 7201
Remove more DeprecatedString

-    kdDebug( 6080 ) &lt;&lt; &quot;CSSParser::CSSParser this=&quot; &lt;&lt; this &lt;&lt; endl;
+    kdDebug(6080) &lt;&lt; &quot;CSSParser::CSSParser this=&quot; &lt;&lt; this &lt;&lt; endl;

-    kdDebug( 6080 ) &lt;&lt; &quot;CSS parse error &quot; &lt;&lt; str &lt;&lt; endl;
+    kdDebug(6080) &lt;&lt; &quot;CSS parse error &quot; &lt;&lt; str &lt;&lt; endl;

We don&apos;t even have kdDebug in our tree, so this should be removed rather than reformatted.

There&apos;s a ton in this patch that has nothing to do with DeprecatedString.

-            valid_primitive = ( validUnit( value, FLength, strict ) );
+            valid_primitive = (validUnit(value, FLength, strict));

I suggest removing the parentheses altogether here.

+            // qDebug(&quot; new value: id=%d&quot;, id);

-//     kdDebug( 6080 ) &lt;&lt; &quot;  got style, variant and weight current=&quot; &lt;&lt; valueList-&gt;currentValue &lt;&lt; endl;
+//     kdDebug(6080) &lt;&lt; &quot;  got style, variant and weight current=&quot; &lt;&lt; valueList-&gt;currentValue &lt;&lt; endl;

-    // kdDebug( 6080 ) &lt;&lt; &quot;  got size&quot; &lt;&lt; endl;
+    // kdDebug(6080) &lt;&lt; &quot;  got size&quot; &lt;&lt; endl;

+        //qDebug(&quot;value = %s, converted=%.2f&quot;, DeprecatedString((QChar *)t, length).latin1(), yylval-&gt;val);

Lets remove commented-out debugging code too.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7201</attachid>
            <date>2006-03-20 17:10:00 -0800</date>
            <delta_ts>2006-03-22 08:07:59 -0800</delta_ts>
            <desc>Remove more DeprecatedString</desc>
            <filename>new.patch</filename>
            <type>text/plain</type>
            <size>66735</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2VjbWEva2pzX2Nzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9r
anNfY3NzLmNwcAkocmV2aXNpb24gMTM0MDMpCisrKyBraHRtbC9lY21hL2tqc19jc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODYsOSArMTg2LDkgQEAgdm9pZCBET01DU1NTdHlsZURlY2xhcmF0
aW9uOjpwdXQoRXhlY1N0YQogI2VuZGlmCiAgIERPTUV4Y2VwdGlvblRyYW5zbGF0b3IgZXhjZXB0
aW9uKGV4ZWMpOwogICBDU1NTdHlsZURlY2xhcmF0aW9uICZzdHlsZURlY2wgPSAqbV9pbXBsOwot
ICBpZiAocHJvcGVydHlOYW1lID09ICJjc3NUZXh0IikgeworICBpZiAocHJvcGVydHlOYW1lID09
ICJjc3NUZXh0IikKICAgICBzdHlsZURlY2wuc2V0Q3NzVGV4dCh2YWx1ZS0+dG9TdHJpbmcoZXhl
YykuZG9tU3RyaW5nKCksIGV4Y2VwdGlvbik7Ci0gIH0gZWxzZSB7CisgIGVsc2UgewogICAgIGlm
IChpc0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICBib29sIHBpeGVsT3JQ
b3M7CiAgICAgICBTdHJpbmcgcHJvcCA9IGNzc1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUsICZw
aXhlbE9yUG9zKTsKSW5kZXg6IGtodG1sL2VjbWEva2pzX2JpbmRpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBraHRtbC9lY21hL2tqc19iaW5kaW5nLmgJKHJldmlzaW9uIDEzNDAzKQorKysga2h0bWwvZWNt
YS9ranNfYmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBFdmVudDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFz
cyBOb2RlOworICAgIGNsYXNzIFN0cmluZzsKIAogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiB9CkluZGV4OiByZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVu
ZGVyaW5nL3JlbmRlcl9zdHlsZS5oCShyZXZpc2lvbiAxMzQwMykKKysrIHJlbmRlcmluZy9yZW5k
ZXJfc3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzU2LDcgKzM1Niw3IEBAIHB1YmxpYzoKIAog
c3RydWN0IFN0eWxlRGFzaGJvYXJkUmVnaW9uCiB7Ci0gICAgRGVwcmVjYXRlZFN0cmluZyBsYWJl
bDsKKyAgICBTdHJpbmcgbGFiZWw7CiAgICAgTGVuZ3RoQm94IG9mZnNldDsKICAgICBpbnQgdHlw
ZTsKICAgICAKQEAgLTEzNDIsNyArMTM0Miw3IEBAIHB1YmxpYzoKIAogICAgIERlcHJlY2F0ZWRW
YWx1ZUxpc3Q8U3R5bGVEYXNoYm9hcmRSZWdpb24+IGRhc2hib2FyZFJlZ2lvbnMoKSBjb25zdCB7
IHJldHVybiBjc3MzTm9uSW5oZXJpdGVkRGF0YS0+bV9kYXNoYm9hcmRSZWdpb25zOyB9CiAgICAg
dm9pZCBzZXREYXNoYm9hcmRSZWdpb25zKERlcHJlY2F0ZWRWYWx1ZUxpc3Q8U3R5bGVEYXNoYm9h
cmRSZWdpb24+IHJlZ2lvbnMpIHsgU0VUX1ZBUihjc3MzTm9uSW5oZXJpdGVkRGF0YSxtX2Rhc2hi
b2FyZFJlZ2lvbnMscmVnaW9ucyk7IH0KLSAgICB2b2lkIHNldERhc2hib2FyZFJlZ2lvbiAoaW50
IHR5cGUsIERlcHJlY2F0ZWRTdHJpbmcgbGFiZWwsIExlbmd0aCB0LCBMZW5ndGggciwgTGVuZ3Ro
IGIsIExlbmd0aCBsLCBib29sIGFwcGVuZCkgeworICAgIHZvaWQgc2V0RGFzaGJvYXJkUmVnaW9u
IChpbnQgdHlwZSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgTGVuZ3RoIHQsIExlbmd0aCByLCBMZW5n
dGggYiwgTGVuZ3RoIGwsIGJvb2wgYXBwZW5kKSB7CiAgICAgICAgIFN0eWxlRGFzaGJvYXJkUmVn
aW9uIHJlZ2lvbjsKICAgICAgICAgcmVnaW9uLmxhYmVsID0gbGFiZWw7CiAgICAgICAgIHJlZ2lv
bi5vZmZzZXQudG9wICA9IHQ7CkluZGV4OiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMzQwMykKKysrIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBA
IGVudW0gSGl0VGVzdEFjdGlvbiB7CiAKIHN0cnVjdCBEYXNoYm9hcmRSZWdpb25WYWx1ZQogewot
ICAgIERlcHJlY2F0ZWRTdHJpbmcgbGFiZWw7CisgICAgU3RyaW5nIGxhYmVsOwogICAgIEludFJl
Y3QgYm91bmRzOwogICAgIEludFJlY3QgY2xpcDsKICAgICBpbnQgdHlwZTsKSW5kZXg6IGNzcy9j
c3NwYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9jc3NwYXJzZXIuY3BwCShyZXZpc2lvbiAx
MzQwMykKKysrIGNzcy9jc3NwYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3
IEBAIENTU1BhcnNlciogQ1NTUGFyc2VyOjpjdXJyZW50UGFyc2VyID0gMDsKIENTU1BhcnNlcjo6
Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKIHsKICNpZmRlZiBDU1NfREVCVUcKLSAgICBr
ZERlYnVnKCA2MDgwICkgPDwgIkNTU1BhcnNlcjo6Q1NTUGFyc2VyIHRoaXM9IiA8PCB0aGlzIDw8
IGVuZGw7CisgICAga2REZWJ1Zyg2MDgwKSA8PCAiQ1NTUGFyc2VyOjpDU1NQYXJzZXIgdGhpcz0i
IDw8IHRoaXMgPDwgZW5kbDsKICNlbmRpZgogICAgIHN0cmljdCA9IHN0cmljdFBhcnNpbmc7CiAK
QEAgLTE1Niw3ICsxNTYsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGU+IENTU1BhcnNlcjo6cGFyc2VS
dWxlCiAgICAgcmV0dXJuIHJ1bGUucmVsZWFzZSgpOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZSggQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gKmRlY2xhcmF0aW9uLCBpbnQgX2lk
LCBjb25zdCBTdHJpbmcgJnN0cmluZywKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uICpkZWNsYXJhdGlvbiwgaW50IF9pZCwgY29uc3QgU3RyaW5n
ICZzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBfaW1wb3J0YW50KQog
ewogICAgIHN0eWxlRWxlbWVudCA9IGRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCk7CkBAIC0yMDYs
NyArMjA2LDcgQEAgUkdCQTMyIENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb25zdCBTdHJpbgogICAg
IHJldHVybiBjb2xvcjsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoIENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uICpkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nICZzdHJpbmcgKQor
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gKmRl
Y2xhcmF0aW9uLCBjb25zdCBTdHJpbmcgJnN0cmluZykKIHsKICAgICBzdHlsZUVsZW1lbnQgPSBk
ZWNsYXJhdGlvbi0+c3R5bGVzaGVldCgpOwogCkBAIC0yMjYsNyArMjI2LDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlQ29sb3IoIENTU011dGFibGVTdAogICAgIHJldHVybiBvazsKIH0KIAotYm9v
bCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
ICpkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nICZzdHJpbmcgKQorYm9vbCBDU1NQYXJzZXI6OnBh
cnNlRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gKmRlY2xhcmF0aW9uLCBj
b25zdCBTdHJpbmcgJnN0cmluZykKIHsKICAgICBzdHlsZUVsZW1lbnQgPSBkZWNsYXJhdGlvbi0+
c3R5bGVzaGVldCgpOwogCkBAIC0yODEsMTkgKzI4MSwxOSBAQCBEb2N1bWVudCAqQ1NTUGFyc2Vy
Ojpkb2N1bWVudCgpIGNvbnN0CiAKIGJvb2wgQ1NTUGFyc2VyOjp2YWxpZFVuaXQoVmFsdWUqIHZh
bHVlLCBVbml0cyB1bml0ZmxhZ3MsIGJvb2wgc3RyaWN0KQogewotICAgIGlmICggdW5pdGZsYWdz
ICYgRk5vbk5lZyAmJiB2YWx1ZS0+ZlZhbHVlIDwgMCApCisgICAgaWYgKHVuaXRmbGFncyAmIEZO
b25OZWcgJiYgdmFsdWUtPmZWYWx1ZSA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGJvb2wgYiA9IGZhbHNlOwotICAgIHN3aXRjaCggdmFsdWUtPnVuaXQgKSB7CisgICAgc3dpdGNo
KHZhbHVlLT51bml0KSB7CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjoK
ICAgICAgICAgYiA9ICh1bml0ZmxhZ3MgJiBGTnVtYmVyKTsKLSAgICAgICAgaWYgKCAhYiAmJiAo
ICh1bml0ZmxhZ3MgJiBGTGVuZ3RoKSAmJiAodmFsdWUtPmZWYWx1ZSA9PSAwIHx8ICFzdHJpY3Qg
KSApICkgeworICAgICAgICBpZiAoIWIgJiYgKCh1bml0ZmxhZ3MgJiBGTGVuZ3RoKSAmJiAodmFs
dWUtPmZWYWx1ZSA9PSAwIHx8ICFzdHJpY3QpKSkgewogICAgICAgICAgICAgdmFsdWUtPnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOwogICAgICAgICAgICAgYiA9IHRydWU7CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKCAhYiAmJiAoIHVuaXRmbGFncyAmIEZJbnRlZ2VyICkgJiYKLSAg
ICAgICAgICAgICAodmFsdWUtPmZWYWx1ZSAtIChpbnQpdmFsdWUtPmZWYWx1ZSkgPCAwLjAwMSAp
CisgICAgICAgIGlmICghYiAmJiAodW5pdGZsYWdzICYgRkludGVnZXIpICYmCisgICAgICAgICAg
ICAgKHZhbHVlLT5mVmFsdWUgLSAoaW50KXZhbHVlLT5mVmFsdWUpIDwgMC4wMDEpCiAgICAgICAg
ICAgICBiID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0U6CkBAIC0zMjYsMTMgKzMyNiwxMyBAQCBib29sIENTU1BhcnNlcjo6
dmFsaWRVbml0KFZhbHVlKiB2YWx1ZSwgCiAgICAgcmV0dXJuIGI7CiB9CiAKLWJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKCBpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCApCitib29sIENTU1Bh
cnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIHsKLSAgICBpZiAo
ICF2YWx1ZUxpc3QgKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKCF2YWx1ZUxpc3QpIHJldHVybiBm
YWxzZTsKIAogICAgIFZhbHVlICp2YWx1ZSA9IHZhbHVlTGlzdC0+Y3VycmVudCgpOwogCi0gICAg
aWYgKCAhdmFsdWUgKQorICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGludCBpZCA9IHZhbHVlLT5pZDsKQEAgLTM2Nyw0NSArMzY3LDQ1IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKCBpbnQgcHJvcElkLCAKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2
ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTX1BST1BfVU5JQ09ERV9CSURJ
OiAgICAgICAgIC8vIG5vcm1hbCB8IGVtYmVkIHwgYmlkaS1vdmVycmlkZSB8IGluaGVyaXQKLSAg
ICAgICAgaWYgKCBpZCA9PSBDU1NfVkFMX05PUk1BTCB8fAorICAgICAgICBpZiAoaWQgPT0gQ1NT
X1ZBTF9OT1JNQUwgfHwKICAgICAgICAgICAgICBpZCA9PSBDU1NfVkFMX0VNQkVEIHx8Ci0gICAg
ICAgICAgICAgaWQgPT0gQ1NTX1ZBTF9CSURJX09WRVJSSURFICkKKyAgICAgICAgICAgICBpZCA9
PSBDU1NfVkFMX0JJRElfT1ZFUlJJREUpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0
cnVlOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1BfUE9TSVRJT046ICAgICAg
ICAgICAgIC8vIHN0YXRpYyB8IHJlbGF0aXZlIHwgYWJzb2x1dGUgfCBmaXhlZCB8IGluaGVyaXQK
LSAgICAgICAgaWYgKCBpZCA9PSBDU1NfVkFMX1NUQVRJQyB8fAorICAgICAgICBpZiAoaWQgPT0g
Q1NTX1ZBTF9TVEFUSUMgfHwKICAgICAgICAgICAgICBpZCA9PSBDU1NfVkFMX1JFTEFUSVZFIHx8
CiAgICAgICAgICAgICAgaWQgPT0gQ1NTX1ZBTF9BQlNPTFVURSB8fAotICAgICAgICAgICAgIGlk
ID09IENTU19WQUxfRklYRUQgKQorICAgICAgICAgICAgIGlkID09IENTU19WQUxfRklYRUQpCiAg
ICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgQ1NTX1BST1BfUEFHRV9CUkVBS19BRlRFUjogICAgIC8vIGF1dG8gfCBhbHdheXMgfCBh
dm9pZCB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQKICAgICBjYXNlIENTU19QUk9QX1BBR0VfQlJF
QUtfQkVGT1JFOiAgICAvLyBhdXRvIHwgYWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCBp
bmhlcml0Ci0gICAgICAgIGlmICggaWQgPT0gQ1NTX1ZBTF9BVVRPIHx8CisgICAgICAgIGlmIChp
ZCA9PSBDU1NfVkFMX0FVVE8gfHwKICAgICAgICAgICAgICBpZCA9PSBDU1NfVkFMX0FMV0FZUyB8
fAogICAgICAgICAgICAgIGlkID09IENTU19WQUxfQVZPSUQgfHwKICAgICAgICAgICAgICBpZCA9
PSBDU1NfVkFMX0xFRlQgfHwKLSAgICAgICAgICAgICBpZCA9PSBDU1NfVkFMX1JJR0hUICkKKyAg
ICAgICAgICAgICBpZCA9PSBDU1NfVkFMX1JJR0hUKQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0
aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU19QUk9QX1BBR0VfQlJF
QUtfSU5TSURFOiAgICAvLyBhdm9pZCB8IGF1dG8gfCBpbmhlcml0Ci0gICAgICAgIGlmICggaWQg
PT0gQ1NTX1ZBTF9BVVRPIHx8Ci0gICAgICAgICAgICAgaWQgPT0gQ1NTX1ZBTF9BVk9JRCApCisg
ICAgICAgIGlmIChpZCA9PSBDU1NfVkFMX0FVVE8gfHwKKyAgICAgICAgICAgICBpZCA9PSBDU1Nf
VkFMX0FWT0lEKQogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIENTU19QUk9QX0VNUFRZX0NFTExTOiAgICAgICAgICAvLyBzaG93
IHwgaGlkZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKCBpZCA9PSBDU1NfVkFMX1NIT1cgfHwKLSAg
ICAgICAgICAgICBpZCA9PSBDU1NfVkFMX0hJREUgKQorICAgICAgICBpZiAoaWQgPT0gQ1NTX1ZB
TF9TSE9XIHx8CisgICAgICAgICAgICAgaWQgPT0gQ1NTX1ZBTF9ISURFKQogICAgICAgICAgICAg
dmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU19Q
Uk9QX0NPTlRFTlQ6ICAgICAgICAgICAgICAvLyBbIDxzdHJpbmc+IHwgPHVyaT4gfCA8Y291bnRl
cj4gfCBhdHRyKFgpIHwgb3Blbi1xdW90ZSB8CiAgICAgICAgIC8vIGNsb3NlLXF1b3RlIHwgbm8t
b3Blbi1xdW90ZSB8IG5vLWNsb3NlLXF1b3RlIF0rIHwgaW5oZXJpdAotICAgICAgICByZXR1cm4g
cGFyc2VDb250ZW50KCBwcm9wSWQsIGltcG9ydGFudCApOworICAgICAgICByZXR1cm4gcGFyc2VD
b250ZW50KHByb3BJZCwgaW1wb3J0YW50KTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENT
U19QUk9QX1dISVRFX1NQQUNFOiAgICAgICAgICAvLyBub3JtYWwgfCBwcmUgfCBub3dyYXAgfCBp
bmhlcml0CkBAIC00MTgsMTYgKzQxOCwxNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSgg
aW50IHByb3BJZCwgCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NfUFJPUF9DTElQOiAg
ICAgICAgICAgICAgICAgLy8gPHNoYXBlPiB8IGF1dG8gfCBpbmhlcml0Ci0gICAgICAgIGlmICgg
aWQgPT0gQ1NTX1ZBTF9BVVRPICkKKyAgICAgICAgaWYgKGlkID09IENTU19WQUxfQVVUTykKICAg
ICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKCB2YWx1
ZS0+dW5pdCA9PSBWYWx1ZTo6RnVuY3Rpb24gKQotICAgICAgICAgICAgcmV0dXJuIHBhcnNlU2hh
cGUoIHByb3BJZCwgaW1wb3J0YW50ICk7CisgICAgICAgIGVsc2UgaWYgKHZhbHVlLT51bml0ID09
IFZhbHVlOjpGdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBwYXJzZVNoYXBlKHByb3BJZCwg
aW1wb3J0YW50KTsKICAgICAgICAgYnJlYWs7CiAKICNpZiBfX0FQUExFX18KICAgICBjYXNlIENT
U19QUk9QX19LSFRNTF9EQVNIQk9BUkRfUkVHSU9OOiAgICAgICAgICAgICAgICAgLy8gPGRhc2hi
b2FyZC1yZWdpb24+IHwgPGRhc2hib2FyZC1yZWdpb24+IAotICAgICAgICBpZiAoIHZhbHVlLT51
bml0ID09IFZhbHVlOjpGdW5jdGlvbiB8fCBpZCA9PSBDU1NfVkFMX05PTkUpCi0gICAgICAgICAg
ICByZXR1cm4gcGFyc2VEYXNoYm9hcmRSZWdpb25zKCBwcm9wSWQsIGltcG9ydGFudCApOworICAg
ICAgICBpZiAodmFsdWUtPnVuaXQgPT0gVmFsdWU6OkZ1bmN0aW9uIHx8IGlkID09IENTU19WQUxf
Tk9ORSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZURhc2hib2FyZFJlZ2lvbnMocHJvcElkLCBp
bXBvcnRhbnQpOwogICAgICAgICBicmVhazsKICNlbmRpZgogCkBAIC00NDEsNyArNDQxLDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoIGludCBwcm9wSWQsIAogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgQ1NTX1BST1BfQk9SREVSX0NPTExBUFNFOiAgICAgIC8vIGNvbGxhcHNlIHwg
c2VwYXJhdGUgfCBpbmhlcml0Ci0gICAgICAgIGlmICggaWQgPT0gQ1NTX1ZBTF9DT0xMQVBTRSB8
fCBpZCA9PSBDU1NfVkFMX1NFUEFSQVRFICkKKyAgICAgICAgaWYgKGlkID09IENTU19WQUxfQ09M
TEFQU0UgfHwgaWQgPT0gQ1NTX1ZBTF9TRVBBUkFURSkKICAgICAgICAgICAgIHZhbGlkX3ByaW1p
dGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCkBAIC00NTcsNyArNDU3LDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoIGludCBwcm9wSWQsIAogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgQ1NTX1BST1BfTElTVF9TVFlMRV9QT1NJVElPTjogIC8vIGluc2lkZSB8IG91dHNpZGUg
fCBpbmhlcml0Ci0gICAgICAgIGlmICggaWQgPT0gQ1NTX1ZBTF9JTlNJREUgfHwgaWQgPT0gQ1NT
X1ZBTF9PVVRTSURFICkKKyAgICAgICAgaWYgKGlkID09IENTU19WQUxfSU5TSURFIHx8IGlkID09
IENTU19WQUxfT1VUU0lERSkKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOwogCkBAIC00NzksNyArNDc5LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoIGludCBwcm9wSWQsIAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1Bf
RElSRUNUSU9OOiAgICAgICAgICAgIC8vIGx0ciB8IHJ0bCB8IGluaGVyaXQKLSAgICAgICAgaWYg
KCBpZCA9PSBDU1NfVkFMX0xUUiB8fCBpZCA9PSBDU1NfVkFMX1JUTCApCisgICAgICAgIGlmIChp
ZCA9PSBDU1NfVkFMX0xUUiB8fCBpZCA9PSBDU1NfVkFMX1JUTCkKICAgICAgICAgICAgIHZhbGlk
X3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCkBAIC00ODksMjEgKzQ4OSwyMSBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSggaW50IHByb3BJZCwgCiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBDU1NfUFJPUF9GTE9BVDogICAgICAgICAgICAgICAgLy8gbGVmdCB8IHJp
Z2h0IHwgbm9uZSB8IGluaGVyaXQgKyBjZW50ZXIgZm9yIGJ1Z2d5IENTUwotICAgICAgICBpZiAo
IGlkID09IENTU19WQUxfTEVGVCB8fCBpZCA9PSBDU1NfVkFMX1JJR0hUIHx8CisgICAgICAgIGlm
IChpZCA9PSBDU1NfVkFMX0xFRlQgfHwgaWQgPT0gQ1NTX1ZBTF9SSUdIVCB8fAogICAgICAgICAg
ICAgIGlkID09IENTU19WQUxfTk9ORSB8fCBpZCA9PSBDU1NfVkFMX0NFTlRFUikKICAgICAgICAg
ICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBD
U1NfUFJPUF9DTEVBUjogICAgICAgICAgICAgICAgLy8gbm9uZSB8IGxlZnQgfCByaWdodCB8IGJv
dGggfCBpbmhlcml0Ci0gICAgICAgIGlmICggaWQgPT0gQ1NTX1ZBTF9OT05FIHx8IGlkID09IENT
U19WQUxfTEVGVCB8fAorICAgICAgICBpZiAoaWQgPT0gQ1NTX1ZBTF9OT05FIHx8IGlkID09IENT
U19WQUxfTEVGVCB8fAogICAgICAgICAgICAgIGlkID09IENTU19WQUxfUklHSFR8fCBpZCA9PSBD
U1NfVkFMX0JPVEgpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1BfVEVYVF9BTElHTjoKICAgICAgICAgLy8gbGVm
dCB8IHJpZ2h0IHwgY2VudGVyIHwganVzdGlmeSB8IGtodG1sX2xlZnQgfCBraHRtbF9yaWdodCB8
IGtodG1sX2NlbnRlciB8IDxzdHJpbmc+IHwgaW5oZXJpdAotICAgICAgICBpZiAoICggaWQgPj0g
Q1NTX1ZBTF9fS0hUTUxfQVVUTyAmJiBpZCA8PSBDU1NfVkFMX19LSFRNTF9DRU5URVIgKSB8fAot
ICAgICAgICAgICAgIHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
ICkKKyAgICAgICAgaWYgKChpZCA+PSBDU1NfVkFMX19LSFRNTF9BVVRPICYmIGlkIDw9IENTU19W
QUxfX0tIVE1MX0NFTlRFUikgfHwKKyAgICAgICAgICAgICB2YWx1ZS0+dW5pdCA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRy
dWU7CiAgICAgICAgIGJyZWFrOwogCkBAIC01MjUsMTIgKzUyNSwxMiBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZSggaW50IHByb3BJZCwgCiAgICAgICAgIGlmIChpZCA+PSBDU1NfVkFMX05P
Uk1BTCAmJiBpZCA8PSBDU1NfVkFMXzkwMCkgewogICAgICAgICAgICAgLy8gQWxscmVhZHkgY29y
cmVjdCBpZAogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgfSBl
bHNlIGlmICggdmFsaWRVbml0KCB2YWx1ZSwgRkludGVnZXJ8Rk5vbk5lZywgZmFsc2UgKSApIHsK
KyAgICAgICAgfSBlbHNlIGlmICh2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyfEZOb25OZWcsIGZh
bHNlKSkgewogICAgICAgICAgICAgaW50IHdlaWdodCA9IChpbnQpdmFsdWUtPmZWYWx1ZTsKLSAg
ICAgICAgICAgIGlmICggKHdlaWdodCAlIDEwMCkgKQorICAgICAgICAgICAgaWYgKCh3ZWlnaHQg
JSAxMDApKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgd2VpZ2h0IC89IDEw
MDsKLSAgICAgICAgICAgIGlmICggd2VpZ2h0ID49IDEgJiYgd2VpZ2h0IDw9IDkgKSB7CisgICAg
ICAgICAgICBpZiAod2VpZ2h0ID49IDEgJiYgd2VpZ2h0IDw9IDkpIHsKICAgICAgICAgICAgICAg
ICBpZCA9IENTU19WQUxfMTAwICsgd2VpZ2h0IC0gMTsKICAgICAgICAgICAgICAgICB2YWxpZF9w
cmltaXRpdmUgPSB0cnVlOwogICAgICAgICAgICAgfQpAQCAtNTY1LDEyICs1NjUsMTIgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoIGludCBwcm9wSWQsIAogICAgIGNhc2UgQ1NTX1BST1Bf
U0NST0xMQkFSX0RBUktTSEFET1dfQ09MT1I6ICAgLy8gSUU1LjUKICAgICBjYXNlIENTU19QUk9Q
X1NDUk9MTEJBUl9UUkFDS19DT0xPUjogICAgICAgIC8vIElFNS41CiAgICAgY2FzZSBDU1NfUFJP
UF9TQ1JPTExCQVJfQVJST1dfQ09MT1I6ICAgICAgICAvLyBJRTUuNQotICAgICAgICBpZiAoIHN0
cmljdCApCisgICAgICAgIGlmIChzdHJpY3QpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Lyogbm9icmVhayAqLwogICAgIGNhc2UgQ1NTX1BST1BfT1VUTElORV9DT0xPUjogICAgICAgIC8v
IDxjb2xvcj4gfCBpbnZlcnQgfCBpbmhlcml0CiAgICAgICAgIC8vIG91dGxpbmUgaGFzICJpbnZl
cnQiIGFzIGFkZGl0aW9uYWwga2V5d29yZC4KLSAgICAgICAgaWYgKCBwcm9wSWQgPT0gQ1NTX1BS
T1BfT1VUTElORV9DT0xPUiAmJiBpZCA9PSBDU1NfVkFMX0lOVkVSVCApIHsKKyAgICAgICAgaWYg
KHByb3BJZCA9PSBDU1NfUFJPUF9PVVRMSU5FX0NPTE9SICYmIGlkID09IENTU19WQUxfSU5WRVJU
KSB7CiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTU4NywxMiArNTg3LDEyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKCBpbnQgcHJvcElkLCAKICAgICAgICAgaWYgKGlkID09IENTU19WQUxfX0tIVE1MX1RF
WFQpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOyAvLyBBbHdheXMgYWxsb3cg
dGhpcywgZXZlbiB3aGVuIHN0cmljdCBwYXJzaW5nIGlzIG9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2UgdXNlIHRoaXMgaW4gb3VyIFVBIHNoZWV0cy4K
LSAgICAgICAgZWxzZSBpZiAoIGlkID49IENTU19WQUxfQVFVQSAmJiBpZCA8PSBDU1NfVkFMX1dJ
TkRPV1RFWFQgfHwgaWQgPT0gQ1NTX1ZBTF9NRU5VIHx8Ci0gICAgICAgICAgICAgKGlkID49IENT
U19WQUxfR1JFWSAmJiBpZCA8IENTU19WQUxfX0tIVE1MX1RFWFQgJiYgIXN0cmljdCkgKSB7Cisg
ICAgICAgIGVsc2UgaWYgKGlkID49IENTU19WQUxfQVFVQSAmJiBpZCA8PSBDU1NfVkFMX1dJTkRP
V1RFWFQgfHwgaWQgPT0gQ1NTX1ZBTF9NRU5VIHx8CisgICAgICAgICAgICAgKGlkID49IENTU19W
QUxfR1JFWSAmJiBpZCA8IENTU19WQUxfX0tIVE1MX1RFWFQgJiYgIXN0cmljdCkpIHsKICAgICAg
ICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQ29sb3IoKTsKLSAgICAgICAgICAgIGlmICggcGFyc2Vk
VmFsdWUgKQorICAgICAgICAgICAgaWYgKHBhcnNlZFZhbHVlKQogICAgICAgICAgICAgICAgIHZh
bHVlTGlzdC0+bmV4dCgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNjQwLDcgKzY0
MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKCBpbnQgcHJvcElkLCAKICAgICAgICAg
fQogICAgICAgICBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1VSSSkgewogICAgICAgICAgICAgLy8gIyMjIGFsbG93IHN0cmluZyBpbiBub24gc3RyaWN0IG1v
ZGU/Ci0gICAgICAgICAgICBTdHJpbmcgdXJpID0gcGFyc2VVUkwoIGRvbVN0cmluZyggdmFsdWUt
PnN0cmluZyApICk7CisgICAgICAgICAgICBTdHJpbmcgdXJpID0gcGFyc2VVUkwoZG9tU3RyaW5n
KHZhbHVlLT5zdHJpbmcpKTsKICAgICAgICAgICAgIGlmICghdXJpLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gbmV3IENTU0ltYWdlVmFsdWUoCiAgICAgICAgICAg
ICAgICAgICAgIFN0cmluZyhLVVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRT
dHJpbmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkpLApAQCAtNjU4LDE1ICs2NTgs
MTUgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoIGludCBwcm9wSWQsIAogICAgICAgICBp
ZiAoaWQgPT0gQ1NTX1ZBTF9USElOIHx8IGlkID09IENTU19WQUxfTUVESVVNIHx8IGlkID09IENT
U19WQUxfVEhJQ0spCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSAoIHZhbGlkVW5pdCggdmFsdWUs
IEZMZW5ndGgsIHN0cmljdCApICk7CisgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSAodmFs
aWRVbml0KHZhbHVlLCBGTGVuZ3RoLCBzdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIENTU19QUk9QX0xFVFRFUl9TUEFDSU5HOiAgICAgICAvLyBub3JtYWwgfCA8bGVuZ3RoPiB8
IGluaGVyaXQKICAgICBjYXNlIENTU19QUk9QX1dPUkRfU1BBQ0lORzogICAgICAgICAvLyBub3Jt
YWwgfCA8bGVuZ3RoPiB8IGluaGVyaXQKLSAgICAgICAgaWYgKCBpZCA9PSBDU1NfVkFMX05PUk1B
TCApCisgICAgICAgIGlmIChpZCA9PSBDU1NfVkFMX05PUk1BTCkKICAgICAgICAgICAgIHZhbGlk
X3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlkX3ByaW1p
dGl2ZSA9IHZhbGlkVW5pdCggdmFsdWUsIEZMZW5ndGgsIHN0cmljdCApOworICAgICAgICAgICAg
dmFsaWRfcHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoLCBzdHJpY3QpOwogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1BfV09SRF9XUkFQOiAgICAgICAgICAgLy8g
bm9ybWFsIHwgYnJlYWstd29yZApAQCAtNjc1LDcgKzY3NSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKCBpbnQgcHJvcElkLCAKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU19Q
Uk9QX19LSFRNTF9GT05UX1NJWkVfREVMVEE6ICAgICAgICAgICAvLyA8bGVuZ3RoPgotICAgICAg
ICAgICB2YWxpZF9wcmltaXRpdmUgPSB2YWxpZFVuaXQoIHZhbHVlLCBGTGVuZ3RoLCBzdHJpY3Qg
KTsKKyAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3Ro
LCBzdHJpY3QpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1BfX0tIVE1MX05C
U1BfTU9ERTogICAgIC8vIG5vcm1hbCB8IHNwYWNlCkBAIC02OTksNyArNjk5LDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoIGludCBwcm9wSWQsIAogICAgIGNhc2UgQ1NTX1BST1BfUEFE
RElOR19CT1RUT006ICAgICAgIC8vICAgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4KICAgICBjYXNl
IENTU19QUk9QX1BBRERJTkdfTEVGVDogICAgICAgICAvLy8vCiAgICAgY2FzZSBDU1NfUFJPUF9f
S0hUTUxfUEFERElOR19TVEFSVDoKLSAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gKCAhaWQgJiYg
dmFsaWRVbml0KCB2YWx1ZSwgRkxlbmd0aHxGUGVyY2VudCwgc3RyaWN0ICkgKTsKKyAgICAgICAg
dmFsaWRfcHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGh8RlBlcmNl
bnQsIHN0cmljdCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1BfTUFYX0hF
SUdIVDogICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgbm9uZSB8IGluaGVy
aXQKQEAgLTcxNCw3ICs3MTQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSggaW50IHBy
b3BJZCwgCiAgICAgICAgIGlmIChpZCA9PSBDU1NfVkFMX0lOVFJJTlNJQyB8fCBpZCA9PSBDU1Nf
VkFMX01JTl9JTlRSSU5TSUMpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSAoICFpZCAmJiB2YWxp
ZFVuaXQoIHZhbHVlLCBGTGVuZ3RofEZQZXJjZW50fEZOb25OZWcsIHN0cmljdCApICk7CisgICAg
ICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0
aHxGUGVyY2VudHxGTm9uTmVnLCBzdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IENTU19QUk9QX0ZPTlRfU0laRToKQEAgLTcyMiwxNiArNzIyLDE2IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKCBpbnQgcHJvcElkLCAKICAgICAgICAgaWYgKGlkID49IENTU19WQUxfWFhf
U01BTEwgJiYgaWQgPD0gQ1NTX1ZBTF9MQVJHRVIpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRp
dmUgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSAo
IHZhbGlkVW5pdCggdmFsdWUsIEZMZW5ndGh8RlBlcmNlbnQsIHN0cmljdCApICk7CisgICAgICAg
ICAgICB2YWxpZF9wcmltaXRpdmUgPSAodmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RofEZQZXJjZW50
LCBzdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU19QUk9QX0ZPTlRfU1RZ
TEU6ICAgICAgICAgICAvLyBub3JtYWwgfCBpdGFsaWMgfCBvYmxpcXVlIHwgaW5oZXJpdAotICAg
ICAgICBpZiAoIGlkID09IENTU19WQUxfTk9STUFMIHx8IGlkID09IENTU19WQUxfSVRBTElDIHx8
IGlkID09IENTU19WQUxfT0JMSVFVRSkKKyAgICAgICAgaWYgKGlkID09IENTU19WQUxfTk9STUFM
IHx8IGlkID09IENTU19WQUxfSVRBTElDIHx8IGlkID09IENTU19WQUxfT0JMSVFVRSkKICAgICAg
ICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBDU1NfUFJPUF9GT05UX1ZBUklBTlQ6ICAgICAgICAgLy8gbm9ybWFsIHwgc21hbGwtY2FwcyB8
IGluaGVyaXQKLSAgICAgICAgaWYgKCBpZCA9PSBDU1NfVkFMX05PUk1BTCB8fCBpZCA9PSBDU1Nf
VkFMX1NNQUxMX0NBUFMpCisgICAgICAgIGlmIChpZCA9PSBDU1NfVkFMX05PUk1BTCB8fCBpZCA9
PSBDU1NfVkFMX1NNQUxMX0NBUFMpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVl
OwogICAgICAgICBicmVhazsKIApAQCAtNzM5LDEwICs3MzksMTAgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoIGludCBwcm9wSWQsIAogICAgICAgICAvLyBiYXNlbGluZSB8IHN1YiB8IHN1
cGVyIHwgdG9wIHwgdGV4dC10b3AgfCBtaWRkbGUgfCBib3R0b20gfCB0ZXh0LWJvdHRvbSB8CiAg
ICAgICAgIC8vIDxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IHwgaW5oZXJpdAogCi0gICAgICAgIGlm
ICggaWQgPj0gQ1NTX1ZBTF9CQVNFTElORSAmJiBpZCA8PSBDU1NfVkFMX19LSFRNTF9CQVNFTElO
RV9NSURETEUgKQorICAgICAgICBpZiAoaWQgPj0gQ1NTX1ZBTF9CQVNFTElORSAmJiBpZCA8PSBD
U1NfVkFMX19LSFRNTF9CQVNFTElORV9NSURETEUpCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRp
dmUgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSAo
ICFpZCAmJiB2YWxpZFVuaXQoIHZhbHVlLCBGTGVuZ3RofEZQZXJjZW50LCBzdHJpY3QgKSApOwor
ICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZM
ZW5ndGh8RlBlcmNlbnQsIHN0cmljdCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NT
X1BST1BfSEVJR0hUOiAgICAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwg
YXV0byB8IGluaGVyaXQKQEAgLTc1MSw3ICs3NTEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZSggaW50IHByb3BJZCwgCiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAvLyAjIyMgaGFuZGxlIG11bHRpbGVuZ3RoIGNhc2Ug
d2hlcmUgd2UgYWxsb3cgcmVsYXRpdmUgdW5pdHMKLSAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2
ZSA9ICggIWlkICYmIHZhbGlkVW5pdCggdmFsdWUsIEZMZW5ndGh8RlBlcmNlbnR8Rk5vbk5lZywg
c3RyaWN0ICkgKTsKKyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRV
bml0KHZhbHVlLCBGTGVuZ3RofEZQZXJjZW50fEZOb25OZWcsIHN0cmljdCkpOwogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1BfQk9UVE9NOiAgICAgICAgICAgICAgIC8vIDxsZW5n
dGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQKQEAgLTc2MywxNSArNzYzLDE1IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKCBpbnQgcHJvcElkLCAKICAgICBjYXNlIENTU19Q
Uk9QX01BUkdJTl9CT1RUT006ICAgICAgICAvLyAgIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwg
YXV0byB8IGluaGVyaXQKICAgICBjYXNlIENTU19QUk9QX01BUkdJTl9MRUZUOiAgICAgICAgICAv
Ly8vCiAgICAgY2FzZSBDU1NfUFJPUF9fS0hUTUxfTUFSR0lOX1NUQVJUOgotICAgICAgICBpZiAo
IGlkID09IENTU19WQUxfQVVUTyApCisgICAgICAgIGlmIChpZCA9PSBDU1NfVkFMX0FVVE8pCiAg
ICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB2YWxpZF9wcmltaXRpdmUgPSAoICFpZCAmJiB2YWxpZFVuaXQoIHZhbHVlLCBGTGVuZ3Ro
fEZQZXJjZW50LCBzdHJpY3QgKSApOworICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gKCFp
ZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGh8RlBlcmNlbnQsIHN0cmljdCkpOwogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1BfWl9JTkRFWDogICAgICAgICAgICAgIC8vIGF1
dG8gfCA8aW50ZWdlcj4gfCBpbmhlcml0Ci0gICAgICAgIC8vIHFEZWJ1ZygicGFyc2luZyB6LWlu
ZGV4OiBpZD0lZCwgZlZhbHVlPSVmIiwgaWQsIHZhbHVlLT5mVmFsdWUgKTsKLSAgICAgICAgaWYg
KCBpZCA9PSBDU1NfVkFMX0FVVE8gKSB7CisgICAgICAgIC8vIHFEZWJ1ZygicGFyc2luZyB6LWlu
ZGV4OiBpZD0lZCwgZlZhbHVlPSVmIiwgaWQsIHZhbHVlLT5mVmFsdWUpOworICAgICAgICBpZiAo
aWQgPT0gQ1NTX1ZBTF9BVVRPKSB7CiAgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVl
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTc3OSwxNCArNzc5LDE0IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKCBpbnQgcHJvcElkLCAKICAgICBjYXNlIENTU19QUk9Q
X09SUEhBTlM6ICAgICAgICAgICAgICAvLyA8aW50ZWdlcj4gfCBpbmhlcml0CiAgICAgY2FzZSBD
U1NfUFJPUF9XSURPV1M6ICAgICAgICAgICAgICAgLy8gPGludGVnZXI+IHwgaW5oZXJpdAogICAg
ICAgICAvLyAjIyMgbm90IHN1cHBvcnRlZCBsYXRlciBvbgotICAgICAgICB2YWxpZF9wcmltaXRp
dmUgPSAoICFpZCAmJiB2YWxpZFVuaXQoIHZhbHVlLCBGSW50ZWdlciwgZmFsc2UgKSApOworICAg
ICAgICB2YWxpZF9wcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIs
IGZhbHNlKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NfUFJPUF9MSU5FX0hFSUdI
VDogICAgICAgICAgLy8gbm9ybWFsIHwgPG51bWJlcj4gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdl
PiB8IGluaGVyaXQKLSAgICAgICAgaWYgKCBpZCA9PSBDU1NfVkFMX05PUk1BTCApCisgICAgICAg
IGlmIChpZCA9PSBDU1NfVkFMX05PUk1BTCkKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9
IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9ICggIWlk
ICYmIHZhbGlkVW5pdCggdmFsdWUsIEZOdW1iZXJ8Rkxlbmd0aHxGUGVyY2VudCwgc3RyaWN0ICkg
KTsKKyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVl
LCBGTnVtYmVyfEZMZW5ndGh8RlBlcmNlbnQsIHN0cmljdCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENTU19QUk9QX0ZPTlRfRkFNSUxZOgogICAgICAgICAvLyBbWyA8ZmFtaWx5LW5hbWU+
IHwgPGdlbmVyaWMtZmFtaWx5PiBdLF0qIFs8ZmFtaWx5LW5hbWU+IHwgPGdlbmVyaWMtZmFtaWx5
Pl0gfCBpbmhlcml0CkBAIC04MDMsMjEgKzgwMywyMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZSggaW50IHByb3BJZCwgCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDU1NWYWx1
ZUxpc3QgKmxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0OwogICAgICAgICAgICAgYm9vbCBpc192YWxp
ZCA9IHRydWU7Ci0gICAgICAgICAgICB3aGlsZSggaXNfdmFsaWQgJiYgdmFsdWUgKSB7Ci0gICAg
ICAgICAgICAgICAgc3dpdGNoICggdmFsdWUtPmlkICkgeworICAgICAgICAgICAgd2hpbGUoaXNf
dmFsaWQgJiYgdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLT5pZCkgewog
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9CTElOSzoKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1VOREVSTElORToKICAgICAgICAg
ICAgICAgICBjYXNlIENTU19WQUxfT1ZFUkxJTkU6CiAgICAgICAgICAgICAgICAgY2FzZSBDU1Nf
VkFMX0xJTkVfVEhST1VHSDoKLSAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKCBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUoIHZhbHVlLT5pZCApICk7CisgICAgICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUtPmlkKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAg
ICAgICAgIGlzX3ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAvL2tkRGVidWcoIDYwODAgKSA8PCAiZ290ICIgPDwgbGlzdC0+bGVuZ3RoKCkgPDwgImQgZGVj
b3JhdGlvbnMiIDw8IGVuZGw7CisgICAgICAgICAgICAvL2tkRGVidWcoNjA4MCkgPDwgImdvdCAi
IDw8IGxpc3QtPmxlbmd0aCgpIDw8ICJkIGRlY29yYXRpb25zIiA8PCBlbmRsOwogICAgICAgICAg
ICAgaWYobGlzdC0+bGVuZ3RoKCkgJiYgaXNfdmFsaWQpIHsKICAgICAgICAgICAgICAgICBwYXJz
ZWRWYWx1ZSA9IGxpc3Q7CiAgICAgICAgICAgICAgICAgdmFsdWVMaXN0LT5uZXh0KCk7CkBAIC04
MjgsNyArODI4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoIGludCBwcm9wSWQsIAog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTX1BST1BfVEFCTEVfTEFZT1VUOiAgICAgICAg
IC8vIGF1dG8gfCBmaXhlZCB8IGluaGVyaXQKLSAgICAgICAgaWYgKCBpZCA9PSBDU1NfVkFMX0FV
VE8gfHwgaWQgPT0gQ1NTX1ZBTF9GSVhFRCApCisgICAgICAgIGlmIChpZCA9PSBDU1NfVkFMX0FV
VE8gfHwgaWQgPT0gQ1NTX1ZBTF9GSVhFRCkKICAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9
IHRydWU7CiAgICAgICAgIGJyZWFrOwogCkBAIC04NjAsOCArODYwLDggQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoIGludCBwcm9wSWQsIAogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB2YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmICggdmFsdWVzLT5sZW5ndGgoKSApIHsKLSAgICAgICAgICAgICAgICBhZGRQcm9w
ZXJ0eSggcHJvcElkLCB2YWx1ZXMsIGltcG9ydGFudCApOworICAgICAgICAgICAgaWYgKHZhbHVl
cy0+bGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHZhbHVl
cywgaW1wb3J0YW50KTsKICAgICAgICAgICAgICAgICB2YWx1ZUxpc3QtPm5leHQoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTExNzQsMjYgKzExNzQs
MjYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoIGludCBwcm9wSWQsIAogICAgICAgICBi
cmVhazsKICAgICB9CiAKLSAgICBpZiAoIHZhbGlkX3ByaW1pdGl2ZSApIHsKLSAgICAgICAgaWYg
KCBpZCAhPSAwICkgewotICAgICAgICAgICAgLy8gcURlYnVnKCIgbmV3IHZhbHVlOiBpZD0lZCIs
IGlkICk7Ci0gICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZSgg
aWQgKTsKLSAgICAgICAgfSBlbHNlIGlmICggdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TVFJJTkcgKQotICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoIGRvbVN0cmluZyggdmFsdWUtPnN0cmluZyApLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlcykgdmFsdWUtPnVuaXQgKTsKLSAgICAgICAgZWxzZSBpZiAoIHZhbHVlLT51bml0ID49
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSICYmCi0gICAgICAgICAgICAgICAgICB2YWx1
ZS0+dW5pdCA8PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0tIWiApIHsKLSAgICAgICAgICAgIC8v
IHFEZWJ1ZygiIG5ldyB2YWx1ZTogdmFsdWU9JS4yZiwgdW5pdD0lZCIsIHZhbHVlLT5mVmFsdWUs
IHZhbHVlLT51bml0ICk7Ci0gICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IG5ldyBDU1NQcmltaXRp
dmVWYWx1ZSggdmFsdWUtPmZWYWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpIHZhbHVl
LT51bml0ICk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIHZhbHVlLT51bml0ID49IFZhbHVlOjpRX0VN
UyApIHsKLSAgICAgICAgICAgIC8vIHFEZWJ1ZygiIG5ldyBxdWlya3MgdmFsdWU6IHZhbHVlPSUu
MmYsIHVuaXQ9JWQiLCB2YWx1ZS0+ZlZhbHVlLCB2YWx1ZS0+dW5pdCApOwotICAgICAgICAgICAg
cGFyc2VkVmFsdWUgPSBuZXcgQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZSggdmFsdWUtPmZWYWx1ZSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMgKTsKKyAgICBpZiAodmFsaWRfcHJpbWl0aXZlKSB7
CisgICAgICAgIGlmIChpZCAhPSAwKSB7CisgICAgICAgICAgICAvLyBxRGVidWcoIiBuZXcgdmFs
dWU6IGlkPSVkIiwgaWQpOworICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoaWQpOworICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfU1RSSU5HKQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUoZG9tU3RyaW5nKHZhbHVlLT5zdHJpbmcpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlcykgdmFsdWUtPnVuaXQpOworICAgICAgICBlbHNlIGlmICh2YWx1ZS0+dW5pdCA+
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiAmJgorICAgICAgICAgICAgICAgICAgdmFs
dWUtPnVuaXQgPD0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19LSFopIHsKKyAgICAgICAgICAgIC8v
IHFEZWJ1ZygiIG5ldyB2YWx1ZTogdmFsdWU9JS4yZiwgdW5pdD0lZCIsIHZhbHVlLT5mVmFsdWUs
IHZhbHVlLT51bml0KTsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKHZhbHVlLT5mVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSB2YWx1ZS0+
dW5pdCk7CisgICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPnVuaXQgPj0gVmFsdWU6OlFfRU1TKSB7
CisgICAgICAgICAgICAvLyBxRGVidWcoIiBuZXcgcXVpcmtzIHZhbHVlOiB2YWx1ZT0lLjJmLCB1
bml0PSVkIiwgdmFsdWUtPmZWYWx1ZSwgdmFsdWUtPnVuaXQpOworICAgICAgICAgICAgcGFyc2Vk
VmFsdWUgPSBuZXcgQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZSh2YWx1ZS0+ZlZhbHVlLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0VNUyk7CiAgICAgICAgIH0KICAgICAgICAgdmFsdWVMaXN0LT5uZXh0
KCk7CiAgICAgfQotICAgIGlmICggcGFyc2VkVmFsdWUgKSB7Ci0gICAgICAgIGFkZFByb3BlcnR5
KCBwcm9wSWQsIHBhcnNlZFZhbHVlLCBpbXBvcnRhbnQgKTsKKyAgICBpZiAocGFyc2VkVmFsdWUp
IHsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBwYXJzZWRWYWx1ZSwgaW1wb3J0YW50KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMjAs
NyArMTMyMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZChpbnQgcHJvcEkKICAg
ICAgICAgZm91bmQgPSBmYWxzZTsKICAgICAgICAgZm9yIChpbnQgcHJvcEluZGV4ID0gMDsgIWZv
dW5kICYmIHByb3BJbmRleCA8IG51bVByb3BlcnRpZXM7ICsrcHJvcEluZGV4KSB7CiAgICAgICAg
ICAgICBpZiAoIWZuZFtwcm9wSW5kZXhdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlVmFs
dWUoIHByb3BlcnRpZXNbcHJvcEluZGV4XSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgICAgICBp
ZiAocGFyc2VWYWx1ZShwcm9wZXJ0aWVzW3Byb3BJbmRleF0sIGltcG9ydGFudCkpCiAgICAgICAg
ICAgICAgICAgICAgIGZuZFtwcm9wSW5kZXhdID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xNDM0LDcgKzE0MzQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VD
b250ZW50KGludCBwcm9wSWQsCiAgICAgICAgIH0gZWxzZSBpZiAodmFsLT51bml0ID09IFZhbHVl
OjpGdW5jdGlvbikgewogICAgICAgICAgICAgLy8gYXR0cihYKQogICAgICAgICAgICAgVmFsdWVM
aXN0ICphcmdzID0gdmFsLT5mdW5jdGlvbi0+YXJnczsKLSAgICAgICAgICAgIERlcHJlY2F0ZWRT
dHJpbmcgZm5hbWUgPSBxU3RyaW5nKHZhbC0+ZnVuY3Rpb24tPm5hbWUpLmxvd2VyKCk7CisgICAg
ICAgICAgICBTdHJpbmcgZm5hbWUgPSBkb21TdHJpbmcodmFsLT5mdW5jdGlvbi0+bmFtZSkubG93
ZXIoKTsKICAgICAgICAgICAgIGlmIChmbmFtZSAhPSAiYXR0cigiIHx8ICFhcmdzKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmIChhcmdzLT5zaXplKCkgIT0g
MSkKQEAgLTE3MDQsMjMgKzE3MDQsMjMgQEAgZmFpbGVkOgogCiBzdGF0aWMgVmFsdWUgKnNraXBD
b21tYUluRGFzaGJvYXJkUmVnaW9uIChWYWx1ZUxpc3QgKmFyZ3MpCiB7Ci0gICAgaWYgKCBhcmdz
LT5zaXplKCkgPT0gKERBU0hCT0FSRF9SRUdJT05fTlVNX1BBUkFNRVRFUlMqMi0xKSB8fAorICAg
IGlmIChhcmdzLT5zaXplKCkgPT0gKERBU0hCT0FSRF9SRUdJT05fTlVNX1BBUkFNRVRFUlMqMi0x
KSB8fAogICAgICAgICAgYXJncy0+c2l6ZSgpID09IChEQVNIQk9BUkRfUkVHSU9OX1NIT1JUX05V
TV9QQVJBTUVURVJTKjItMSkpIHsKICAgICAgICAgVmFsdWUgKmN1cnJlbnQgPSBhcmdzLT5jdXJy
ZW50KCk7Ci0gICAgICAgIGlmIChjdXJyZW50LT51bml0ID09IFZhbHVlOjpPcGVyYXRvciAmJiBj
dXJyZW50LT5pVmFsdWUgPT0gJywnICkKKyAgICAgICAgaWYgKGN1cnJlbnQtPnVuaXQgPT0gVmFs
dWU6Ok9wZXJhdG9yICYmIGN1cnJlbnQtPmlWYWx1ZSA9PSAnLCcpCiAgICAgICAgICAgICByZXR1
cm4gYXJncy0+bmV4dCgpOwogICAgIH0KICAgICByZXR1cm4gYXJncy0+Y3VycmVudCgpOwogfQog
Ci1ib29sIENTU1BhcnNlcjo6cGFyc2VEYXNoYm9hcmRSZWdpb25zKCBpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCApCitib29sIENTU1BhcnNlcjo6cGFyc2VEYXNoYm9hcmRSZWdpb25zKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KQogewogICAgIGJvb2wgdmFsaWQgPSB0cnVlOwogICAgIAog
ICAgIFZhbHVlICp2YWx1ZSA9IHZhbHVlTGlzdC0+Y3VycmVudCgpOwogCiAgICAgaWYgKHZhbHVl
LT5pZCA9PSBDU1NfVkFMX05PTkUpIHsKLSAgICAgICAgYWRkUHJvcGVydHkoIHByb3BJZCwgbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKCB2YWx1ZS0+aWQgKSwgaW1wb3J0YW50ICk7CisgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BJZCwgbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLT5pZCksIGltcG9y
dGFudCk7CiAgICAgICAgIHJldHVybiB2YWxpZDsKICAgICB9CiAgICAgICAgIApAQCAtMTczNiw3
ICsxNzM2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGFzaGJvYXJkUmVnaW9ucyggaQogICAg
ICAgICAgICAgcmVnaW9uID0gbmV4dFJlZ2lvbi5nZXQoKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgaWYgKCB2YWx1ZS0+dW5pdCAhPSBWYWx1ZTo6RnVuY3Rpb24pIHsKKyAgICAgICAg
aWYgKHZhbHVlLT51bml0ICE9IFZhbHVlOjpGdW5jdGlvbikgewogICAgICAgICAgICAgdmFsaWQg
PSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNzU1LDggKzE3NTUs
OCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEYXNoYm9hcmRSZWdpb25zKCBpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBm
bmFtZSA9IHFTdHJpbmcoIHZhbHVlLT5mdW5jdGlvbi0+bmFtZSApLmxvd2VyKCk7Ci0gICAgICAg
IGlmIChmbmFtZSAhPSAiZGFzaGJvYXJkLXJlZ2lvbigiICkgeworICAgICAgICBTdHJpbmcgZm5h
bWUgPSBkb21TdHJpbmcodmFsdWUtPmZ1bmN0aW9uLT5uYW1lKS5sb3dlcigpOworICAgICAgICBp
ZiAoZm5hbWUgIT0gImRhc2hib2FyZC1yZWdpb24oIikgewogICAgICAgICAgICAgdmFsaWQgPSBm
YWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNzY4LDcgKzE3NjgsNyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VEYXNoYm9hcmRSZWdpb25zKCBpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIHJlZ2lvbi0+bV9sYWJlbCA9
IHFTdHJpbmcoYXJnLT5zdHJpbmcpOworICAgICAgICByZWdpb24tPm1fbGFiZWwgPSBkb21TdHJp
bmcoYXJnLT5zdHJpbmcpOwogCiAgICAgICAgIC8vIFNlY29uZCBhcmcgaXMgYSB0eXBlLgogICAg
ICAgICBhcmcgPSBhcmdzLT5uZXh0KCk7CkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VEYXNoYm9hcmRSZWdpb25zKCBpCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCi0gICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgZ2VvbWV0cnlUeXBlID0gcVN0cmluZyhh
cmctPnN0cmluZykubG93ZXIoKTsKKyAgICAgICAgU3RyaW5nIGdlb21ldHJ5VHlwZSA9IGRvbVN0
cmluZyhhcmctPnN0cmluZykubG93ZXIoKTsKICAgICAgICAgaWYgKGdlb21ldHJ5VHlwZSA9PSAi
Y2lyY2xlIikKICAgICAgICAgICAgIHJlZ2lvbi0+bV9pc0NpcmNsZSA9IHRydWU7CiAgICAgICAg
IGVsc2UgaWYgKGdlb21ldHJ5VHlwZSA9PSAicmVjdGFuZ2xlIikKQEAgLTE3ODgsMTcgKzE3ODgs
MTcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGFzaGJvYXJkUmVnaW9ucyggaQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICByZWdpb24tPm1fZ2Vv
bWV0cnlUeXBlID0gcVN0cmluZyhhcmctPnN0cmluZyk7CisgICAgICAgIHJlZ2lvbi0+bV9nZW9t
ZXRyeVR5cGUgPSBkb21TdHJpbmcoYXJnLT5zdHJpbmcpOwogCiAgICAgICAgIGlmIChudW1Bcmdz
ID09IERBU0hCT0FSRF9SRUdJT05fU0hPUlRfTlVNX1BBUkFNRVRFUlMgfHwgbnVtQXJncyA9PSAo
REFTSEJPQVJEX1JFR0lPTl9TSE9SVF9OVU1fUEFSQU1FVEVSUyoyLTEpKSB7CiAgICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSAqYW1vdW50ID0gYXJnLT5pZCA9PSBDU1NfVkFMX0FVVE8gPwog
ICAgICAgICAgICAgICAgIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShDU1NfVkFMX0FVVE8pIDoKLSAg
ICAgICAgICAgICAgICBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoKGRvdWJsZSkwLCAoQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlcykgYXJnLT51bml0ICk7CisgICAgICAgICAgICAgICAgbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKChkb3VibGUpMCwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMp
IGFyZy0+dW5pdCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICByZWdpb24tPnNldFRv
cCggYW1vdW50ICk7Ci0gICAgICAgICAgICByZWdpb24tPnNldFJpZ2h0KCBhbW91bnQgKTsKLSAg
ICAgICAgICAgIHJlZ2lvbi0+c2V0Qm90dG9tKCBhbW91bnQgKTsKLSAgICAgICAgICAgIHJlZ2lv
bi0+c2V0TGVmdCggYW1vdW50ICk7CisgICAgICAgICAgICByZWdpb24tPnNldFRvcChhbW91bnQp
OworICAgICAgICAgICAgcmVnaW9uLT5zZXRSaWdodChhbW91bnQpOworICAgICAgICAgICAgcmVn
aW9uLT5zZXRCb3R0b20oYW1vdW50KTsKKyAgICAgICAgICAgIHJlZ2lvbi0+c2V0TGVmdChhbW91
bnQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gTmV4dCBmb3Vy
IGFyZ3VtZW50cyBtdXN0IGJlIG9mZnNldCBudW1iZXJzCkBAIC0xODA3LDIyICsxODA3LDIyIEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURhc2hib2FyZFJlZ2lvbnMoIGkKICAgICAgICAgICAgICAg
ICBhcmcgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgICAgICAgICAgYXJnID0gc2tpcENvbW1hSW5E
YXNoYm9hcmRSZWdpb24gKGFyZ3MpOwogCi0gICAgICAgICAgICAgICAgdmFsaWQgPSBhcmctPmlk
ID09IENTU19WQUxfQVVUTyB8fCB2YWxpZFVuaXQoIGFyZywgRkxlbmd0aCwgc3RyaWN0ICk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCAhdmFsaWQgKQorICAgICAgICAgICAgICAgIHZhbGlkID0gYXJn
LT5pZCA9PSBDU1NfVkFMX0FVVE8gfHwgdmFsaWRVbml0KGFyZywgRkxlbmd0aCwgc3RyaWN0KTsK
KyAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUg
KmFtb3VudCA9IGFyZy0+aWQgPT0gQ1NTX1ZBTF9BVVRPID8KICAgICAgICAgICAgICAgICAgICAg
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTykgOgotICAgICAgICAgICAgICAgICAg
ICBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoYXJnLT5mVmFsdWUsIChDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzKSBhcmctPnVuaXQgKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKGFyZy0+ZlZhbHVlLCAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgYXJn
LT51bml0KTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCBpID09
IDAgKQotICAgICAgICAgICAgICAgICAgICByZWdpb24tPnNldFRvcCggYW1vdW50ICk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAoIGkgPT0gMSApCi0gICAgICAgICAgICAgICAgICAgIHJlZ2lv
bi0+c2V0UmlnaHQoIGFtb3VudCApOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBpID09IDIg
KQotICAgICAgICAgICAgICAgICAgICByZWdpb24tPnNldEJvdHRvbSggYW1vdW50ICk7CisgICAg
ICAgICAgICAgICAgaWYgKGkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmVnaW9uLT5zZXRU
b3AoYW1vdW50KTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09IDEpCisgICAgICAgICAg
ICAgICAgICAgIHJlZ2lvbi0+c2V0UmlnaHQoYW1vdW50KTsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChpID09IDIpCisgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+c2V0Qm90dG9tKGFtb3Vu
dCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZWdpb24tPnNl
dExlZnQoIGFtb3VudCApOworICAgICAgICAgICAgICAgICAgICByZWdpb24tPnNldExlZnQoYW1v
dW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xODM2LDM5ICsxODM2LDM5IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURhc2hib2FyZFJlZ2lvbnMoIGkKIH0KICNlbmRpZgogCi1i
b29sIENTU1BhcnNlcjo6cGFyc2VTaGFwZSggaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQgKQor
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlU2hhcGUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7
CiAgICAgVmFsdWUgKnZhbHVlID0gdmFsdWVMaXN0LT5jdXJyZW50KCk7CiAgICAgVmFsdWVMaXN0
ICphcmdzID0gdmFsdWUtPmZ1bmN0aW9uLT5hcmdzOwotICAgIERlcHJlY2F0ZWRTdHJpbmcgZm5h
bWUgPSBxU3RyaW5nKCB2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUgKS5sb3dlcigpOwotICAgIGlmICgg
Zm5hbWUgIT0gInJlY3QoIiB8fCAhYXJncyApCisgICAgU3RyaW5nIGZuYW1lID0gZG9tU3RyaW5n
KHZhbHVlLT5mdW5jdGlvbi0+bmFtZSkubG93ZXIoKTsKKyAgICBpZiAoZm5hbWUgIT0gInJlY3Qo
IiB8fCAhYXJncykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gcmVjdCggdCwgciwg
YiwgbCApIHx8IHJlY3QoIHQgciBiIGwgKQotICAgIGlmICggYXJncy0+c2l6ZSgpICE9IDQgJiYg
YXJncy0+c2l6ZSgpICE9IDcgKQorICAgIC8vIHJlY3QodCwgciwgYiwgbCkgfHwgcmVjdCh0IHIg
YiBsKQorICAgIGlmIChhcmdzLT5zaXplKCkgIT0gNCAmJiBhcmdzLT5zaXplKCkgIT0gNykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFJlY3RJbXBsICpyZWN0ID0gbmV3IFJlY3RJbXBsKCk7
CiAgICAgYm9vbCB2YWxpZCA9IHRydWU7CiAgICAgaW50IGkgPSAwOwogICAgIFZhbHVlICphID0g
YXJncy0+Y3VycmVudCgpOwotICAgIHdoaWxlICggYSApIHsKLSAgICAgICAgdmFsaWQgPSBhLT5p
ZCA9PSBDU1NfVkFMX0FVVE8gfHwgdmFsaWRVbml0KCBhLCBGTGVuZ3RoLCBzdHJpY3QgKTsKLSAg
ICAgICAgaWYgKCAhdmFsaWQgKQorICAgIHdoaWxlIChhKSB7CisgICAgICAgIHZhbGlkID0gYS0+
aWQgPT0gQ1NTX1ZBTF9BVVRPIHx8IHZhbGlkVW5pdChhLCBGTGVuZ3RoLCBzdHJpY3QpOworICAg
ICAgICBpZiAoIXZhbGlkKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlICpsZW5ndGggPSBhLT5pZCA9PSBDU1NfVkFMX0FVVE8gPwogICAgICAgICAgICAgbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfQVVUTykgOgotICAgICAgICAgICAgbmV3IENTU1By
aW1pdGl2ZVZhbHVlKCBhLT5mVmFsdWUsIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSBh
LT51bml0ICk7Ci0gICAgICAgIGlmICggaSA9PSAwICkKLSAgICAgICAgICAgIHJlY3QtPnNldFRv
cCggbGVuZ3RoICk7Ci0gICAgICAgIGVsc2UgaWYgKCBpID09IDEgKQotICAgICAgICAgICAgcmVj
dC0+c2V0UmlnaHQoIGxlbmd0aCApOwotICAgICAgICBlbHNlIGlmICggaSA9PSAyICkKLSAgICAg
ICAgICAgIHJlY3QtPnNldEJvdHRvbSggbGVuZ3RoICk7CisgICAgICAgICAgICBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoYS0+ZlZhbHVlLCAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgYS0+
dW5pdCk7CisgICAgICAgIGlmIChpID09IDApCisgICAgICAgICAgICByZWN0LT5zZXRUb3AobGVu
Z3RoKTsKKyAgICAgICAgZWxzZSBpZiAoaSA9PSAxKQorICAgICAgICAgICAgcmVjdC0+c2V0Umln
aHQobGVuZ3RoKTsKKyAgICAgICAgZWxzZSBpZiAoaSA9PSAyKQorICAgICAgICAgICAgcmVjdC0+
c2V0Qm90dG9tKGxlbmd0aCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlY3QtPnNldExl
ZnQoIGxlbmd0aCApOworICAgICAgICAgICAgcmVjdC0+c2V0TGVmdChsZW5ndGgpOwogICAgICAg
ICBhID0gYXJncy0+bmV4dCgpOwotICAgICAgICBpZiAoIGEgJiYgYXJncy0+c2l6ZSgpID09IDcg
KSB7Ci0gICAgICAgICAgICBpZiAoIGEtPnVuaXQgPT0gVmFsdWU6Ok9wZXJhdG9yICYmIGEtPmlW
YWx1ZSA9PSAnLCcgKSB7CisgICAgICAgIGlmIChhICYmIGFyZ3MtPnNpemUoKSA9PSA3KSB7Cisg
ICAgICAgICAgICBpZiAoYS0+dW5pdCA9PSBWYWx1ZTo6T3BlcmF0b3IgJiYgYS0+aVZhbHVlID09
ICcsJykgewogICAgICAgICAgICAgICAgIGEgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CkBAIC0xODc3LDggKzE4Nzcs
OCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTaGFwZSggaW50IHByb3BJZCwgCiAgICAgICAgIH0K
ICAgICAgICAgaSsrOwogICAgIH0KLSAgICBpZiAoIHZhbGlkICkgewotICAgICAgICBhZGRQcm9w
ZXJ0eSggcHJvcElkLCBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoIHJlY3QgKSwgaW1wb3J0YW50ICk7
CisgICAgaWYgKHZhbGlkKSB7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHJlY3QpLCBpbXBvcnRhbnQpOwogICAgICAgICB2YWx1ZUxpc3QtPm5leHQo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTg4NywxMjggKzE4ODcsMTI4IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNoYXBlKCBpbnQgcHJvcElkLCAKIH0KIAogLy8gWyAnZm9u
dC1zdHlsZScgfHwgJ2ZvbnQtdmFyaWFudCcgfHwgJ2ZvbnQtd2VpZ2h0JyBdPyAnZm9udC1zaXpl
JyBbIC8gJ2xpbmUtaGVpZ2h0JyBdPyAnZm9udC1mYW1pbHknCi1ib29sIENTU1BhcnNlcjo6cGFy
c2VGb250KCBib29sIGltcG9ydGFudCApCitib29sIENTU1BhcnNlcjo6cGFyc2VGb250KGJvb2wg
aW1wb3J0YW50KQogewogICAgIGJvb2wgdmFsaWQgPSB0cnVlOwogICAgIFZhbHVlICp2YWx1ZSA9
IHZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgIEZvbnRWYWx1ZSAqZm9udCA9IG5ldyBGb250VmFs
dWU7CiAgICAgLy8gb3B0aW9uYWwgZm9udC1zdHlsZSwgZm9udC12YXJpYW50IGFuZCBmb250LXdl
aWdodAotICAgIHdoaWxlICggdmFsdWUgKSB7CisgICAgd2hpbGUgKHZhbHVlKSB7CiAgICAgICAg
IGludCBpZCA9IHZhbHVlLT5pZDsKLSAgICAgICAgaWYgKCBpZCApIHsKLSAgICAgICAgICAgIGlm
ICggaWQgPT0gQ1NTX1ZBTF9OT1JNQUwgKSB7CisgICAgICAgIGlmIChpZCkgeworICAgICAgICAg
ICAgaWYgKGlkID09IENTU19WQUxfTk9STUFMKSB7CiAgICAgICAgICAgICAgICAgLy8gZG8gbm90
aGluZywgaXQncyB0aGUgaW5pdGFsIHZhbHVlIGZvciBhbGwgdGhyZWUKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgIGVsc2UgaWYgKCBpZCA9PSBDU1NfVkFMX0lO
SEVSSVQgKSB7CisgICAgICAgICAgICAgIGVsc2UgaWYgKGlkID09IENTU19WQUxfSU5IRVJJVCkg
ewogICAgICAgICAgICAgICAvLyBzZXQgYWxsIG5vbiBzZXQgb25lcyB0byBpbmhlcml0CiAgICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHRoYXQgc2ltcGxlIGFzIHRoZSBpbmhlcml0IGNvdWxk
IGFsc28gYXBwbHkgdG8gdGhlIGZvbGxvd2luZyBmb250LXNpemUuCiAgICAgICAgICAgICAgIC8v
IHZlcnkgYWhyZCB0byB0ZWxsIHdpdGhvdXQgbG9va2luZyBhaGVhZC4KICAgICAgICAgICAgICAg
aW5oZXJpdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSAqLwotICAgICAgICAgICAgZWxzZSBp
ZiAoIGlkID09IENTU19WQUxfSVRBTElDIHx8IGlkID09IENTU19WQUxfT0JMSVFVRSApIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIGZvbnQtPnN0eWxlICkKKyAgICAgICAgICAgIGVsc2UgaWYgKGlk
ID09IENTU19WQUxfSVRBTElDIHx8IGlkID09IENTU19WQUxfT0JMSVFVRSkgeworICAgICAgICAg
ICAgICAgIGlmIChmb250LT5zdHlsZSkKICAgICAgICAgICAgICAgICAgICAgZ290byBpbnZhbGlk
OwotICAgICAgICAgICAgICAgIGZvbnQtPnN0eWxlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKCBp
ZCApOwotICAgICAgICAgICAgfSBlbHNlIGlmICggaWQgPT0gQ1NTX1ZBTF9TTUFMTF9DQVBTICkg
ewotICAgICAgICAgICAgICAgIGlmICggZm9udC0+dmFyaWFudCApCisgICAgICAgICAgICAgICAg
Zm9udC0+c3R5bGUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoaWQpOworICAgICAgICAgICAgfSBl
bHNlIGlmIChpZCA9PSBDU1NfVkFMX1NNQUxMX0NBUFMpIHsKKyAgICAgICAgICAgICAgICBpZiAo
Zm9udC0+dmFyaWFudCkKICAgICAgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkOwotICAgICAg
ICAgICAgICAgIGZvbnQtPnZhcmlhbnQgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoIGlkICk7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKCBpZCA+PSBDU1NfVkFMX0JPTEQgJiYgaWQgPD0gQ1NTX1ZB
TF9MSUdIVEVSICkgewotICAgICAgICAgICAgICAgIGlmICggZm9udC0+d2VpZ2h0ICkKKyAgICAg
ICAgICAgICAgICBmb250LT52YXJpYW50ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGlkKTsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoaWQgPj0gQ1NTX1ZBTF9CT0xEICYmIGlkIDw9IENTU19WQUxf
TElHSFRFUikgeworICAgICAgICAgICAgICAgIGlmIChmb250LT53ZWlnaHQpCiAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gaW52YWxpZDsKLSAgICAgICAgICAgICAgICBmb250LT53ZWlnaHQgPSBu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUoIGlkICk7CisgICAgICAgICAgICAgICAgZm9udC0+d2VpZ2h0
ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKGlkKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
IGlmICggIWZvbnQtPndlaWdodCAmJiB2YWxpZFVuaXQoIHZhbHVlLCBGSW50ZWdlcnxGTm9uTmVn
LCB0cnVlICkgKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIWZvbnQtPndlaWdodCAmJiB2YWxpZFVu
aXQodmFsdWUsIEZJbnRlZ2VyfEZOb25OZWcsIHRydWUpKSB7CiAgICAgICAgICAgICBpbnQgd2Vp
Z2h0ID0gKGludCl2YWx1ZS0+ZlZhbHVlOwogICAgICAgICAgICAgaW50IHZhbCA9IDA7Ci0gICAg
ICAgICAgICBpZiAoIHdlaWdodCA9PSAxMDAgKQorICAgICAgICAgICAgaWYgKHdlaWdodCA9PSAx
MDApCiAgICAgICAgICAgICAgICAgdmFsID0gQ1NTX1ZBTF8xMDA7Ci0gICAgICAgICAgICBlbHNl
IGlmICggd2VpZ2h0ID09IDIwMCApCisgICAgICAgICAgICBlbHNlIGlmICh3ZWlnaHQgPT0gMjAw
KQogICAgICAgICAgICAgICAgIHZhbCA9IENTU19WQUxfMjAwOwotICAgICAgICAgICAgZWxzZSBp
ZiAoIHdlaWdodCA9PSAzMDAgKQorICAgICAgICAgICAgZWxzZSBpZiAod2VpZ2h0ID09IDMwMCkK
ICAgICAgICAgICAgICAgICB2YWwgPSBDU1NfVkFMXzMwMDsKLSAgICAgICAgICAgIGVsc2UgaWYg
KCB3ZWlnaHQgPT0gNDAwICkKKyAgICAgICAgICAgIGVsc2UgaWYgKHdlaWdodCA9PSA0MDApCiAg
ICAgICAgICAgICAgICAgdmFsID0gQ1NTX1ZBTF80MDA7Ci0gICAgICAgICAgICBlbHNlIGlmICgg
d2VpZ2h0ID09IDUwMCApCisgICAgICAgICAgICBlbHNlIGlmICh3ZWlnaHQgPT0gNTAwKQogICAg
ICAgICAgICAgICAgIHZhbCA9IENTU19WQUxfNTAwOwotICAgICAgICAgICAgZWxzZSBpZiAoIHdl
aWdodCA9PSA2MDAgKQorICAgICAgICAgICAgZWxzZSBpZiAod2VpZ2h0ID09IDYwMCkKICAgICAg
ICAgICAgICAgICB2YWwgPSBDU1NfVkFMXzYwMDsKLSAgICAgICAgICAgIGVsc2UgaWYgKCB3ZWln
aHQgPT0gNzAwICkKKyAgICAgICAgICAgIGVsc2UgaWYgKHdlaWdodCA9PSA3MDApCiAgICAgICAg
ICAgICAgICAgdmFsID0gQ1NTX1ZBTF83MDA7Ci0gICAgICAgICAgICBlbHNlIGlmICggd2VpZ2h0
ID09IDgwMCApCisgICAgICAgICAgICBlbHNlIGlmICh3ZWlnaHQgPT0gODAwKQogICAgICAgICAg
ICAgICAgIHZhbCA9IENTU19WQUxfODAwOwotICAgICAgICAgICAgZWxzZSBpZiAoIHdlaWdodCA9
PSA5MDAgKQorICAgICAgICAgICAgZWxzZSBpZiAod2VpZ2h0ID09IDkwMCkKICAgICAgICAgICAg
ICAgICB2YWwgPSBDU1NfVkFMXzkwMDsKIAotICAgICAgICAgICAgaWYgKCB2YWwgKQotICAgICAg
ICAgICAgICAgIGZvbnQtPndlaWdodCA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZSggdmFsICk7Cisg
ICAgICAgICAgICBpZiAodmFsKQorICAgICAgICAgICAgICAgIGZvbnQtPndlaWdodCA9IG5ldyBD
U1NQcmltaXRpdmVWYWx1ZSh2YWwpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IHZhbGlkID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB2YWxpZCA9IGZh
bHNlOwogICAgICAgICB9Ci0gICAgICAgIGlmICggIXZhbGlkICkKKyAgICAgICAgaWYgKCF2YWxp
ZCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgp
OwogICAgIH0KLSAgICBpZiAoICF2YWx1ZSApCisgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgZ290
byBpbnZhbGlkOwogCiAgICAgLy8gc2V0IHVuZGVmaW5lZCB2YWx1ZXMgdG8gZGVmYXVsdAotICAg
IGlmICggIWZvbnQtPnN0eWxlICkKLSAgICAgICAgZm9udC0+c3R5bGUgPSBuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUoIENTU19WQUxfTk9STUFMICk7Ci0gICAgaWYgKCAhZm9udC0+dmFyaWFudCApCi0g
ICAgICAgIGZvbnQtPnZhcmlhbnQgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoIENTU19WQUxfTk9S
TUFMICk7Ci0gICAgaWYgKCAhZm9udC0+d2VpZ2h0ICkKLSAgICAgICAgZm9udC0+d2VpZ2h0ID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKCBDU1NfVkFMX05PUk1BTCApOworICAgIGlmICghZm9udC0+
c3R5bGUpCisgICAgICAgIGZvbnQtPnN0eWxlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19W
QUxfTk9STUFMKTsKKyAgICBpZiAoIWZvbnQtPnZhcmlhbnQpCisgICAgICAgIGZvbnQtPnZhcmlh
bnQgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTX1ZBTF9OT1JNQUwpOworICAgIGlmICghZm9u
dC0+d2VpZ2h0KQorICAgICAgICBmb250LT53ZWlnaHQgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
Q1NTX1ZBTF9OT1JNQUwpOwogCi0vLyAgICAga2REZWJ1ZyggNjA4MCApIDw8ICIgIGdvdCBzdHls
ZSwgdmFyaWFudCBhbmQgd2VpZ2h0IGN1cnJlbnQ9IiA8PCB2YWx1ZUxpc3QtPmN1cnJlbnRWYWx1
ZSA8PCBlbmRsOworLy8gICAgIGtkRGVidWcoNjA4MCkgPDwgIiAgZ290IHN0eWxlLCB2YXJpYW50
IGFuZCB3ZWlnaHQgY3VycmVudD0iIDw8IHZhbHVlTGlzdC0+Y3VycmVudFZhbHVlIDw8IGVuZGw7
CiAKICAgICAvLyBub3cgYSBmb250IHNpemUgX211c3RfIGNvbWUKICAgICAvLyA8YWJzb2x1dGUt
c2l6ZT4gfCA8cmVsYXRpdmUtc2l6ZT4gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVy
aXQKLSAgICBpZiAoIHZhbHVlLT5pZCA+PSBDU1NfVkFMX1hYX1NNQUxMICYmIHZhbHVlLT5pZCA8
PSBDU1NfVkFMX0xBUkdFUiApCi0gICAgICAgIGZvbnQtPnNpemUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoIHZhbHVlLT5pZCApOwotICAgIGVsc2UgaWYgKCB2YWxpZFVuaXQoIHZhbHVlLCBGTGVu
Z3RofEZQZXJjZW50LCBzdHJpY3QgKSApIHsKLSAgICAgICAgZm9udC0+c2l6ZSA9IG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZSggdmFsdWUtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMpIHZhbHVlLT51bml0ICk7CisgICAgaWYgKHZhbHVlLT5pZCA+PSBDU1NfVkFMX1hYX1NNQUxM
ICYmIHZhbHVlLT5pZCA8PSBDU1NfVkFMX0xBUkdFUikKKyAgICAgICAgZm9udC0+c2l6ZSA9IG5l
dyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZS0+aWQpOworICAgIGVsc2UgaWYgKHZhbGlkVW5pdCh2
YWx1ZSwgRkxlbmd0aHxGUGVyY2VudCwgc3RyaWN0KSkgeworICAgICAgICBmb250LT5zaXplID0g
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLT5mVmFsdWUsIChDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzKSB2YWx1ZS0+dW5pdCk7CiAgICAgfQogICAgIHZhbHVlID0gdmFsdWVMaXN0LT5u
ZXh0KCk7Ci0gICAgaWYgKCAhZm9udC0+c2l6ZSB8fCAhdmFsdWUgKQorICAgIGlmICghZm9udC0+
c2l6ZSB8fCAhdmFsdWUpCiAgICAgICAgIGdvdG8gaW52YWxpZDsKIAotICAgIC8vIGtkRGVidWco
IDYwODAgKSA8PCAiICBnb3Qgc2l6ZSIgPDwgZW5kbDsKKyAgICAvLyBrZERlYnVnKDYwODApIDw8
ICIgIGdvdCBzaXplIiA8PCBlbmRsOwogCi0gICAgaWYgKCB2YWx1ZS0+dW5pdCA9PSBWYWx1ZTo6
T3BlcmF0b3IgJiYgdmFsdWUtPmlWYWx1ZSA9PSAnLycgKSB7CisgICAgaWYgKHZhbHVlLT51bml0
ID09IFZhbHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcvJykgewogICAgICAgICAv
LyBsaW5lLWhlaWdodAogICAgICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOwotICAgICAg
ICBpZiAoICF2YWx1ZSApCisgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICBnb3RvIGlu
dmFsaWQ7Ci0gICAgICAgIGlmICggdmFsdWUtPmlkID09IENTU19WQUxfTk9STUFMICkgeworICAg
ICAgICBpZiAodmFsdWUtPmlkID09IENTU19WQUxfTk9STUFMKSB7CiAgICAgICAgICAgICAvLyBk
ZWZhdWx0IHZhbHVlLCBub3RoaW5nIHRvIGRvCi0gICAgICAgIH0gZWxzZSBpZiAoIHZhbGlkVW5p
dCggdmFsdWUsIEZOdW1iZXJ8Rkxlbmd0aHxGUGVyY2VudCwgc3RyaWN0ICkgKSB7Ci0gICAgICAg
ICAgICBmb250LT5saW5lSGVpZ2h0ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKCB2YWx1ZS0+ZlZh
bHVlLCAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgdmFsdWUtPnVuaXQgKTsKKyAgICAg
ICAgfSBlbHNlIGlmICh2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXJ8Rkxlbmd0aHxGUGVyY2VudCwg
c3RyaWN0KSkgeworICAgICAgICAgICAgZm9udC0+bGluZUhlaWdodCA9IG5ldyBDU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZS0+ZlZhbHVlLCAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgdmFs
dWUtPnVuaXQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZ290byBpbnZhbGlkOwog
ICAgICAgICB9CiAgICAgICAgIHZhbHVlID0gdmFsdWVMaXN0LT5uZXh0KCk7Ci0gICAgICAgIGlm
ICggIXZhbHVlICkKKyAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIGdvdG8gaW52YWxp
ZDsKICAgICB9CiAgICAgCiAgICAgaWYgKCFmb250LT5saW5lSGVpZ2h0KQotICAgICAgICBmb250
LT5saW5lSGVpZ2h0ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKCBDU1NfVkFMX05PUk1BTCApOwor
ICAgICAgICBmb250LT5saW5lSGVpZ2h0ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxf
Tk9STUFMKTsKIAotLy8gICAgIGtkRGVidWcoIDYwODAgKSA8PCAiICBnb3QgbGluZSBoZWlnaHQg
Y3VycmVudD0iIDw8IHZhbHVlTGlzdC0+Y3VycmVudFZhbHVlIDw8IGVuZGw7CisvLyAgICAga2RE
ZWJ1Zyg2MDgwKSA8PCAiICBnb3QgbGluZSBoZWlnaHQgY3VycmVudD0iIDw8IHZhbHVlTGlzdC0+
Y3VycmVudFZhbHVlIDw8IGVuZGw7CiAgICAgLy8gZm9udCBmYW1pbHkgbXVzdCBjb21lIG5vdwog
ICAgIGZvbnQtPmZhbWlseSA9IHBhcnNlRm9udEZhbWlseSgpOwogCi0gICAgaWYgKCB2YWx1ZUxp
c3QtPmN1cnJlbnQoKSB8fCAhZm9udC0+ZmFtaWx5ICkKKyAgICBpZiAodmFsdWVMaXN0LT5jdXJy
ZW50KCkgfHwgIWZvbnQtPmZhbWlseSkKICAgICAgICAgZ290byBpbnZhbGlkOwotLy8gICAgIGtk
RGVidWcoIDYwODAgKSA8PCAiICBnb3QgZmFtaWx5LCBwYXJzaW5nIG9rISIgPDwgZW5kbDsKKy8v
ICAgICBrZERlYnVnKDYwODApIDw8ICIgIGdvdCBmYW1pbHksIHBhcnNpbmcgb2shIiA8PCBlbmRs
OwogCi0gICAgYWRkUHJvcGVydHkoIENTU19QUk9QX0ZPTlQsIGZvbnQsIGltcG9ydGFudCApOwor
ICAgIGFkZFByb3BlcnR5KENTU19QUk9QX0ZPTlQsIGZvbnQsIGltcG9ydGFudCk7CiAgICAgcmV0
dXJuIHRydWU7CiAKICBpbnZhbGlkOgpAQCAtMjAxOSwxMSArMjAxOSwxMSBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VGb250KCBib29sIGltcG9ydGFuCiAKIENTU1ZhbHVlTGlzdCAqQ1NTUGFyc2Vy
OjpwYXJzZUZvbnRGYW1pbHkoKQogewotLy8gICAgIGtkRGVidWcoIDYwODAgKSA8PCAiQ1NTUGFy
c2VyOjpwYXJzZUZvbnRGYW1pbHkgY3VycmVudD0iIDw8IHZhbHVlTGlzdC0+Y3VycmVudFZhbHVl
IDw8IGVuZGw7CisvLyAgICAga2REZWJ1Zyg2MDgwKSA8PCAiQ1NTUGFyc2VyOjpwYXJzZUZvbnRG
YW1pbHkgY3VycmVudD0iIDw8IHZhbHVlTGlzdC0+Y3VycmVudFZhbHVlIDw8IGVuZGw7CiAgICAg
Q1NTVmFsdWVMaXN0ICpsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsKICAgICBWYWx1ZSAqdmFsdWUg
PSB2YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBGb250RmFtaWx5VmFsdWUqIGN1cnJGYW1pbHkg
PSAwOwotICAgIHdoaWxlICggdmFsdWUgKSB7CisgICAgd2hpbGUgKHZhbHVlKSB7CiAgICAgICAg
IFZhbHVlKiBuZXh0VmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgYm9vbCBuZXh0
VmFsQnJlYWtzRm9udCA9ICFuZXh0VmFsdWUgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChuZXh0VmFsdWUtPnVuaXQgPT0gVmFsdWU6Ok9wZXJhdG9yICYmIG5leHRWYWx1ZS0+
aVZhbHVlID09ICcsJyk7CkBAIC0yMDM0LDI3ICsyMDM0LDI3IEBAIENTU1ZhbHVlTGlzdCAqQ1NT
UGFyc2VyOjpwYXJzZUZvbnRGYW1pbHkKICAgICAgICAgaWYgKHZhbHVlLT5pZCA+PSBDU1NfVkFM
X1NFUklGICYmIHZhbHVlLT5pZCA8PSBDU1NfVkFMX19LSFRNTF9CT0RZKSB7CiAgICAgICAgICAg
ICBpZiAoY3VyckZhbWlseSkgewogICAgICAgICAgICAgICAgIGN1cnJGYW1pbHktPnBhcnNlZEZv
bnROYW1lICs9ICcgJzsKLSAgICAgICAgICAgICAgICBjdXJyRmFtaWx5LT5wYXJzZWRGb250TmFt
ZSArPSBxU3RyaW5nKHZhbHVlLT5zdHJpbmcpOworICAgICAgICAgICAgICAgIGN1cnJGYW1pbHkt
PnBhcnNlZEZvbnROYW1lICs9IGRlcHJlY2F0ZWRTdHJpbmcodmFsdWUtPnN0cmluZyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChuZXh0VmFsQnJlYWtzRm9udCB8fCAhbmV4
dFZhbElzRm9udE5hbWUpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZSh2YWx1ZS0+aWQpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3VyckZhbWlseSA9IG5ldyBGb250RmFtaWx5VmFsdWUocVN0cmluZyh2
YWx1ZS0+c3RyaW5nKSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjdXJyRmFtaWx5
ID0gbmV3IEZvbnRGYW1pbHlWYWx1ZShkZXByZWNhdGVkU3RyaW5nKHZhbHVlLT5zdHJpbmcpKSk7
CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19TVFJJTkcpIHsKICAgICAgICAgICAgIC8vIFN0cmluZ3MgbmV2ZXIgc2hhcmUg
aW4gYSBmYW1pbHkgbmFtZS4KICAgICAgICAgICAgIGN1cnJGYW1pbHkgPSAwOwotICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKG5ldyBGb250RmFtaWx5VmFsdWUocVN0cmluZyggdmFsdWUtPnN0cmlu
ZykpKTsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgRm9udEZhbWlseVZhbHVlKGRlcHJl
Y2F0ZWRTdHJpbmcodmFsdWUtPnN0cmluZykpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlm
ICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSB7CiAgICAgICAg
ICAgICBpZiAoY3VyckZhbWlseSkgewogICAgICAgICAgICAgICAgIGN1cnJGYW1pbHktPnBhcnNl
ZEZvbnROYW1lICs9ICcgJzsKLSAgICAgICAgICAgICAgICBjdXJyRmFtaWx5LT5wYXJzZWRGb250
TmFtZSArPSBxU3RyaW5nKHZhbHVlLT5zdHJpbmcpOworICAgICAgICAgICAgICAgIGN1cnJGYW1p
bHktPnBhcnNlZEZvbnROYW1lICs9IGRlcHJlY2F0ZWRTdHJpbmcodmFsdWUtPnN0cmluZyk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChuZXh0VmFsQnJlYWtzRm9udCB8fCAh
bmV4dFZhbElzRm9udE5hbWUpCi0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBGb250
RmFtaWx5VmFsdWUocVN0cmluZyggdmFsdWUtPnN0cmluZykpKTsKKyAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQobmV3IEZvbnRGYW1pbHlWYWx1ZShkZXByZWNhdGVkU3RyaW5nKHZhbHVlLT5z
dHJpbmcpKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGN1cnJGYW1pbHkgPSBuZXcgRm9udEZhbWlseVZhbHVlKHFTdHJpbmcodmFsdWUtPnN0cmluZykp
KTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3VyckZhbWlseSA9IG5ldyBGb250RmFt
aWx5VmFsdWUoZGVwcmVjYXRlZFN0cmluZyh2YWx1ZS0+c3RyaW5nKSkpOwogICAgICAgICB9CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDcyLDcgKzIwNzIsNyBAQCBD
U1NWYWx1ZUxpc3QgKkNTU1BhcnNlcjo6cGFyc2VGb250RmFtaWx5CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpZiAoICFsaXN0LT5sZW5ndGgoKSApIHsKKyAg
ICBpZiAoIWxpc3QtPmxlbmd0aCgpKSB7CiAgICAgICAgIGRlbGV0ZSBsaXN0OwogICAgICAgICBs
aXN0ID0gMDsKICAgICB9CkBAIC0yMDg0LDIwICsyMDg0LDE5IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUNvbG9yKGNvbnN0IERlcHJlY2EKIHsKICAgICBpbnQgbGVuID0gbmFtZS5sZW5ndGgoKTsK
IAotICAgIGlmICggIWxlbiApCisgICAgaWYgKCFsZW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotCiAgICAgYm9vbCBvazsKIAotICAgIGlmICggbGVuID09IDMgfHwgbGVuID09IDYgKSB7Cisg
ICAgaWYgKGxlbiA9PSAzIHx8IGxlbiA9PSA2KSB7CiAgICAgICAgIGludCB2YWwgPSBuYW1lLnRv
SW50KCZvaywgMTYpOwotICAgICAgICBpZiAoIG9rICkgeworICAgICAgICBpZiAob2spIHsKICAg
ICAgICAgICAgIGlmIChsZW4gPT0gNikgewogICAgICAgICAgICAgICAgIHJnYiA9ICAoMHhmZiA8
PCAyNCkgfCB2YWw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlIGlmICggbGVuID09IDMgKSB7CisgICAgICAgICAgICBlbHNlIGlm
IChsZW4gPT0gMykgewogICAgICAgICAgICAgICAgIC8vICNhYmMgY29udmVydHMgdG8gI2FhYmJj
YyBhY2NvcmRpbmcgdG8gdGhlIHNwZWNzCiAgICAgICAgICAgICAgICAgcmdiID0gKDB4ZmYgPDwg
MjQpIHwKICAgICAgICAgICAgICAgICAgICAgKHZhbCYweGYwMCk8PDEyIHwgKHZhbCYweGYwMCk8
PDggfApAQCAtMjEyOCw4MCArMjEyNyw3OSBAQCBDU1NQcmltaXRpdmVWYWx1ZSAqQ1NTUGFyc2Vy
OjpwYXJzZUNvbG9yCiBDU1NQcmltaXRpdmVWYWx1ZSAqQ1NTUGFyc2VyOjpwYXJzZUNvbG9yRnJv
bVZhbHVlKFZhbHVlKiB2YWx1ZSkKIHsKICAgICBSR0JBMzIgYyA9IENvbG9yOjp0cmFuc3BhcmVu
dDsKLSAgICBpZiAoICFzdHJpY3QgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIgJiYKLSAgICAgICAgdmFsdWUtPmZWYWx1ZSA+PSAwLiAmJiB2YWx1ZS0+ZlZh
bHVlIDwgMTAwMDAwMC4gKSB7CisgICAgaWYgKCFzdHJpY3QgJiYgdmFsdWUtPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIgJiYKKyAgICAgICAgdmFsdWUtPmZWYWx1ZSA+PSAw
LiAmJiB2YWx1ZS0+ZlZhbHVlIDwgMTAwMDAwMC4pIHsKICAgICAgICAgRGVwcmVjYXRlZFN0cmlu
ZyBzdHI7Ci0gICAgICAgIHN0ci5zcHJpbnRmKCAiJTA2ZCIsIChpbnQpKHZhbHVlLT5mVmFsdWUr
LjUpICk7Ci0gICAgICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKCBzdHIsIGMgKSkKKyAg
ICAgICAgc3RyLnNwcmludGYoIiUwNmQiLCAoaW50KSh2YWx1ZS0+ZlZhbHVlKy41KSk7CisgICAg
ICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0ciwgYykpCiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICB9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUkdCQ09MT1IgfHwKICAgICAgICAgICAgICAgICB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0lERU5UIHx8CiAgICAgICAgICAgICAgICAgKCFzdHJpY3QgJiYgdmFsdWUt
PnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT04pKSB7Ci0gICAgICAgIGlm
ICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKCBxU3RyaW5nKCB2YWx1ZS0+c3RyaW5nICksIGMpKQor
ICAgICAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihkZXByZWNhdGVkU3RyaW5nKHZhbHVl
LT5zdHJpbmcpLCBjKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBlbHNlIGlm
ICggdmFsdWUtPnVuaXQgPT0gVmFsdWU6OkZ1bmN0aW9uICYmCisgICAgfSBlbHNlIGlmICh2YWx1
ZS0+dW5pdCA9PSBWYWx1ZTo6RnVuY3Rpb24gJiYKICAgICAgICAgICAgICAgICB2YWx1ZS0+ZnVu
Y3Rpb24tPmFyZ3MgIT0gMCAmJgogICAgICAgICAgICAgICAgIHZhbHVlLT5mdW5jdGlvbi0+YXJn
cy0+c2l6ZSgpID09IDUgLyogcmdiICsgdHdvIGNvbW1hcyAqLyAmJgotICAgICAgICAgICAgICAg
IHFTdHJpbmcoIHZhbHVlLT5mdW5jdGlvbi0+bmFtZSApLmxvd2VyKCkgPT0gInJnYigiICkgewor
ICAgICAgICAgICAgICAgIGRvbVN0cmluZyh2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUpLmxvd2VyKCkg
PT0gInJnYigiKSB7CiAgICAgICAgIFZhbHVlTGlzdCAqYXJncyA9IHZhbHVlLT5mdW5jdGlvbi0+
YXJnczsKICAgICAgICAgVmFsdWUgKnYgPSBhcmdzLT5jdXJyZW50KCk7Ci0gICAgICAgIGlmICgg
IXZhbGlkVW5pdCggdiwgRkludGVnZXJ8RlBlcmNlbnQsIHRydWUgKSApCisgICAgICAgIGlmICgh
dmFsaWRVbml0KHYsIEZJbnRlZ2VyfEZQZXJjZW50LCB0cnVlKSkKICAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICBpbnQgciA9IChpbnQpICggdi0+ZlZhbHVlICogKHYtPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFID8gMjU2Li8xMDAuIDogMS4pICk7CisgICAg
ICAgIGludCByID0gKGludCkgKHYtPmZWYWx1ZSAqICh2LT51bml0ID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRSA/IDI1Ni4vMTAwLiA6IDEuKSk7CiAgICAgICAgIHYgPSBhcmdz
LT5uZXh0KCk7Ci0gICAgICAgIGlmICggdi0+dW5pdCAhPSBWYWx1ZTo6T3BlcmF0b3IgJiYgdi0+
aVZhbHVlICE9ICcsJyApCisgICAgICAgIGlmICh2LT51bml0ICE9IFZhbHVlOjpPcGVyYXRvciAm
JiB2LT5pVmFsdWUgIT0gJywnKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHYgPSBh
cmdzLT5uZXh0KCk7Ci0gICAgICAgIGlmICggIXZhbGlkVW5pdCggdiwgRkludGVnZXJ8RlBlcmNl
bnQsIHRydWUgKSApCisgICAgICAgIGlmICghdmFsaWRVbml0KHYsIEZJbnRlZ2VyfEZQZXJjZW50
LCB0cnVlKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpbnQgZyA9IChpbnQpICgg
di0+ZlZhbHVlICogKHYtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
ID8gMjU2Li8xMDAuIDogMS4pICk7CisgICAgICAgIGludCBnID0gKGludCkgKHYtPmZWYWx1ZSAq
ICh2LT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSA/IDI1Ni4vMTAw
LiA6IDEuKSk7CiAgICAgICAgIHYgPSBhcmdzLT5uZXh0KCk7Ci0gICAgICAgIGlmICggdi0+dW5p
dCAhPSBWYWx1ZTo6T3BlcmF0b3IgJiYgdi0+aVZhbHVlICE9ICcsJyApCisgICAgICAgIGlmICh2
LT51bml0ICE9IFZhbHVlOjpPcGVyYXRvciAmJiB2LT5pVmFsdWUgIT0gJywnKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIHYgPSBhcmdzLT5uZXh0KCk7Ci0gICAgICAgIGlmICggIXZh
bGlkVW5pdCggdiwgRkludGVnZXJ8RlBlcmNlbnQsIHRydWUgKSApCisgICAgICAgIGlmICghdmFs
aWRVbml0KHYsIEZJbnRlZ2VyfEZQZXJjZW50LCB0cnVlKSkKICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICBpbnQgYiA9IChpbnQpICggdi0+ZlZhbHVlICogKHYtPnVuaXQgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFID8gMjU2Li8xMDAuIDogMS4pICk7Ci0gICAgICAg
IHIgPSBrTWF4KCAwLCBrTWluKCAyNTUsIHIgKSApOwotICAgICAgICBnID0ga01heCggMCwga01p
biggMjU1LCBnICkgKTsKLSAgICAgICAgYiA9IGtNYXgoIDAsIGtNaW4oIDI1NSwgYiApICk7Ci0g
ICAgICAgIGMgPSBtYWtlUkdCKCByLCBnLCBiICk7CisgICAgICAgIGludCBiID0gKGludCkgKHYt
PmZWYWx1ZSAqICh2LT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSA/
IDI1Ni4vMTAwLiA6IDEuKSk7CisgICAgICAgIHIgPSBrTWF4KDAsIGtNaW4oMjU1LCByKSk7Cisg
ICAgICAgIGcgPSBrTWF4KDAsIGtNaW4oMjU1LCBnKSk7CisgICAgICAgIGIgPSBrTWF4KDAsIGtN
aW4oMjU1LCBiKSk7CisgICAgICAgIGMgPSBtYWtlUkdCKHIsIGcsIGIpOwogICAgIH0KLSAgICBl
bHNlIGlmICggdmFsdWUtPnVuaXQgPT0gVmFsdWU6OkZ1bmN0aW9uICYmCisgICAgZWxzZSBpZiAo
dmFsdWUtPnVuaXQgPT0gVmFsdWU6OkZ1bmN0aW9uICYmCiAgICAgICAgICAgICAgIHZhbHVlLT5m
dW5jdGlvbi0+YXJncyAhPSAwICYmCiAgICAgICAgICAgICAgIHZhbHVlLT5mdW5jdGlvbi0+YXJn
cy0+c2l6ZSgpID09IDcgLyogcmdiYSArIHRocmVlIGNvbW1hcyAqLyAmJgotICAgICAgICAgICAg
ICBxU3RyaW5nKCB2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUgKS5sb3dlcigpID09ICJyZ2JhKCIgKSB7
CisgICAgICAgICAgICAgIGRvbVN0cmluZyh2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUpLmxvd2VyKCkg
PT0gInJnYmEoIikgewogICAgICAgICBWYWx1ZUxpc3QgKmFyZ3MgPSB2YWx1ZS0+ZnVuY3Rpb24t
PmFyZ3M7CiAgICAgICAgIFZhbHVlICp2ID0gYXJncy0+Y3VycmVudCgpOwotICAgICAgICBpZiAo
ICF2YWxpZFVuaXQoIHYsIEZJbnRlZ2VyfEZQZXJjZW50LCB0cnVlICkgKQorICAgICAgICBpZiAo
IXZhbGlkVW5pdCh2LCBGSW50ZWdlcnxGUGVyY2VudCwgdHJ1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgaW50IHIgPSAoaW50KSAoIHYtPmZWYWx1ZSAqICh2LT51bml0ID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSA/IDI1Ni4vMTAwLiA6IDEuKSApOworICAg
ICAgICBpbnQgciA9IChpbnQpICh2LT5mVmFsdWUgKiAodi0+dW5pdCA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UgPyAyNTYuLzEwMC4gOiAxLikpOwogICAgICAgICB2ID0gYXJn
cy0+bmV4dCgpOwotICAgICAgICBpZiAoIHYtPnVuaXQgIT0gVmFsdWU6Ok9wZXJhdG9yICYmIHYt
PmlWYWx1ZSAhPSAnLCcgKQorICAgICAgICBpZiAodi0+dW5pdCAhPSBWYWx1ZTo6T3BlcmF0b3Ig
JiYgdi0+aVZhbHVlICE9ICcsJykKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB2ID0g
YXJncy0+bmV4dCgpOwotICAgICAgICBpZiAoICF2YWxpZFVuaXQoIHYsIEZJbnRlZ2VyfEZQZXJj
ZW50LCB0cnVlICkgKQorICAgICAgICBpZiAoIXZhbGlkVW5pdCh2LCBGSW50ZWdlcnxGUGVyY2Vu
dCwgdHJ1ZSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaW50IGcgPSAoaW50KSAo
IHYtPmZWYWx1ZSAqICh2LT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RSA/IDI1Ni4vMTAwLiA6IDEuKSApOworICAgICAgICBpbnQgZyA9IChpbnQpICh2LT5mVmFsdWUg
KiAodi0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgPyAyNTYuLzEw
MC4gOiAxLikpOwogICAgICAgICB2ID0gYXJncy0+bmV4dCgpOwotICAgICAgICBpZiAoIHYtPnVu
aXQgIT0gVmFsdWU6Ok9wZXJhdG9yICYmIHYtPmlWYWx1ZSAhPSAnLCcgKQorICAgICAgICBpZiAo
di0+dW5pdCAhPSBWYWx1ZTo6T3BlcmF0b3IgJiYgdi0+aVZhbHVlICE9ICcsJykKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICB2ID0gYXJncy0+bmV4dCgpOwotICAgICAgICBpZiAoICF2
YWxpZFVuaXQoIHYsIEZJbnRlZ2VyfEZQZXJjZW50LCB0cnVlICkgKQorICAgICAgICBpZiAoIXZh
bGlkVW5pdCh2LCBGSW50ZWdlcnxGUGVyY2VudCwgdHJ1ZSkpCiAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgaW50IGIgPSAoaW50KSAoIHYtPmZWYWx1ZSAqICh2LT51bml0ID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSA/IDI1Ni4vMTAwLiA6IDEuKSApOworICAgICAg
ICBpbnQgYiA9IChpbnQpICh2LT5mVmFsdWUgKiAodi0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0UgPyAyNTYuLzEwMC4gOiAxLikpOwogICAgICAgICB2ID0gYXJncy0+
bmV4dCgpOwotICAgICAgICBpZiAoIHYtPnVuaXQgIT0gVmFsdWU6Ok9wZXJhdG9yICYmIHYtPmlW
YWx1ZSAhPSAnLCcgKQorICAgICAgICBpZiAodi0+dW5pdCAhPSBWYWx1ZTo6T3BlcmF0b3IgJiYg
di0+aVZhbHVlICE9ICcsJykKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB2ID0gYXJn
cy0+bmV4dCgpOwotICAgICAgICBpZiAoICF2YWxpZFVuaXQoIHYsIEZOdW1iZXIsIHRydWUgKSAp
CisgICAgICAgIGlmICghdmFsaWRVbml0KHYsIEZOdW1iZXIsIHRydWUpKQogICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIHIgPSBrTWF4KCAwLCBrTWluKCAyNTUsIHIgKSApOwotICAgICAg
ICBnID0ga01heCggMCwga01pbiggMjU1LCBnICkgKTsKLSAgICAgICAgYiA9IGtNYXgoIDAsIGtN
aW4oIDI1NSwgYiApICk7Ci0gICAgICAgIGludCBhID0gKGludCkoa01heCggMC4wLCBrTWluKCAx
LjAsIHYtPmZWYWx1ZSApICkgKiAyNTUpOwotICAgICAgICBjID0gbWFrZVJHQkEoIHIsIGcsIGIs
IGEgKTsKKyAgICAgICAgciA9IGtNYXgoMCwga01pbigyNTUsIHIpKTsKKyAgICAgICAgZyA9IGtN
YXgoMCwga01pbigyNTUsIGcpKTsKKyAgICAgICAgYiA9IGtNYXgoMCwga01pbigyNTUsIGIpKTsK
KyAgICAgICAgaW50IGEgPSAoaW50KShrTWF4KDAuMCwga01pbigxLjAsIHYtPmZWYWx1ZSkpICog
MjU1KTsKKyAgICAgICAgYyA9IG1ha2VSR0JBKHIsIGcsIGIsIGEpOwogICAgIH0KICAgICBlbHNl
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjUyMyw3ICsyNTIxLDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlQm9yZGVySW1hZ2UoaW50IHBybwogCiBzdGF0aWMgaW5saW5lIGludCB5eWVycm9yKGNv
bnN0IGNoYXIgKnN0cikKIHsKLSAgICBrZERlYnVnKCA2MDgwICkgPDwgIkNTUyBwYXJzZSBlcnJv
ciAiIDw8IHN0ciA8PCBlbmRsOworICAgIGtkRGVidWcoNjA4MCkgPDwgIkNTUyBwYXJzZSBlcnJv
ciAiIDw8IHN0ciA8PCBlbmRsOwogICAgIHJldHVybiAxOwogfQogCkBAIC0yNTM3LDE2ICsyNTM1
LDE2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHl5ZXJyb3IoY29uc3QgY2hhciopIHsKIAogI2luY2x1
ZGUgIkNTU0dyYW1tYXIuaCIKIAotaW50IENTU1BhcnNlcjo6bGV4KCB2b2lkICpfeXlsdmFsICkg
eworaW50IENTU1BhcnNlcjo6bGV4KHZvaWQgKl95eWx2YWwpIHsKICAgICBZWVNUWVBFICp5eWx2
YWwgPSAoWVlTVFlQRSAqKV95eWx2YWw7CiAgICAgaW50IHRva2VuID0gbGV4KCk7CiAgICAgaW50
IGxlbmd0aDsKLSAgICB1bnNpZ25lZCBzaG9ydCAqdCA9IHRleHQoICZsZW5ndGggKTsKKyAgICB1
bnNpZ25lZCBzaG9ydCAqdCA9IHRleHQoJmxlbmd0aCk7CiAKICNpZmRlZiBUT0tFTl9ERUJVRwot
ICAgIHFEZWJ1ZygiQ1NTVG9rZW5pemVyOiBnb3QgdG9rZW4gJWQ6ICclcyciLCB0b2tlbiwgdG9r
ZW4gPT0gRU5EX1RPS0VOID8gIiIgOiBEZXByZWNhdGVkU3RyaW5nKCAoUUNoYXIgKil0LCBsZW5n
dGggKS5sYXRpbjEoKSApOworICAgIHFEZWJ1ZygiQ1NTVG9rZW5pemVyOiBnb3QgdG9rZW4gJWQ6
ICclcyciLCB0b2tlbiwgdG9rZW4gPT0gRU5EX1RPS0VOID8gIiIgOiBEZXByZWNhdGVkU3RyaW5n
KChRQ2hhciAqKXQsIGxlbmd0aCkubGF0aW4xKCkpOwogI2VuZGlmCi0gICAgc3dpdGNoKCB0b2tl
biApIHsKKyAgICBzd2l0Y2godG9rZW4pIHsKICAgICBjYXNlIFdISVRFU1BBQ0U6CiAgICAgY2Fz
ZSBTR01MX0NEOgogICAgIGNhc2UgSU5DTFVERVM6CkBAIC0yNTk3LDggKzI1OTUsOCBAQCBpbnQg
Q1NTUGFyc2VyOjpsZXgoIHZvaWQgKl95eWx2YWwgKSB7CiAgICAgY2FzZSBQRVJDRU5UQUdFOgog
ICAgICAgICBsZW5ndGgtLTsKICAgICBjYXNlIE5VTUJFUjoKLSAgICAgICAgeXlsdmFsLT52YWwg
PSBEZXByZWNhdGVkU3RyaW5nKCAoUUNoYXIgKil0LCBsZW5ndGggKS50b0RvdWJsZSgpOwotICAg
ICAgICAvL3FEZWJ1ZygidmFsdWUgPSAlcywgY29udmVydGVkPSUuMmYiLCBEZXByZWNhdGVkU3Ry
aW5nKCAoUUNoYXIgKil0LCBsZW5ndGggKS5sYXRpbjEoKSwgeXlsdmFsLT52YWwgKTsKKyAgICAg
ICAgeXlsdmFsLT52YWwgPSBEZXByZWNhdGVkU3RyaW5nKChRQ2hhciAqKXQsIGxlbmd0aCkudG9E
b3VibGUoKTsKKyAgICAgICAgLy9xRGVidWcoInZhbHVlID0gJXMsIGNvbnZlcnRlZD0lLjJmIiwg
RGVwcmVjYXRlZFN0cmluZygoUUNoYXIgKil0LCBsZW5ndGgpLmxhdGluMSgpLCB5eWx2YWwtPnZh
bCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKQEAgLTI2MjMsNyArMjYyMSw3IEBA
IHVuc2lnbmVkIHNob3J0ICpDU1NQYXJzZXI6OnRleHQoaW50ICpsZW4KIHsKICAgICB1bnNpZ25l
ZCBzaG9ydCAqc3RhcnQgPSB5eXRleHQ7CiAgICAgaW50IGwgPSB5eWxlbmc7Ci0gICAgc3dpdGNo
KCB5eVRvayApIHsKKyAgICBzd2l0Y2goeXlUb2spIHsKICAgICBjYXNlIFNUUklORzoKICAgICAg
ICAgbC0tOwogICAgICAgICAvKiBub2JyZWFrICovCkBAIC0yNjM5LDIwICsyNjM3LDIwIEBAIHVu
c2lnbmVkIHNob3J0ICpDU1NQYXJzZXI6OnRleHQoaW50ICpsZW4KICAgICAgICAgc3RhcnQgKz0g
NDsKICAgICAgICAgbCAtPSA1OwogICAgICAgICAvLyBzdHJpcCB7d30KLSAgICAgICAgd2hpbGUg
KCBsICYmCisgICAgICAgIHdoaWxlIChsICYmCiAgICAgICAgICAgICAgICAgKCpzdGFydCA9PSAn
ICcgfHwgKnN0YXJ0ID09ICdcdCcgfHwgKnN0YXJ0ID09ICdccicgfHwKLSAgICAgICAgICAgICAg
ICAgKnN0YXJ0ID09ICdcbicgfHwgKnN0YXJ0ID09ICdcZicgKSApIHsKKyAgICAgICAgICAgICAg
ICAgKnN0YXJ0ID09ICdcbicgfHwgKnN0YXJ0ID09ICdcZicpKSB7CiAgICAgICAgICAgICBzdGFy
dCsrOyBsLS07CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCAqc3RhcnQgPT0gJyInIHx8ICpzdGFy
dCA9PSAnXCcnICkgeworICAgICAgICBpZiAoKnN0YXJ0ID09ICciJyB8fCAqc3RhcnQgPT0gJ1wn
JykgewogICAgICAgICAgICAgc3RhcnQrKzsgbC0tOwogICAgICAgICB9Ci0gICAgICAgIHdoaWxl
ICggbCAmJgorICAgICAgICB3aGlsZSAobCAmJgogICAgICAgICAgICAgICAgIChzdGFydFtsLTFd
ID09ICcgJyB8fCBzdGFydFtsLTFdID09ICdcdCcgfHwgc3RhcnRbbC0xXSA9PSAnXHInIHx8Ci0g
ICAgICAgICAgICAgICAgIHN0YXJ0W2wtMV0gPT0gJ1xuJyB8fCBzdGFydFtsLTFdID09ICdcZicg
KSApIHsKKyAgICAgICAgICAgICAgICAgc3RhcnRbbC0xXSA9PSAnXG4nIHx8IHN0YXJ0W2wtMV0g
PT0gJ1xmJykpIHsKICAgICAgICAgICAgIGwtLTsKICAgICAgICAgfQotICAgICAgICBpZiAoIGwg
JiYgKHN0YXJ0W2wtMV0gPT0gJ1wiJyB8fCBzdGFydFtsLTFdID09ICdcJycgKSApCisgICAgICAg
IGlmIChsICYmIChzdGFydFtsLTFdID09ICdcIicgfHwgc3RhcnRbbC0xXSA9PSAnXCcnKSkKICAg
ICAgICAgICAgICBsLS07CiAKICAgICBkZWZhdWx0OgpAQCAtMjY2MywxNyArMjY2MSwxNyBAQCB1
bnNpZ25lZCBzaG9ydCAqQ1NTUGFyc2VyOjp0ZXh0KGludCAqbGVuCiAgICAgdW5zaWduZWQgc2hv
cnQgKm91dCA9IHN0YXJ0OwogICAgIHVuc2lnbmVkIHNob3J0ICplc2NhcGUgPSAwOwogCi0gICAg
Zm9yICggaW50IGkgPSAwOyBpIDwgbDsgaSsrICkgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bDsgaSsrKSB7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpjdXJyZW50ID0gc3RhcnQraTsKLSAg
ICAgICAgaWYgKCBlc2NhcGUgPT0gY3VycmVudCAtIDEgKSB7Ci0gICAgICAgICAgICBpZiAoICgg
KmN1cnJlbnQgPj0gJzAnICYmICpjdXJyZW50IDw9ICc5JyApIHx8Ci0gICAgICAgICAgICAgICAg
ICggKmN1cnJlbnQgPj0gJ2EnICYmICpjdXJyZW50IDw9ICdmJyApIHx8Ci0gICAgICAgICAgICAg
ICAgICggKmN1cnJlbnQgPj0gJ0EnICYmICpjdXJyZW50IDw9ICdGJyApICkKKyAgICAgICAgaWYg
KGVzY2FwZSA9PSBjdXJyZW50IC0gMSkgeworICAgICAgICAgICAgaWYgKCgqY3VycmVudCA+PSAn
MCcgJiYgKmN1cnJlbnQgPD0gJzknKSB8fAorICAgICAgICAgICAgICAgICAoKmN1cnJlbnQgPj0g
J2EnICYmICpjdXJyZW50IDw9ICdmJykgfHwKKyAgICAgICAgICAgICAgICAgKCpjdXJyZW50ID49
ICdBJyAmJiAqY3VycmVudCA8PSAnRicpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgaWYgKCB5eVRvayA9PSBTVFJJTkcgJiYKLSAgICAgICAgICAgICAgICAgKCAqY3Vy
cmVudCA9PSAnXG4nIHx8ICpjdXJyZW50ID09ICdccicgfHwgKmN1cnJlbnQgPT0gJ1xmJyApICkg
eworICAgICAgICAgICAgaWYgKHl5VG9rID09IFNUUklORyAmJgorICAgICAgICAgICAgICAgICAo
KmN1cnJlbnQgPT0gJ1xuJyB8fCAqY3VycmVudCA9PSAnXHInIHx8ICpjdXJyZW50ID09ICdcZicp
KSB7CiAgICAgICAgICAgICAgICAgLy8gIyMjIGhhbmRsZSBcclxuIGNhc2UKLSAgICAgICAgICAg
ICAgICBpZiAoICpjdXJyZW50ICE9ICdccicgKQorICAgICAgICAgICAgICAgIGlmICgqY3VycmVu
dCAhPSAnXHInKQogICAgICAgICAgICAgICAgICAgICBlc2NhcGUgPSAwOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMjY4Myw1NCArMjY4MSw1NCBAQCB1bnNp
Z25lZCBzaG9ydCAqQ1NTUGFyc2VyOjp0ZXh0KGludCAqbGVuCiAgICAgICAgICAgICBlc2NhcGUg
PSAwOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCBlc2Nh
cGUgPT0gY3VycmVudCAtIDIgJiYgeXlUb2sgPT0gU1RSSU5HICYmCi0gICAgICAgICAgICAgKihj
dXJyZW50LTEpID09ICdccicgJiYgKmN1cnJlbnQgPT0gJ1xuJyApIHsKKyAgICAgICAgaWYgKGVz
Y2FwZSA9PSBjdXJyZW50IC0gMiAmJiB5eVRvayA9PSBTVFJJTkcgJiYKKyAgICAgICAgICAgICAq
KGN1cnJlbnQtMSkgPT0gJ1xyJyAmJiAqY3VycmVudCA9PSAnXG4nKSB7CiAgICAgICAgICAgICBl
c2NhcGUgPSAwOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KCBlc2NhcGUgPiBjdXJyZW50IC0gNyAmJgotICAgICAgICAgICAgICggKCAqY3VycmVudCA+PSAn
MCcgJiYgKmN1cnJlbnQgPD0gJzknICkgfHwKLSAgICAgICAgICAgICAgICggKmN1cnJlbnQgPj0g
J2EnICYmICpjdXJyZW50IDw9ICdmJyApIHx8Ci0gICAgICAgICAgICAgICAoICpjdXJyZW50ID49
ICdBJyAmJiAqY3VycmVudCA8PSAnRicgKSApICkKKyAgICAgICAgaWYgKGVzY2FwZSA+IGN1cnJl
bnQgLSA3ICYmCisgICAgICAgICAgICAgKCgqY3VycmVudCA+PSAnMCcgJiYgKmN1cnJlbnQgPD0g
JzknKSB8fAorICAgICAgICAgICAgICAgKCpjdXJyZW50ID49ICdhJyAmJiAqY3VycmVudCA8PSAn
ZicpIHx8CisgICAgICAgICAgICAgICAoKmN1cnJlbnQgPj0gJ0EnICYmICpjdXJyZW50IDw9ICdG
JykpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICggZXNjYXBlICkgeworICAg
ICAgICBpZiAoZXNjYXBlKSB7CiAgICAgICAgICAgICAvLyBhZGQgZXNjYXBlZCBjaGFyCiAgICAg
ICAgICAgICBpbnQgdWMgPSAwOwogICAgICAgICAgICAgZXNjYXBlKys7Ci0gICAgICAgICAgICB3
aGlsZSAoIGVzY2FwZSA8IGN1cnJlbnQgKSB7CisgICAgICAgICAgICB3aGlsZSAoZXNjYXBlIDwg
Y3VycmVudCkgewogICAgICAgICAgICAgICAgIHVjICo9IDE2OwotICAgICAgICAgICAgICAgIHVj
ICs9IHRvSGV4KCAqZXNjYXBlICk7CisgICAgICAgICAgICAgICAgdWMgKz0gdG9IZXgoKmVzY2Fw
ZSk7CiAgICAgICAgICAgICAgICAgZXNjYXBlKys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAvLyBjYW4ndCBoYW5kbGUgY2hhcnMgb3V0c2lkZSB1Y3MyCi0gICAgICAgICAgICBpZiAoIHVj
ID4gMHhmZmZmICkKKyAgICAgICAgICAgIGlmICh1YyA+IDB4ZmZmZikKICAgICAgICAgICAgICAg
ICB1YyA9IDB4ZmZmZDsKICAgICAgICAgICAgICoob3V0KyspID0gKHVuc2lnbmVkIHNob3J0KXVj
OwogICAgICAgICAgICAgZXNjYXBlID0gMDsKLSAgICAgICAgICAgIGlmICggKmN1cnJlbnQgPT0g
JyAnIHx8CisgICAgICAgICAgICBpZiAoKmN1cnJlbnQgPT0gJyAnIHx8CiAgICAgICAgICAgICAg
ICAgICpjdXJyZW50ID09ICdcdCcgfHwKICAgICAgICAgICAgICAgICAgKmN1cnJlbnQgPT0gJ1xy
JyB8fAogICAgICAgICAgICAgICAgICAqY3VycmVudCA9PSAnXG4nIHx8Ci0gICAgICAgICAgICAg
ICAgICpjdXJyZW50ID09ICdcZicgKQorICAgICAgICAgICAgICAgICAqY3VycmVudCA9PSAnXGYn
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmICggIWVz
Y2FwZSAmJiAqY3VycmVudCA9PSAnXFwnICkgeworICAgICAgICBpZiAoIWVzY2FwZSAmJiAqY3Vy
cmVudCA9PSAnXFwnKSB7CiAgICAgICAgICAgICBlc2NhcGUgPSBjdXJyZW50OwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgKihvdXQrKykgPSAqY3VycmVudDsKICAg
ICB9Ci0gICAgaWYgKCBlc2NhcGUgKSB7CisgICAgaWYgKGVzY2FwZSkgewogICAgICAgICAvLyBh
ZGQgZXNjYXBlZCBjaGFyCiAgICAgICAgIGludCB1YyA9IDA7CiAgICAgICAgIGVzY2FwZSsrOwot
ICAgICAgICB3aGlsZSAoIGVzY2FwZSA8IHN0YXJ0K2wgKSB7CisgICAgICAgIHdoaWxlIChlc2Nh
cGUgPCBzdGFydCtsKSB7CiAgICAgICAgICAgICB1YyAqPSAxNjsKLSAgICAgICAgICAgIHVjICs9
IHRvSGV4KCAqZXNjYXBlICk7CisgICAgICAgICAgICB1YyArPSB0b0hleCgqZXNjYXBlKTsKICAg
ICAgICAgICAgIGVzY2FwZSsrOwogICAgICAgICB9CiAgICAgICAgIC8vIGNhbid0IGhhbmRsZSBj
aGFycyBvdXRzaWRlIHVjczIKLSAgICAgICAgaWYgKCB1YyA+IDB4ZmZmZiApCisgICAgICAgIGlm
ICh1YyA+IDB4ZmZmZikKICAgICAgICAgICAgIHVjID0gMHhmZmZkOwogICAgICAgICAqKG91dCsr
KSA9ICh1bnNpZ25lZCBzaG9ydCl1YzsKICAgICB9CkluZGV4OiBjc3MvY3Nzc3R5bGVzZWxlY3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCShyZXZpc2lvbiAx
MzQwNCkKKysrIGNzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkx
OSwxMiArMzkxOSwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50
CiAgICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9MZW5ndGggKHJlZ2lvbi0+cmln
aHQoKSwgc3R5bGUpOwogICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0xlbmd0
aCAocmVnaW9uLT5ib3R0b20oKSwgc3R5bGUpOwogICAgICAgICAgICAgTGVuZ3RoIGxlZnQgPSBj
b252ZXJ0VG9MZW5ndGggKHJlZ2lvbi0+bGVmdCgpLCBzdHlsZSk7Ci0gICAgICAgICAgICBpZiAo
cmVnaW9uLT5tX2lzQ2lyY2xlKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xl
KQogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXREYXNoYm9hcmRSZWdpb24gKFN0eWxlRGFzaGJv
YXJkUmVnaW9uOjpDaXJjbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBs
ZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSBpZiAocmVnaW9uLT5tX2lzUmVjdGFuZ2xlKSB7CisgICAgICAgICAgICBl
bHNlIGlmIChyZWdpb24tPm1faXNSZWN0YW5nbGUpCiAgICAgICAgICAgICAgICAgc3R5bGUtPnNl
dERhc2hib2FyZFJlZ2lvbiAoU3R5bGVEYXNoYm9hcmRSZWdpb246OlJlY3RhbmdsZSwgcmVnaW9u
LT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZh
bHNlIDogdHJ1ZSk7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICByZWdpb24gPSByZWdpb24t
Pm1fbmV4dC5nZXQoKTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IGNzcy9jc3NwYXJzZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBjc3MvY3NzcGFyc2VyLmgJKHJldmlzaW9uIDEzNDAzKQorKysgY3Nz
L2Nzc3BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgaW50IHVuaXQ7CiAgICAgfTsKIAotICAgIHN0YXRpYyBpbmxpbmUg
RGVwcmVjYXRlZFN0cmluZyBxU3RyaW5nKGNvbnN0IFBhcnNlU3RyaW5nJiBwcykgeworICAgIHN0
YXRpYyBpbmxpbmUgRGVwcmVjYXRlZFN0cmluZyBkZXByZWNhdGVkU3RyaW5nKGNvbnN0IFBhcnNl
U3RyaW5nJiBwcykgewogICAgICAgICByZXR1cm4gRGVwcmVjYXRlZFN0cmluZygoUUNoYXIgKilw
cy5zdHJpbmcsIHBzLmxlbmd0aCk7CiAgICAgfQogICAgIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGRv
bVN0cmluZyhjb25zdCBQYXJzZVN0cmluZyYgcHMpIHsKSW5kZXg6IGNzcy9jc3NfdmFsdWVpbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gY3NzL2Nzc192YWx1ZWltcGwuaAkocmV2aXNpb24gMTM0MDMpCisr
KyBjc3MvY3NzX3ZhbHVlaW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsOCArMzQ4LDggQEAg
cHVibGljOgogICAgIERhc2hib2FyZFJlZ2lvbigpIDogbV9pc0NpcmNsZSgwKSwgbV9pc1JlY3Rh
bmdsZSgwKSB7IH0KIAogICAgIFJlZlB0cjxEYXNoYm9hcmRSZWdpb24+IG1fbmV4dDsKLSAgICBE
ZXByZWNhdGVkU3RyaW5nIG1fbGFiZWw7Ci0gICAgRGVwcmVjYXRlZFN0cmluZyBtX2dlb21ldHJ5
VHlwZTsKKyAgICBTdHJpbmcgbV9sYWJlbDsKKyAgICBTdHJpbmcgbV9nZW9tZXRyeVR5cGU7CiAg
ICAgYm9vbCBtX2lzQ2lyY2xlIDogMTsKICAgICBib29sIG1faXNSZWN0YW5nbGUgOiAxOwogfTsK
SW5kZXg6IGNzcy9DU1NHcmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL0NTU0dyYW1tYXIueQko
cmV2aXNpb24gMTM0MDMpCisrKyBjc3MvQ1NTR3JhbW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC04
MjcsOCArODI3LDggQEAgZGVjbGFyYXRpb246CiAKIHByb3BlcnR5OgogICAgIElERU5UIG1heWJl
X3NwYWNlIHsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBzdHIgPSBxU3RyaW5nKCQxKTsKLSAg
ICAgICAgJCQgPSBnZXRQcm9wZXJ0eUlEKCBzdHIubG93ZXIoKS5sYXRpbjEoKSwgc3RyLmxlbmd0
aCgpICk7CisgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgc3RyID0gZGVwcmVjYXRlZFN0cmluZygk
MSk7CisgICAgICAgICQkID0gZ2V0UHJvcGVydHlJRChzdHIubG93ZXIoKS5sYXRpbjEoKSwgc3Ry
Lmxlbmd0aCgpKTsKICNpZiBTVkdfU1VQUE9SVAogICAgICAgaWYgKCQkID09IDApCiAgICAgICAg
ICAgJCQgPSBnZXRTVkdDU1NQcm9wZXJ0eUlEKHN0ci5sb3dlcigpLmxhdGluMSgpLCBzdHIubGVu
Z3RoKCkpOwpAQCAtODgzLDggKzg4Myw4IEBAIHRlcm06CiAgIHwgdW5hcnlfb3BlcmF0b3IgdW5h
cnlfdGVybSB7ICQkID0gJDI7ICQkLmZWYWx1ZSAqPSAkMTsgfQogICB8IFNUUklORyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1NUUklORzsgfQogICB8IElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAgIERlcHJl
Y2F0ZWRTdHJpbmcgc3RyID0gcVN0cmluZyggJDEgKTsKLSAgICAgICQkLmlkID0gZ2V0VmFsdWVJ
RCggc3RyLmxvd2VyKCkubGF0aW4xKCksIHN0ci5sZW5ndGgoKSApOworICAgICAgRGVwcmVjYXRl
ZFN0cmluZyBzdHIgPSBkZXByZWNhdGVkU3RyaW5nKCQxKTsKKyAgICAgICQkLmlkID0gZ2V0VmFs
dWVJRChzdHIubG93ZXIoKS5sYXRpbjEoKSwgc3RyLmxlbmd0aCgpKTsKICNpZiBTVkdfU1VQUE9S
VAogICAgICAgaWYgKCQkLmlkID09IDApCiAgICAgICAgICAgJCQuaWQgPSBnZXRTVkdDU1NWYWx1
ZUlEKHN0ci5sb3dlcigpLmxhdGluMSgpLCBzdHIubGVuZ3RoKCkpOwpJbmRleDoga3N2ZzIvY3Nz
L1NWR0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvY3NzL1NWR0NTU1BhcnNlci5j
cHAJKHJldmlzaW9uIDEzNDAzKQorKysga3N2ZzIvY3NzL1NWR0NTU1BhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0NCwyNSArMzQ0LDE4IEBAIENTU1ZhbHVlICpDU1NQYXJzZXI6OnBhcnNl
U1ZHUGFpbnQoKQogewogICAgIEtET01DU1NWYWx1ZSAqdmFsdWUgPSB2YWx1ZUxpc3QtPmN1cnJl
bnQoKTsKICAgICBpZighc3RyaWN0ICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSICYmCi0gICAgICAgdmFsdWUtPmZWYWx1ZSA+PSAwLiAmJiB2YWx1ZS0+ZlZh
bHVlIDwgMTAwMDAwMC4pCi0gICAgeworICAgICAgIHZhbHVlLT5mVmFsdWUgPj0gMC4gJiYgdmFs
dWUtPmZWYWx1ZSA8IDEwMDAwMDAuKSB7CiAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgc3RyOwog
ICAgICAgICBzdHIuc3ByaW50ZigiJTA2ZCIsIChpbnQpKHZhbHVlLT5mVmFsdWUrLjUpKTsKICAg
ICAgICAgcmV0dXJuIG5ldyBTVkdQYWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCAwLCBuZXcg
U3RyaW5nSW1wbChzdHIpKTsKLSAgICB9Ci0gICAgZWxzZSBpZih2YWx1ZS0+dW5pdCA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1JHQkNPTE9SKQotICAgIHsKLSAgICAgICAgRGVwcmVjYXRlZFN0
cmluZyBzdHIgPSBEZXByZWNhdGVkU3RyaW5nOjpmcm9tTGF0aW4xKCIjIikgKyBxU3RyaW5nKHZh
bHVlLT5zdHJpbmcpOwotICAgICAgICByZXR1cm4gbmV3IFNWR1BhaW50KFNWR19QQUlOVFRZUEVf
UkdCQ09MT1IsIDAsIG5ldyBTdHJpbmdJbXBsKHN0cikpOwotICAgIH0KLSAgICBlbHNlIGlmKHZh
bHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQgfHwKKyAgICB9IGVsc2Ug
aWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkdCQ09MT1IpIHsKKyAg
ICAgICAgU3RyaW5nIHN0ciA9ICIjIiArIGRvbVN0cmluZyh2YWx1ZS0+c3RyaW5nKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyBTVkdQYWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCAwLCBzdHIuaW1w
bCgpKTsKKyAgICB9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfSURFTlQgfHwKICAgICAgICAgICAgKCFzdHJpY3QgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT04pKQotICAgIHsKLSAgICAgICAgRGVwcmVjYXRlZFN0
cmluZyBzdHIgPSBxU3RyaW5nKHZhbHVlLT5zdHJpbmcpOwotICAgICAgICByZXR1cm4gbmV3IFNW
R1BhaW50KFNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIDAsIG5ldyBTdHJpbmdJbXBsKHN0cikpOwot
ICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBTVkdQYWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9S
LCAwLCBkb21TdHJpbmcodmFsdWUtPnN0cmluZykuaW1wbCgpKTsKICAgICBlbHNlIGlmKHZhbHVl
LT51bml0ID09IEtET01DU1NWYWx1ZTo6RnVuY3Rpb24gJiYgdmFsdWUtPmZ1bmN0aW9uLT5hcmdz
ICE9IDAgJiYKLSAgICAgICAgICAgIHFTdHJpbmcodmFsdWUtPmZ1bmN0aW9uLT5uYW1lKS5sb3dl
cigpID09ICJyZ2IoIikKKyAgICAgICAgICAgIGRvbVN0cmluZyh2YWx1ZS0+ZnVuY3Rpb24tPm5h
bWUpLmxvd2VyKCkgPT0gInJnYigiKQogICAgIHsKICAgICAgICAgS0RPTUNTU1ZhbHVlTGlzdCAq
YXJncyA9IHZhbHVlLT5mdW5jdGlvbi0+YXJnczsKICAgICAgICAgS0RPTUNTU1ZhbHVlICp2ID0g
YXJncy0+Y3VycmVudCgpOwpAQCAtNDAwLDIzICszOTMsMTYgQEAgQ1NTVmFsdWUgKkNTU1BhcnNl
cjo6cGFyc2VTVkdDb2xvcigpCiB7CiAgICAgS0RPTUNTU1ZhbHVlICp2YWx1ZSA9IHZhbHVlTGlz
dC0+Y3VycmVudCgpOwogICAgIGlmKCFzdHJpY3QgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIgJiYKLSAgICAgICB2YWx1ZS0+ZlZhbHVlID49IDAuICYmIHZh
bHVlLT5mVmFsdWUgPCAxMDAwMDAwLikKLSAgICB7CisgICAgICAgdmFsdWUtPmZWYWx1ZSA+PSAw
LiAmJiB2YWx1ZS0+ZlZhbHVlIDwgMTAwMDAwMC4pIHsKICAgICAgICAgRGVwcmVjYXRlZFN0cmlu
ZyBzdHI7CiAgICAgICAgIHN0ci5zcHJpbnRmKCIlMDZkIiwgKGludCkodmFsdWUtPmZWYWx1ZSsu
NSkpOwogICAgICAgICByZXR1cm4gbmV3IFNWR0NvbG9yKG5ldyBTdHJpbmdJbXBsKHN0cikpOwot
ICAgIH0KLSAgICBlbHNlIGlmKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UkdCQ09MT1IpCi0gICAgewotICAgICAgICBEZXByZWNhdGVkU3RyaW5nIHN0ciA9IERlcHJlY2F0
ZWRTdHJpbmc6OmZyb21MYXRpbjEoIiMiKSArIHFTdHJpbmcodmFsdWUtPnN0cmluZyk7Ci0gICAg
ICAgIHJldHVybiBuZXcgU1ZHQ29sb3IobmV3IFN0cmluZ0ltcGwoc3RyKSk7Ci0gICAgfQotICAg
IGVsc2UgaWYodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCB8fAot
ICAgICAgICAgICAoIXN0cmljdCAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0RJTUVOU0lPTikpCisgICAgfSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1JHQkNPTE9SKSB7CisgICAgICAgIFN0cmluZyBzdHIgPSAiIyIgKyBkb21T
dHJpbmcodmFsdWUtPnN0cmluZyk7CisgICAgICAgIHJldHVybiBuZXcgU1ZHQ29sb3Ioc3RyLmlt
cGwoKSk7CisgICAgfSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0lERU5UIHx8ICghc3RyaWN0ICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfRElNRU5TSU9OKSkKICAgICAgICAgcmV0dXJuIG5ldyBTVkdDb2xvcihkb21TdHJpbmco
dmFsdWUtPnN0cmluZykuaW1wbCgpKTsKLSAgICBlbHNlIGlmKHZhbHVlLT51bml0ID09IEtET01D
U1NWYWx1ZTo6RnVuY3Rpb24gJiYgdmFsdWUtPmZ1bmN0aW9uLT5hcmdzICE9IDAgJiYKLSAgICAg
ICAgICAgIHFTdHJpbmcodmFsdWUtPmZ1bmN0aW9uLT5uYW1lKS5sb3dlcigpID09ICJyZ2IoIikK
LSAgICB7CisgICAgZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gS0RPTUNTU1ZhbHVlOjpGdW5jdGlv
biAmJiB2YWx1ZS0+ZnVuY3Rpb24tPmFyZ3MgIT0gMCAmJiBkb21TdHJpbmcodmFsdWUtPmZ1bmN0
aW9uLT5uYW1lKS5sb3dlcigpID09ICJyZ2IoIikgewogICAgICAgICBLRE9NQ1NTVmFsdWVMaXN0
ICphcmdzID0gdmFsdWUtPmZ1bmN0aW9uLT5hcmdzOwogICAgICAgICBLRE9NQ1NTVmFsdWUgKnYg
PSBhcmdzLT5jdXJyZW50KCk7CiAgICAgICAgIGlmKCF2YWxpZFVuaXQodiwgRkludGVnZXJ8RlBl
cmNlbnQsIHRydWUpKQpJbmRleDogYnJpZGdlL21hYy9GcmFtZU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBicmlkZ2UvbWFjL0ZyYW1lTWFjLm1tCShyZXZpc2lvbiAxMzQwNCkKKysrIGJyaWRnZS9tYWMv
RnJhbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0NDEsOSArMjQ0MSw4IEBAIE5TQXR0cmli
dXRlZFN0cmluZyAqRnJhbWVNYWM6OmF0dHJpYnV0ZWQKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAobi0+aGFzVGFnTmFtZShpbWdUYWcpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChwZW5kaW5nU3R5bGVkU3BhY2UgIT0gbmlsKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobGlua1N0YXJ0TG9jYXRpb24gPT0gW3Jlc3VsdCBsZW5ndGhdKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlua1N0YXJ0TG9jYXRpb24gPT0gW3Jlc3VsdCBs
ZW5ndGhdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbGlua1N0YXJ0TG9jYXRpb247
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBbcmVz
dWx0IGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6cGVuZGluZ1N0eWxlZFNwYWNlXTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIFtwZW5kaW5nU3R5bGVkU3BhY2UgcmVsZWFzZV07CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwZW5kaW5nU3R5bGVkU3BhY2UgPSBuaWw7CkBAIC0yNDY1LDkgKzI0NjQs
OCBAQCBOU0F0dHJpYnV0ZWRTdHJpbmcgKkZyYW1lTWFjOjphdHRyaWJ1dGVkCiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBOb2RlICpuZXh0ID0gbi0+Zmlyc3RDaGlsZCgpOwotICAgICAg
ICBpZiAoIW5leHQpIHsKKyAgICAgICAgaWYgKCFuZXh0KQogICAgICAgICAgICAgbmV4dCA9IG4t
Pm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIH0KIAogICAgICAgICB3aGlsZSAoIW5leHQgJiYgbi0+
cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICBEZXByZWNhdGVkU3RyaW5nIHRleHQ7CkBAIC0y
NzE5LDcgKzI3MTcsNyBAQCBOU0ZvbnQgKkZyYW1lTWFjOjpmb250Rm9yU2VsZWN0aW9uKGJvb2wg
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAvLyBGSVhNRTogQXJlIHRo
ZXJlIGFueSBub2RlIHR5cGVzIHRoYXQgaGF2ZSByZW5kZXJlcnMsIGJ1dCB0aGF0IHdlIHNob3Vs
ZCBiZSBza2lwcGluZz8KICAgICAgICAgICAgIE5TRm9udCAqZiA9IHJlbmRlcmVyLT5zdHlsZSgp
LT5mb250KCkuZ2V0TlNGb250KCk7Ci0gICAgICAgICAgICBpZiAoZm9udCA9PSBuaWwpIHsKKyAg
ICAgICAgICAgIGlmICghZm9udCkgewogICAgICAgICAgICAgICAgIGZvbnQgPSBmOwogICAgICAg
ICAgICAgICAgIGlmICghaGFzTXVsdGlwbGVGb250cykKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0yODIzLDkgKzI4MjEsOCBAQCBOU1dyaXRpbmdEaXJlY3Rpb24gRnJhbWVNYWM6OmJh
c2VXcml0aW5nCiAKIHZvaWQgRnJhbWVNYWM6OnRva2VuaXplclByb2Nlc3NlZERhdGEoKQogewot
ICAgIGlmIChkLT5tX2RvYykgeworICAgIGlmIChkLT5tX2RvYykKICAgICAgICAgY2hlY2tDb21w
bGV0ZWQoKTsKLSAgICB9CiAgICAgW19icmlkZ2UgdG9rZW5pemVyUHJvY2Vzc2VkRGF0YV07CiB9
CiAKQEAgLTI5ODIsOSArMjk3OSw4IEBAIHZvaWQgRnJhbWVNYWM6OnJlZ2lzdGVyQ29tbWFuZEZv
clVuZG9PclIKICAgICBOU1VuZG9NYW5hZ2VyICp1bmRvTWFuYWdlciA9IFtfYnJpZGdlIHVuZG9N
YW5hZ2VyXTsKICAgICBbdW5kb01hbmFnZXIgcmVnaXN0ZXJVbmRvV2l0aFRhcmdldDpfYnJpZGdl
IHNlbGVjdG9yOihpc1JlZG8gPyBAc2VsZWN0b3IocmVkb0VkaXRpbmc6KSA6IEBzZWxlY3Rvcih1
bmRvRWRpdGluZzopKSBvYmplY3Q6a3dxXTsKICAgICBOU1N0cmluZyAqYWN0aW9uTmFtZSA9IFtf
YnJpZGdlIG5hbWVGb3JVbmRvQWN0aW9uOnN0YXRpY19jYXN0PFdlYlVuZG9BY3Rpb24+KGNtZC5l
ZGl0aW5nQWN0aW9uKCkpXTsKLSAgICBpZiAoYWN0aW9uTmFtZSAhPSBuaWwpIHsKKyAgICBpZiAo
YWN0aW9uTmFtZSAhPSBuaWwpCiAgICAgICAgIFt1bmRvTWFuYWdlciBzZXRBY3Rpb25OYW1lOmFj
dGlvbk5hbWVdOwotICAgIH0KICAgICBfaGF2ZVVuZG9SZWRvT3BlcmF0aW9ucyA9IFlFUzsKIH0K
IApAQCAtMzA5OSw5ICszMDk1LDggQEAgdm9pZCBGcmFtZU1hYzo6bWFya01pc3NwZWxsaW5ncyhj
b25zdCBTZQogICAgICAgICAgICAgLy8gTG9vcCBvdmVyIHRoZSBjaHVuayB0byBmaW5kIGVhY2gg
bWlzc3BlbGxpbmcgaW4gaXQuCiAgICAgICAgICAgICB3aGlsZSAoc3RhcnRJbmRleCA8IGxlbikg
ewogICAgICAgICAgICAgICAgIE5TUmFuZ2UgbWlzc3BlbGxpbmcgPSBbY2hlY2tlciBjaGVja1Nw
ZWxsaW5nT2ZTdHJpbmc6Y2h1bmsgc3RhcnRpbmdBdDpzdGFydEluZGV4IGxhbmd1YWdlOm5pbCB3
cmFwOk5PIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6W19icmlkZ2Ugc3BlbGxDaGVja2VyRG9jdW1l
bnRUYWddIHdvcmRDb3VudDpOVUxMXTsKLSAgICAgICAgICAgICAgICBpZiAobWlzc3BlbGxpbmcu
bGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgICAgICBpZiAobWlzc3BlbGxpbmcubGVuZ3RoID09
IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gQnVpbGQgdXAgcmVzdWx0
IHJhbmdlIGFuZCBzdHJpbmcuICBOb3RlIHRoZSBtaXNzcGVsbGluZyBtYXkgc3BhbiBtYW55IHRl
eHQgbm9kZXMsCiAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGUgQ2hhckl0ZXJhdG9yIGlu
c3VsYXRlcyB1cyBmcm9tIHRoaXMgY29tcGxleGl0eQpAQCAtMzE0OCwxOCArMzE0MywxNiBAQCB2
b2lkIEZyYW1lTWFjOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCiAgICAgICAgICAgICAgICAg
Ly8gbWFya01pc3NwZWxsaW5ncyBmdW5jdGlvbiBpcyBwcmVwYXJlZCB0byBoYW5kbGVyIGxhcmdl
ciByYW5nZXMuCiAKICAgICAgICAgICAgICAgICAvLyBXaGVuIHR5cGluZyB3ZSBjaGVjayBzcGVs
bGluZyBlbHNld2hlcmUsIHNvIGRvbid0IHJlZG8gaXQgaGVyZS4KLSAgICAgICAgICAgICAgICBp
ZiAoY2xvc2VUeXBpbmcpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2xvc2VUeXBpbmcpCiAgICAg
ICAgICAgICAgICAgICAgIG1hcmtNaXNzcGVsbGluZ3Mob2xkQWRqYWNlbnRXb3Jkcyk7Ci0gICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBvbmx5IGVyYXNlcyBhIG1h
cmtlciBpbiB0aGUgZmlyc3Qgd29yZCBvZiB0aGUgc2VsZWN0aW9uLgogICAgICAgICAgICAgICAg
IC8vIFBlcmhhcHMgcGVjdWxpYXIsIGJ1dCBpdCBtYXRjaGVzIEFwcEtpdC4KICAgICAgICAgICAg
ICAgICBkb2N1bWVudCgpLT5yZW1vdmVNYXJrZXJzKG5ld0FkamFjZW50V29yZHMudG9SYW5nZSgp
LmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogICAgICAgICAgICAgfQotICAgICAg
ICB9IGVsc2UgeworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIC8vIFdoZW4gY29udGludW91
cyBzcGVsbCBjaGVja2luZyBpcyBvZmYsIG5vIG1hcmtlcnMgYXBwZWFyIGFmdGVyIHRoZSBzZWxl
Y3Rpb24gY2hhbmdlcy4KICAgICAgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZU1hcmtlcnMoRG9j
dW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIFtfYnJpZGdl
IHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb25dOwpAQCAtMzI5NCwxOCArMzI4Nyw4IEBAIE5TTXV0
YWJsZURpY3Rpb25hcnkgKkZyYW1lTWFjOjpkYXNoYm9hcmQKIAogICAgICAgICBpZiAocmVnaW9u
LnR5cGUgPT0gU3R5bGVEYXNoYm9hcmRSZWdpb246Ok5vbmUpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIAotICAgICAgICBOU1JlY3QgY2xpcDsKLSAgICAgICAgY2xpcC5vcmln
aW4ueCA9IHJlZ2lvbi5jbGlwLngoKTsKLSAgICAgICAgY2xpcC5vcmlnaW4ueSA9IHJlZ2lvbi5j
bGlwLnkoKTsKLSAgICAgICAgY2xpcC5zaXplLndpZHRoID0gcmVnaW9uLmNsaXAud2lkdGgoKTsK
LSAgICAgICAgY2xpcC5zaXplLmhlaWdodCA9IHJlZ2lvbi5jbGlwLmhlaWdodCgpOwotICAgICAg
ICBOU1JlY3QgcmVjdDsKLSAgICAgICAgcmVjdC5vcmlnaW4ueCA9IHJlZ2lvbi5ib3VuZHMueCgp
OwotICAgICAgICByZWN0Lm9yaWdpbi55ID0gcmVnaW9uLmJvdW5kcy55KCk7Ci0gICAgICAgIHJl
Y3Quc2l6ZS53aWR0aCA9IHJlZ2lvbi5ib3VuZHMud2lkdGgoKTsKLSAgICAgICAgcmVjdC5zaXpl
LmhlaWdodCA9IHJlZ2lvbi5ib3VuZHMuaGVpZ2h0KCk7Ci0gICAgICAgIE5TU3RyaW5nICpsYWJl
bCA9IHJlZ2lvbi5sYWJlbC5nZXROU1N0cmluZygpOworICAgICAgICAKKyAgICAgICAgTlNTdHJp
bmcgKmxhYmVsID0gcmVnaW9uLmxhYmVsOwogICAgICAgICBXZWJEYXNoYm9hcmRSZWdpb25UeXBl
IHR5cGUgPSBXZWJEYXNoYm9hcmRSZWdpb25UeXBlTm9uZTsKICAgICAgICAgaWYgKHJlZ2lvbi50
eXBlID09IFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpDaXJjbGUpCiAgICAgICAgICAgICB0eXBlID0g
V2ViRGFzaGJvYXJkUmVnaW9uVHlwZUNpcmNsZTsKQEAgLTMzMTcsNyArMzMwMCw3IEBAIE5TTXV0
YWJsZURpY3Rpb25hcnkgKkZyYW1lTWFjOjpkYXNoYm9hcmQKICAgICAgICAgICAgIFt3ZWJSZWdp
b25zIHNldE9iamVjdDpyZWdpb25WYWx1ZXMgZm9yS2V5OmxhYmVsXTsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgV2ViRGFzaGJvYXJkUmVnaW9uICp3ZWJSZWdpb24gPSBbW1tXZWJEYXNo
Ym9hcmRSZWdpb24gYWxsb2NdIGluaXRXaXRoUmVjdDpyZWN0IGNsaXA6Y2xpcCB0eXBlOnR5cGVd
IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgV2ViRGFzaGJvYXJkUmVnaW9uICp3ZWJSZWdpb24gPSBb
W1tXZWJEYXNoYm9hcmRSZWdpb24gYWxsb2NdIGluaXRXaXRoUmVjdDpyZWdpb24uYm91bmRzIGNs
aXA6cmVnaW9uLmNsaXAgdHlwZTp0eXBlXSBhdXRvcmVsZWFzZV07CiAgICAgICAgIFtyZWdpb25W
YWx1ZXMgYWRkT2JqZWN0OndlYlJlZ2lvbl07CiAgICAgfQogICAgIApAQCAtMzM3NSwxMCArMzM1
OCw5IEBAIGJvb2wgRnJhbWVNYWM6OnNob3VsZENsb3NlKCkKIAogdm9pZCBGcmFtZU1hYzo6ZHJh
Z1NvdXJjZU1vdmVkVG8oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBp
ZiAoX2RyYWdTcmMgJiYgX2RyYWdTcmNNYXlCZURIVE1MKSB7CisgICAgaWYgKF9kcmFnU3JjICYm
IF9kcmFnU3JjTWF5QmVESFRNTCkKICAgICAgICAgLy8gZm9yIG5vdyB3ZSBkb24ndCBjYXJlIGlm
IGV2ZW50IGhhbmRsZXIgY2FuY2VscyBkZWZhdWx0IGJlaGF2aW9yLCBzaW5jZSB0aGVyZSBpcyBu
b25lCiAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGRyYWdFdmVudCwgZXZlbnQpOwotICAg
IH0KIH0KIAogdm9pZCBGcmFtZU1hYzo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCwgTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikK
</data>
<flag name="review"
          id="1900"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7202</attachid>
            <date>2006-03-20 17:10:45 -0800</date>
            <delta_ts>2006-03-22 08:08:23 -0800</delta_ts>
            <desc>Same patch as above, ignoring whitespace</desc>
            <filename>white.patch</filename>
            <type>text/plain</type>
            <size>20085</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2VjbWEva2pzX2Nzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9r
anNfY3NzLmNwcAkocmV2aXNpb24gMTM0MDQpCisrKyBraHRtbC9lY21hL2tqc19jc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODYsOSArMTg2LDkgQEAgdm9pZCBET01DU1NTdHlsZURlY2xhcmF0
aW9uOjpwdXQoRXhlY1N0YQogI2VuZGlmCiAgIERPTUV4Y2VwdGlvblRyYW5zbGF0b3IgZXhjZXB0
aW9uKGV4ZWMpOwogICBDU1NTdHlsZURlY2xhcmF0aW9uICZzdHlsZURlY2wgPSAqbV9pbXBsOwot
ICBpZiAocHJvcGVydHlOYW1lID09ICJjc3NUZXh0IikgeworICBpZiAocHJvcGVydHlOYW1lID09
ICJjc3NUZXh0IikKICAgICBzdHlsZURlY2wuc2V0Q3NzVGV4dCh2YWx1ZS0+dG9TdHJpbmcoZXhl
YykuZG9tU3RyaW5nKCksIGV4Y2VwdGlvbik7Ci0gIH0gZWxzZSB7CisgIGVsc2UgewogICAgIGlm
IChpc0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICBib29sIHBpeGVsT3JQ
b3M7CiAgICAgICBTdHJpbmcgcHJvcCA9IGNzc1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUsICZw
aXhlbE9yUG9zKTsKSW5kZXg6IGtodG1sL2VjbWEva2pzX2JpbmRpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBraHRtbC9lY21hL2tqc19iaW5kaW5nLmgJKHJldmlzaW9uIDEzNDA0KQorKysga2h0bWwvZWNt
YS9ranNfYmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBFdmVudDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFz
cyBOb2RlOworICAgIGNsYXNzIFN0cmluZzsKIAogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiB9CkluZGV4OiByZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVu
ZGVyaW5nL3JlbmRlcl9zdHlsZS5oCShyZXZpc2lvbiAxMzQwNCkKKysrIHJlbmRlcmluZy9yZW5k
ZXJfc3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzU2LDcgKzM1Niw3IEBAIHB1YmxpYzoKIAog
c3RydWN0IFN0eWxlRGFzaGJvYXJkUmVnaW9uCiB7Ci0gICAgRGVwcmVjYXRlZFN0cmluZyBsYWJl
bDsKKyAgICBTdHJpbmcgbGFiZWw7CiAgICAgTGVuZ3RoQm94IG9mZnNldDsKICAgICBpbnQgdHlw
ZTsKICAgICAKQEAgLTEzNDIsNyArMTM0Miw3IEBAIHB1YmxpYzoKIAogICAgIERlcHJlY2F0ZWRW
YWx1ZUxpc3Q8U3R5bGVEYXNoYm9hcmRSZWdpb24+IGRhc2hib2FyZFJlZ2lvbnMoKSBjb25zdCB7
IHJldHVybiBjc3MzTm9uSW5oZXJpdGVkRGF0YS0+bV9kYXNoYm9hcmRSZWdpb25zOyB9CiAgICAg
dm9pZCBzZXREYXNoYm9hcmRSZWdpb25zKERlcHJlY2F0ZWRWYWx1ZUxpc3Q8U3R5bGVEYXNoYm9h
cmRSZWdpb24+IHJlZ2lvbnMpIHsgU0VUX1ZBUihjc3MzTm9uSW5oZXJpdGVkRGF0YSxtX2Rhc2hi
b2FyZFJlZ2lvbnMscmVnaW9ucyk7IH0KLSAgICB2b2lkIHNldERhc2hib2FyZFJlZ2lvbiAoaW50
IHR5cGUsIERlcHJlY2F0ZWRTdHJpbmcgbGFiZWwsIExlbmd0aCB0LCBMZW5ndGggciwgTGVuZ3Ro
IGIsIExlbmd0aCBsLCBib29sIGFwcGVuZCkgeworICAgIHZvaWQgc2V0RGFzaGJvYXJkUmVnaW9u
IChpbnQgdHlwZSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgTGVuZ3RoIHQsIExlbmd0aCByLCBMZW5n
dGggYiwgTGVuZ3RoIGwsIGJvb2wgYXBwZW5kKSB7CiAgICAgICAgIFN0eWxlRGFzaGJvYXJkUmVn
aW9uIHJlZ2lvbjsKICAgICAgICAgcmVnaW9uLmxhYmVsID0gbGFiZWw7CiAgICAgICAgIHJlZ2lv
bi5vZmZzZXQudG9wICA9IHQ7CkluZGV4OiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMzQwNCkKKysrIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBA
IGVudW0gSGl0VGVzdEFjdGlvbiB7CiAKIHN0cnVjdCBEYXNoYm9hcmRSZWdpb25WYWx1ZQogewot
ICAgIERlcHJlY2F0ZWRTdHJpbmcgbGFiZWw7CisgICAgU3RyaW5nIGxhYmVsOwogICAgIEludFJl
Y3QgYm91bmRzOwogICAgIEludFJlY3QgY2xpcDsKICAgICBpbnQgdHlwZTsKSW5kZXg6IGNzcy9j
c3NwYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9jc3NwYXJzZXIuY3BwCShyZXZpc2lvbiAx
MzQwNCkKKysrIGNzcy9jc3NwYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM0LDcgKzE0
MzQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb250ZW50KGludCBwcm9wSWQsCiAgICAgICAg
IH0gZWxzZSBpZiAodmFsLT51bml0ID09IFZhbHVlOjpGdW5jdGlvbikgewogICAgICAgICAgICAg
Ly8gYXR0cihYKQogICAgICAgICAgICAgVmFsdWVMaXN0ICphcmdzID0gdmFsLT5mdW5jdGlvbi0+
YXJnczsKLSAgICAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgZm5hbWUgPSBxU3RyaW5nKHZhbC0+
ZnVuY3Rpb24tPm5hbWUpLmxvd2VyKCk7CisgICAgICAgICAgICBTdHJpbmcgZm5hbWUgPSBkb21T
dHJpbmcodmFsLT5mdW5jdGlvbi0+bmFtZSkubG93ZXIoKTsKICAgICAgICAgICAgIGlmIChmbmFt
ZSAhPSAiYXR0cigiIHx8ICFhcmdzKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGlmIChhcmdzLT5zaXplKCkgIT0gMSkKQEAgLTE3NTUsNyArMTc1NSw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZURhc2hib2FyZFJlZ2lvbnMoIGkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBEZXByZWNhdGVkU3RyaW5nIGZuYW1lID0g
cVN0cmluZyggdmFsdWUtPmZ1bmN0aW9uLT5uYW1lICkubG93ZXIoKTsKKyAgICAgICAgU3RyaW5n
IGZuYW1lID0gZG9tU3RyaW5nKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSkubG93ZXIoKTsKICAgICAg
ICAgaWYgKGZuYW1lICE9ICJkYXNoYm9hcmQtcmVnaW9uKCIgKSB7CiAgICAgICAgICAgICB2YWxp
ZCA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzY4LDcgKzE3NjgsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VEYXNoYm9hcmRSZWdpb25zKCBpCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIHJlZ2lvbi0+bV9sYWJlbCA9IHFTdHJp
bmcoYXJnLT5zdHJpbmcpOworICAgICAgICByZWdpb24tPm1fbGFiZWwgPSBkb21TdHJpbmcoYXJn
LT5zdHJpbmcpOwogCiAgICAgICAgIC8vIFNlY29uZCBhcmcgaXMgYSB0eXBlLgogICAgICAgICBh
cmcgPSBhcmdzLT5uZXh0KCk7CkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VEYXNoYm9hcmRSZWdpb25zKCBpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
Ci0gICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgZ2VvbWV0cnlUeXBlID0gcVN0cmluZyhhcmctPnN0
cmluZykubG93ZXIoKTsKKyAgICAgICAgU3RyaW5nIGdlb21ldHJ5VHlwZSA9IGRvbVN0cmluZyhh
cmctPnN0cmluZykubG93ZXIoKTsKICAgICAgICAgaWYgKGdlb21ldHJ5VHlwZSA9PSAiY2lyY2xl
IikKICAgICAgICAgICAgIHJlZ2lvbi0+bV9pc0NpcmNsZSA9IHRydWU7CiAgICAgICAgIGVsc2Ug
aWYgKGdlb21ldHJ5VHlwZSA9PSAicmVjdGFuZ2xlIikKQEAgLTE3ODgsNyArMTc4OCw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZURhc2hib2FyZFJlZ2lvbnMoIGkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgcmVnaW9uLT5tX2dlb21ldHJ5VHlw
ZSA9IHFTdHJpbmcoYXJnLT5zdHJpbmcpOworICAgICAgICByZWdpb24tPm1fZ2VvbWV0cnlUeXBl
ID0gZG9tU3RyaW5nKGFyZy0+c3RyaW5nKTsKIAogICAgICAgICBpZiAobnVtQXJncyA9PSBEQVNI
Qk9BUkRfUkVHSU9OX1NIT1JUX05VTV9QQVJBTUVURVJTIHx8IG51bUFyZ3MgPT0gKERBU0hCT0FS
RF9SRUdJT05fU0hPUlRfTlVNX1BBUkFNRVRFUlMqMi0xKSkgewogICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUgKmFtb3VudCA9IGFyZy0+aWQgPT0gQ1NTX1ZBTF9BVVRPID8KQEAgLTE4NDAs
NyArMTg0MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNoYXBlKCBpbnQgcHJvcElkLCAKIHsK
ICAgICBWYWx1ZSAqdmFsdWUgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBWYWx1ZUxpc3Qg
KmFyZ3MgPSB2YWx1ZS0+ZnVuY3Rpb24tPmFyZ3M7Ci0gICAgRGVwcmVjYXRlZFN0cmluZyBmbmFt
ZSA9IHFTdHJpbmcoIHZhbHVlLT5mdW5jdGlvbi0+bmFtZSApLmxvd2VyKCk7CisgICAgU3RyaW5n
IGZuYW1lID0gZG9tU3RyaW5nKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSkubG93ZXIoKTsKICAgICBp
ZiAoIGZuYW1lICE9ICJyZWN0KCIgfHwgIWFyZ3MgKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTIwMzQsMjcgKzIwMzQsMjcgQEAgQ1NTVmFsdWVMaXN0ICpDU1NQYXJzZXI6OnBhcnNlRm9u
dEZhbWlseQogICAgICAgICBpZiAodmFsdWUtPmlkID49IENTU19WQUxfU0VSSUYgJiYgdmFsdWUt
PmlkIDw9IENTU19WQUxfX0tIVE1MX0JPRFkpIHsKICAgICAgICAgICAgIGlmIChjdXJyRmFtaWx5
KSB7CiAgICAgICAgICAgICAgICAgY3VyckZhbWlseS0+cGFyc2VkRm9udE5hbWUgKz0gJyAnOwot
ICAgICAgICAgICAgICAgIGN1cnJGYW1pbHktPnBhcnNlZEZvbnROYW1lICs9IHFTdHJpbmcodmFs
dWUtPnN0cmluZyk7CisgICAgICAgICAgICAgICAgY3VyckZhbWlseS0+cGFyc2VkRm9udE5hbWUg
Kz0gZGVwcmVjYXRlZFN0cmluZyh2YWx1ZS0+c3RyaW5nKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGVsc2UgaWYgKG5leHRWYWxCcmVha3NGb250IHx8ICFuZXh0VmFsSXNGb250TmFtZSkK
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
LT5pZCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
dXJyRmFtaWx5ID0gbmV3IEZvbnRGYW1pbHlWYWx1ZShxU3RyaW5nKHZhbHVlLT5zdHJpbmcpKSk7
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGN1cnJGYW1pbHkgPSBuZXcgRm9udEZhbWls
eVZhbHVlKGRlcHJlY2F0ZWRTdHJpbmcodmFsdWUtPnN0cmluZykpKTsKICAgICAgICAgfQogICAg
ICAgICBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklO
RykgewogICAgICAgICAgICAgLy8gU3RyaW5ncyBuZXZlciBzaGFyZSBpbiBhIGZhbWlseSBuYW1l
LgogICAgICAgICAgICAgY3VyckZhbWlseSA9IDA7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQo
bmV3IEZvbnRGYW1pbHlWYWx1ZShxU3RyaW5nKCB2YWx1ZS0+c3RyaW5nKSkpOworICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKG5ldyBGb250RmFtaWx5VmFsdWUoZGVwcmVjYXRlZFN0cmluZyh2YWx1
ZS0+c3RyaW5nKSkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT51bml0ID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKICAgICAgICAgICAgIGlmIChjdXJyRmFt
aWx5KSB7CiAgICAgICAgICAgICAgICAgY3VyckZhbWlseS0+cGFyc2VkRm9udE5hbWUgKz0gJyAn
OwotICAgICAgICAgICAgICAgIGN1cnJGYW1pbHktPnBhcnNlZEZvbnROYW1lICs9IHFTdHJpbmco
dmFsdWUtPnN0cmluZyk7CisgICAgICAgICAgICAgICAgY3VyckZhbWlseS0+cGFyc2VkRm9udE5h
bWUgKz0gZGVwcmVjYXRlZFN0cmluZyh2YWx1ZS0+c3RyaW5nKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGVsc2UgaWYgKG5leHRWYWxCcmVha3NGb250IHx8ICFuZXh0VmFsSXNGb250TmFt
ZSkKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IEZvbnRGYW1pbHlWYWx1ZShxU3Ry
aW5nKCB2YWx1ZS0+c3RyaW5nKSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcg
Rm9udEZhbWlseVZhbHVlKGRlcHJlY2F0ZWRTdHJpbmcodmFsdWUtPnN0cmluZykpKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3VyckZhbWlseSA9IG5l
dyBGb250RmFtaWx5VmFsdWUocVN0cmluZyh2YWx1ZS0+c3RyaW5nKSkpOworICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChjdXJyRmFtaWx5ID0gbmV3IEZvbnRGYW1pbHlWYWx1ZShkZXByZWNh
dGVkU3RyaW5nKHZhbHVlLT5zdHJpbmcpKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTIwODcsNyArMjA4Nyw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUNvbG9yKGNvbnN0IERlcHJlY2EKICAgICBpZiAoICFsZW4gKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLQogICAgIGJvb2wgb2s7CiAKICAgICBpZiAoIGxlbiA9PSAzIHx8IGxlbiA9PSA2
ICkgewpAQCAtMjEzNywxMyArMjEzNiwxMiBAQCBDU1NQcmltaXRpdmVWYWx1ZSAqQ1NTUGFyc2Vy
OjpwYXJzZUNvbG9yCiAgICAgfSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1JHQkNPTE9SIHx8CiAgICAgICAgICAgICAgICAgdmFsdWUtPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCB8fAogICAgICAgICAgICAgICAgICghc3RyaWN0ICYm
IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRElNRU5TSU9OKSkgewotICAg
ICAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvciggcVN0cmluZyggdmFsdWUtPnN0cmluZyAp
LCBjKSkKKyAgICAgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3IoZGVwcmVjYXRlZFN0cmlu
Zyh2YWx1ZS0+c3RyaW5nKSwgYykpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAg
ZWxzZSBpZiAoIHZhbHVlLT51bml0ID09IFZhbHVlOjpGdW5jdGlvbiAmJgorICAgIH0gZWxzZSBp
ZiAodmFsdWUtPnVuaXQgPT0gVmFsdWU6OkZ1bmN0aW9uICYmCiAgICAgICAgICAgICAgICAgdmFs
dWUtPmZ1bmN0aW9uLT5hcmdzICE9IDAgJiYKICAgICAgICAgICAgICAgICB2YWx1ZS0+ZnVuY3Rp
b24tPmFyZ3MtPnNpemUoKSA9PSA1IC8qIHJnYiArIHR3byBjb21tYXMgKi8gJiYKLSAgICAgICAg
ICAgICAgICBxU3RyaW5nKCB2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUgKS5sb3dlcigpID09ICJyZ2Io
IiApIHsKKyAgICAgICAgICAgICAgICBkb21TdHJpbmcodmFsdWUtPmZ1bmN0aW9uLT5uYW1lKS5s
b3dlcigpID09ICJyZ2IoIikgewogICAgICAgICBWYWx1ZUxpc3QgKmFyZ3MgPSB2YWx1ZS0+ZnVu
Y3Rpb24tPmFyZ3M7CiAgICAgICAgIFZhbHVlICp2ID0gYXJncy0+Y3VycmVudCgpOwogICAgICAg
ICBpZiAoICF2YWxpZFVuaXQoIHYsIEZJbnRlZ2VyfEZQZXJjZW50LCB0cnVlICkgKQpAQCAtMjE3
MSw3ICsyMTY5LDcgQEAgQ1NTUHJpbWl0aXZlVmFsdWUgKkNTU1BhcnNlcjo6cGFyc2VDb2xvcgog
ICAgIGVsc2UgaWYgKCB2YWx1ZS0+dW5pdCA9PSBWYWx1ZTo6RnVuY3Rpb24gJiYKICAgICAgICAg
ICAgICAgdmFsdWUtPmZ1bmN0aW9uLT5hcmdzICE9IDAgJiYKICAgICAgICAgICAgICAgdmFsdWUt
PmZ1bmN0aW9uLT5hcmdzLT5zaXplKCkgPT0gNyAvKiByZ2JhICsgdGhyZWUgY29tbWFzICovICYm
Ci0gICAgICAgICAgICAgIHFTdHJpbmcoIHZhbHVlLT5mdW5jdGlvbi0+bmFtZSApLmxvd2VyKCkg
PT0gInJnYmEoIiApIHsKKyAgICAgICAgICAgICAgZG9tU3RyaW5nKHZhbHVlLT5mdW5jdGlvbi0+
bmFtZSkubG93ZXIoKSA9PSAicmdiYSgiKSB7CiAgICAgICAgIFZhbHVlTGlzdCAqYXJncyA9IHZh
bHVlLT5mdW5jdGlvbi0+YXJnczsKICAgICAgICAgVmFsdWUgKnYgPSBhcmdzLT5jdXJyZW50KCk7
CiAgICAgICAgIGlmICggIXZhbGlkVW5pdCggdiwgRkludGVnZXJ8RlBlcmNlbnQsIHRydWUgKSAp
CkluZGV4OiBjc3MvY3NzcGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL2Nzc3BhcnNlci5oCShy
ZXZpc2lvbiAxMzQwNCkKKysrIGNzcy9jc3NwYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzUs
NyArNzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCB1bml0OwogICAgIH07
CiAKLSAgICBzdGF0aWMgaW5saW5lIERlcHJlY2F0ZWRTdHJpbmcgcVN0cmluZyhjb25zdCBQYXJz
ZVN0cmluZyYgcHMpIHsKKyAgICBzdGF0aWMgaW5saW5lIERlcHJlY2F0ZWRTdHJpbmcgZGVwcmVj
YXRlZFN0cmluZyhjb25zdCBQYXJzZVN0cmluZyYgcHMpIHsKICAgICAgICAgcmV0dXJuIERlcHJl
Y2F0ZWRTdHJpbmcoKFFDaGFyICopcHMuc3RyaW5nLCBwcy5sZW5ndGgpOwogICAgIH0KICAgICBz
dGF0aWMgaW5saW5lIFN0cmluZyBkb21TdHJpbmcoY29uc3QgUGFyc2VTdHJpbmcmIHBzKSB7Cklu
ZGV4OiBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL2Nzc3N0eWxl
c2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxMzQwNCkKKysrIGNzcy9jc3NzdHlsZXNlbGVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzkxOSwxMiArMzkxOSwxMCBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252
ZXJ0VG9MZW5ndGggKHJlZ2lvbi0+cmlnaHQoKSwgc3R5bGUpOwogICAgICAgICAgICAgTGVuZ3Ro
IGJvdHRvbSA9IGNvbnZlcnRUb0xlbmd0aCAocmVnaW9uLT5ib3R0b20oKSwgc3R5bGUpOwogICAg
ICAgICAgICAgTGVuZ3RoIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGggKHJlZ2lvbi0+bGVmdCgpLCBz
dHlsZSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKSB7CisgICAgICAgICAg
ICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXREYXNo
Ym9hcmRSZWdpb24gKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpDaXJjbGUsIHJlZ2lvbi0+bV9sYWJl
bCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRy
dWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAocmVnaW9uLT5tX2lzUmVj
dGFuZ2xlKSB7CisgICAgICAgICAgICBlbHNlIGlmIChyZWdpb24tPm1faXNSZWN0YW5nbGUpCiAg
ICAgICAgICAgICAgICAgc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbiAoU3R5bGVEYXNoYm9hcmRS
ZWdpb246OlJlY3RhbmdsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxl
ZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7Ci0gICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZWdpb24gPSByZWdpb24tPm1fbmV4dC5nZXQoKTsKICAgICAgICAgfQogICAgICAg
ICAKSW5kZXg6IGNzcy9jc3NfdmFsdWVpbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL2Nzc192YWx1
ZWltcGwuaAkocmV2aXNpb24gMTM0MDQpCisrKyBjc3MvY3NzX3ZhbHVlaW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDgsOCArMzQ4LDggQEAgcHVibGljOgogICAgIERhc2hib2FyZFJlZ2lvbigp
IDogbV9pc0NpcmNsZSgwKSwgbV9pc1JlY3RhbmdsZSgwKSB7IH0KIAogICAgIFJlZlB0cjxEYXNo
Ym9hcmRSZWdpb24+IG1fbmV4dDsKLSAgICBEZXByZWNhdGVkU3RyaW5nIG1fbGFiZWw7Ci0gICAg
RGVwcmVjYXRlZFN0cmluZyBtX2dlb21ldHJ5VHlwZTsKKyAgICBTdHJpbmcgbV9sYWJlbDsKKyAg
ICBTdHJpbmcgbV9nZW9tZXRyeVR5cGU7CiAgICAgYm9vbCBtX2lzQ2lyY2xlIDogMTsKICAgICBi
b29sIG1faXNSZWN0YW5nbGUgOiAxOwogfTsKSW5kZXg6IGNzcy9DU1NHcmFtbWFyLnkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gY3NzL0NTU0dyYW1tYXIueQkocmV2aXNpb24gMTM0MDQpCisrKyBjc3MvQ1NTR3Jh
bW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC04MjcsNyArODI3LDcgQEAgZGVjbGFyYXRpb246CiAK
IHByb3BlcnR5OgogICAgIElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAgICAgRGVwcmVjYXRlZFN0
cmluZyBzdHIgPSBxU3RyaW5nKCQxKTsKKyAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBzdHIgPSBk
ZXByZWNhdGVkU3RyaW5nKCQxKTsKICAgICAgICAgJCQgPSBnZXRQcm9wZXJ0eUlEKCBzdHIubG93
ZXIoKS5sYXRpbjEoKSwgc3RyLmxlbmd0aCgpICk7CiAjaWYgU1ZHX1NVUFBPUlQKICAgICAgIGlm
ICgkJCA9PSAwKQpAQCAtODgzLDcgKzg4Myw3IEBAIHRlcm06CiAgIHwgdW5hcnlfb3BlcmF0b3Ig
dW5hcnlfdGVybSB7ICQkID0gJDI7ICQkLmZWYWx1ZSAqPSAkMTsgfQogICB8IFNUUklORyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORzsgfQogICB8IElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAgIERl
cHJlY2F0ZWRTdHJpbmcgc3RyID0gcVN0cmluZyggJDEgKTsKKyAgICAgIERlcHJlY2F0ZWRTdHJp
bmcgc3RyID0gZGVwcmVjYXRlZFN0cmluZygkMSk7CiAgICAgICAkJC5pZCA9IGdldFZhbHVlSUQo
IHN0ci5sb3dlcigpLmxhdGluMSgpLCBzdHIubGVuZ3RoKCkgKTsKICNpZiBTVkdfU1VQUE9SVAog
ICAgICAgaWYgKCQkLmlkID09IDApCkluZGV4OiBicmlkZ2UvbWFjL0ZyYW1lTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGJyaWRnZS9tYWMvRnJhbWVNYWMubW0JKHJldmlzaW9uIDEzNDA0KQorKysgYnJp
ZGdlL21hYy9GcmFtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ0MSw5ICsyNDQxLDggQEAg
TlNBdHRyaWJ1dGVkU3RyaW5nICpGcmFtZU1hYzo6YXR0cmlidXRlZAogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChuLT5oYXNUYWdOYW1lKGltZ1RhZykpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHBlbmRpbmdTdHlsZWRTcGFjZSAhPSBuaWwpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChsaW5rU3RhcnRMb2NhdGlvbiA9PSBbcmVzdWx0IGxlbmd0
aF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5rU3RhcnRMb2NhdGlvbiA9PSBb
cmVzdWx0IGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytsaW5rU3RhcnRM
b2NhdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIFtyZXN1bHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpwZW5kaW5nU3R5bGVkU3BhY2VdOwog
ICAgICAgICAgICAgICAgICAgICAgICAgW3BlbmRpbmdTdHlsZWRTcGFjZSByZWxlYXNlXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdTdHlsZWRTcGFjZSA9IG5pbDsKQEAgLTI0NjUs
OSArMjQ2NCw4IEBAIE5TQXR0cmlidXRlZFN0cmluZyAqRnJhbWVNYWM6OmF0dHJpYnV0ZWQKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIE5vZGUgKm5leHQgPSBuLT5maXJzdENoaWxkKCk7
Ci0gICAgICAgIGlmICghbmV4dCkgeworICAgICAgICBpZiAoIW5leHQpCiAgICAgICAgICAgICBu
ZXh0ID0gbi0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgfQogCiAgICAgICAgIHdoaWxlICghbmV4
dCAmJiBuLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgdGV4
dDsKQEAgLTI3MTksNyArMjcxNyw3IEBAIE5TRm9udCAqRnJhbWVNYWM6OmZvbnRGb3JTZWxlY3Rp
b24oYm9vbCAKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBBcmUgdGhlcmUgYW55IG5vZGUgdHlwZXMgdGhhdCBoYXZlIHJlbmRlcmVycywgYnV0IHRoYXQg
d2Ugc2hvdWxkIGJlIHNraXBwaW5nPwogICAgICAgICAgICAgTlNGb250ICpmID0gcmVuZGVyZXIt
PnN0eWxlKCktPmZvbnQoKS5nZXROU0ZvbnQoKTsKLSAgICAgICAgICAgIGlmIChmb250ID09IG5p
bCkgeworICAgICAgICAgICAgaWYgKCFmb250KSB7CiAgICAgICAgICAgICAgICAgZm9udCA9IGY7
CiAgICAgICAgICAgICAgICAgaWYgKCFoYXNNdWx0aXBsZUZvbnRzKQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTI4MjMsOSArMjgyMSw4IEBAIE5TV3JpdGluZ0RpcmVjdGlvbiBGcmFt
ZU1hYzo6YmFzZVdyaXRpbmcKIAogdm9pZCBGcmFtZU1hYzo6dG9rZW5pemVyUHJvY2Vzc2VkRGF0
YSgpCiB7Ci0gICAgaWYgKGQtPm1fZG9jKSB7CisgICAgaWYgKGQtPm1fZG9jKQogICAgICAgICBj
aGVja0NvbXBsZXRlZCgpOwotICAgIH0KICAgICBbX2JyaWRnZSB0b2tlbml6ZXJQcm9jZXNzZWRE
YXRhXTsKIH0KIApAQCAtMjk4Miw5ICsyOTc5LDggQEAgdm9pZCBGcmFtZU1hYzo6cmVnaXN0ZXJD
b21tYW5kRm9yVW5kb09yUgogICAgIE5TVW5kb01hbmFnZXIgKnVuZG9NYW5hZ2VyID0gW19icmlk
Z2UgdW5kb01hbmFnZXJdOwogICAgIFt1bmRvTWFuYWdlciByZWdpc3RlclVuZG9XaXRoVGFyZ2V0
Ol9icmlkZ2Ugc2VsZWN0b3I6KGlzUmVkbyA/IEBzZWxlY3RvcihyZWRvRWRpdGluZzopIDogQHNl
bGVjdG9yKHVuZG9FZGl0aW5nOikpIG9iamVjdDprd3FdOwogICAgIE5TU3RyaW5nICphY3Rpb25O
YW1lID0gW19icmlkZ2UgbmFtZUZvclVuZG9BY3Rpb246c3RhdGljX2Nhc3Q8V2ViVW5kb0FjdGlv
bj4oY21kLmVkaXRpbmdBY3Rpb24oKSldOwotICAgIGlmIChhY3Rpb25OYW1lICE9IG5pbCkgewor
ICAgIGlmIChhY3Rpb25OYW1lICE9IG5pbCkKICAgICAgICAgW3VuZG9NYW5hZ2VyIHNldEFjdGlv
bk5hbWU6YWN0aW9uTmFtZV07Ci0gICAgfQogICAgIF9oYXZlVW5kb1JlZG9PcGVyYXRpb25zID0g
WUVTOwogfQogCkBAIC0zMDk5LDkgKzMwOTUsOCBAQCB2b2lkIEZyYW1lTWFjOjptYXJrTWlzc3Bl
bGxpbmdzKGNvbnN0IFNlCiAgICAgICAgICAgICAvLyBMb29wIG92ZXIgdGhlIGNodW5rIHRvIGZp
bmQgZWFjaCBtaXNzcGVsbGluZyBpbiBpdC4KICAgICAgICAgICAgIHdoaWxlIChzdGFydEluZGV4
IDwgbGVuKSB7CiAgICAgICAgICAgICAgICAgTlNSYW5nZSBtaXNzcGVsbGluZyA9IFtjaGVja2Vy
IGNoZWNrU3BlbGxpbmdPZlN0cmluZzpjaHVuayBzdGFydGluZ0F0OnN0YXJ0SW5kZXggbGFuZ3Vh
Z2U6bmlsIHdyYXA6Tk8gaW5TcGVsbERvY3VtZW50V2l0aFRhZzpbX2JyaWRnZSBzcGVsbENoZWNr
ZXJEb2N1bWVudFRhZ10gd29yZENvdW50Ok5VTExdOwotICAgICAgICAgICAgICAgIGlmIChtaXNz
cGVsbGluZy5sZW5ndGggPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGluZy5s
ZW5ndGggPT0gMCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBCdWlsZCB1
cCByZXN1bHQgcmFuZ2UgYW5kIHN0cmluZy4gIE5vdGUgdGhlIG1pc3NwZWxsaW5nIG1heSBzcGFu
IG1hbnkgdGV4dCBub2RlcywKICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBDaGFySXRl
cmF0b3IgaW5zdWxhdGVzIHVzIGZyb20gdGhpcyBjb21wbGV4aXR5CkBAIC0zMTQ4LDE5ICszMTQz
LDE3IEBAIHZvaWQgRnJhbWVNYWM6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24KICAgICAgICAg
ICAgICAgICAvLyBtYXJrTWlzc3BlbGxpbmdzIGZ1bmN0aW9uIGlzIHByZXBhcmVkIHRvIGhhbmRs
ZXIgbGFyZ2VyIHJhbmdlcy4KIAogICAgICAgICAgICAgICAgIC8vIFdoZW4gdHlwaW5nIHdlIGNo
ZWNrIHNwZWxsaW5nIGVsc2V3aGVyZSwgc28gZG9uJ3QgcmVkbyBpdCBoZXJlLgotICAgICAgICAg
ICAgICAgIGlmIChjbG9zZVR5cGluZykgeworICAgICAgICAgICAgICAgIGlmIChjbG9zZVR5cGlu
ZykKICAgICAgICAgICAgICAgICAgICAgbWFya01pc3NwZWxsaW5ncyhvbGRBZGphY2VudFdvcmRz
KTsKLSAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIG9ubHkgZXJh
c2VzIGEgbWFya2VyIGluIHRoZSBmaXJzdCB3b3JkIG9mIHRoZSBzZWxlY3Rpb24uCiAgICAgICAg
ICAgICAgICAgLy8gUGVyaGFwcyBwZWN1bGlhciwgYnV0IGl0IG1hdGNoZXMgQXBwS2l0LgogICAg
ICAgICAgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZU1hcmtlcnMobmV3QWRqYWNlbnRXb3Jkcy50
b1JhbmdlKCkuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgLy8gV2hlbiBj
b250aW51b3VzIHNwZWxsIGNoZWNraW5nIGlzIG9mZiwgbm8gbWFya2VycyBhcHBlYXIgYWZ0ZXIg
dGhlIHNlbGVjdGlvbiBjaGFuZ2VzLgogICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlTWFy
a2VycyhEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogICAgICAgICB9Ci0gICAgfQogCiAgICAg
W19icmlkZ2UgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbl07CiB9CkBAIC0zMjk1LDE3ICszMjg4
LDcgQEAgTlNNdXRhYmxlRGljdGlvbmFyeSAqRnJhbWVNYWM6OmRhc2hib2FyZAogICAgICAgICBp
ZiAocmVnaW9uLnR5cGUgPT0gU3R5bGVEYXNoYm9hcmRSZWdpb246Ok5vbmUpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICBOU1JlY3QgY2xpcDsKLSAgICAgICAg
Y2xpcC5vcmlnaW4ueCA9IHJlZ2lvbi5jbGlwLngoKTsKLSAgICAgICAgY2xpcC5vcmlnaW4ueSA9
IHJlZ2lvbi5jbGlwLnkoKTsKLSAgICAgICAgY2xpcC5zaXplLndpZHRoID0gcmVnaW9uLmNsaXAu
d2lkdGgoKTsKLSAgICAgICAgY2xpcC5zaXplLmhlaWdodCA9IHJlZ2lvbi5jbGlwLmhlaWdodCgp
OwotICAgICAgICBOU1JlY3QgcmVjdDsKLSAgICAgICAgcmVjdC5vcmlnaW4ueCA9IHJlZ2lvbi5i
b3VuZHMueCgpOwotICAgICAgICByZWN0Lm9yaWdpbi55ID0gcmVnaW9uLmJvdW5kcy55KCk7Ci0g
ICAgICAgIHJlY3Quc2l6ZS53aWR0aCA9IHJlZ2lvbi5ib3VuZHMud2lkdGgoKTsKLSAgICAgICAg
cmVjdC5zaXplLmhlaWdodCA9IHJlZ2lvbi5ib3VuZHMuaGVpZ2h0KCk7Ci0gICAgICAgIE5TU3Ry
aW5nICpsYWJlbCA9IHJlZ2lvbi5sYWJlbC5nZXROU1N0cmluZygpOworICAgICAgICBOU1N0cmlu
ZyAqbGFiZWwgPSByZWdpb24ubGFiZWw7CiAgICAgICAgIFdlYkRhc2hib2FyZFJlZ2lvblR5cGUg
dHlwZSA9IFdlYkRhc2hib2FyZFJlZ2lvblR5cGVOb25lOwogICAgICAgICBpZiAocmVnaW9uLnR5
cGUgPT0gU3R5bGVEYXNoYm9hcmRSZWdpb246OkNpcmNsZSkKICAgICAgICAgICAgIHR5cGUgPSBX
ZWJEYXNoYm9hcmRSZWdpb25UeXBlQ2lyY2xlOwpAQCAtMzMxNyw3ICszMzAwLDcgQEAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqRnJhbWVNYWM6OmRhc2hib2FyZAogICAgICAgICAgICAgW3dlYlJlZ2lv
bnMgc2V0T2JqZWN0OnJlZ2lvblZhbHVlcyBmb3JLZXk6bGFiZWxdOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBXZWJEYXNoYm9hcmRSZWdpb24gKndlYlJlZ2lvbiA9IFtbW1dlYkRhc2hi
b2FyZFJlZ2lvbiBhbGxvY10gaW5pdFdpdGhSZWN0OnJlY3QgY2xpcDpjbGlwIHR5cGU6dHlwZV0g
YXV0b3JlbGVhc2VdOworICAgICAgICBXZWJEYXNoYm9hcmRSZWdpb24gKndlYlJlZ2lvbiA9IFtb
W1dlYkRhc2hib2FyZFJlZ2lvbiBhbGxvY10gaW5pdFdpdGhSZWN0OnJlZ2lvbi5ib3VuZHMgY2xp
cDpyZWdpb24uY2xpcCB0eXBlOnR5cGVdIGF1dG9yZWxlYXNlXTsKICAgICAgICAgW3JlZ2lvblZh
bHVlcyBhZGRPYmplY3Q6d2ViUmVnaW9uXTsKICAgICB9CiAgICAgCkBAIC0zMzc1LDExICszMzU4
LDEwIEBAIGJvb2wgRnJhbWVNYWM6OnNob3VsZENsb3NlKCkKIAogdm9pZCBGcmFtZU1hYzo6ZHJh
Z1NvdXJjZU1vdmVkVG8oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBp
ZiAoX2RyYWdTcmMgJiYgX2RyYWdTcmNNYXlCZURIVE1MKSB7CisgICAgaWYgKF9kcmFnU3JjICYm
IF9kcmFnU3JjTWF5QmVESFRNTCkKICAgICAgICAgLy8gZm9yIG5vdyB3ZSBkb24ndCBjYXJlIGlm
IGV2ZW50IGhhbmRsZXIgY2FuY2VscyBkZWZhdWx0IGJlaGF2aW9yLCBzaW5jZSB0aGVyZSBpcyBu
b25lCiAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGRyYWdFdmVudCwgZXZlbnQpOwogICAg
IH0KLX0KIAogdm9pZCBGcmFtZU1hYzo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCwgTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKIHsKSW5kZXg6IGtz
dmcyL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL2Nzcy9TVkdDU1NQ
YXJzZXIuY3BwCShyZXZpc2lvbiAxMzQwNCkKKysrIGtzdmcyL2Nzcy9TVkdDU1NQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsMjUgKzM0NCwxOCBAQCBDU1NWYWx1ZSAqQ1NTUGFyc2Vy
OjpwYXJzZVNWR1BhaW50KCkKIHsKICAgICBLRE9NQ1NTVmFsdWUgKnZhbHVlID0gdmFsdWVMaXN0
LT5jdXJyZW50KCk7CiAgICAgaWYoIXN0cmljdCAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUiAmJgotICAgICAgIHZhbHVlLT5mVmFsdWUgPj0gMC4gJiYgdmFs
dWUtPmZWYWx1ZSA8IDEwMDAwMDAuKQotICAgIHsKKyAgICAgICB2YWx1ZS0+ZlZhbHVlID49IDAu
ICYmIHZhbHVlLT5mVmFsdWUgPCAxMDAwMDAwLikgewogICAgICAgICBEZXByZWNhdGVkU3RyaW5n
IHN0cjsKICAgICAgICAgc3RyLnNwcmludGYoIiUwNmQiLCAoaW50KSh2YWx1ZS0+ZlZhbHVlKy41
KSk7CiAgICAgICAgIHJldHVybiBuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwg
MCwgbmV3IFN0cmluZ0ltcGwoc3RyKSk7Ci0gICAgfQotICAgIGVsc2UgaWYodmFsdWUtPnVuaXQg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SR0JDT0xPUikKLSAgICB7Ci0gICAgICAgIERlcHJl
Y2F0ZWRTdHJpbmcgc3RyID0gRGVwcmVjYXRlZFN0cmluZzo6ZnJvbUxhdGluMSgiIyIpICsgcVN0
cmluZyh2YWx1ZS0+c3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIG5ldyBTVkdQYWludChTVkdfUEFJ
TlRUWVBFX1JHQkNPTE9SLCAwLCBuZXcgU3RyaW5nSW1wbChzdHIpKTsKLSAgICB9Ci0gICAgZWxz
ZSBpZih2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UIHx8CisgICAg
fSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JHQkNPTE9S
KSB7CisgICAgICAgIFN0cmluZyBzdHIgPSAiIyIgKyBkb21TdHJpbmcodmFsdWUtPnN0cmluZyk7
CisgICAgICAgIHJldHVybiBuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgMCwg
c3RyLmltcGwoKSk7CisgICAgfSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0lERU5UIHx8CiAgICAgICAgICAgICghc3RyaWN0ICYmIHZhbHVlLT51bml0ID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRElNRU5TSU9OKSkKLSAgICB7Ci0gICAgICAgIERlcHJl
Y2F0ZWRTdHJpbmcgc3RyID0gcVN0cmluZyh2YWx1ZS0+c3RyaW5nKTsKLSAgICAgICAgcmV0dXJu
IG5ldyBTVkdQYWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9SLCAwLCBuZXcgU3RyaW5nSW1wbChz
dHIpKTsKLSAgICB9CisgICAgICAgIHJldHVybiBuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9S
R0JDT0xPUiwgMCwgZG9tU3RyaW5nKHZhbHVlLT5zdHJpbmcpLmltcGwoKSk7CiAgICAgZWxzZSBp
Zih2YWx1ZS0+dW5pdCA9PSBLRE9NQ1NTVmFsdWU6OkZ1bmN0aW9uICYmIHZhbHVlLT5mdW5jdGlv
bi0+YXJncyAhPSAwICYmCi0gICAgICAgICAgICBxU3RyaW5nKHZhbHVlLT5mdW5jdGlvbi0+bmFt
ZSkubG93ZXIoKSA9PSAicmdiKCIpCisgICAgICAgICAgICBkb21TdHJpbmcodmFsdWUtPmZ1bmN0
aW9uLT5uYW1lKS5sb3dlcigpID09ICJyZ2IoIikKICAgICB7CiAgICAgICAgIEtET01DU1NWYWx1
ZUxpc3QgKmFyZ3MgPSB2YWx1ZS0+ZnVuY3Rpb24tPmFyZ3M7CiAgICAgICAgIEtET01DU1NWYWx1
ZSAqdiA9IGFyZ3MtPmN1cnJlbnQoKTsKQEAgLTQwMCwyMyArMzkzLDE2IEBAIENTU1ZhbHVlICpD
U1NQYXJzZXI6OnBhcnNlU1ZHQ29sb3IoKQogewogICAgIEtET01DU1NWYWx1ZSAqdmFsdWUgPSB2
YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZighc3RyaWN0ICYmIHZhbHVlLT51bml0ID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSICYmCi0gICAgICAgdmFsdWUtPmZWYWx1ZSA+PSAw
LiAmJiB2YWx1ZS0+ZlZhbHVlIDwgMTAwMDAwMC4pCi0gICAgeworICAgICAgIHZhbHVlLT5mVmFs
dWUgPj0gMC4gJiYgdmFsdWUtPmZWYWx1ZSA8IDEwMDAwMDAuKSB7CiAgICAgICAgIERlcHJlY2F0
ZWRTdHJpbmcgc3RyOwogICAgICAgICBzdHIuc3ByaW50ZigiJTA2ZCIsIChpbnQpKHZhbHVlLT5m
VmFsdWUrLjUpKTsKICAgICAgICAgcmV0dXJuIG5ldyBTVkdDb2xvcihuZXcgU3RyaW5nSW1wbChz
dHIpKTsKLSAgICB9Ci0gICAgZWxzZSBpZih2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1JHQkNPTE9SKQotICAgIHsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBzdHIgPSBE
ZXByZWNhdGVkU3RyaW5nOjpmcm9tTGF0aW4xKCIjIikgKyBxU3RyaW5nKHZhbHVlLT5zdHJpbmcp
OwotICAgICAgICByZXR1cm4gbmV3IFNWR0NvbG9yKG5ldyBTdHJpbmdJbXBsKHN0cikpOwotICAg
IH0KLSAgICBlbHNlIGlmKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURF
TlQgfHwKLSAgICAgICAgICAgKCFzdHJpY3QgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19ESU1FTlNJT04pKQorICAgIH0gZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19SR0JDT0xPUikgeworICAgICAgICBTdHJpbmcgc3RyID0gIiMi
ICsgZG9tU3RyaW5nKHZhbHVlLT5zdHJpbmcpOworICAgICAgICByZXR1cm4gbmV3IFNWR0NvbG9y
KHN0ci5pbXBsKCkpOworICAgIH0gZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19JREVOVCB8fCAoIXN0cmljdCAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0RJTUVOU0lPTikpCiAgICAgICAgIHJldHVybiBuZXcgU1ZHQ29sb3IoZG9t
U3RyaW5nKHZhbHVlLT5zdHJpbmcpLmltcGwoKSk7Ci0gICAgZWxzZSBpZih2YWx1ZS0+dW5pdCA9
PSBLRE9NQ1NTVmFsdWU6OkZ1bmN0aW9uICYmIHZhbHVlLT5mdW5jdGlvbi0+YXJncyAhPSAwICYm
Ci0gICAgICAgICAgICBxU3RyaW5nKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSkubG93ZXIoKSA9PSAi
cmdiKCIpCi0gICAgeworICAgIGVsc2UgaWYgKHZhbHVlLT51bml0ID09IEtET01DU1NWYWx1ZTo6
RnVuY3Rpb24gJiYgdmFsdWUtPmZ1bmN0aW9uLT5hcmdzICE9IDAgJiYgZG9tU3RyaW5nKHZhbHVl
LT5mdW5jdGlvbi0+bmFtZSkubG93ZXIoKSA9PSAicmdiKCIpIHsKICAgICAgICAgS0RPTUNTU1Zh
bHVlTGlzdCAqYXJncyA9IHZhbHVlLT5mdW5jdGlvbi0+YXJnczsKICAgICAgICAgS0RPTUNTU1Zh
bHVlICp2ID0gYXJncy0+Y3VycmVudCgpOwogICAgICAgICBpZighdmFsaWRVbml0KHYsIEZJbnRl
Z2VyfEZQZXJjZW50LCB0cnVlKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>