<?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>20333</bug_id>
          
          <creation_ts>2008-08-08 13:07:32 -0700</creation_ts>
          <short_desc>improve JavaScript speed when handling single-character strings</short_desc>
          <delta_ts>2008-08-30 23:58:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>ggaren</cc>
    
    <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>88114</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-08 13:07:32 -0700</bug_when>
    <thetext>We think this will work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88115</commentid>
    <comment_count>1</comment_count>
      <attachid>22708</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-08 13:08:00 -0700</bug_when>
    <thetext>Created attachment 22708
some early work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88371</commentid>
    <comment_count>2</comment_count>
      <attachid>22766</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-12 21:26:34 -0700</bug_when>
    <thetext>Created attachment 22766
eliminate JSValue::type()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88539</commentid>
    <comment_count>3</comment_count>
      <attachid>22766</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-08-15 00:10:20 -0700</bug_when>
    <thetext>Comment on attachment 22766
eliminate JSValue::type()

r=me

Please try not to conflict with bug 20389.

It looks like you re-autogenerated a bunch of SVG tests, too. Was that intentional?

+        if (v1 == JSImmediate::from(0))
+            return !JSImmediate::isImmediate(v2)
+                &amp;&amp; static_cast&lt;JSCell*&gt;(v2)-&gt;isNumber()
+                &amp;&amp; static_cast&lt;JSNumberCell*&gt;(v2)-&gt;value() == 0;
+        return v2 == JSImmediate::from(0)
+            &amp;&amp; !JSImmediate::isImmediate(v1)
+            &amp;&amp; static_cast&lt;JSCell*&gt;(v1)-&gt;isNumber()
+            &amp;&amp; static_cast&lt;JSNumberCell*&gt;(v1)-&gt;value() == 0;

This surprised me a little bit. Is there a case where 0 gets stored on the heap instead of as an immediate? How do we know this doesn&apos;t happen with other numbers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88581</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-15 08:49:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; It looks like you re-autogenerated a bunch of SVG tests, too. Was that
&gt; intentional?

No. That was an accident and I didn&apos;t notice it when creating the patch.

&gt; +        if (v1 == JSImmediate::from(0))
&gt; +            return !JSImmediate::isImmediate(v2)
&gt; +                &amp;&amp; static_cast&lt;JSCell*&gt;(v2)-&gt;isNumber()
&gt; +                &amp;&amp; static_cast&lt;JSNumberCell*&gt;(v2)-&gt;value() == 0;
&gt; +        return v2 == JSImmediate::from(0)
&gt; +            &amp;&amp; !JSImmediate::isImmediate(v1)
&gt; +            &amp;&amp; static_cast&lt;JSCell*&gt;(v1)-&gt;isNumber()
&gt; +            &amp;&amp; static_cast&lt;JSNumberCell*&gt;(v1)-&gt;value() == 0;
&gt; 
&gt; This surprised me a little bit. Is there a case where 0 gets stored on the heap
&gt; instead of as an immediate? How do we know this doesn&apos;t happen with other
&gt; numbers?

This is to handle negative 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88921</commentid>
    <comment_count>5</comment_count>
      <attachid>22766</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-20 10:24:59 -0700</bug_when>
    <thetext>Comment on attachment 22766
eliminate JSValue::type()

Clearing review flag since this patch was landed and the bug is not yet fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89025</commentid>
    <comment_count>6</comment_count>
      <attachid>22926</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-21 15:14:33 -0700</bug_when>
    <thetext>Created attachment 22926
remove the need for InternalFunction to return a UString&amp; to its name

Geoff, this is what we talked about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89150</commentid>
    <comment_count>7</comment_count>
      <attachid>22926</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-08-22 17:33:41 -0700</bug_when>
    <thetext>Comment on attachment 22926
remove the need for InternalFunction to return a UString&amp; to its name

I don&apos;t think you want to commit the first change to the XCode project, because Geoff committed changes to all of the XCode projects to update them to XCode 3.1 and that undoes one of them. However, I am no XCode wizard, so I may be wrong.

Otherwise r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89764</commentid>
    <comment_count>8</comment_count>
      <attachid>22926</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-29 17:26:06 -0700</bug_when>
    <thetext>Comment on attachment 22926
remove the need for InternalFunction to return a UString&amp; to its name

I&apos;ve decided not to make this change at this time. I&apos;m taking a different approach to optimizing the single character case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89765</commentid>
    <comment_count>9</comment_count>
      <attachid>23077</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-29 17:26:37 -0700</bug_when>
    <thetext>Created attachment 23077
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89784</commentid>
    <comment_count>10</comment_count>
      <attachid>23083</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-30 16:04:13 -0700</bug_when>
    <thetext>Created attachment 23083
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89785</commentid>
    <comment_count>11</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-08-30 19:03:57 -0700</bug_when>
    <thetext>r=me

Consider breaking SmallStringStorage into its own header and implementation file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89793</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-30 23:58:47 -0700</bug_when>
    <thetext>http://trac.webkit.org/projects/webkit/changeset/36006</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22708</attachid>
            <date>2008-08-08 13:08:00 -0700</date>
            <delta_ts>2008-08-12 21:26:34 -0700</delta_ts>
            <desc>some early work in progress</desc>
            <filename>TypePatch.txt</filename>
            <type>text/plain</type>
            <size>63716</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDM1NjQwKQorKysgSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsMTIg
KzI5NiwxMCBAQCBfX1pOSzNLSlM3VVN0cmluZzh0b1VJbnQzMkVQYgogX19aTkszS0pTN1VTdHJp
bmc4dG9VSW50MzJFUGJiCiBfX1pOSzNLSlM4SlNPYmplY3QxMWhhc1Byb3BlcnR5RVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTkszS0pTOEpTT2JqZWN0MTFoYXNQcm9wZXJ0
eUVQTlNfOUV4ZWNTdGF0ZUVqCi1fX1pOSzNLSlM4SlNPYmplY3QxMmRlZmF1bHRWYWx1ZUVQTlNf
OUV4ZWNTdGF0ZUVOU182SlNUeXBlRQogX19aTkszS0pTOEpTT2JqZWN0MTJ0b1RoaXNPYmplY3RF
UE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNLSlM4SlNPYmplY3QxNHRvR2xvYmFsT2JqZWN0RVBOU185
RXhlY1N0YXRlRQogX19aTkszS0pTOEpTT2JqZWN0MjFnZXRQcm9wZXJ0eUF0dHJpYnV0ZXNFUE5T
XzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUmoKIF9fWk5LM0tKUzhKU09iamVjdDIxaW1w
bGVtZW50c0hhc0luc3RhbmNlRXYKLV9fWk5LM0tKUzhKU09iamVjdDR0eXBlRXYKIF9fWk5LM0tK
UzhKU09iamVjdDh0b051bWJlckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0tKUzhKU09iamVjdDh0
b09iamVjdEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0tKUzhKU09iamVjdDh0b1N0cmluZ0VQTlNf
OUV4ZWNTdGF0ZUUKQEAgLTMxOCwzICszMTYsOCBAQCBfX1pUVk4zS0pTMTZKU1ZhcmlhYmxlT2Jq
ZWN0RQogX19aVFZOM0tKUzhKU09iamVjdEUKIF9qc2NvcmVfZmFzdG1hbGxvY19pbnRyb3NwZWN0
aW9uCiBfa0pTQ2xhc3NEZWZpbml0aW9uRW1wdHkKK19fWk5LM0tKUzhKU09iamVjdDhpc09iamVj
dEV2CitfX1pOSzNLSlM2SlNDZWxsMTRpc0dldHRlclNldHRlckV2CitfX1pOSzNLSlM4SlNPYmpl
Y3QxMmRlZmF1bHRWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZTIyUHJpbWl0aXZlUHJl
ZmVycmVkVHlwZUUKK19fWk5LM0tKUzZKU0NlbGw4aXNPYmplY3RFdgorX19aTkszS0pTNkpTQ2Vs
bDhpc1N0cmluZ0V2CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAJKHJldmlzaW9u
IDM1NjQwKQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCiAjaW5j
bHVkZSAiQVBJQ2FzdC5oIgotI2luY2x1ZGUgPGtqcy9KU1R5cGUuaD4KICNpbmNsdWRlIDxranMv
SlNTdHJpbmcuaD4KICNpbmNsdWRlIDxranMvb3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPGtqcy91
c3RyaW5nLmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZpc2lvbiAzNTY0
MCkKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNsdWRlICJKU0NhbGxi
YWNrT2JqZWN0LmgiCiAKLSNpbmNsdWRlIDxranMvSlNUeXBlLmg+CiAjaW5jbHVkZSA8a2pzL0pT
R2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8a2pzL0pTU3RyaW5nLmg+CiAjaW5jbHVkZSA8a2pz
L29wZXJhdGlvbnMuaD4KQEAgLTQ2LDIzICs0NSwxOCBAQAogSlNUeXBlIEpTVmFsdWVHZXRUeXBl
KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiB2YWx1ZSkKIHsKICAgICBLSlM6OkpTVmFsdWUqIGpz
VmFsdWUgPSB0b0pTKHZhbHVlKTsKLSAgICBzd2l0Y2ggKGpzVmFsdWUtPnR5cGUoKSkgewotICAg
ICAgICBjYXNlIEtKUzo6VW5kZWZpbmVkVHlwZToKLSAgICAgICAgICAgIHJldHVybiBrSlNUeXBl
VW5kZWZpbmVkOwotICAgICAgICBjYXNlIEtKUzo6TnVsbFR5cGU6Ci0gICAgICAgICAgICByZXR1
cm4ga0pTVHlwZU51bGw7Ci0gICAgICAgIGNhc2UgS0pTOjpCb29sZWFuVHlwZToKLSAgICAgICAg
ICAgIHJldHVybiBrSlNUeXBlQm9vbGVhbjsKLSAgICAgICAgY2FzZSBLSlM6Ok51bWJlclR5cGU6
Ci0gICAgICAgICAgICByZXR1cm4ga0pTVHlwZU51bWJlcjsKLSAgICAgICAgY2FzZSBLSlM6OlN0
cmluZ1R5cGU6Ci0gICAgICAgICAgICByZXR1cm4ga0pTVHlwZVN0cmluZzsKLSAgICAgICAgY2Fz
ZSBLSlM6Ok9iamVjdFR5cGU6Ci0gICAgICAgICAgICByZXR1cm4ga0pTVHlwZU9iamVjdDsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVCghIkpTVmFsdWVHZXRUeXBlOiB1bmtu
b3duIHR5cGUgY29kZS5cbiIpOwotICAgICAgICAgICAgcmV0dXJuIGtKU1R5cGVVbmRlZmluZWQ7
Ci0gICAgfQorICAgIGlmIChqc1ZhbHVlLT5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4g
a0pTVHlwZVVuZGVmaW5lZDsKKyAgICBpZiAoanNWYWx1ZS0+aXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBrSlNUeXBlTnVsbDsKKyAgICBpZiAoanNWYWx1ZS0+aXNCb29sZWFuKCkpCisgICAgICAg
IHJldHVybiBrSlNUeXBlQm9vbGVhbjsKKyAgICBpZiAoanNWYWx1ZS0+aXNOdW1iZXIoKSkKKyAg
ICAgICAgcmV0dXJuIGtKU1R5cGVOdW1iZXI7CisgICAgaWYgKGpzVmFsdWUtPmlzU3RyaW5nKCkp
CisgICAgICAgIHJldHVybiBrSlNUeXBlU3RyaW5nOworICAgIEFTU0VSVChqc1ZhbHVlLT5pc09i
amVjdCgpKTsKKyAgICByZXR1cm4ga0pTVHlwZU9iamVjdDsKIH0KIAogdXNpbmcgbmFtZXNwYWNl
IEtKUzsgLy8gcGxhY2VkIGhlcmUgdG8gYXZvaWQgY29uZmxpY3QgYmV0d2VlbiBLSlM6OkpTVHlw
ZSBhbmQgSlNUeXBlLCBhYm92ZS4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAzNTY0MCkKKysrIEphdmFTY3JpcHRDb3JlL1ZN
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMs
NyBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp+SlNQcm9wZXJ0eU5hbWVJCiAgICAgaW52YWxp
ZGF0ZSgpOwogfQogCi1KU1R5cGUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dHlwZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIFVuc3BlY2lmaWVkVHlwZTsKLX0KLQotSlNWYWx1ZSogSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgSlNUeXBlKSBjb25zdAorSlNW
YWx1ZSogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJp
bWl0aXZlUHJlZmVycmVkVHlwZSkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gMDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9WTS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgJKHJldmlzaW9uIDM1NjQwKQorKysgSmF2YVNjcmlwdENvcmUvVk0vSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw3IEBAIG5hbWVzcGFj
ZSBLSlMgewogCiAgICAgICAgIHZpcnR1YWwgfkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoKTsKIAot
ICAgICAgICB2aXJ0dWFsIEpTVHlwZSB0eXBlKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgSlNW
YWx1ZSogdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgSlNUeXBlKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCBKU1ZhbHVlKiB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmltaXRpdmVQcmVmZXJyZWRU
eXBlKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVj
U3RhdGUqLCBkb3VibGUmLCBKU1ZhbHVlKiYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgdG9Cb29s
ZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGRvdWJsZSB0b051bWJlcihF
eGVjU3RhdGUqKSBjb25zdDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCShyZXZpc2lvbiAzNTY0
MCkKKysrIEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NiwzNSArOTYsNDEgQEAgc3RhdGljIGludCBkZXB0aChTY29wZUNoYWluJiBzYykKICAgICByZXR1
cm4gc2NvcGVEZXB0aDsKIH0KIAotc3RhdGljIGJvb2wgZmFzdElzTnVtYmVyKEpTVmFsdWUqIHZh
bHVlLCBkb3VibGUmIGFyZykgeworLy8gRklYTUU6IFRoaXMgb3BlcmF0aW9uIHNob3VsZCBiZSBj
YWxsZWQgImdldE51bWJlciIsIG5vdCAiaXNOdW1iZXIiIChhcyBpdCBpcyBpbiBKU1ZhbHVlLmgp
LgorLy8gRklYTUU6IFRoZXJlJ3Mgbm8gbmVlZCB0byBoYXZlIGEgInNsb3ciIHZlcnNpb24gb2Yg
dGhpcy4gQWxsIHZlcnNpb25zIHNob3VsZCBiZSBmYXN0Lgorc3RhdGljIGJvb2wgZmFzdElzTnVt
YmVyKEpTVmFsdWUqIHZhbHVlLCBkb3VibGUmIGFyZykKK3sKICAgICBpZiAoSlNJbW1lZGlhdGU6
OmlzTnVtYmVyKHZhbHVlKSkKICAgICAgICAgYXJnID0gSlNJbW1lZGlhdGU6OmdldFRydW5jYXRl
ZEludDMyKHZhbHVlKTsKLSAgICBlbHNlIGlmIChIZWFwOjpmYXN0SXNOdW1iZXIoc3RhdGljX2Nh
c3Q8SlNDZWxsKj4odmFsdWUpKSkKKyAgICBlbHNlIGlmIChIZWFwOjppc051bWJlcihzdGF0aWNf
Y2FzdDxKU0NlbGwqPih2YWx1ZSkpKQogICAgICAgICBhcmcgPSBzdGF0aWNfY2FzdDxKU051bWJl
ckNlbGwqPih2YWx1ZSktPnZhbHVlKCk7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGZhc3RUb0ludDMyKEpTVmFsdWUq
IHZhbHVlLCBpbnQzMl90JiBhcmcpIHsKKy8vIEZJWE1FOiBXaHkgZG9lc24ndCBKU1ZhbHVlOjp0
b0ludDMyIGhhdmUgdGhlIEhlYXA6OmlzTnVtYmVyIG9wdGltaXphdGlvbj8KK3N0YXRpYyBib29s
IGZhc3RUb0ludDMyKEpTVmFsdWUqIHZhbHVlLCBpbnQzMl90JiBhcmcpCit7CiAgICAgaWYgKEpT
SW1tZWRpYXRlOjppc051bWJlcih2YWx1ZSkpCiAgICAgICAgIGFyZyA9IEpTSW1tZWRpYXRlOjpn
ZXRUcnVuY2F0ZWRJbnQzMih2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoSGVhcDo6ZmFzdElzTnVtYmVy
KHN0YXRpY19jYXN0PEpTQ2VsbCo+KHZhbHVlKSkpCi0gICAgICAgIGFyZyA9IHN0YXRpY19jYXN0
PEpTTnVtYmVyQ2VsbCo+KHZhbHVlKS0+ZmFzdFRvSW50MzIoKTsKKyAgICBlbHNlIGlmIChIZWFw
Ojppc051bWJlcihzdGF0aWNfY2FzdDxKU0NlbGwqPih2YWx1ZSkpKQorICAgICAgICBhcmcgPSBz
dGF0aWNfY2FzdDxKU051bWJlckNlbGwqPih2YWx1ZSktPnRvSW50MzIoKTsKICAgICBlbHNlCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIEFMV0FZ
U19JTkxJTkUgYm9vbCBmYXN0VG9VSW50MzIoSlNWYWx1ZSogdmFsdWUsIHVpbnQzMl90JiBhcmcp
IHsKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgZmFzdFRvVUludDMyKEpTVmFsdWUqIHZhbHVl
LCB1aW50MzJfdCYgYXJnKQorewogICAgIGlmIChKU0ltbWVkaWF0ZTo6aXNOdW1iZXIodmFsdWUp
KSB7CiAgICAgICAgIGlmIChKU0ltbWVkaWF0ZTo6Z2V0VHJ1bmNhdGVkVUludDMyKHZhbHVlLCBh
cmcpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJvb2wgc2NyYXRjaDsKICAg
ICAgICAgYXJnID0gSlNWYWx1ZTo6dG9VSW50MzJTbG93Q2FzZShKU0ltbWVkaWF0ZTo6Z2V0VHJ1
bmNhdGVkSW50MzIodmFsdWUpLCBzY3JhdGNoKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fSBlbHNlIGlmIChIZWFwOjpmYXN0SXNOdW1iZXIoc3RhdGljX2Nhc3Q8SlNDZWxsKj4odmFsdWUp
KSkKLSAgICAgICAgYXJnID0gc3RhdGljX2Nhc3Q8SlNOdW1iZXJDZWxsKj4odmFsdWUpLT5mYXN0
VG9VSW50MzIoKTsKKyAgICB9IGVsc2UgaWYgKEhlYXA6OmlzTnVtYmVyKHN0YXRpY19jYXN0PEpT
Q2VsbCo+KHZhbHVlKSkpCisgICAgICAgIGFyZyA9IHN0YXRpY19jYXN0PEpTTnVtYmVyQ2VsbCo+
KHZhbHVlKS0+dG9VSW50MzIoKTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTE3NSw4ICsxODEsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wganNM
ZXNzRXEoRXhlY1N0YXRlKiBlCiBzdGF0aWMgSlNWYWx1ZSoganNBZGRTbG93Q2FzZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUqIHYxLCBKU1ZhbHVlKiB2MikKIHsKICAgICAvLyBleGNlcHRpb24g
Zm9yIHRoZSBEYXRlIGV4Y2VwdGlvbiBpbiBkZWZhdWx0VmFsdWUoKQotICAgIEpTVmFsdWUqIHAx
ID0gdjEtPnRvUHJpbWl0aXZlKGV4ZWMsIFVuc3BlY2lmaWVkVHlwZSk7Ci0gICAgSlNWYWx1ZSog
cDIgPSB2Mi0+dG9QcmltaXRpdmUoZXhlYywgVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBKU1ZhbHVl
KiBwMSA9IHYxLT50b1ByaW1pdGl2ZShleGVjKTsKKyAgICBKU1ZhbHVlKiBwMiA9IHYyLT50b1By
aW1pdGl2ZShleGVjKTsKIAogICAgIGlmIChwMS0+aXNTdHJpbmcoKSB8fCBwMi0+aXNTdHJpbmco
KSkgewogICAgICAgICBVU3RyaW5nIHZhbHVlID0gcDEtPnRvU3RyaW5nKGV4ZWMpICsgcDItPnRv
U3RyaW5nKGV4ZWMpOwpAQCAtMjAxLDE1ICsyMDcsMTAgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
KiBqc0FkZChFeGVjU3RhdGUqIAogewogICAgIGRvdWJsZSBsZWZ0OwogICAgIGRvdWJsZSByaWdo
dDsKLSAgICAKICAgICBpZiAoZmFzdElzTnVtYmVyKHYxLCBsZWZ0KSAmJiBmYXN0SXNOdW1iZXIo
djIsIHJpZ2h0KSkKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIGxlZnQgKyByaWdodCk7
CiAgICAgCi0gICAgSlNUeXBlIHQxID0gdjEtPnR5cGUoKTsKLSAgICBKU1R5cGUgdDIgPSB2Mi0+
dHlwZSgpOwotICAgIGNvbnN0IHVuc2lnbmVkIGJvdGhUeXBlcyA9ICh0MSA8PCAzKSB8IHQyOwot
ICAgIEFTU0VSVChib3RoVHlwZXMgIT0gKChOdW1iZXJUeXBlIDw8IDMpIHwgTnVtYmVyVHlwZSkp
OwotICAgIGlmIChib3RoVHlwZXMgPT0gKChTdHJpbmdUeXBlIDw8IDMpIHwgU3RyaW5nVHlwZSkp
IHsKKyAgICBpZiAodjEtPmlzU3RyaW5nKCkgJiYgdjItPmlzU3RyaW5nKCkpIHsKICAgICAgICAg
VVN0cmluZyB2YWx1ZSA9IHN0YXRpY19jYXN0PEpTU3RyaW5nKj4odjEpLT52YWx1ZSgpICsgc3Rh
dGljX2Nhc3Q8SlNTdHJpbmcqPih2MiktPnZhbHVlKCk7CiAgICAgICAgIGlmICh2YWx1ZS5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CkBA
IC0yMjIsMzAgKzIyMywyNCBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUqIGpzQWRkKEV4ZWNTdGF0
ZSogCiAKIHN0YXRpYyBKU1ZhbHVlKiBqc1R5cGVTdHJpbmdGb3JWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUqIHYpCiB7Ci0gICAgc3dpdGNoICh2LT50eXBlKCkpIHsKLSAgICAgICAgY2Fz
ZSBVbmRlZmluZWRUeXBlOgorICAgIGlmICh2LT5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgInVuZGVmaW5lZCIpOworICAgIGlmICh2LT5pc0Jvb2xlYW4oKSkK
KyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJib29sZWFuIik7CisgICAgaWYgKHYtPmlz
TnVtYmVyKCkpCisgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAibnVtYmVyIik7CisgICAg
aWYgKHYtPmlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAic3RyaW5n
Iik7CisgICAgaWYgKHYtPmlzT2JqZWN0KCkpIHsKKyAgICAgICAgLy8gUmV0dXJuICJ1bmRlZmlu
ZWQiIGZvciBvYmplY3RzIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQKKyAgICAgICAgLy8gYXMgbnVs
bCB3aGVuIGRvaW5nIGNvbXBhcmlzb25zLgorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8SlNPYmpl
Y3QqPih2KS0+bWFzcXVlcmFkZUFzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgInVuZGVmaW5lZCIpOwotICAgICAgICBjYXNlIE51bGxUeXBlOgotICAgICAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJvYmplY3QiKTsKLSAgICAgICAgY2FzZSBCb29s
ZWFuVHlwZToKLSAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiYm9vbGVhbiIpOwot
ICAgICAgICBjYXNlIE51bWJlclR5cGU6Ci0gICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhl
YywgIm51bWJlciIpOwotICAgICAgICBjYXNlIFN0cmluZ1R5cGU6Ci0gICAgICAgICAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgInN0cmluZyIpOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgaWYgKHYtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBSZXR1cm4gInVuZGVm
aW5lZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZAotICAgICAgICAgICAgICAg
IC8vIGFzIG51bGwgd2hlbiBkb2luZyBjb21wYXJpc29ucy4KLSAgICAgICAgICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2KS0+bWFzcXVlcmFkZUFzVW5kZWZpbmVkKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAidW5kZWZpbmVkIik7Ci0gICAg
ICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PEpTT2JqZWN0Kj4odiktPmdldENhbGxEYXRhKGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5v
bmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiZnVuY3Rpb24i
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJv
YmplY3QiKTsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxKU09iamVjdCo+KHYpLT5nZXRDYWxsRGF0YShjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25l
KQorICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiIpOwogICAgIH0K
KyAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIm9iamVjdCIpOwogfQogCiBzdGF0aWMgYm9vbCBO
RVZFUl9JTkxJTkUgcmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiB2UEMsIFJl
Z2lzdGVyKiByLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpTVmFsdWUqJiBleGNlcHRpb25WYWx1ZSkKQEAgLTE1NDMsNyArMTUzOCw3IEBAIEpTVmFs
dWUqIE1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGkKICAgICAgICAgaW50MzJfdCBsZWZ0
OwogICAgICAgICB1aW50MzJfdCByaWdodDsKICAgICAgICAgaWYgKEpTSW1tZWRpYXRlOjphcmVC
b3RoSW1tZWRpYXRlTnVtYmVycyh2YWwsIHNoaWZ0KSkKLSAgICAgICAgICAgIHJbZHN0XSA9IGpz
TnVtYmVyKGV4ZWMsIEpTSW1tZWRpYXRlOjpnZXRUcnVuY2F0ZWRJbnQzMih2YWwpIDw8IChKU0lt
bWVkaWF0ZTo6dG9UcnVuY2F0ZWRVSW50MzIoc2hpZnQpICYgMHgxZikpOworICAgICAgICAgICAg
cltkc3RdID0ganNOdW1iZXIoZXhlYywgSlNJbW1lZGlhdGU6OmdldFRydW5jYXRlZEludDMyKHZh
bCkgPDwgKEpTSW1tZWRpYXRlOjpnZXRUcnVuY2F0ZWRVSW50MzIoc2hpZnQpICYgMHgxZikpOwog
ICAgICAgICBlbHNlIGlmIChmYXN0VG9JbnQzMih2YWwsIGxlZnQpICYmIGZhc3RUb1VJbnQzMihz
aGlmdCwgcmlnaHQpKQogICAgICAgICAgICAgcltkc3RdID0ganNOdW1iZXIoZXhlYywgbGVmdCA8
PCAocmlnaHQgJiAweDFmKSk7CiAgICAgICAgIGVsc2UgewpAQCAtMjI4NCw3ICsyMjc5LDcgQEAg
SlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aQogICAgICAgICBpbnQgdGFi
bGVJbmRleCA9ICgrK3ZQQyktPnUub3BlcmFuZDsKICAgICAgICAgaW50IGRlZmF1bHRPZmZzZXQg
PSAoKyt2UEMpLT51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUqIHNjcnV0aW5lZSA9IHJbKCsr
dlBDKS0+dS5vcGVyYW5kXS5qc1ZhbHVlKGV4ZWMpOwotICAgICAgICBpZiAoc2NydXRpbmVlLT50
eXBlKCkgIT0gU3RyaW5nVHlwZSkKKyAgICAgICAgaWYgKCFzY3J1dGluZWUtPmlzU3RyaW5nKCkp
CiAgICAgICAgICAgICB2UEMgKz0gZGVmYXVsdE9mZnNldDsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBVU3RyaW5nOjpSZXAqIHZhbHVlID0gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihzY3J1
dGluZWUpLT52YWx1ZSgpLnJlcCgpOwpAQCAtMjMwNyw3ICsyMzAyLDcgQEAgSlNWYWx1ZSogTWFj
aGluZTo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aQogICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgr
K3ZQQyktPnUub3BlcmFuZDsKICAgICAgICAgaW50IGRlZmF1bHRPZmZzZXQgPSAoKyt2UEMpLT51
Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUqIHNjcnV0aW5lZSA9IHJbKCsrdlBDKS0+dS5vcGVy
YW5kXS5qc1ZhbHVlKGV4ZWMpOwotICAgICAgICBpZiAoc2NydXRpbmVlLT50eXBlKCkgIT0gU3Ry
aW5nVHlwZSkKKyAgICAgICAgaWYgKCFzY3J1dGluZWUtPmlzU3RyaW5nKCkpCiAgICAgICAgICAg
ICB2UEMgKz0gZGVmYXVsdE9mZnNldDsKICAgICAgICAgZWxzZSAKICAgICAgICAgICAgIHZQQyAr
PSBvZmZzZXRGb3JTdHJpbmdTd2l0Y2goY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
W3RhYmxlSW5kZXhdLCBzY3J1dGluZWUsIGRlZmF1bHRPZmZzZXQpOwpJbmRleDogSmF2YVNjcmlw
dENvcmUva2pzL0dldHRlclNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL0dldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDM1NjQwKQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL0dldHRlclNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgdm9p
ZCBHZXR0ZXJTZXR0ZXI6Om1hcmsoKQogICAgICAgICBtX3NldHRlci0+bWFyaygpOwogfQogCi1K
U1ZhbHVlKiBHZXR0ZXJTZXR0ZXI6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIEpTVHlwZSkgY29u
c3QKK0pTVmFsdWUqIEdldHRlclNldHRlcjo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJpbWl0
aXZlUHJlZmVycmVkVHlwZSkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4ganNOdWxsKCk7CkBAIC03Niw0ICs3Niw5IEBAIEpTT2JqZWN0KiBHZXR0ZXJTZXR0
ZXI6OnRvT2JqZWN0KEV4ZWNTdGEKICAgICByZXR1cm4ganNOdWxsKCktPnRvT2JqZWN0KGV4ZWMp
OwogfQogCitib29sIEdldHRlclNldHRlcjo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdAoreworICAg
IHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBLSlMKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2tqcy9HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
R2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDM1NjQwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0dl
dHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw2IEBAIG5hbWVzcGFjZSBL
SlMgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBKU1R5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIEdldHRlclNldHRlclR5cGU7IH0KLQogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFy
aygpOwogCiAgICAgICAgIEpTT2JqZWN0KiBnZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2dldHRl
cjsgfQpAQCAtNDksNyArNDcsOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgdm9pZCBzZXRT
ZXR0ZXIoSlNPYmplY3QqIHNldHRlcikgeyBtX3NldHRlciA9IHNldHRlcjsgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlKiB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBK
U1R5cGUgcHJlZmVycmVkKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGlzR2V0dGVyU2V0
dGVyKCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCBKU1ZhbHVlKiB0b1ByaW1pdGl2ZShFeGVj
U3RhdGUqLCBQcmltaXRpdmVQcmVmZXJyZWRUeXBlKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBi
b29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1
ZSomIHZhbHVlKTsKICAgICAgICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvSlNDZWxsLmNwcAkocmV2aXNpb24gMzU2NDApCisrKyBKYXZhU2NyaXB0
Q29yZS9ranMvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDQgKzIxNSwxOSBAQCBK
U1ZhbHVlKiBKU0NlbGw6OmdldEpTTnVtYmVyKCkKICAgICByZXR1cm4gMDsKIH0KIAorYm9vbCBK
U0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
SlNDZWxsOjppc0dldHRlclNldHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEpTQ2VsbDo6aXNPYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNDZWxsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTQ2VsbC5oCShyZXZpc2lvbiAzNTY0
MCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
MTEgKzQzLDExIEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgcHVibGljOgogICAgICAgICAvLyBR
dWVyeWluZyB0aGUgdHlwZS4KLSAgICAgICAgdmlydHVhbCBKU1R5cGUgdHlwZSgpIGNvbnN0ID0g
MDsKICAgICAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0OwotICAgICAgICBib29sIGlzU3RyaW5n
KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsKLSAgICAgICAgYm9vbCBp
c09iamVjdChjb25zdCBDbGFzc0luZm8qKSBjb25zdDsgLy8gRklYTUU6IE1lcmdlIHdpdGggaW5o
ZXJpdHMuCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmluZygpIGNvbnN0OworICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29s
IGlzT2JqZWN0KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc09iamVjdChjb25zdCBD
bGFzc0luZm8qKSBjb25zdDsKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2YWx1ZS4KICAg
ICAgICAgYm9vbCBnZXROdW1iZXIoZG91YmxlJikgY29uc3Q7CkBAIC02Niw3ICs2Niw3IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0VHJ1bmNhdGVkVUludDMyKHVp
bnQzMl90JikgY29uc3Q7CiAKICAgICAgICAgLy8gQmFzaWMgY29udmVyc2lvbnMuCi0gICAgICAg
IHZpcnR1YWwgSlNWYWx1ZSogdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgSlNUeXBlIHByZWZlcnJl
ZFR5cGUgPSBVbnNwZWNpZmllZFR5cGUpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBKU1Zh
bHVlKiB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmltaXRpdmVQcmVmZXJyZWRUeXBlKSBjb25z
dCA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRl
KiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUqJikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
dG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBkb3VibGUg
dG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3QgPSAwOwpAQCAtMTA4LDE3ICsxMDgsNyBAQCBuYW1l
c3BhY2UgS0pTIHsKIAogICAgIGlubGluZSBib29sIEpTQ2VsbDo6aXNOdW1iZXIoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBOdW1iZXJUeXBlOwotICAgIH0KLQotICAg
IGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIHR5cGUoKSA9PSBTdHJpbmdUeXBlOwotICAgIH0KLQotICAgIGlubGluZSBib29sIEpTQ2Vs
bDo6aXNPYmplY3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBPYmpl
Y3RUeXBlOworICAgICAgICByZXR1cm4gSGVhcDo6aXNOdW1iZXIoY29uc3RfY2FzdDxKU0NlbGwq
Pih0aGlzKSk7CiAgICAgfQogCiAgICAgaW5saW5lIGJvb2wgSlNDZWxsOjptYXJrZWQoKSBjb25z
dApAQCAtMTU2LDYgKzE0NiwxMSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgcmV0dXJuICFK
U0ltbWVkaWF0ZTo6aXNJbW1lZGlhdGUodGhpcykgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7CiAg
ICAgfQogCisgICAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuICFKU0ltbWVkaWF0ZTo6aXNJbW1lZGlhdGUodGhpcykgJiYg
YXNDZWxsKCktPmlzR2V0dGVyU2V0dGVyKCk7CisgICAgfQorCiAgICAgaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNPYmplY3QoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFKU0ltbWVkaWF0
ZTo6aXNJbW1lZGlhdGUodGhpcykgJiYgYXNDZWxsKCktPmlzT2JqZWN0KCk7CkBAIC0yMzEsMTIg
KzIyNiw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICByZXR1cm4gSlNJbW1lZGlhdGU6Omlz
SW1tZWRpYXRlKHRoaXMpIHx8IGFzQ2VsbCgpLT5tYXJrZWQoKTsKICAgICB9CiAKLSAgICBpbmxp
bmUgSlNUeXBlIEpTVmFsdWU6OnR5cGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEpT
SW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh0aGlzKSA/IEpTSW1tZWRpYXRlOjp0eXBlKHRoaXMpIDog
YXNDZWxsKCktPnR5cGUoKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgSlNWYWx1ZSogSlNWYWx1ZTo6
dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGUgcHJlZmVycmVkVHlwZSkgY29uc3QK
KyAgICBpbmxpbmUgSlNWYWx1ZSogSlNWYWx1ZTo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVj
LCBQcmltaXRpdmVQcmVmZXJyZWRUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gSlNJbW1lZGlhdGU6OmlzSW1tZWRpYXRlKHRoaXMpID8gY29uc3RfY2FzdDxK
U1ZhbHVlKj4odGhpcykgOiBhc0NlbGwoKS0+dG9QcmltaXRpdmUoZXhlYywgcHJlZmVycmVkVHlw
ZSk7CiAgICAgfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTSW1tZWRpYXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTSW1tZWRpYXRlLmgJKHJldmlzaW9uIDM1NjQw
KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTSW1tZWRpYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDcgKzIyLDYgQEAKICNpZm5kZWYgS0pTX0pTX0lNTUVESUFURV9ICiAjZGVmaW5lIEtKU19K
U19JTU1FRElBVEVfSAogCi0jaW5jbHVkZSAiSlNUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KQEAgLTUxLDE2ICs1MCwxOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgKiBK
U0ltbWVkaWF0ZTogICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFggICAgICAgICAgICAg
ICAgIFRUCiAgICAgICogICAgICAgICAgICAgICBbIGhpZ2ggMzAgYml0czogc2lnbmVkIGludCBd
ICAgICAgIFsgbG93IDIgYml0cyAtLSB0eXBlIHRhZyBdCiAgICAgICoKLSAgICAgKiBUaGUgYml0
ICJwYXlsb2FkIiAodGhlIGhpZ2ggMzAgYml0cykgaXMgYSAzMCBiaXQgc2lnbmVkIGludCBmb3Ig
aW1tZWRpYXRlIG51bWJlcnMsIGEgZmxhZyB0byBkaXN0aW5ndWlzaCB0cnVlL2ZhbHNlCi0gICAg
ICogYW5kIHVuZGVmaW5lZC9udWxsLgotICAgICAqCi0gICAgICogTm90aWNlIHRoYXQgdGhlIEpT
VHlwZSB2YWx1ZSBvZiBOdWxsVHlwZSBpcyA0LCB3aGljaCByZXF1aXJlcyAzIGJpdHMgdG8gZW5j
b2RlLiBTaW5jZSB3ZSBvbmx5IGhhdmUgMiBiaXRzIAotICAgICAqIGF2YWlsYWJsZSBmb3IgdHlw
ZSB0YWdnaW5nLCB3ZSB0YWcgdGhlIG51bGwgaW1tZWRpYXRlIHdpdGggVW5kZWZpbmVkVHlwZSwg
YW5kIEpTSW1tZWRpYXRlOjp0eXBlKCkgaGFzIAotICAgICAqIHRvIHNvcnQgdGhlbSBvdXQuCisg
ICAgICogVGhlIGJpdCAicGF5bG9hZCIgKHRoZSBoaWdoIDMwIGJpdHMpIGlzIGEgMzAgYml0IHNp
Z25lZCBpbnQgZm9yIGltbWVkaWF0ZSBudW1iZXJzLCBhIGZsYWcgdG8gZGlzdGluZ3Vpc2gKKyAg
ICAgKiB0cnVlL2ZhbHNlIGFuZCB1bmRlZmluZWQvbnVsbC4KICAgICAgKi8KIAogICAgIGNsYXNz
IEpTSW1tZWRpYXRlIHsKICAgICBwdWJsaWM6CisgICAgICAgIGVudW0gVGFnIHsKKyAgICAgICAg
ICAgIFVuZGVmaW5lZE9yTnVsbFRhZyA9IDEsCisgICAgICAgICAgICBCb29sZWFuVGFnID0gMiwK
KyAgICAgICAgICAgIE51bWJlclRhZyA9IDMKKyAgICAgICAgfTsKKwogICAgICAgICBzdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIGlzSW1tZWRpYXRlKGNvbnN0IEpTVmFsdWUqIHYpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBnZXRUYWcodikgIT0gMDsKQEAgLTY4LDI0ICs2OSwyNCBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNOdW1iZXIoY29uc3QgSlNWYWx1ZSogdikKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIChnZXRUYWcodikgPT0gTnVtYmVyVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0
VGFnKHYpID09IE51bWJlclRhZzsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNQb3NpdGl2ZU51bWJlcihjb25zdCBKU1ZhbHVlKiB2KQogICAgICAgICB7
CiAgICAgICAgICAgICAvLyBBIHNpbmdsZSBtYXNrIHRvIGNoZWNrIGZvciB0aGUgc2lnbiBiaXQg
YW5kIHRoZSBudW1iZXIgdGFnIGFsbCBhdCBvbmNlLgotICAgICAgICAgICAgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4odikgJiAoMHg4MDAwMDAwMCB8IE51bWJlclR5cGUpKSA9
PSBOdW1iZXJUeXBlOworICAgICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odikgJiAoMHg4MDAwMDAwMCB8IE51bWJlclRhZykpID09IE51bWJlclRhZzsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Jvb2xl
YW4oY29uc3QgSlNWYWx1ZSogdikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChnZXRU
YWcodikgPT0gQm9vbGVhblR5cGUpOworICAgICAgICAgICAgcmV0dXJuIGdldFRhZyh2KSA9PSBC
b29sZWFuVGFnOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBTaW5jZSB3ZSBoYXZl
IHJvb20gZm9yIG9ubHkgMyB1bmlxdWUgdGFncywgbnVsbCBhbmQgdW5kZWZpbmVkIGhhdmUgdG8g
c2hhcmUuCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVbmRlZmluZWRPck51
bGwoY29uc3QgSlNWYWx1ZSogdikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChnZXRU
YWcodikgPT0gVW5kZWZpbmVkVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0VGFnKHYpID09
IFVuZGVmaW5lZE9yTnVsbFRhZzsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBib29sIGlz
TmVnYXRpdmUoY29uc3QgSlNWYWx1ZSogdikKQEAgLTEwNyw5ICsxMDgsMTQgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBmcm9tKHVuc2lnbmVkIGxvbmcgbG9uZyk7
CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBmcm9tKGRvdWJsZSk7CiAKKyAgICAgICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0VpdGhlckltbWVkaWF0ZShjb25zdCBKU1ZhbHVlKiB2MSwg
Y29uc3QgSlNWYWx1ZSogdjIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSB8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2
MikpICYgVGFnTWFzazsKKyAgICAgICAgfQorCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgYXJlQm90aEltbWVkaWF0ZU51bWJlcnMoY29uc3QgSlNWYWx1ZSogdjEsIGNvbnN0IEpT
VmFsdWUqIHYyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Pih2MSkgJiByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjIpICYgVGFn
TWFzaykgPT0gTnVtYmVyVHlwZTsKKyAgICAgICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHYxKSAmIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MikgJiBUYWdN
YXNrKSA9PSBOdW1iZXJUYWc7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1ZhbHVlKiBhbmRJbW1lZGlhdGVOdW1iZXJzKGNvbnN0IEpTVmFsdWUqIHYxLCBjb25z
dCBKU1ZhbHVlKiB2MikKQEAgLTEyMSw3ICsxMjcsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
ICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogeG9ySW1tZWRpYXRlTnVtYmVycyhjb25z
dCBKU1ZhbHVlKiB2MSwgY29uc3QgSlNWYWx1ZSogdjIpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChhcmVCb3RoSW1tZWRpYXRlTnVtYmVycyh2MSwgdjIpKTsKLSAgICAgICAgICAgIHJl
dHVybiB0YWcocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSBeIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Pih2MiksIE51bWJlclR5cGUpOworICAgICAgICAgICAgcmV0dXJuIHRhZyhy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjEpIF4gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHYyKSwgTnVtYmVyVGFnKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUqIG9ySW1tZWRpYXRlTnVtYmVycyhjb25zdCBKU1ZhbHVlKiB2MSwgY29u
c3QgSlNWYWx1ZSogdjIpCkBAIC0xMzMsMjggKzEzOSwyOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogcmlnaHRTaGlmdEltbWVkaWF0ZU51
bWJlcnMoY29uc3QgSlNWYWx1ZSogdmFsLCBjb25zdCBKU1ZhbHVlKiBzaGlmdCkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKGFyZUJvdGhJbW1lZGlhdGVOdW1iZXJzKHZhbCwgc2hpZnQp
KTsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPigocmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4odmFsKSA+PiAoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihzaGlmdCkgPj4gMikgJiAweDFmKSkgfCBOdW1iZXJUeXBlKTsKKyAgICAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPigocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
dmFsKSA+PiAoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzaGlmdCkgPj4gMikgJiAweDFm
KSkgfCBOdW1iZXJUYWcpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgYm9vbCBjYW5Eb0Zhc3RBZGRpdGl2ZU9wZXJhdGlvbnMoY29uc3QgSlNWYWx1ZSogdikKICAg
ICAgICAgewogICAgICAgICAgICAgLy8gTnVtYmVyIGlzIG5vbi1uZWdhdGl2ZSBhbmQgYW4gb3Bl
cmF0aW9uIGludm9sdmluZyB0d28gb2YgdGhlc2UgY2FuJ3Qgb3ZlcmZsb3cuCiAgICAgICAgICAg
ICAvLyBDaGVja2luZyBmb3IgYWxsb3dlZCBuZWdhdGl2ZSBudW1iZXJzIHRha2VzIG1vcmUgdGlt
ZSB0aGFuIGl0J3Mgd29ydGggb24gU3VuU3BpZGVyLgotICAgICAgICAgICAgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4odikgJiAoTnVtYmVyVHlwZSArICgzIDw8IDMwKSkpID09
IE51bWJlclR5cGU7CisgICAgICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pih2KSAmIChOdW1iZXJUYWcgKyAoMyA8PCAzMCkpKSA9PSBOdW1iZXJUYWc7CiAgICAgICAg
IH0KIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBhZGRJbW1lZGlhdGVO
dW1iZXJzKGNvbnN0IEpTVmFsdWUqIHYxLCBjb25zdCBKU1ZhbHVlKiB2MikKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0aXZlT3BlcmF0aW9ucyh2MSkpOwogICAg
ICAgICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0aXZlT3BlcmF0aW9ucyh2MikpOwotICAgICAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pih2MSkgKyAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSAmIH5OdW1i
ZXJUeXBlKSk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4o
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSArIChyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odjIpICYgfk51bWJlclRhZykpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSogc3ViSW1tZWRpYXRlTnVtYmVycyhjb25zdCBKU1ZhbHVlKiB2
MSwgY29uc3QgSlNWYWx1ZSogdjIpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChjYW5E
b0Zhc3RBZGRpdGl2ZU9wZXJhdGlvbnModjEpKTsKICAgICAgICAgICAgIEFTU0VSVChjYW5Eb0Zh
c3RBZGRpdGl2ZU9wZXJhdGlvbnModjIpKTsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PEpTVmFsdWUqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjEpIC0gKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MikgJiB+TnVtYmVyVHlwZSkpOworICAgICAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pih2MSkgLSAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSAmIH5OdW1iZXJUYWcp
KTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIGlu
Y0ltbWVkaWF0ZU51bWJlcihjb25zdCBKU1ZhbHVlKiB2KQpAQCAtMTczLDE0ICsxNzksMTMgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHN0YXRpYyBib29sIHRvQm9vbGVhbihjb25zdCBKU1Zh
bHVlKik7CiAgICAgICAgIHN0YXRpYyBKU09iamVjdCogdG9PYmplY3QoY29uc3QgSlNWYWx1ZSos
IEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgVVN0cmluZyB0b1N0cmluZyhjb25zdCBKU1Zh
bHVlKik7Ci0gICAgICAgIHN0YXRpYyB1aW50MzJfdCB0b1RydW5jYXRlZFVJbnQzMihjb25zdCBK
U1ZhbHVlKik7Ci0gICAgICAgIHN0YXRpYyBKU1R5cGUgdHlwZShjb25zdCBKU1ZhbHVlKik7CiAK
ICAgICAgICAgc3RhdGljIGJvb2wgZ2V0VUludDMyKGNvbnN0IEpTVmFsdWUqLCB1aW50MzJfdCYp
OwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRUcnVuY2F0ZWRJbnQzMihjb25zdCBKU1ZhbHVlKiwg
aW50MzJfdCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRUcnVuY2F0ZWRVSW50MzIoY29uc3Qg
SlNWYWx1ZSosIHVpbnQzMl90Jik7CiAKICAgICAgICAgc3RhdGljIGludDMyX3QgZ2V0VHJ1bmNh
dGVkSW50MzIoY29uc3QgSlNWYWx1ZSopOworICAgICAgICBzdGF0aWMgdWludDMyX3QgZ2V0VHJ1
bmNhdGVkVUludDMyKGNvbnN0IEpTVmFsdWUqKTsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSog
dHJ1ZUltbWVkaWF0ZSgpOwogICAgICAgICBzdGF0aWMgSlNWYWx1ZSogZmFsc2VJbW1lZGlhdGUo
KTsKQEAgLTIxNSwxMCArMjIwLDEwIEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB9CiAgICAg
fTsKIAotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OnRydWVJbW1lZGlh
dGUoKSB7IHJldHVybiB0YWcoMSA8PCAyLCBCb29sZWFuVHlwZSk7IH0KLSAgICBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmYWxzZUltbWVkaWF0ZSgpIHsgcmV0dXJuIHRhZygw
LCBCb29sZWFuVHlwZSk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRl
Ojp1bmRlZmluZWRJbW1lZGlhdGUoKSB7IHJldHVybiB0YWcoMSA8PCAyLCBVbmRlZmluZWRUeXBl
KTsgfQotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6Om51bGxJbW1lZGlh
dGUoKSB7IHJldHVybiB0YWcoMCwgVW5kZWZpbmVkVHlwZSk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUqIEpTSW1tZWRpYXRlOjp0cnVlSW1tZWRpYXRlKCkgeyByZXR1cm4gdGFnKDEgPDwg
MiwgQm9vbGVhblRhZyk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRl
OjpmYWxzZUltbWVkaWF0ZSgpIHsgcmV0dXJuIHRhZygwLCBCb29sZWFuVGFnKTsgfQorICAgIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OnVuZGVmaW5lZEltbWVkaWF0ZSgpIHsg
cmV0dXJuIHRhZygxIDw8IDIsIFVuZGVmaW5lZE9yTnVsbFRhZyk7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpudWxsSW1tZWRpYXRlKCkgeyByZXR1cm4gdGFnKDAs
IFVuZGVmaW5lZE9yTnVsbFRhZyk7IH0KIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgaW1wb3NzaWJs
ZSBiZWNhdXNlIDB4NCBpcyBub3QgYSB2YWxpZCBwb2ludGVyIGJ1dCBhIHRhZyBvZiAwIHdvdWxk
IGluZGljYXRlIG5vbi1pbW1lZGlhdGUKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1t
ZWRpYXRlOjppbXBvc3NpYmxlVmFsdWUoKSB7IHJldHVybiB0YWcoMSA8PCAyLCAwKTsgfQpAQCAt
MjI3LDgwICsyMzIsODAgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgewogICAgICAgICBBU1NFUlQo
aXNJbW1lZGlhdGUodikpOwogICAgICAgICB1aW50cHRyX3QgYml0cyA9IHVuVGFnKHYpOwotICAg
ICAgICByZXR1cm4gKGJpdHMgIT0gMCkgJiAoSlNJbW1lZGlhdGU6OmdldFRhZyh2KSAhPSBVbmRl
ZmluZWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIChiaXRzICE9IDApICYgKEpTSW1tZWRpYXRlOjpn
ZXRUYWcodikgIT0gVW5kZWZpbmVkT3JOdWxsVGFnKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5M
SU5FIHVpbnQzMl90IEpTSW1tZWRpYXRlOjp0b1RydW5jYXRlZFVJbnQzMihjb25zdCBKU1ZhbHVl
KiB2KQorICAgIEFMV0FZU19JTkxJTkUgdWludDMyX3QgSlNJbW1lZGlhdGU6OmdldFRydW5jYXRl
ZFVJbnQzMihjb25zdCBKU1ZhbHVlKiB2KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzSW1tZWRp
YXRlKHYpKTsKKyAgICAgICAgQVNTRVJUKGlzTnVtYmVyKHYpKTsKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludHB0cl90Pih2KSA+PiAyKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKGNo
YXIgaSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAg
ICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbShzaWduZWQgY2hhciBpKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5cGUpOworICAgICAgICByZXR1cm4g
dGFnKGkgPDwgMiwgTnVtYmVyVGFnKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUqIEpTSW1tZWRpYXRlOjpmcm9tKHVuc2lnbmVkIGNoYXIgaSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB0YWcoaSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIs
IE51bWJlclRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVk
aWF0ZTo6ZnJvbShzaG9ydCBpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51
bWJlclR5cGUpOworICAgICAgICByZXR1cm4gdGFnKGkgPDwgMiwgTnVtYmVyVGFnKTsKICAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKHVuc2lnbmVk
IHNob3J0IGkpCiAgICAgewotICAgICAgICByZXR1cm4gdGFnKGkgPDwgMiwgTnVtYmVyVHlwZSk7
CisgICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJUYWcpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZyb20oaW50IGkpCiAgICAgewogICAg
ICAgICBpZiAoKGkgPCBtaW5JbW1lZGlhdGVJbnQpIHwgKGkgPiBtYXhJbW1lZGlhdGVJbnQpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJU
eXBlKTsKKyAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclRhZyk7CiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbSh1bnNpZ25lZCBpKQog
ICAgIHsKICAgICAgICAgaWYgKGkgPiBtYXhJbW1lZGlhdGVVSW50KQogICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAgICAgICAg
cmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbShsb25nIGkpCiAgICAgewogICAgICAgICBpZiAo
KGkgPCBtaW5JbW1lZGlhdGVJbnQpIHwgKGkgPiBtYXhJbW1lZGlhdGVJbnQpKQogICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAg
ICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbSh1bnNpZ25lZCBsb25nIGkpCiAgICAg
ewogICAgICAgICBpZiAoaSA+IG1heEltbWVkaWF0ZVVJbnQpCiAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5cGUpOworICAgICAgICByZXR1
cm4gdGFnKGkgPDwgMiwgTnVtYmVyVGFnKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKGxvbmcgbG9uZyBpKQogICAgIHsKICAgICAgICAgaWYg
KChpIDwgbWluSW1tZWRpYXRlSW50KSB8IChpID4gbWF4SW1tZWRpYXRlSW50KSkKICAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gdGFnKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
aSkgPDwgMiwgTnVtYmVyVHlwZSk7CisgICAgICAgIHJldHVybiB0YWcoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PihpKSA8PCAyLCBOdW1iZXJUYWcpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZyb20odW5zaWduZWQgbG9uZyBsb25nIGkpCiAgICAgewog
ICAgICAgICBpZiAoaSA+IG1heEltbWVkaWF0ZVVJbnQpCiAgICAgICAgICAgICByZXR1cm4gMDsK
LSAgICAgICAgcmV0dXJuIHRhZyhzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpIDw8IDIsIE51bWJl
clR5cGUpOworICAgICAgICByZXR1cm4gdGFnKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkgPDwg
MiwgTnVtYmVyVGFnKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1t
ZWRpYXRlOjpmcm9tKGRvdWJsZSBkKQpAQCAtMzE0LDcgKzMxOSw3IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgICAgICBpZiAoKGludFZhbCAhPSBkKSB8fCAoIWludFZhbCAmJiBzaWduYml0KGQpKSkK
ICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIHJldHVybiB0YWcoaW50VmFsIDw8IDIs
IE51bWJlclR5cGUpOworICAgICAgICByZXR1cm4gdGFnKGludFZhbCA8PCAyLCBOdW1iZXJUYWcp
OwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgaW50MzJfdCBKU0ltbWVkaWF0ZTo6Z2V0VHJ1
bmNhdGVkSW50MzIoY29uc3QgSlNWYWx1ZSogdikKQEAgLTMyNyw3ICszMzIsNyBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0ltbWVkaWF0ZSh2KSk7CiAgICAgICAg
IGNvbnN0IGludDMyX3QgaSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHVuVGFnKHYpKSA+PiAyOwot
ICAgICAgICBpZiAoSlNJbW1lZGlhdGU6OmdldFRhZyh2KSA9PSBVbmRlZmluZWRUeXBlICYmIGkp
CisgICAgICAgIGlmIChKU0ltbWVkaWF0ZTo6Z2V0VGFnKHYpID09IFVuZGVmaW5lZE9yTnVsbFRh
ZyAmJiBpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCk7CiAgICAgICAgIHJldHVybiBpOwogICAgIH0KQEAgLTM0OSwxNiArMzU0LDYg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHJldHVybiBnZXRVSW50MzIodiwgaSk7CiAgICAg
fQogCi0gICAgQUxXQVlTX0lOTElORSBKU1R5cGUgSlNJbW1lZGlhdGU6OnR5cGUoY29uc3QgSlNW
YWx1ZSogdikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc0ltbWVkaWF0ZSh2KSk7Ci0gICAgICAg
IAotICAgICAgICB1aW50cHRyX3QgdGFnID0gZ2V0VGFnKHYpOwotICAgICAgICBpZiAodGFnID09
IFVuZGVmaW5lZFR5cGUpCi0gICAgICAgICAgICByZXR1cm4gdiA9PSB1bmRlZmluZWRJbW1lZGlh
dGUoKSA/IFVuZGVmaW5lZFR5cGUgOiBOdWxsVHlwZTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEpTVHlwZT4odGFnKTsKLSAgICB9Ci0KICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIGpz
VW5kZWZpbmVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0ltbWVkaWF0ZTo6dW5kZWZpbmVk
SW1tZWRpYXRlKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNOb3RBbk9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTTm90QW5PYmplY3QuY3BwCShyZXZp
c2lvbiAzNTY0MCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU05vdEFuT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIEtKUyB7CiAKIC8vIEpTVmFs
dWUgbWV0aG9kcwotSlNWYWx1ZSogSlNOb3RBbk9iamVjdDo6dG9QcmltaXRpdmUoRXhlY1N0YXRl
KiBleGVjLCBKU1R5cGUpIGNvbnN0CitKU1ZhbHVlKiBKU05vdEFuT2JqZWN0Ojp0b1ByaW1pdGl2
ZShFeGVjU3RhdGUqIGV4ZWMsIFByaW1pdGl2ZVByZWZlcnJlZFR5cGUpIGNvbnN0CiB7CiAgICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEFTU0VSVChleGVjLT5oYWRFeGNlcHRpb24oKSAmJiBl
eGVjLT5leGNlcHRpb24oKSA9PSBtX2V4Y2VwdGlvbik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvSlNOb3RBbk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU05v
dEFuT2JqZWN0LmgJKHJldmlzaW9uIDM1NjQwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTTm90
QW5PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgS0pT
IHsKIAogICAgICBwcml2YXRlOgogICAgICAgICAvLyBKU1ZhbHVlIG1ldGhvZHMKLSAgICAgICAg
dmlydHVhbCBKU1ZhbHVlKiB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBKU1R5cGUgcHJlZmVycmVk
VHlwZSA9IFVuc3BlY2lmaWVkVHlwZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSog
dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJpbWl0aXZlUHJlZmVycmVkVHlwZSkgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91Ymxl
JiBudW1iZXIsIEpTVmFsdWUqJik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhl
Y1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0
ZSopIGNvbnN0OwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTTnVtYmVyQ2VsbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTTnVtYmVyQ2VsbC5jcHAJKHJldmlzaW9u
IDM1NjQwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTTnVtYmVyQ2VsbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDE4ICsyMywxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkpTTnVtYmVyQ2VsbC5oIgogCi0jaW5jbHVkZSAiSlNUeXBlLmgiCiAjaW5jbHVkZSAiTnVtYmVy
T2JqZWN0LmgiCiAjaW5jbHVkZSAidXN0cmluZy5oIgogCiBuYW1lc3BhY2UgS0pTIHsKIAotSlNU
eXBlIEpTTnVtYmVyQ2VsbDo6dHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE51bWJlclR5cGU7
Ci19Ci0KLUpTVmFsdWUqIEpTTnVtYmVyQ2VsbDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgSlNU
eXBlKSBjb25zdAorSlNWYWx1ZSogSlNOdW1iZXJDZWxsOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUq
LCBQcmltaXRpdmVQcmVmZXJyZWRUeXBlKSBjb25zdAogewogICAgIHJldHVybiBjb25zdF9jYXN0
PEpTTnVtYmVyQ2VsbCo+KHRoaXMpOwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTTnVt
YmVyQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU051bWJlckNlbGwu
aAkocmV2aXNpb24gMzU2NDApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNOdW1iZXJDZWxsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgcHVi
bGljOgogICAgICAgICBkb3VibGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAK
LSAgICAgICAgdmlydHVhbCBKU1R5cGUgdHlwZSgpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwg
SlNWYWx1ZSogdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgSlNUeXBlIHByZWZlcnJlZCA9IFVuc3Bl
Y2lmaWVkVHlwZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSogdG9QcmltaXRpdmUo
RXhlY1N0YXRlKiwgUHJpbWl0aXZlUHJlZmVycmVkVHlwZSkgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpT
VmFsdWUqJiB2YWx1ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRl
KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNv
bnN0OwpAQCAtNTgsOCArNTYsOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgdmlydHVhbCBV
U3RyaW5nIHRvVGhpc1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBK
U09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2aXJ0dWFs
IEpTVmFsdWUqIGdldEpTTnVtYmVyKCk7Ci0gICAgICAgIGludDMyX3QgZmFzdFRvSW50MzIoKSBj
b25zdDsKLSAgICAgICAgdWludDMyX3QgZmFzdFRvVUludDMyKCkgY29uc3Q7CisKKyAgICAgICAg
aW50MzJfdCB0b0ludDMyKCkgY29uc3Q7CisgICAgICAgIHVpbnQzMl90IHRvVUludDMyKCkgY29u
c3Q7CiAKICAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplLCBFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIHsKQEAgLTE0OCw3ICsxNDcsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICAgICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh0aGlzKSA/IEpTSW1tZWRpYXRl
Ojp0b0RvdWJsZSh0aGlzKSA6IHN0YXRpY19jYXN0PGNvbnN0IEpTTnVtYmVyQ2VsbCo+KHRoaXMp
LT52YWx1ZSgpOwogICAgIH0KIAotICAgIGlubGluZSBpbnQzMl90IEpTTnVtYmVyQ2VsbDo6ZmFz
dFRvSW50MzIoKSBjb25zdAorICAgIGlubGluZSBpbnQzMl90IEpTTnVtYmVyQ2VsbDo6dG9JbnQz
MigpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV92YWx1ZSA+PSAtMjE0NzQ4MzY0OC4wICYm
IG1fdmFsdWUgPCAyMTQ3NDgzNjQ4LjApCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50MzJfdD4obV92YWx1ZSk7CkBAIC0xNTYsNyArMTU1LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjp0b0ludDMyU2xvd0Nhc2UobV92YWx1ZSwgc2NyYXRjaCk7
CiAgICAgfQogCi0gICAgaW5saW5lIHVpbnQzMl90IEpTTnVtYmVyQ2VsbDo6ZmFzdFRvVUludDMy
KCkgY29uc3QKKyAgICBpbmxpbmUgdWludDMyX3QgSlNOdW1iZXJDZWxsOjp0b1VJbnQzMigpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAobV92YWx1ZSA+PSAwLjAgJiYgbV92YWx1ZSA8IDQyOTQ5
NjcyOTYuMCkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV92YWx1
ZSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9KU09iamVjdC5jcHAJKHJldmlzaW9uIDM1NjQwKQorKysgSmF2
YVNjcmlwdENvcmUva2pzL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTEgKzY1
LDYgQEAgdm9pZCBKU09iamVjdDo6bWFyaygpCiAjZW5kaWYKIH0KIAotSlNUeXBlIEpTT2JqZWN0
Ojp0eXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gT2JqZWN0VHlwZTsKLX0KLQogVVN0cmluZyBK
U09iamVjdDo6Y2xhc3NOYW1lKCkgY29uc3QKIHsKICAgICBjb25zdCBDbGFzc0luZm8qIGluZm8g
PSBjbGFzc0luZm8oKTsKQEAgLTIzMiw3ICsyMjcsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBK
U1ZhbHVlKiBjYWxsRGVmYXVsCiAgICAgICAgIHJldHVybiBleGVjLT5leGNlcHRpb24oKTsKIAog
ICAgIEpTVmFsdWUqIHJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgY29uc3RfY2FzdDxKU09iamVjdCo+KG9iamVjdCksIGV4ZWMtPmVtcHR5TGlzdCgpKTsK
LSAgICBBU1NFUlQocmVzdWx0LT50eXBlKCkgIT0gR2V0dGVyU2V0dGVyVHlwZSk7CisgICAgQVNT
RVJUKCFyZXN1bHQtPmlzR2V0dGVyU2V0dGVyKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIGV4ZWMtPmV4Y2VwdGlvbigpOwogICAgIGlmIChyZXN1bHQt
PmlzT2JqZWN0KCkpCkBAIC0yNDIsMTYgKzIzNywxNiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBK
U1ZhbHVlKiBjYWxsRGVmYXVsCiAKIGJvb2wgSlNPYmplY3Q6OmdldFByaW1pdGl2ZU51bWJlcihF
eGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlKiYgcmVzdWx0KQogewotICAg
IHJlc3VsdCA9IGRlZmF1bHRWYWx1ZShleGVjLCBOdW1iZXJUeXBlKTsKKyAgICByZXN1bHQgPSBk
ZWZhdWx0VmFsdWUoZXhlYywgUHJlZmVyTnVtYmVyKTsKICAgICBudW1iZXIgPSByZXN1bHQtPnRv
TnVtYmVyKGV4ZWMpOwogICAgIHJldHVybiAhcmVzdWx0LT5pc1N0cmluZygpOwogfQogCiAvLyBF
Q01BIDguNi4yLjYKLUpTVmFsdWUqIEpTT2JqZWN0OjpkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBKU1R5cGUgaGludCkgY29uc3QKK0pTVmFsdWUqIEpTT2JqZWN0OjpkZWZhdWx0VmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBQcmltaXRpdmVQcmVmZXJyZWRUeXBlIGhpbnQpIGNvbnN0CiB7CiAg
ICAgLy8gTXVzdCBjYWxsIHRvU3RyaW5nIGZpcnN0IGZvciBEYXRlIG9iamVjdHMuCi0gICAgaWYg
KChoaW50ID09IFN0cmluZ1R5cGUpIHx8IChoaW50ICE9IE51bWJlclR5cGUgJiYgbV9wcm90b3R5
cGUgPT0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5kYXRlUHJvdG90eXBlKCkpKSB7Cisg
ICAgaWYgKChoaW50ID09IFByZWZlclN0cmluZykgfHwgKGhpbnQgIT0gUHJlZmVyTnVtYmVyICYm
IG1fcHJvdG90eXBlID09IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZGF0ZVByb3RvdHlw
ZSgpKSkgewogICAgICAgICBpZiAoSlNWYWx1ZSogdmFsdWUgPSBjYWxsRGVmYXVsdFZhbHVlRnVu
Y3Rpb24oZXhlYywgdGhpcywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nKSkKICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgaWYgKEpTVmFsdWUqIHZhbHVlID0gY2FsbERl
ZmF1bHRWYWx1ZUZ1bmN0aW9uKGV4ZWMsIHRoaXMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1
ZU9mKSkKQEAgLTI4Myw3ICsyNzgsNyBAQCB2b2lkIEpTT2JqZWN0OjpkZWZpbmVHZXR0ZXIoRXhl
Y1N0YXRlKiBlCiB7CiAgICAgSlNWYWx1ZSogb2JqZWN0ID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFt
ZSk7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXI7Ci0gICAgaWYgKG9iamVjdCAmJiBv
YmplY3QtPnR5cGUoKSA9PSBHZXR0ZXJTZXR0ZXJUeXBlKQorICAgIGlmIChvYmplY3QgJiYgb2Jq
ZWN0LT5pc0dldHRlclNldHRlcigpKQogICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBzdGF0aWNfY2Fz
dDxHZXR0ZXJTZXR0ZXIqPihvYmplY3QpOwogICAgIGVsc2UgewogICAgICAgICBnZXR0ZXJTZXR0
ZXIgPSBuZXcgKGV4ZWMpIEdldHRlclNldHRlcjsKQEAgLTI5OCw3ICsyOTMsNyBAQCB2b2lkIEpT
T2JqZWN0OjpkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBlCiB7CiAgICAgSlNWYWx1ZSogb2JqZWN0
ID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFtZSk7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0
ZXI7Ci0gICAgaWYgKG9iamVjdCAmJiBvYmplY3QtPnR5cGUoKSA9PSBHZXR0ZXJTZXR0ZXJUeXBl
KQorICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LT5pc0dldHRlclNldHRlcigpKQogICAgICAgICBn
ZXR0ZXJTZXR0ZXIgPSBzdGF0aWNfY2FzdDxHZXR0ZXJTZXR0ZXIqPihvYmplY3QpOwogICAgIGVs
c2UgewogICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBuZXcgKGV4ZWMpIEdldHRlclNldHRlcjsKQEAg
LTMxNSw3ICszMTAsNyBAQCBKU1ZhbHVlKiBKU09iamVjdDo6bG9va3VwR2V0dGVyKEV4ZWNTdGF0
CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgSlNWYWx1ZSogdmFsdWUgPSBvYmplY3QtPmdl
dERpcmVjdChwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAodmFsdWUpIHsKLSAgICAgICAgICAg
IGlmICh2YWx1ZS0+dHlwZSgpICE9IEdldHRlclNldHRlclR5cGUpCisgICAgICAgICAgICBpZiAo
IXZhbHVlLT5pc0dldHRlclNldHRlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgICAgICAgICAgSlNPYmplY3QqIGZ1bmN0aW9uT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8R2V0dGVyU2V0dGVyKj4odmFsdWUpLT5nZXR0ZXIoKTsKICAgICAgICAgICAgIGlmICghZnVu
Y3Rpb25PYmplY3QpCkBAIC0zMzUsNyArMzMwLDcgQEAgSlNWYWx1ZSogSlNPYmplY3Q6Omxvb2t1
cFNldHRlcihFeGVjU3RhdAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIEpTVmFsdWUqIHZh
bHVlID0gb2JqZWN0LT5nZXREaXJlY3QocHJvcGVydHlOYW1lKTsKICAgICAgICAgaWYgKHZhbHVl
KSB7Ci0gICAgICAgICAgICBpZiAodmFsdWUtPnR5cGUoKSAhPSBHZXR0ZXJTZXR0ZXJUeXBlKQor
ICAgICAgICAgICAgaWYgKCF2YWx1ZS0+aXNHZXR0ZXJTZXR0ZXIoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBmdW5jdGlvbk9i
amVjdCA9IHN0YXRpY19jYXN0PEdldHRlclNldHRlcio+KHZhbHVlKS0+c2V0dGVyKCk7CiAgICAg
ICAgICAgICBpZiAoIWZ1bmN0aW9uT2JqZWN0KQpAQCAtNDI2LDcgKzQyMSw3IEBAIGJvb2wgSlNP
YmplY3Q6OnRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb24KIAogZG91YmxlIEpTT2JqZWN0Ojp0b051
bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgSlNWYWx1ZSogcHJpbWl0aXZlID0g
dG9QcmltaXRpdmUoZXhlYywgTnVtYmVyVHlwZSk7CisgICAgSlNWYWx1ZSogcHJpbWl0aXZlID0g
dG9QcmltaXRpdmUoZXhlYywgUHJlZmVyTnVtYmVyKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpIC8vIHNob3VsZCBiZSBwaWNrZWQgdXAgc29vbiBpbiBub2Rlcy5jcHAKICAgICAgICAg
cmV0dXJuIDAuMDsKICAgICByZXR1cm4gcHJpbWl0aXZlLT50b051bWJlcihleGVjKTsKQEAgLTQz
NCw3ICs0MjksNyBAQCBkb3VibGUgSlNPYmplY3Q6OnRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlCiAK
IFVTdHJpbmcgSlNPYmplY3Q6OnRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAg
ICBKU1ZhbHVlKiBwcmltaXRpdmUgPSB0b1ByaW1pdGl2ZShleGVjLCBTdHJpbmdUeXBlKTsKKyAg
ICBKU1ZhbHVlKiBwcmltaXRpdmUgPSB0b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJTdHJpbmcpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuICIiOwogICAgIHJl
dHVybiBwcmltaXRpdmUtPnRvU3RyaW5nKGV4ZWMpOwpAQCAtNDczLDYgKzQ2OCwxMSBAQCB2b2lk
IEpTT2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByCiAgICAgICAgIHNsb3Quc2V0VW5k
ZWZpbmVkKCk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OmlzT2JqZWN0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICByZXR1cm4gbmV3IChleGVjKSBKU09iamVjdChleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKTsKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU09iamVj
dC5oCShyZXZpc2lvbiAzNTY0MCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU09iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKICNpbmNsdWRlICJFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJKU051bWJlckNlbGwuaCIK
LSNpbmNsdWRlICJKU1R5cGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU1hcC5oIgogI2luY2x1ZGUg
IlByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKQEAgLTY3LDcgKzY2LDYg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIEpTT2JqZWN0KCk7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIG1hcmsoKTsKLSAgICAgICAgdmlydHVhbCBKU1R5cGUgdHlwZSgpIGNvbnN0OwogCiAg
ICAgICAgIC8qKgogICAgICAgICAgKiBBIHBvaW50ZXIgdG8gYSBDbGFzc0luZm8gc3RydWN0IGZv
ciB0aGlzIGNsYXNzLiBUaGlzIHByb3ZpZGVzIGEgYmFzaWMKQEAgLTEzMyw3ICsxMzEsNyBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICAgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgb2JqZWN0J3Mg
Y2xhc3MgaW5oZXJpdHMgZnJvbSBjbGFzcyB3aXRoIHRoZQogICAgICAgICAgKiBDbGFzc0luZm8g
cG9pbnRlciBzcGVjaWZpZWQgaW4gY2luZm8KICAgICAgICAgICovCi0gICAgICAgIGJvb2wgaW5o
ZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIGNvbnN0IHsgcmV0dXJuIGlzT2JqZWN0
KGNsYXNzSW5mbyk7IH0gLy8gRklYTUU6IE1lcmdlIHdpdGggaXNPYmplY3QuCisgICAgICAgIGJv
b2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIGNvbnN0IHsgcmV0dXJuIEpT
Q2VsbDo6aXNPYmplY3QoY2xhc3NJbmZvKTsgfQogCiAgICAgICAgIC8vIGludGVybmFsIHByb3Bl
cnRpZXMgKEVDTUEgMjYyLTMgOC42LjIpCiAKQEAgLTI1Nyw3ICsyNTUsNyBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICAgICAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIFtbRGVmYXVsdFZhbHVlXV0g
aW50ZXJuYWwgcHJvcGVydHkgKGltcGxlbWVudGVkIGJ5CiAgICAgICAgICAqIGFsbCBPYmplY3Rz
KQogICAgICAgICAgKi8KLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlKiBkZWZhdWx0VmFsdWUoRXhl
Y1N0YXRlKiwgSlNUeXBlIGhpbnQpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEpTVmFsdWUqIGRl
ZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBQcmltaXRpdmVQcmVmZXJyZWRUeXBlKSBjb25zdDsKIAog
ICAgICAgICAvKioKICAgICAgICAgICogV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpbXBsZW1l
bnRzIHRoZSBoYXNJbnN0YW5jZSgpIG1ldGhvZC4gSWYgdGhpcwpAQCAtMjgyLDcgKzI4MCw3IEBA
IG5hbWVzcGFjZSBLSlMgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVz
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jik7CiAKLSAgICAgICAgdmlydHVhbCBKU1Zh
bHVlKiB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBKU1R5cGUgcHJlZmVycmVkVHlwZSA9IFVuc3Bl
Y2lmaWVkVHlwZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSogdG9QcmltaXRpdmUo
RXhlY1N0YXRlKiwgUHJpbWl0aXZlUHJlZmVycmVkVHlwZSA9IE5vUHJlZmVyZW5jZSkgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUqJiB2YWx1ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB0b0Jv
b2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVy
KEV4ZWNTdGF0ZSopIGNvbnN0OwpAQCAtMzMxLDYgKzMyOSw4IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgICBib29sIGdldE93blByb3BlcnR5U2xvdEZvcldyaXRlKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmLCBib29sJiBzbG90SXNXcml0ZWFibGUpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBib29sIGlzT2JqZWN0KCkgY29uc3Q7CisKICAg
ICAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5kUHJvcGVydHlIYXNoRW50cnkoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSog
bV9wcm90b3R5cGU7CiAgICAgfTsKQEAgLTQzNCw3ICs0MzQsNyBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6Z2V0UHJvcGVydHlTbG90KEV4CiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdEZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHNsb3RJc1dyaXRlYWJs
ZSkKIHsKICAgICBpZiAoSlNWYWx1ZSoqIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJv
cGVydHlOYW1lLCBzbG90SXNXcml0ZWFibGUpKSB7Ci0gICAgICAgIGlmIChtX3Byb3BlcnR5TWFw
Lmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiBsb2NhdGlvblswXS0+dHlwZSgpID09IEdl
dHRlclNldHRlclR5cGUpIHsKKyAgICAgICAgaWYgKG1fcHJvcGVydHlNYXAuaGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllcygpICYmIGxvY2F0aW9uWzBdLT5pc0dldHRlclNldHRlcigpKSB7CiAgICAg
ICAgICAgICBzbG90SXNXcml0ZWFibGUgPSBmYWxzZTsKICAgICAgICAgICAgIGZpbGxHZXR0ZXJQ
cm9wZXJ0eVNsb3Qoc2xvdCwgbG9jYXRpb24pOwogICAgICAgICB9IGVsc2UKQEAgLTQ1OCw3ICs0
NTgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlCiBBTFdBWVNf
SU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIGlmIChKU1ZhbHVlKiogbG9jYXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5h
bWUpKSB7Ci0gICAgICAgIGlmIChtX3Byb3BlcnR5TWFwLmhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSAmJiBsb2NhdGlvblswXS0+dHlwZSgpID09IEdldHRlclNldHRlclR5cGUpCisgICAgICAg
IGlmIChtX3Byb3BlcnR5TWFwLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiBsb2NhdGlv
blswXS0+aXNHZXR0ZXJTZXR0ZXIoKSkKICAgICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNs
b3Qoc2xvdCwgbG9jYXRpb24pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzbG90LnNldFZh
bHVlU2xvdChsb2NhdGlvbik7CkBAIC00ODQsNyArNDg0LDcgQEAgaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdChFeGVjU3RhdAogICAgIG1fcHJvcGVydHlNYXAucHV0KHByb3BlcnR5TmFt
ZSwganNOdW1iZXIoZXhlYywgdmFsdWUpLCBhdHRyKTsKIH0KIAotaW5saW5lIEpTVmFsdWUqIEpT
T2JqZWN0Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVHlwZSBwcmVmZXJyZWRUeXBl
KSBjb25zdAoraW5saW5lIEpTVmFsdWUqIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUq
IGV4ZWMsIFByaW1pdGl2ZVByZWZlcnJlZFR5cGUgcHJlZmVycmVkVHlwZSkgY29uc3QKIHsKICAg
ICByZXR1cm4gZGVmYXVsdFZhbHVlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOwogfQpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvSlNTdHJpbmcuY3BwCShyZXZpc2lvbiAzNTY0MCkKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNw
YWNlIEtKUyB7CiAKLUpTVmFsdWUqIEpTU3RyaW5nOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBK
U1R5cGUpIGNvbnN0CitKU1ZhbHVlKiBKU1N0cmluZzo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwg
UHJpbWl0aXZlUHJlZmVycmVkVHlwZSkgY29uc3QKIHsKICAgICByZXR1cm4gY29uc3RfY2FzdDxK
U1N0cmluZyo+KHRoaXMpOwogfQpAQCAtMTI0LDYgKzEyNCwxMSBAQCBib29sIEpTU3RyaW5nOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0CiAgICAgcmV0dXJuIEpTU3RyaW5nOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCBzbG90
KTsKIH0KIAorYm9vbCBKU1N0cmluZzo6aXNTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiB0
cnVlOworfQorCiBKU1N0cmluZyoganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFy
KiBzKQogewogICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTU3RyaW5nKHMgPyBzIDogIiIpOwpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUva2pzL0pTU3RyaW5nLmgJKHJldmlzaW9uIDM1NjQwKQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDkgKzYwLDkgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgSlNUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmdUeXBlOyB9CisgICAgICAgIHZpcnR1YWwgYm9v
bCBpc1N0cmluZygpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgSlNWYWx1ZSogdG9QcmltaXRp
dmUoRXhlY1N0YXRlKiwgSlNUeXBlIHByZWZlcnJlZCA9IFVuc3BlY2lmaWVkVHlwZSkgY29uc3Q7
CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSogdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJpbWl0
aXZlUHJlZmVycmVkVHlwZSkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRp
dmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUqJiB2YWx1ZSk7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
SlNWYWx1ZS5oCShyZXZpc2lvbiAzNTY0MCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU1ZhbHVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEzICs1OCwxMyBAQCBuYW1lc3BhY2UgS0pTIHsKIAog
ICAgIHB1YmxpYzoKICAgICAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCi0gICAgICAgIEpTVHlw
ZSB0eXBlKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdDsKICAgICAg
ICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgp
IGNvbnN0OwogICAgICAgICBib29sIGlzQm9vbGVhbigpIGNvbnN0OwogICAgICAgICBib29sIGlz
TnVtYmVyKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAgICAgICAg
Ym9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwogICAgICAgICBib29sIGlzT2JqZWN0KCkgY29u
c3Q7CiAgICAgICAgIGJvb2wgaXNPYmplY3QoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7IC8vIEZJ
WE1FOiBNZXJnZSB3aXRoIGluaGVyaXRzLgogCkBAIC04OCw3ICs4OCw4IEBAIG5hbWVzcGFjZSBL
SlMgewogICAgICAgICBib29sIGdldFRydW5jYXRlZFVJbnQzMih1aW50MzJfdCYpIGNvbnN0Owog
ICAgICAgICAKICAgICAgICAgLy8gQmFzaWMgY29udmVyc2lvbnMuCi0gICAgICAgIEpTVmFsdWUq
IHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIEpTVHlwZSBwcmVmZXJyZWRUeXBlID0gVW5zcGVjaWZp
ZWRUeXBlKSBjb25zdDsKKyAgICAgICAgZW51bSBQcmltaXRpdmVQcmVmZXJyZWRUeXBlIHsgTm9Q
cmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9OworICAgICAgICBKU1ZhbHVl
KiB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmltaXRpdmVQcmVmZXJyZWRUeXBlID0gTm9QcmVm
ZXJlbmNlKSBjb25zdDsKICAgICAgICAgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRl
KiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUqJik7CiAKICAgICAgICAgYm9vbCB0b0Jvb2xlYW4o
RXhlY1N0YXRlKikgY29uc3Q7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAkocmV2aXNp
b24gMzU2NDApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAxNywzNSArMTAxNywxNSBAQCBzaXplX3QgSGVhcDo6cHJvdGVjdGVkT2JqZWN0
Q291bnQoKQogCiBzdGF0aWMgY29uc3QgY2hhciogdHlwZU5hbWUoSlNDZWxsKiB2YWwpCiB7Ci0g
ICAgY29uc3QgY2hhciogbmFtZSA9ICI/Pz8iOwotICAgIHN3aXRjaCAodmFsLT50eXBlKCkpIHsK
LSAgICAgICAgY2FzZSBVbnNwZWNpZmllZFR5cGU6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBVbmRlZmluZWRUeXBlOgotICAgICAgICAgICAgbmFtZSA9ICJ1bmRlZmluZWQiOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVsbFR5cGU6Ci0gICAgICAgICAgICBu
YW1lID0gIm51bGwiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQm9vbGVhblR5
cGU6Ci0gICAgICAgICAgICBuYW1lID0gImJvb2xlYW4iOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgU3RyaW5nVHlwZToKLSAgICAgICAgICAgIG5hbWUgPSAic3RyaW5nIjsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclR5cGU6Ci0gICAgICAgICAgICBu
YW1lID0gIm51bWJlciI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPYmplY3RU
eXBlOiB7Ci0gICAgICAgICAgICBjb25zdCBDbGFzc0luZm8qIGluZm8gPSBzdGF0aWNfY2FzdDxK
U09iamVjdCo+KHZhbCktPmNsYXNzSW5mbygpOwotICAgICAgICAgICAgbmFtZSA9IGluZm8gPyBp
bmZvLT5jbGFzc05hbWUgOiAiT2JqZWN0IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgR2V0dGVyU2V0dGVyVHlwZToKLSAgICAgICAgICAgIG5hbWUgPSAiZ2V0
dGVyc2V0dGVyIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gbmFtZTsK
KyAgICBpZiAodmFsLT5pc1N0cmluZygpKQorICAgICAgICByZXR1cm4gInN0cmluZyI7CisgICAg
aWYgKHZhbC0+aXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuICJudW1iZXIiOworICAgIGlmICh2
YWwtPmlzR2V0dGVyU2V0dGVyKCkpCisgICAgICAgIHJldHVybiAiZ2V0dGVyc2V0dGVyIjsKKyAg
ICBBU1NFUlQodmFsLT5pc09iamVjdCgpKTsKKyAgICBjb25zdCBDbGFzc0luZm8qIGluZm8gPSBz
dGF0aWNfY2FzdDxKU09iamVjdCo+KHZhbCktPmNsYXNzSW5mbygpOworICAgIHJldHVybiBpbmZv
ID8gaW5mby0+Y2xhc3NOYW1lIDogIk9iamVjdCI7CiB9CiAKIEhhc2hDb3VudGVkU2V0PGNvbnN0
IGNoYXIqPiogSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ranMvY29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L2NvbGxlY3Rvci5oCShyZXZpc2lvbiAzNTY0MCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9jb2xs
ZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw4IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgICAgICBIYXNoU2V0PEFyZ0xpc3QqPiYgbWFya0xpc3RTZXQoKSB7IGlmICghbV9tYXJr
TGlzdFNldCkgbV9tYXJrTGlzdFNldCA9IG5ldyBIYXNoU2V0PEFyZ0xpc3QqPjsgcmV0dXJuICpt
X21hcmtMaXN0U2V0OyB9CiAKICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGZhc3RJc051
bWJlcihKU0NlbGwqKTsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNOdW1iZXIoSlNDZWxsKik7CisK
ICAgICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8SGVhcDo6SGVhcFR5cGUgaGVhcFR5cGU+
IHZvaWQqIGhlYXBBbGxvY2F0ZShzaXplX3QpOwogICAgICAgICB0ZW1wbGF0ZSA8SGVhcDo6SGVh
cFR5cGUgaGVhcFR5cGU+IHNpemVfdCBzd2VlcCgpOwpAQCAtMjE1LDcgKzIxNiw3IEBAIG5hbWVz
cGFjZSBLSlMgewogICAgICAgICBIZWFwOjpIZWFwVHlwZSB0eXBlOwogICAgIH07CiAgICAgCi0g
ICAgaW5saW5lIGJvb2wgSGVhcDo6ZmFzdElzTnVtYmVyKEpTQ2VsbCogY2VsbCkKKyAgICBpbmxp
bmUgYm9vbCBIZWFwOjppc051bWJlcihKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAgICBDb2xs
ZWN0b3JCbG9jayogYmxvY2sgPSBIZWFwOjpjZWxsQmxvY2soY2VsbCk7CiAgICAgICAgIHJldHVy
biBibG9jayAmJiBibG9jay0+dHlwZSA9PSBOdW1iZXJIZWFwOwpJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL25vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgJ
KHJldmlzaW9uIDM1NjQwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1R5cGUuaCIKICNpbmNsdWRlICJMYWJlbFN0YWNrLmgi
CiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJJRC5oIgpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL29wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9vcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMzU2NDApCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvb3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDgzICszNiw3NSBAQAog
bmFtZXNwYWNlIEtKUyB7CiAKIC8vIEVDTUEgMTEuOS4zCi1ib29sIGVxdWFsKEV4ZWNTdGF0ZSAq
ZXhlYywgSlNWYWx1ZSAqdjEsIEpTVmFsdWUgKnYyKQorYm9vbCBlcXVhbChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUqIHYxLCBKU1ZhbHVlKiB2MikKIHsKLSAgICBKU1R5cGUgdDEgPSB2MS0+dHlw
ZSgpOwotICAgIEpTVHlwZSB0MiA9IHYyLT50eXBlKCk7Ci0gICAgCi0gICAgaWYgKHQxICE9IHQy
KSB7Ci0gICAgICAgIGlmICh0MSA9PSBVbmRlZmluZWRUeXBlKQotICAgICAgICAgICAgdDEgPSBO
dWxsVHlwZTsKLSAgICAgICAgaWYgKHQyID09IFVuZGVmaW5lZFR5cGUpCi0gICAgICAgICAgICB0
MiA9IE51bGxUeXBlOwotICAgICAgICAKLSAgICAgICAgaWYgKHQxID09IEJvb2xlYW5UeXBlKQot
ICAgICAgICAgICAgdDEgPSBOdW1iZXJUeXBlOwotICAgICAgICBpZiAodDIgPT0gQm9vbGVhblR5
cGUpCi0gICAgICAgICAgICB0MiA9IE51bWJlclR5cGU7Ci0gICAgICAgIAotICAgICAgICBpZiAo
dDEgPT0gTnVtYmVyVHlwZSAmJiB0MiA9PSBTdHJpbmdUeXBlKSB7Ci0gICAgICAgICAgICAvLyB1
c2UgdG9OdW1iZXIKLSAgICAgICAgfSBlbHNlIGlmICh0MSA9PSBTdHJpbmdUeXBlICYmIHQyID09
IE51bWJlclR5cGUpCi0gICAgICAgICAgICB0MSA9IE51bWJlclR5cGU7Ci0gICAgICAgICAgICAv
LyB1c2UgdG9OdW1iZXIKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoKHQxID09IFN0
cmluZ1R5cGUgfHwgdDEgPT0gTnVtYmVyVHlwZSkgJiYgdDIgPT0gT2JqZWN0VHlwZSkgewotICAg
ICAgICAgICAgICAgIHYyID0gdjItPnRvUHJpbWl0aXZlKGV4ZWMpOwotICAgICAgICAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBlcXVhbChleGVjLCB2MSwgdjIpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKHQxID09IE51bGxUeXBlICYmIHQyID09IE9iamVjdFR5
cGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTT2JqZWN0ICo+KHYyKS0+
bWFzcXVlcmFkZUFzVW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICBpZiAodDEgPT0gT2JqZWN0VHlw
ZSAmJiAodDIgPT0gU3RyaW5nVHlwZSB8fCB0MiA9PSBOdW1iZXJUeXBlKSkgewotICAgICAgICAg
ICAgICAgIHYxID0gdjEtPnRvUHJpbWl0aXZlKGV4ZWMpOwotICAgICAgICAgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIHJldHVybiBlcXVhbChleGVjLCB2MSwgdjIpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHQxID09IE9iamVjdFR5cGUgJiYgdDIgPT0gTnVsbFR5cGUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTT2JqZWN0ICo+KHYxKS0+bWFzcXVl
cmFkZUFzVW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICBpZiAodDEgIT0gdDIpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CitzdGFydE92ZXI6CisgICAgaWYgKEpTSW1t
ZWRpYXRlOjphcmVCb3RoSW1tZWRpYXRlTnVtYmVycyh2MSwgdjIpKQorICAgICAgICByZXR1cm4g
djEgPT0gdjI7CisKKyAgICBpZiAodjEtPmlzTnVtYmVyKCkgJiYgdjItPmlzTnVtYmVyKCkpCisg
ICAgICAgIHJldHVybiB2MS0+dW5jaGVja2VkR2V0TnVtYmVyKCkgPT0gdjItPnVuY2hlY2tlZEdl
dE51bWJlcigpOworCisgICAgYm9vbCBzMSA9IHYxLT5pc1N0cmluZygpOworICAgIGJvb2wgczIg
PSB2Mi0+aXNTdHJpbmcoKTsKKyAgICBpZiAoczEgJiYgczIpCisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxKU1N0cmluZyo+KHYxKS0+dmFsdWUoKSA9PSBzdGF0aWNfY2FzdDxKU1N0cmluZyo+
KHYyKS0+dmFsdWUoKTsKKworICAgIGlmICh2MS0+aXNVbmRlZmluZWRPck51bGwoKSkgeworICAg
ICAgICBpZiAodjItPmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgaWYgKCF2Mi0+aXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odjIpLT5tYXNxdWVyYWRl
QXNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBpZiAodjItPmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKKyAgICAgICAgaWYgKCF2MS0+aXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odjEpLT5tYXNxdWVyYWRl
QXNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBpZiAodjEtPmlzT2JqZWN0KCkpIHsKKyAgICAg
ICAgaWYgKHYyLT5pc09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIHYxID09IHYyOworICAg
ICAgICBKU1ZhbHVlKiBwMSA9IHYxLT50b1ByaW1pdGl2ZShleGVjKTsKKyAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB2
MSA9IHAxOworICAgICAgICBnb3RvIHN0YXJ0T3ZlcjsKKyAgICB9CisKKyAgICBpZiAodjItPmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgSlNWYWx1ZSogcDIgPSB2Mi0+dG9QcmltaXRpdmUoZXhlYyk7
CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgdjIgPSBwMjsKKyAgICAgICAgZ290byBzdGFydE92ZXI7CiAgICAgfQot
ICAgIAotICAgIGlmICh0MSA9PSBVbmRlZmluZWRUeXBlIHx8IHQxID09IE51bGxUeXBlKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICBpZiAodDEgPT0gTnVtYmVyVHlwZSkgeworCisg
ICAgaWYgKHMxIHx8IHMyKSB7CiAgICAgICAgIGRvdWJsZSBkMSA9IHYxLT50b051bWJlcihleGVj
KTsKICAgICAgICAgZG91YmxlIGQyID0gdjItPnRvTnVtYmVyKGV4ZWMpOwogICAgICAgICByZXR1
cm4gZDEgPT0gZDI7CiAgICAgfQotICAgIAotICAgIGlmICh0MSA9PSBTdHJpbmdUeXBlKQotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPih2MSktPnZhbHVlKCkgPT0gc3RhdGlj
X2Nhc3Q8SlNTdHJpbmcqPih2MiktPnZhbHVlKCk7Ci0gICAgCi0gICAgaWYgKHQxID09IEJvb2xl
YW5UeXBlKQotICAgICAgICByZXR1cm4gdjEtPnRvQm9vbGVhbihleGVjKSA9PSB2Mi0+dG9Cb29s
ZWFuKGV4ZWMpOwotICAgIAotICAgIC8vIHR5cGVzIGFyZSBPYmplY3QKKwogICAgIHJldHVybiB2
MSA9PSB2MjsKIH0KIAogYm9vbCBzdHJpY3RFcXVhbChKU1ZhbHVlKiB2MSwgSlNWYWx1ZSogdjIp
CiB7Ci0gICAgSlNUeXBlIHQxID0gdjEtPnR5cGUoKTsKLSAgICBKU1R5cGUgdDIgPSB2Mi0+dHlw
ZSgpOwotICAgIAotICAgIGlmICh0MSAhPSB0MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKHQxID09IE51bWJlclR5cGUpCi0gICAgICAgIHJldHVybiB2MS0+Z2V0TnVtYmVyKCkg
PT0gdjItPmdldE51bWJlcigpOwotICAgIAotICAgIGlmICh0MSA9PSBTdHJpbmdUeXBlKQotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPih2MSktPnZhbHVlKCkgPT0gc3RhdGlj
X2Nhc3Q8SlNTdHJpbmcqPih2MiktPnZhbHVlKCk7Ci0gICAgCi0gICAgcmV0dXJuIHYxID09IHYy
OyAvLyBjb3ZlcnMgb2JqZWN0LCBib29sZWFuLCBudWxsLCBhbmQgdW5kZWZpbmVkIHR5cGVzCisg
ICAgaWYgKEpTSW1tZWRpYXRlOjppc0VpdGhlckltbWVkaWF0ZSh2MSwgdjIpKQorICAgICAgICBy
ZXR1cm4gdjEgPT0gdjI7CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SlNDZWxsKj4odjEpLT5pc051
bWJlcigpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNDZWxsKj4odjIpLT5pc051bWJl
cigpCisgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxKU051bWJlckNlbGwqPih2MSktPnZhbHVl
KCkgPT0gc3RhdGljX2Nhc3Q8SlNOdW1iZXJDZWxsKj4odjIpLT52YWx1ZSgpOworCisgICAgaWYg
KHN0YXRpY19jYXN0PEpTQ2VsbCo+KHYxKS0+aXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEpTQ2VsbCo+KHYyKS0+aXNTdHJpbmcoKQorICAgICAgICAgICAgJiYgc3RhdGlj
X2Nhc3Q8SlNTdHJpbmcqPih2MSktPnZhbHVlKCkgPT0gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPih2
MiktPnZhbHVlKCk7CisKKyAgICByZXR1cm4gdjEgPT0gdjI7CiB9CiAKIEpTVmFsdWUqIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9K
U1V0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmNwcAkocmV2
aXNpb24gMzU2NDApCisrKyBKYXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjAwLDIzICsyMDAsMjEgQEAgQ0ZUeXBlUmVmIEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5h
bChKU1ZhbAogCiAgICAgQ0ZUeXBlUmVmIHJlc3VsdCA9IDA7CiAKLSAgICBzd2l0Y2ggKGluVmFs
dWUtPnR5cGUoKSkKLSAgICB7Ci0gICAgICAgIGNhc2UgQm9vbGVhblR5cGU6CisgICAgICAgIGlm
IChpblZhbHVlLT5pc0Jvb2xlYW4oKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBpblZhbHVlLT50b0Jvb2xlYW4oZXhlYykgPyBrQ0ZCb29sZWFuVHJ1ZSA6IGtDRkJv
b2xlYW5GYWxzZTsKICAgICAgICAgICAgICAgICBSZXRhaW5DRlR5cGUocmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgY2FzZSBTdHJpbmdUeXBlOgorICAgICAgICBpZiAoaW5WYWx1ZS0+aXNT
dHJpbmcoKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBVU3RyaW5nIHVTdHJpbmcg
PSBpblZhbHVlLT50b1N0cmluZyhleGVjKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBVU3Ry
aW5nVG9DRlN0cmluZyh1U3RyaW5nKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBOdW1iZXJU
eXBlOgorICAgICAgICBpZiAoaW5WYWx1ZS0+aXNOdW1iZXIoKSkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBkb3VibGUgbnVtYmVyMSA9IGluVmFsdWUtPnRvTnVtYmVyKGV4ZWMpOwog
ICAgICAgICAgICAgICAgIGRvdWJsZSBudW1iZXIyID0gKGRvdWJsZSlpblZhbHVlLT50b0ludGVn
ZXIoZXhlYyk7CkBAIC0yMjksMTAgKzIyNywxMCBAQCBDRlR5cGVSZWYgS0pTVmFsdWVUb0NGVHlw
ZUludGVybmFsKEpTVmFsCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmbnVtYmVyMSk7
CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIE9iamVjdFR5cGU6
CisgICAgICAgIGlmIChpblZhbHVlLT5pc09iamVjdCgpKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpblZhbHVlLT5pc09iamVjdCgmVXNlck9iamVjdElt
cDo6aW5mbykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlck9iamVjdElt
cCogdXNlck9iamVjdEltcCA9IHN0YXRpY19jYXN0PFVzZXJPYmplY3RJbXAgKj4oaW5WYWx1ZSk7
CkBAIC0zNDIsMjEgKzM0MCwxNyBAQCBDRlR5cGVSZWYgS0pTVmFsdWVUb0NGVHlwZUludGVybmFs
KEpTVmFsCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgTnVsbFR5cGU6Ci0g
ICAgICAgIGNhc2UgVW5kZWZpbmVkVHlwZToKLSAgICAgICAgY2FzZSBVbnNwZWNpZmllZFR5cGU6
CisgICAgaWYgKGluVmFsdWUtPmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHsKICAgICAg
ICAgICAgIHJlc3VsdCA9IFJldGFpbkNGVHlwZShHZXRDRk51bGwoKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJL
SlNWYWx1ZVRvQ0ZUeXBlOiB3cm9uZyB2YWx1ZSB0eXBlICVkXG4iLCBpblZhbHVlLT50eXBlKCkp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gMDsKIH0KIAogQ0ZUeXBlUmVmIEtKU1ZhbHVlVG9DRlR5cGUoSlNWYWx1
ZSAqaW5WYWx1ZSwgRXhlY1N0YXRlICpleGVjKQpJbmRleDogSmF2YVNjcmlwdEdsdWUvVXNlck9i
amVjdEltcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5j
cHAJKHJldmlzaW9uIDM1NjQwKQorKysgSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIFVzZXJPYmplY3RJbXA6Omdl
dE93blByb3BlcnR5U2xvdChFCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEpTVmFsdWUgKmtqc1ZhbHVlID0gdG9QcmltaXRpdmUoZXhlYyk7Ci0gICAgICAgIGlm
IChranNWYWx1ZS0+dHlwZSgpICE9IE51bGxUeXBlICYmIGtqc1ZhbHVlLT50eXBlKCkgIT0gVW5k
ZWZpbmVkVHlwZSkgeworICAgICAgICBpZiAoIWtqc1ZhbHVlLT5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7CiAgICAgICAgICAgICBKU09iamVjdCAqa2pzT2JqZWN0ID0ga2pzVmFsdWUtPnRvT2JqZWN0
KGV4ZWMpOwogICAgICAgICAgICAgaWYgKGtqc09iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
NjMsNyArMTYzLDcgQEAgSlNVc2VyT2JqZWN0KiBVc2VyT2JqZWN0SW1wOjpHZXRKU1VzZXJPYgog
ICAgIHJldHVybiBmSlNVc2VyT2JqZWN0OwogfQogCi1KU1ZhbHVlICpVc2VyT2JqZWN0SW1wOjp0
b1ByaW1pdGl2ZShFeGVjU3RhdGUgKmV4ZWMsIEpTVHlwZSBwcmVmZXJyZWRUeXBlKSBjb25zdAor
SlNWYWx1ZSAqVXNlck9iamVjdEltcDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlICpleGVjLCBQcmlt
aXRpdmVQcmVmZXJyZWRUeXBlKSBjb25zdAogewogICAgIEpTVmFsdWUgKnJlc3VsdCA9IGpzVW5k
ZWZpbmVkKCk7CiAgICAgSlNVc2VyT2JqZWN0KiBqc09ialB0ciA9IEtKU1ZhbHVlVG9KU09iamVj
dCh0b09iamVjdChleGVjKSwgZXhlYyk7CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0
SW1wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCShyZXZp
c2lvbiAzNTY0MCkKKysrIEphdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUgKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYp
OwogICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVy
ICZwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgKnZhbHVlLCBpbnQgYXR0ciA9IE5vbmUpOwogCi0gICAg
SlNWYWx1ZSAqdG9QcmltaXRpdmUoRXhlY1N0YXRlICpleGVjLCBKU1R5cGUgcHJlZmVycmVkVHlw
ZSA9IFVuc3BlY2lmaWVkVHlwZSkgY29uc3Q7CisgICAgSlNWYWx1ZSogdG9QcmltaXRpdmUoRXhl
Y1N0YXRlKiwgUHJpbWl0aXZlUHJlZmVycmVkVHlwZSA9IE5vUHJlZmVyZW5jZSkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogICAgIHZp
cnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3Q7CiAgICAgdmlydHVh
bCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3Q7CkluZGV4OiBXZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9KU1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2tqcy9KU1R5cGUuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMva2pzL0pTVHlwZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNUeXBlLmg+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBX
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9KU1R5cGUuaApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9ydW50aW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvcnVudGltZS5oCShyZXZpc2lvbiAzNTY0MCkK
KysrIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBKQVZBU0NSSVBUQ09SRV9CSU5ESU5HU19SVU5USU1FX0gKIAogI2luY2x1
ZGUgPGtqcy9KU1N0cmluZy5oPgorI2luY2x1ZGUgPGtqcy9KU1R5cGUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpJbmRleDogV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAkocmV2aXNpb24gMzU2NDApCisr
KyBXZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDI1
ICs2NiwyMSBAQCBzdGF0aWMgU3RyaW5nIGNvbnZlcnRVVEY4VG9VVEYxNldpdGhMYXRpCiAKIC8v
IFZhcmlhbnQgdmFsdWUgbXVzdCBiZSByZWxlYXNlZCB3aXRoIE5QUmVsZWFzZVZhcmlhbnRWYWx1
ZSgpCiB2b2lkIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSogdmFsdWUsIE5QVmFyaWFudCogcmVzdWx0KQotewotICAgIEpTVHlwZSB0eXBlID0gdmFsdWUt
PnR5cGUoKTsKLSAgICAKK3sgICAgCiAgICAgVk9JRF9UT19OUFZBUklBTlQoKnJlc3VsdCk7CiAK
LSAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlKSB7CisgICAgaWYgKHZhbHVlLT5pc1N0cmluZygp
KSB7CiAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9IHZhbHVlLT50b1N0cmluZyhleGVjKTsKICAg
ICAgICAgQ1N0cmluZyBjc3RyaW5nID0gdXN0cmluZy5VVEY4U3RyaW5nKCk7CiAgICAgICAgIE5Q
U3RyaW5nIHN0cmluZyA9IHsgKGNvbnN0IE5QVVRGOCopY3N0cmluZy5jX3N0cigpLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oY3N0cmluZy5zaXplKCkpIH07CiAgICAgICAgIE5QTl9Jbml0aWFsaXpl
VmFyaWFudFdpdGhTdHJpbmdDb3B5KHJlc3VsdCwgJnN0cmluZyk7Ci0gICAgfSBlbHNlIGlmICh0
eXBlID09IE51bWJlclR5cGUpIHsKKyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc051bWJlcigpKSB7
CiAgICAgICAgIERPVUJMRV9UT19OUFZBUklBTlQodmFsdWUtPnRvTnVtYmVyKGV4ZWMpLCAqcmVz
dWx0KTsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQm9vbGVhblR5cGUpIHsKKyAgICB9IGVsc2Ug
aWYgKHZhbHVlLT5pc0Jvb2xlYW4oKSkgewogICAgICAgICBCT09MRUFOX1RPX05QVkFSSUFOVCh2
YWx1ZS0+dG9Cb29sZWFuKGV4ZWMpLCAqcmVzdWx0KTsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0g
VW5zcGVjaWZpZWRUeXBlKSB7Ci0gICAgICAgIFZPSURfVE9fTlBWQVJJQU5UKCpyZXN1bHQpOwot
ICAgIH0gZWxzZSBpZiAodHlwZSA9PSBOdWxsVHlwZSkgeworICAgIH0gZWxzZSBpZiAodmFsdWUt
PmlzTnVsbCgpKSB7CiAgICAgICAgIE5VTExfVE9fTlBWQVJJQU5UKCpyZXN1bHQpOwotICAgIH0g
ZWxzZSBpZiAodHlwZSA9PSBPYmplY3RUeXBlKSB7CisgICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNP
YmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmpl
Y3QqPih2YWx1ZSk7CiAgICAgICAgIGlmIChvYmplY3QtPmNsYXNzSW5mbygpID09ICZSdW50aW1l
T2JqZWN0SW1wOjpzX2luZm8pIHsKICAgICAgICAgICAgIFJ1bnRpbWVPYmplY3RJbXAqIGltcCA9
IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3RJbXAqPih2YWx1ZSk7CkluZGV4OiBXZWJDb3JlL2Jy
aWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2pu
aS9qbmlfanNvYmplY3QubW0JKHJldmlzaW9uIDM1NjQwKQorKysgV2ViQ29yZS9icmlkZ2Uvam5p
L2puaV9qc29iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDkwLDIwICs0OTAsMTcgQEAgam9i
amVjdCBKYXZhSlNPYmplY3Q6OmNvbnZlcnRWYWx1ZVRvSk9iagogICAgIC8vIEphdmEgaW5zdGFu
Y2UgLT4gSmF2YSBpbnN0YW5jZQogICAgIC8vIEV2ZXJ5dGhpbmcgZWxzZSAtPiBKYXZhSlNPYmpl
Y3QKICAgICAKLSAgICBKU1R5cGUgdHlwZSA9IHZhbHVlLT50eXBlKCk7Ci0gICAgaWYgKHR5cGUg
PT0gTnVtYmVyVHlwZSkgeworICAgIGlmICh2YWx1ZS0+aXNOdW1iZXIoKSkgewogICAgICAgICBq
Y2xhc3MgSlNPYmplY3RDbGFzcyA9IGVudi0+RmluZENsYXNzICgiamF2YS9sYW5nL0RvdWJsZSIp
OwogICAgICAgICBqbWV0aG9kSUQgY29uc3RydWN0b3JJRCA9IGVudi0+R2V0TWV0aG9kSUQgKEpT
T2JqZWN0Q2xhc3MsICI8aW5pdD4iLCAiKEQpViIpOwogICAgICAgICBpZiAoY29uc3RydWN0b3JJ
RCAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBlbnYtPk5ld09iamVjdCAoSlNPYmpl
Y3RDbGFzcywgY29uc3RydWN0b3JJRCwgKGpkb3VibGUpdmFsdWUtPnRvTnVtYmVyKGV4ZWMpKTsK
ICAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmICh0eXBlID09IFN0cmluZ1R5cGUpIHsKKyAg
ICB9IGVsc2UgaWYgKHZhbHVlLT5pc1N0cmluZygpKSB7CiAgICAgICAgIFVTdHJpbmcgc3RyaW5n
VmFsdWUgPSB2YWx1ZS0+dG9TdHJpbmcoZXhlYyk7CiAgICAgICAgIEpOSUVudiAqZW52ID0gZ2V0
Sk5JRW52KCk7CiAgICAgICAgIHJlc3VsdCA9IGVudi0+TmV3U3RyaW5nICgoY29uc3QgamNoYXIg
KilzdHJpbmdWYWx1ZS5kYXRhKCksIHN0cmluZ1ZhbHVlLnNpemUoKSk7Ci0gICAgfQotICAgIGVs
c2UgaWYgKHR5cGUgPT0gQm9vbGVhblR5cGUpIHsKKyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc0Jv
b2xlYW4oKSkgewogICAgICAgICBqY2xhc3MgSlNPYmplY3RDbGFzcyA9IGVudi0+RmluZENsYXNz
ICgiamF2YS9sYW5nL0Jvb2xlYW4iKTsKICAgICAgICAgam1ldGhvZElEIGNvbnN0cnVjdG9ySUQg
PSBlbnYtPkdldE1ldGhvZElEIChKU09iamVjdENsYXNzLCAiPGluaXQ+IiwgIihaKVYiKTsKICAg
ICAgICAgaWYgKGNvbnN0cnVjdG9ySUQgIT0gTlVMTCkgewpAQCAtNTE0LDcgKzUxMSw3IEBAIGpv
YmplY3QgSmF2YUpTT2JqZWN0Ojpjb252ZXJ0VmFsdWVUb0pPYmoKICAgICAgICAgLy8gQ3JlYXRl
IGEgSmF2YUpTT2JqZWN0LgogICAgICAgICBqbG9uZyBuYXRpdmVIYW5kbGU7CiAgICAgICAgIAot
ICAgICAgICBpZiAodHlwZSA9PSBPYmplY3RUeXBlKXsKKyAgICAgICAgaWYgKHZhbHVlLT5pc09i
amVjdCgpKXsKICAgICAgICAgICAgIEpTT2JqZWN0ICppbXAgPSBzdGF0aWNfY2FzdDxKU09iamVj
dCo+KHZhbHVlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2UgZWl0aGVyIGhhdmUg
YSB3cmFwcGVyIGFyb3VuZCBhIEphdmEgaW5zdGFuY2Ugb3IgYSBKYXZhU2NyaXB0CkluZGV4OiBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMzU2NDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE5Nyw3MyArMzE5Nyw1NiBAQCBzdGF0aWMg
V2ViRnJhbWUgKmluY3JlbWVudEZyYW1lKFdlYkZyYW1lCiBzdGF0aWMgTlNBcHBsZUV2ZW50RGVz
Y3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiBqc1Zh
bHVlKQogewogICAgIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzYyA9IDA7Ci0gICAgc3dp
dGNoIChqc1ZhbHVlLT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBCb29sZWFuVHlwZToKLSAgICAg
ICAgICAgIGFlRGVzYyA9IFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRoQm9v
bGVhbjpqc1ZhbHVlLT5nZXRCb29sZWFuKCldOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgU3RyaW5nVHlwZToKLSAgICAgICAgICAgIGFlRGVzYyA9IFtOU0FwcGxlRXZlbnREZXNj
cmlwdG9yIGRlc2NyaXB0b3JXaXRoU3RyaW5nOlN0cmluZyhqc1ZhbHVlLT5nZXRTdHJpbmcoKSld
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTnVtYmVyVHlwZTogewotICAgICAg
ICAgICAgZG91YmxlIHZhbHVlID0ganNWYWx1ZS0+Z2V0TnVtYmVyKCk7Ci0gICAgICAgICAgICBp
bnQgaW50VmFsdWUgPSAoaW50KXZhbHVlOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IGludFZh
bHVlKQotICAgICAgICAgICAgICAgIGFlRGVzYyA9IFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRl
c2NyaXB0b3JXaXRoRGVzY3JpcHRvclR5cGU6dHlwZVNJbnQzMiBieXRlczomaW50VmFsdWUgbGVu
Z3RoOnNpemVvZihpbnRWYWx1ZSldOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGFlRGVzYyA9IFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRoRGVzY3JpcHRv
clR5cGU6dHlwZUlFRUU2NEJpdEZsb2F0aW5nUG9pbnQgYnl0ZXM6JnZhbHVlIGxlbmd0aDpzaXpl
b2YodmFsdWUpXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
T2JqZWN0VHlwZTogewotICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzVmFsdWUtPmdl
dE9iamVjdCgpOwotICAgICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkRhdGVJbnN0YW5j
ZTo6aW5mbykpIHsKLSAgICAgICAgICAgICAgICBEYXRlSW5zdGFuY2UqIGRhdGUgPSBzdGF0aWNf
Y2FzdDxEYXRlSW5zdGFuY2UqPihvYmplY3QpOwotICAgICAgICAgICAgICAgIGRvdWJsZSBtcyA9
IDA7Ci0gICAgICAgICAgICAgICAgaW50IHR6T2Zmc2V0ID0gMDsKLSAgICAgICAgICAgICAgICBp
ZiAoZGF0ZS0+Z2V0VGltZShtcywgdHpPZmZzZXQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENG
QWJzb2x1dGVUaW1lIHV0Y1NlY29uZHMgPSBtcyAvIDEwMDAgLSBrQ0ZBYnNvbHV0ZVRpbWVJbnRl
cnZhbFNpbmNlMTk3MDsKLSAgICAgICAgICAgICAgICAgICAgTG9uZ0RhdGVUaW1lIGxkdDsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG5vRXJyID09IFVDQ29udmVydENGQWJzb2x1dGVUaW1lVG9M
b25nRGF0ZVRpbWUodXRjU2Vjb25kcywgJmxkdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBh
ZURlc2MgPSBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlwdG9yV2l0aERlc2NyaXB0b3JU
eXBlOnR5cGVMb25nRGF0ZVRpbWUgYnl0ZXM6JmxkdCBsZW5ndGg6c2l6ZW9mKGxkdCldOwotICAg
ICAgICAgICAgICAgIH0KKyAgICBpZiAoanNWYWx1ZS0+aXNCb29sZWFuKCkpCisgICAgICAgIHJl
dHVybiBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlwdG9yV2l0aEJvb2xlYW46anNWYWx1
ZS0+Z2V0Qm9vbGVhbigpXTsKKyAgICBpZiAoanNWYWx1ZS0+aXNTdHJpbmcoKSkKKyAgICAgICAg
cmV0dXJuIFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRoU3RyaW5nOlN0cmlu
Zyhqc1ZhbHVlLT5nZXRTdHJpbmcoKSldOworICAgIGlmIChqc1ZhbHVlLT5pc051bWJlcigpKSB7
CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGpzVmFsdWUtPmdldE51bWJlcigpOworICAgICAgICBp
bnQgaW50VmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlID09IGludFZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRoRGVz
Y3JpcHRvclR5cGU6dHlwZVNJbnQzMiBieXRlczomaW50VmFsdWUgbGVuZ3RoOnNpemVvZihpbnRW
YWx1ZSldOworICAgICAgICByZXR1cm4gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgZGVzY3JpcHRv
cldpdGhEZXNjcmlwdG9yVHlwZTp0eXBlSUVFRTY0Qml0RmxvYXRpbmdQb2ludCBieXRlczomdmFs
dWUgbGVuZ3RoOnNpemVvZih2YWx1ZSldOworICAgIH0KKyAgICBpZiAoanNWYWx1ZS0+aXNPYmpl
Y3QoKSkgeworICAgICAgICBKU09iamVjdCogb2JqZWN0ID0ganNWYWx1ZS0+Z2V0T2JqZWN0KCk7
CisgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzKCZEYXRlSW5zdGFuY2U6OmluZm8pKSB7Cisg
ICAgICAgICAgICBEYXRlSW5zdGFuY2UqIGRhdGUgPSBzdGF0aWNfY2FzdDxEYXRlSW5zdGFuY2Uq
PihvYmplY3QpOworICAgICAgICAgICAgZG91YmxlIG1zID0gMDsKKyAgICAgICAgICAgIGludCB0
ek9mZnNldCA9IDA7CisgICAgICAgICAgICBpZiAoZGF0ZS0+Z2V0VGltZShtcywgdHpPZmZzZXQp
KSB7CisgICAgICAgICAgICAgICAgQ0ZBYnNvbHV0ZVRpbWUgdXRjU2Vjb25kcyA9IG1zIC8gMTAw
MCAtIGtDRkFic29sdXRlVGltZUludGVydmFsU2luY2UxOTcwOworICAgICAgICAgICAgICAgIExv
bmdEYXRlVGltZSBsZHQ7CisgICAgICAgICAgICAgICAgaWYgKG5vRXJyID09IFVDQ29udmVydENG
QWJzb2x1dGVUaW1lVG9Mb25nRGF0ZVRpbWUodXRjU2Vjb25kcywgJmxkdCkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlwdG9yV2l0aERl
c2NyaXB0b3JUeXBlOnR5cGVMb25nRGF0ZVRpbWUgYnl0ZXM6JmxkdCBsZW5ndGg6c2l6ZW9mKGxk
dCldOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0LT5pbmhlcml0
cygmSlNBcnJheTo6aW5mbykpIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgSGFzaFNldDxKU09i
amVjdCo+IHZpc2l0ZWRFbGVtczsKLSAgICAgICAgICAgICAgICBpZiAoIXZpc2l0ZWRFbGVtcy5j
b250YWlucyhvYmplY3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRFbGVtcy5hZGQo
b2JqZWN0KTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIEpTQXJy
YXkqIGFycmF5ID0gc3RhdGljX2Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGFlRGVzYyA9IFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGxpc3REZXNjcmlwdG9yXTsK
LSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtSXRlbXMgPSBhcnJheS0+Z2V0TGVuZ3Ro
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1JdGVt
czsgKytpKQotICAgICAgICAgICAgICAgICAgICAgICAgW2FlRGVzYyBpbnNlcnREZXNjcmlwdG9y
OmFlRGVzY0Zyb21KU1ZhbHVlKGV4ZWMsIGFycmF5LT5nZXQoZXhlYywgaSkpIGF0SW5kZXg6MF07
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICB2aXNpdGVkRWxlbXMu
cmVtb3ZlKG9iamVjdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKCFhZURlc2MpIHsKLSAgICAgICAgICAgICAgICBKU1ZhbHVlKiBwcmltaXRpdmUg
PSBvYmplY3QtPnRvUHJpbWl0aXZlKGV4ZWMpOwotICAgICAgICAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlv
bigpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW05TQXBwbGVFdmVudERlc2NyaXB0b3Ig
bnVsbERlc2NyaXB0b3JdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1
cm4gYWVEZXNjRnJvbUpTVmFsdWUoZXhlYywgcHJpbWl0aXZlKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIGlmIChvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjppbmZvKSkgeworICAgICAgICAg
ICAgc3RhdGljIEhhc2hTZXQ8SlNPYmplY3QqPiB2aXNpdGVkRWxlbXM7CisgICAgICAgICAgICBp
ZiAoIXZpc2l0ZWRFbGVtcy5jb250YWlucyhvYmplY3QpKSB7CisgICAgICAgICAgICAgICAgdmlz
aXRlZEVsZW1zLmFkZChvYmplY3QpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IEpTQXJyYXkqIGFycmF5ID0gc3RhdGljX2Nhc3Q8SlNBcnJheSo+KG9iamVjdCk7CisgICAgICAg
ICAgICAgICAgYWVEZXNjID0gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgbGlzdERlc2NyaXB0b3Jd
OworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bUl0ZW1zID0gYXJyYXktPmdldExlbmd0aCgp
OworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1JdGVtczsgKytp
KQorICAgICAgICAgICAgICAgICAgICBbYWVEZXNjIGluc2VydERlc2NyaXB0b3I6YWVEZXNjRnJv
bUpTVmFsdWUoZXhlYywgYXJyYXktPmdldChleGVjLCBpKSkgYXRJbmRleDowXTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICB2aXNpdGVkRWxlbXMucmVtb3ZlKG9iamVjdCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGFlRGVzYzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgVW5kZWZpbmVkVHlwZToKLSAgICAgICAg
ICAgIGFlRGVzYyA9IFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRoVHlwZUNv
ZGU6Y01pc3NpbmdWYWx1ZV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIExPR19FUlJPUigiVW5rbm93biBKYXZhU2NyaXB0IHR5cGU6ICVkIiwganNW
YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgIC8vIG5vIGJyZWFrOwotICAgICAgICBjYXNlIFVu
c3BlY2lmaWVkVHlwZToKLSAgICAgICAgY2FzZSBOdWxsVHlwZToKLSAgICAgICAgY2FzZSBHZXR0
ZXJTZXR0ZXJUeXBlOgotICAgICAgICAgICAgYWVEZXNjID0gW05TQXBwbGVFdmVudERlc2NyaXB0
b3IgbnVsbERlc2NyaXB0b3JdOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIEpTVmFsdWUq
IHByaW1pdGl2ZSA9IG9iamVjdC0+dG9QcmltaXRpdmUoZXhlYyk7CisgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsK
KyAgICAgICAgICAgIHJldHVybiBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBudWxsRGVzY3JpcHRv
cl07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFlRGVzY0Zyb21KU1ZhbHVlKGV4ZWMsIHBy
aW1pdGl2ZSk7CiAgICAgfQotICAgIAotICAgIHJldHVybiBhZURlc2M7CisgICAgaWYgKGpzVmFs
dWUtPmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBbTlNBcHBsZUV2ZW50RGVzY3JpcHRv
ciBkZXNjcmlwdG9yV2l0aFR5cGVDb2RlOmNNaXNzaW5nVmFsdWVdOworICAgIEFTU0VSVChqc1Zh
bHVlLT5pc051bGwoKSk7CisgICAgcmV0dXJuIFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIG51bGxE
ZXNjcmlwdG9yXTsKIH0KIAogLSAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAqKWFlRGVzY0J5RXZh
bHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOihOU1N0cmluZyAqKXNjcmlwdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22766</attachid>
            <date>2008-08-12 21:26:34 -0700</date>
            <delta_ts>2008-08-21 15:14:33 -0700</delta_ts>
            <desc>eliminate JSValue::type()</desc>
            <filename>TypePatch.txt</filename>
            <type>text/plain</type>
            <size>166763</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM1NzAzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI3IEBACisyMDA4LTA4LTEyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAtIGVsaW1pbmF0ZSBKU1ZhbHVlOjp0eXBlKCkKKworICAgICAgICBU
aGlzIHdpbGwgaGVscCB1cyBjaGFuZ2UgdGhlIEpTSW1tZWRpYXRlIGRlc2lnbiB3aXRob3V0Cisg
ICAgICAgIGhhdmluZyB0byB0b3VjaCBzbyBtYW55IGNhbGwgc2l0ZXMuCisKKyAgICAgICAgU3Vu
U3BpZGVyIHNheXMgdGhpcyBjaGFuZ2UgaXMgYSB3YXNoIChsb29rZWQgbGlrZSBhIHNsaWdodAor
ICAgICAgICBzcGVlZHVwLCBidXQgbm90IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQpLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIEpTVHlwZS5o
LgorICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIEpTVHlw
ZS5oLgorICAgICAgICAoSlNWYWx1ZUdldFR5cGUpOiBSZXBsYWNlZCB1c2Ugb2YgSlNWYWx1ZTo6
dHlwZSgpIHdpdGgKKyAgICAgICAgSlNWYWx1ZTo6aXMgZnVuY3Rpb25zLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUuZXhwOiBVcGRhdGVkLgorCisgICAgICAgICogVk0vSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5jcHA6IFJlbW92ZWQgdHlwZSgpIGltcGxlbWVudGF0aW9uLgorICAgICAgICAo
S0pTOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp0b1ByaW1pdGl2ZSk6IENoYW5nZWQgdG8gdGFr
ZQorICAgICAgICBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGFyZ3VtZW50IGluc3RlYWQgb2YgSlNU
eXBlLgorICAgICAgICAqIFZNL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDogRGl0dG8uCisKKyAg
ICAgICAgKiBWTS9NYWNoaW5lLmNwcDoKKyAgICAgICAgKEtKUzo6ZmFzdElzTnVtYmVyKTogVXBk
YXRlZCBmb3IgbmFtZSBjaGFuZ2UuCisgICAgICAgIChLSlM6OmZhc3RUb0ludDMyKTogRGl0dG8u
CisgICAgICAgIChLSlM6OmZhc3RUb1VJbnQzMik6IERpdHRvLgorICAgICAgICAoS0pTOjpqc0Fk
ZFNsb3dDYXNlKTogVXBkYXRlZCB0b1ByaW1pdGl2ZSBjYWxsZXIgZm9yIGNoYW5nZSBmcm9tCisg
ICAgICAgIEpTVHlwZSB0byBQcmVmZXJyZWRQcmltaXRpdmVUeXBlLgorICAgICAgICAoS0pTOjpq
c0FkZCk6IFJlcGxhY2VkIGNhbGxzIHRvIEpTVmFsdWU6OnR5cGUoKSB3aXRoIGNhbGxzIHRvCisg
ICAgICAgIEpTVmFsdWU6OmlzU3RyaW5nKCkuCisgICAgICAgIChLSlM6OmpzVHlwZVN0cmluZ0Zv
clZhbHVlKTogUmVwbGFjZWQgY2FsbHMgdG8gSlNWYWx1ZTo6dHlwZSgpCisgICAgICAgIHdpdGgg
bXVsdGlwbGUgY2FsbHMgdG8gSlNWYWx1ZTo6aXMgLS0gd2UgY291bGQgbWFrZSB0aGlzIGEKKyAg
ICAgICAgdmlydHVhbCBmdW5jdGlvbiBpbnN0ZWFkIGlmIHdlIHdhbnQgdG8gaGF2ZSBmYXN0ZXIg
cGVyZm9ybWFuY2UuCisgICAgICAgIChLSlM6Ok1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKTogUmVu
YW1lZCBKU0ltbWVkaWF0ZTo6dG9UcnVuY2F0ZWRVSW50MzIKKyAgICAgICAgdG8gSlNJbW1lZGlh
dGU6OmdldFRydW5jYXRlZFVJbnQzMiBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBmdW5jdGlv
bnMuCisgICAgICAgIENoYW5nZWQgdHdvIGNhbGxzIG9mIEpTVmFsdWU6OnR5cGUoKSB0byBKU1Zh
bHVlOjppc1N0cmluZygpLgorCisgICAgICAgICoga2pzL0dldHRlclNldHRlci5jcHA6CisgICAg
ICAgIChLSlM6OkdldHRlclNldHRlcjo6dG9QcmltaXRpdmUpOiBDaGFuZ2VkIHRvIHRha2UKKyAg
ICAgICAgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBhcmd1bWVudCBpbnN0ZWFkIG9mIEpTVHlwZS4K
KyAgICAgICAgKEtKUzo6R2V0dGVyU2V0dGVyOjppc0dldHRlclNldHRlcik6IEFkZGVkLgorICAg
ICAgICAqIGtqcy9HZXR0ZXJTZXR0ZXIuaDoKKworICAgICAgICAqIGtqcy9KU0NlbGwuY3BwOgor
ICAgICAgICAoS0pTOjpKU0NlbGw6OmlzU3RyaW5nKTogQWRkZWQuCisgICAgICAgIChLSlM6OkpT
Q2VsbDo6aXNHZXR0ZXJTZXR0ZXIpOiBBZGRlZC4KKyAgICAgICAgKEtKUzo6SlNDZWxsOjppc09i
amVjdCk6IEFkZGVkLgorCisgICAgICAgICoga2pzL0pTQ2VsbC5oOiBFbGltaW5hdGVkIHR5cGUg
ZnVuY3Rpb24uIEFkZGVkIGlzR2V0dGVyU2V0dGVyLgorICAgICAgICBNYWRlIGlzU3RyaW5nIGFu
ZCBpc09iamVjdCB2aXJ0dWFsLiBDaGFuZ2VkIHRvUHJpbWl0aXZlIHRvIHRha2UKKyAgICAgICAg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSBhcmd1bWVudCBpbnN0ZWFkIG9mIEpTVHlwZS4KKyAgICAg
ICAgKEtKUzo6SlNDZWxsOjppc051bWJlcik6IFVzZSBIZWFwOjppc051bWJlciBmb3IgZmFzdGVy
IHBlcmZvcm1hbmNlLgorICAgICAgICAoS0pTOjpKU1ZhbHVlOjppc0dldHRlclNldHRlcik6IEFk
ZGVkLgorICAgICAgICAoS0pTOjpKU1ZhbHVlOjp0b1ByaW1pdGl2ZSk6IENoYW5nZWQgdG8gdGFr
ZQorICAgICAgICBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGFyZ3VtZW50IGluc3RlYWQgb2YgSlNU
eXBlLgorCisgICAgICAgICoga2pzL0pTSW1tZWRpYXRlLmg6IENoYW5nZWQgdG8gdXNlIHNlcGFy
YXRlIHRhZ3MgaW5zdGVhZCBvZiB1c2luZworICAgICAgICBKU1R5cGUgZm9yIHRhZ2dpbmcuIFJl
bW92ZWQgSlNWYWx1ZTo6dHlwZSgpIGFuZCByZXBsYWNlZAorICAgICAgICBKU1ZhbHVlOjp0b1Ry
dW5jYXRlZFVJbnQzMiB3aXRoIEpTVmFsdTo6Z2V0VHJ1bmNhdGVkVUludDMyLgorICAgICAgICAo
S0pTOjpKU0ltbWVkaWF0ZTo6aXNFaXRoZXJJbW1lZGlhdGUpOiBBZGRlZC4KKyAgICAgICAgKEtK
Uzo6SlNJbW1lZGlhdGU6OmdldFRydW5jYXRlZFVJbnQzMik6IEZpeGVkIGJ1ZyB3aGVyZSB0aGUg
b2xkCisgICAgICAgIHZlcnNpb24gd291bGQgZ2l2ZSB0aGUgd3JvbmcgYW5zd2VyIGZvciBhIG5v
bi1udW1iZXIgaW1tZWRpYXRlLgorICAgICAgICBGaXhlZCBieSBtYWtpbmcgdGhpcyBsZWdhbCBv
bmx5IG9uIGEgbnVtYmVyIGFzIHdpdGggZ2V0VHJ1bmNhdGVkSW50MzIuCisKKyAgICAgICAgKiBr
anMvSlNOb3RBbk9iamVjdC5jcHA6CisgICAgICAgIChLSlM6OkpTTm90QW5PYmplY3Q6OnRvUHJp
bWl0aXZlKTogQ2hhbmdlZCB0byB0YWtlCisgICAgICAgIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUg
YXJndW1lbnQgaW5zdGVhZCBvZiBKU1R5cGUuCisgICAgICAgICoga2pzL0pTTm90QW5PYmplY3Qu
aDogRGl0dG8uCisgICAgICAgICoga2pzL0pTTnVtYmVyQ2VsbC5jcHA6CisgICAgICAgIChLSlM6
OkpTTnVtYmVyQ2VsbDo6dG9QcmltaXRpdmUpOiBEaXR0by4KKyAgICAgICAgKiBranMvSlNOdW1i
ZXJDZWxsLmg6CisgICAgICAgIChLSlM6OkpTTnVtYmVyQ2VsbDo6dG9JbnQzMik6IFJlbmFtZWQg
ZnJvbSBmYXN0VG9JbnQzMi4gVGhlcmUncyBubworICAgICAgICBvdGhlciAic2xvdyIgdmVyc2lv
biBvZiB0aGlzIG9uY2UgeW91IGhhdmUgYSBKU051bWJlckNlbGwsIHNvIHRoZXJlJ3MKKyAgICAg
ICAgbm8gbmVlZCBmb3IgImZhc3QiIGluIHRoZSBuYW1lLiBJdCdzIGEgZmVhdHVyZSB0aGF0IHRo
aXMgaGlkZXMgdGhlCisgICAgICAgIGJhc2UgY2xhc3MgdG9JbnQzMiwgd2hpY2ggZG9lcyB0aGUg
c2FtZSBqb2IgbGVzcyBlZmZpY2llbnRseSAoYW5kIGhhcworICAgICAgICBhbiBhZGRpdGlvbmFs
IEV4ZWNTdGF0ZSBhcmd1bWVudCkuCisgICAgICAgIChLSlM6OkpTTnVtYmVyQ2VsbDo6dG9VSW50
MzIpOiBEaXR0by4KKworICAgICAgICAqIGtqcy9KU09iamVjdC5jcHA6CisgICAgICAgIChLSlM6
OmNhbGxEZWZhdWx0VmFsdWVGdW5jdGlvbik6IFVzZSBpc0dldHRlclNldHRlciBpbnN0ZWFkIG9m
IHR5cGUuCisgICAgICAgIChLSlM6OkpTT2JqZWN0OjpnZXRQcmltaXRpdmVOdW1iZXIpOiBVc2Ug
UHJlZmVycmVkUHJpbWl0aXZlVHlwZS4KKyAgICAgICAgKEtKUzo6SlNPYmplY3Q6OmRlZmF1bHRW
YWx1ZSk6IERpdHRvLgorICAgICAgICAoS0pTOjpKU09iamVjdDo6ZGVmaW5lR2V0dGVyKTogVXNl
IGlzR2V0dGVyU2V0dGVyLgorICAgICAgICAoS0pTOjpKU09iamVjdDo6ZGVmaW5lU2V0dGVyKTog
RGl0dG8uCisgICAgICAgIChLSlM6OkpTT2JqZWN0Ojpsb29rdXBHZXR0ZXIpOiBEaXR0by4KKyAg
ICAgICAgKEtKUzo6SlNPYmplY3Q6Omxvb2t1cFNldHRlcik6IERpdHRvLgorICAgICAgICAoS0pT
OjpKU09iamVjdDo6dG9OdW1iZXIpOiBVc2UgUHJlZmVycmVkUHJpbWl0aXZlVHlwZS4KKyAgICAg
ICAgKEtKUzo6SlNPYmplY3Q6OnRvU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChLSlM6OkpTT2Jq
ZWN0Ojppc09iamVjdCk6IEFkZGVkLgorCisgICAgICAgICoga2pzL0pTT2JqZWN0Lmg6CisgICAg
ICAgIChLSlM6OkpTT2JqZWN0Ojppbmhlcml0cyk6IENhbGwgdGhlIGlzT2JqZWN0IGZyb20gSlND
ZWxsOyBpdCdzIG5vdworICAgICAgICBoaWRkZW4gYnkgb3VyIG92ZXJyaWRlIG9mIGlzT2JqZWN0
LgorICAgICAgICAoS0pTOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90Rm9yV3JpdGUpOiBV
c2UgaXNHZXR0ZXJTZXR0ZXIKKyAgICAgICAgaW5zdGVhZCBvZiB0eXBlLgorICAgICAgICAoS0pT
OjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KTogRGl0dG8uCisgICAgICAgIChLSlM6OkpT
T2JqZWN0Ojp0b1ByaW1pdGl2ZSk6IFVzZSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlLgorCisgICAg
ICAgICoga2pzL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEtKUzo6SlNTdHJpbmc6OnRvUHJpbWl0
aXZlKTogVXNlIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUuCisgICAgICAgIChLSlM6OkpTU3RyaW5n
Ojppc1N0cmluZyk6IEFkZGVkLgorICAgICAgICAqIGtqcy9KU1N0cmluZy5oOiBEaXR0by4KKwor
ICAgICAgICAqIGtqcy9KU1ZhbHVlLmg6IFJlbW92ZWQgdHlwZSgpLCBhZGRlZCBpc0dldHRlclNl
dHRlcigpLiBBZGRlZAorICAgICAgICBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGVudW0gYW5kIHVz
ZWQgaXQgYXMgdGhlIGFyZ3VtZW50IGZvciB0aGUKKyAgICAgICAgdG9QcmltaXRpdmUgZnVuY3Rp
b24uCisgICAgICAgIChLSlM6OkpTVmFsdWU6OmdldEJvb2xlYW4pOiBTaW1wbGlmaWVkIGEgYml0
IGFuIHJlbW92ZWQgYSBicmFuY2guCisKKyAgICAgICAgKiBranMvY29sbGVjdG9yLmNwcDoKKyAg
ICAgICAgKEtKUzo6dHlwZU5hbWUpOiBDaGFuZ2VkIHRvIHVzZSBKU0NlbGw6OmlzIGZ1bmN0aW9u
cyBpbnN0ZWFkIG9mCisgICAgICAgIGNhbGxpbmcgSlNDZWxsOjp0eXBlLgorCisgICAgICAgICog
a2pzL2NvbGxlY3Rvci5oOgorICAgICAgICAoS0pTOjpIZWFwOjppc051bWJlcik6IFJlbmFtZWQg
ZnJvbSBmYXN0SXNOdW1iZXIuCisKKyAgICAgICAgKiBranMvbm9kZXMuaDogQWRkZWQgbm93LW5l
ZWRlZCBpbmNsdWRlIG9mIEpTVHlwZSwgc2luY2UgdGhlIHR5cGUKKyAgICAgICAgaXMgdXNlZCBo
ZXJlIHRvIHJlY29yZCB0eXBlcyBvZiB2YWx1ZXMgaW4gdGhlIHRyZWUuCisKKyAgICAgICAgKiBr
anMvb3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChLSlM6OmVxdWFsKTogUmV3cm90ZSB0byBubyBs
b25nZXIgZGVwZW5kIG9uIHR5cGUoKS4KKyAgICAgICAgKEtKUzo6c3RyaWN0RXF1YWwpOiBEaXR0
by4KKwogMjAwOC0wOC0xMiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAkocmV2aXNpb24gMzU3MDMpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5l
eHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw4ICsyNzYsMTEgQEAgX19aTkszS0pTMTdEZWJ1Z2dl
ckNhbGxGcmFtZThldmFsdWF0ZUVSSwogX19aTkszS0pTNE5vZGU4dG9TdHJpbmdFdgogX19aTksz
S0pTNkpTQ2VsbDEydG9UaGlzT2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTkszS0pTNkpTQ2Vs
bDEydG9UaGlzU3RyaW5nRVBOU185RXhlY1N0YXRlRQorX19aTkszS0pTNkpTQ2VsbDE0aXNHZXR0
ZXJTZXR0ZXJFdgogX19aTkszS0pTNkpTQ2VsbDE3Z2V0VHJ1bmNhdGVkSW50MzJFUmkKIF9fWk5L
M0tKUzZKU0NlbGwxOGdldFRydW5jYXRlZFVJbnQzMkVSagorX19aTkszS0pTNkpTQ2VsbDhpc09i
amVjdEV2CitfX1pOSzNLSlM2SlNDZWxsOGlzU3RyaW5nRXYKIF9fWk5LM0tKUzZKU0NlbGw5Y2xh
c3NJbmZvRXYKIF9fWk5LM0tKUzZKU0NlbGw5Z2V0TnVtYmVyRXYKIF9fWk5LM0tKUzZKU0NlbGw5
Z2V0U3RyaW5nRVJOU183VVN0cmluZ0UKQEAgLTI5NywxMiArMzAwLDEyIEBAIF9fWk5LM0tKUzdV
U3RyaW5nOHRvVUludDMyRVBiCiBfX1pOSzNLSlM3VVN0cmluZzh0b1VJbnQzMkVQYmIKIF9fWk5L
M0tKUzhKU09iamVjdDExaGFzUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZp
ZXJFCiBfX1pOSzNLSlM4SlNPYmplY3QxMWhhc1Byb3BlcnR5RVBOU185RXhlY1N0YXRlRWoKLV9f
Wk5LM0tKUzhKU09iamVjdDEyZGVmYXVsdFZhbHVlRVBOU185RXhlY1N0YXRlRU5TXzZKU1R5cGVF
CitfX1pOSzNLSlM4SlNPYmplY3QxMmRlZmF1bHRWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUVOU183SlNW
YWx1ZTIyUHJlZmVycmVkUHJpbWl0aXZlVHlwZUUKIF9fWk5LM0tKUzhKU09iamVjdDEydG9UaGlz
T2JqZWN0RVBOU185RXhlY1N0YXRlRQogX19aTkszS0pTOEpTT2JqZWN0MTR0b0dsb2JhbE9iamVj
dEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk5LM0tKUzhKU09iamVjdDIxZ2V0UHJvcGVydHlBdHRyaWJ1
dGVzRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJqCiBfX1pOSzNLSlM4SlNPYmpl
Y3QyMWltcGxlbWVudHNIYXNJbnN0YW5jZUV2Ci1fX1pOSzNLSlM4SlNPYmplY3Q0dHlwZUV2Citf
X1pOSzNLSlM4SlNPYmplY3Q4aXNPYmplY3RFdgogX19aTkszS0pTOEpTT2JqZWN0OHRvTnVtYmVy
RVBOU185RXhlY1N0YXRlRQogX19aTkszS0pTOEpTT2JqZWN0OHRvT2JqZWN0RVBOU185RXhlY1N0
YXRlRQogX19aTkszS0pTOEpTT2JqZWN0OHRvU3RyaW5nRVBOU185RXhlY1N0YXRlRQpJbmRleDog
SmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCShyZXZpc2lvbiAzNTcwMykKKysrIEphdmFTY3Jp
cHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYg
QEAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAogI2luY2x1ZGUgIkFQSUNhc3QuaCIKLSNp
bmNsdWRlIDxranMvSlNUeXBlLmg+CiAjaW5jbHVkZSA8a2pzL0pTU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8a2pzL29wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxranMvdXN0cmluZy5oPgpJbmRleDogSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkocmV2aXNpb24gMzU3MDMpCisrKyBKYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNp
bmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgogCi0jaW5j
bHVkZSA8a2pzL0pTVHlwZS5oPgogI2luY2x1ZGUgPGtqcy9KU0dsb2JhbE9iamVjdC5oPgogI2lu
Y2x1ZGUgPGtqcy9KU1N0cmluZy5oPgogI2luY2x1ZGUgPGtqcy9vcGVyYXRpb25zLmg+CkBAIC00
NiwyMyArNDUsMTggQEAKIEpTVHlwZSBKU1ZhbHVlR2V0VHlwZShKU0NvbnRleHRSZWYsIEpTVmFs
dWVSZWYgdmFsdWUpCiB7CiAgICAgS0pTOjpKU1ZhbHVlKiBqc1ZhbHVlID0gdG9KUyh2YWx1ZSk7
Ci0gICAgc3dpdGNoIChqc1ZhbHVlLT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBLSlM6OlVuZGVm
aW5lZFR5cGU6Ci0gICAgICAgICAgICByZXR1cm4ga0pTVHlwZVVuZGVmaW5lZDsKLSAgICAgICAg
Y2FzZSBLSlM6Ok51bGxUeXBlOgotICAgICAgICAgICAgcmV0dXJuIGtKU1R5cGVOdWxsOwotICAg
ICAgICBjYXNlIEtKUzo6Qm9vbGVhblR5cGU6Ci0gICAgICAgICAgICByZXR1cm4ga0pTVHlwZUJv
b2xlYW47Ci0gICAgICAgIGNhc2UgS0pTOjpOdW1iZXJUeXBlOgotICAgICAgICAgICAgcmV0dXJu
IGtKU1R5cGVOdW1iZXI7Ci0gICAgICAgIGNhc2UgS0pTOjpTdHJpbmdUeXBlOgotICAgICAgICAg
ICAgcmV0dXJuIGtKU1R5cGVTdHJpbmc7Ci0gICAgICAgIGNhc2UgS0pTOjpPYmplY3RUeXBlOgot
ICAgICAgICAgICAgcmV0dXJuIGtKU1R5cGVPYmplY3Q7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBBU1NFUlQoISJKU1ZhbHVlR2V0VHlwZTogdW5rbm93biB0eXBlIGNvZGUuXG4iKTsK
LSAgICAgICAgICAgIHJldHVybiBrSlNUeXBlVW5kZWZpbmVkOwotICAgIH0KKyAgICBpZiAoanNW
YWx1ZS0+aXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIGtKU1R5cGVVbmRlZmluZWQ7Cisg
ICAgaWYgKGpzVmFsdWUtPmlzTnVsbCgpKQorICAgICAgICByZXR1cm4ga0pTVHlwZU51bGw7Cisg
ICAgaWYgKGpzVmFsdWUtPmlzQm9vbGVhbigpKQorICAgICAgICByZXR1cm4ga0pTVHlwZUJvb2xl
YW47CisgICAgaWYgKGpzVmFsdWUtPmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBrSlNUeXBl
TnVtYmVyOworICAgIGlmIChqc1ZhbHVlLT5pc1N0cmluZygpKQorICAgICAgICByZXR1cm4ga0pT
VHlwZVN0cmluZzsKKyAgICBBU1NFUlQoanNWYWx1ZS0+aXNPYmplY3QoKSk7CisgICAgcmV0dXJu
IGtKU1R5cGVPYmplY3Q7CiB9CiAKIHVzaW5nIG5hbWVzcGFjZSBLSlM7IC8vIHBsYWNlZCBoZXJl
IHRvIGF2b2lkIGNvbmZsaWN0IGJldHdlZW4gS0pTOjpKU1R5cGUgYW5kIEpTVHlwZSwgYWJvdmUu
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9WTS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAko
cmV2aXNpb24gMzU3MDMpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDcgQEAgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6fkpTUHJvcGVydHlOYW1lSQogICAgIGludmFsaWRhdGUoKTsKIH0KIAotSlNUeXBl
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBVbnNw
ZWNpZmllZFR5cGU7Ci19Ci0KLUpTVmFsdWUqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OnRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSosIEpTVHlwZSkgY29uc3QKK0pTVmFsdWUqIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUp
IGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9WTS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvVk0vSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAz
NTcwMykKKysrIEphdmFTY3JpcHRDb3JlL1ZNL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNDIsOCArNDIsNyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgICAgICB2
aXJ0dWFsIH5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKCk7CiAKLSAgICAgICAgdmlydHVhbCBKU1R5
cGUgdHlwZSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUqIHRvUHJpbWl0aXZlKEV4
ZWNTdGF0ZSosIEpTVHlwZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSogdG9Qcmlt
aXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiwgSlNW
YWx1ZSomKTsKICAgICAgICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9WTS9NYWNoaW5lLmNwcAkocmV2aXNpb24gMzU3MDMpCisrKyBKYXZhU2NyaXB0Q29y
ZS9WTS9NYWNoaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMzUgKzk2LDQxIEBAIHN0YXRp
YyBpbnQgZGVwdGgoU2NvcGVDaGFpbiYgc2MpCiAgICAgcmV0dXJuIHNjb3BlRGVwdGg7CiB9CiAK
LXN0YXRpYyBib29sIGZhc3RJc051bWJlcihKU1ZhbHVlKiB2YWx1ZSwgZG91YmxlJiBhcmcpIHsK
Ky8vIEZJWE1FOiBUaGlzIG9wZXJhdGlvbiBzaG91bGQgYmUgY2FsbGVkICJnZXROdW1iZXIiLCBu
b3QgImlzTnVtYmVyIiAoYXMgaXQgaXMgaW4gSlNWYWx1ZS5oKS4KKy8vIEZJWE1FOiBUaGVyZSdz
IG5vIG5lZWQgdG8gaGF2ZSBhICJzbG93IiB2ZXJzaW9uIG9mIHRoaXMuIEFsbCB2ZXJzaW9ucyBz
aG91bGQgYmUgZmFzdC4KK3N0YXRpYyBib29sIGZhc3RJc051bWJlcihKU1ZhbHVlKiB2YWx1ZSwg
ZG91YmxlJiBhcmcpCit7CiAgICAgaWYgKEpTSW1tZWRpYXRlOjppc051bWJlcih2YWx1ZSkpCiAg
ICAgICAgIGFyZyA9IEpTSW1tZWRpYXRlOjpnZXRUcnVuY2F0ZWRJbnQzMih2YWx1ZSk7Ci0gICAg
ZWxzZSBpZiAoSGVhcDo6ZmFzdElzTnVtYmVyKHN0YXRpY19jYXN0PEpTQ2VsbCo+KHZhbHVlKSkp
CisgICAgZWxzZSBpZiAoSGVhcDo6aXNOdW1iZXIoc3RhdGljX2Nhc3Q8SlNDZWxsKj4odmFsdWUp
KSkKICAgICAgICAgYXJnID0gc3RhdGljX2Nhc3Q8SlNOdW1iZXJDZWxsKj4odmFsdWUpLT52YWx1
ZSgpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgYm9vbCBmYXN0VG9JbnQzMihKU1ZhbHVlKiB2YWx1ZSwgaW50MzJfdCYgYXJn
KSB7CisvLyBGSVhNRTogV2h5IGRvZXNuJ3QgSlNWYWx1ZTo6dG9JbnQzMiBoYXZlIHRoZSBIZWFw
Ojppc051bWJlciBvcHRpbWl6YXRpb24/CitzdGF0aWMgYm9vbCBmYXN0VG9JbnQzMihKU1ZhbHVl
KiB2YWx1ZSwgaW50MzJfdCYgYXJnKQorewogICAgIGlmIChKU0ltbWVkaWF0ZTo6aXNOdW1iZXIo
dmFsdWUpKQogICAgICAgICBhcmcgPSBKU0ltbWVkaWF0ZTo6Z2V0VHJ1bmNhdGVkSW50MzIodmFs
dWUpOwotICAgIGVsc2UgaWYgKEhlYXA6OmZhc3RJc051bWJlcihzdGF0aWNfY2FzdDxKU0NlbGwq
Pih2YWx1ZSkpKQotICAgICAgICBhcmcgPSBzdGF0aWNfY2FzdDxKU051bWJlckNlbGwqPih2YWx1
ZSktPmZhc3RUb0ludDMyKCk7CisgICAgZWxzZSBpZiAoSGVhcDo6aXNOdW1iZXIoc3RhdGljX2Nh
c3Q8SlNDZWxsKj4odmFsdWUpKSkKKyAgICAgICAgYXJnID0gc3RhdGljX2Nhc3Q8SlNOdW1iZXJD
ZWxsKj4odmFsdWUpLT50b0ludDMyKCk7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgZmFzdFRv
VUludDMyKEpTVmFsdWUqIHZhbHVlLCB1aW50MzJfdCYgYXJnKSB7CitzdGF0aWMgQUxXQVlTX0lO
TElORSBib29sIGZhc3RUb1VJbnQzMihKU1ZhbHVlKiB2YWx1ZSwgdWludDMyX3QmIGFyZykKK3sK
ICAgICBpZiAoSlNJbW1lZGlhdGU6OmlzTnVtYmVyKHZhbHVlKSkgewogICAgICAgICBpZiAoSlNJ
bW1lZGlhdGU6OmdldFRydW5jYXRlZFVJbnQzMih2YWx1ZSwgYXJnKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBib29sIHNjcmF0Y2g7CiAgICAgICAgIGFyZyA9IEpTVmFsdWU6
OnRvVUludDMyU2xvd0Nhc2UoSlNJbW1lZGlhdGU6OmdldFRydW5jYXRlZEludDMyKHZhbHVlKSwg
c2NyYXRjaCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSBpZiAoSGVhcDo6ZmFz
dElzTnVtYmVyKHN0YXRpY19jYXN0PEpTQ2VsbCo+KHZhbHVlKSkpCi0gICAgICAgIGFyZyA9IHN0
YXRpY19jYXN0PEpTTnVtYmVyQ2VsbCo+KHZhbHVlKS0+ZmFzdFRvVUludDMyKCk7CisgICAgfSBl
bHNlIGlmIChIZWFwOjppc051bWJlcihzdGF0aWNfY2FzdDxKU0NlbGwqPih2YWx1ZSkpKQorICAg
ICAgICBhcmcgPSBzdGF0aWNfY2FzdDxKU051bWJlckNlbGwqPih2YWx1ZSktPnRvVUludDMyKCk7
CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0x
NzUsOCArMTgxLDggQEAgc3RhdGljIGlubGluZSBib29sIGpzTGVzc0VxKEV4ZWNTdGF0ZSogZQog
c3RhdGljIEpTVmFsdWUqIGpzQWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2
MSwgSlNWYWx1ZSogdjIpCiB7CiAgICAgLy8gZXhjZXB0aW9uIGZvciB0aGUgRGF0ZSBleGNlcHRp
b24gaW4gZGVmYXVsdFZhbHVlKCkKLSAgICBKU1ZhbHVlKiBwMSA9IHYxLT50b1ByaW1pdGl2ZShl
eGVjLCBVbnNwZWNpZmllZFR5cGUpOwotICAgIEpTVmFsdWUqIHAyID0gdjItPnRvUHJpbWl0aXZl
KGV4ZWMsIFVuc3BlY2lmaWVkVHlwZSk7CisgICAgSlNWYWx1ZSogcDEgPSB2MS0+dG9QcmltaXRp
dmUoZXhlYyk7CisgICAgSlNWYWx1ZSogcDIgPSB2Mi0+dG9QcmltaXRpdmUoZXhlYyk7CiAKICAg
ICBpZiAocDEtPmlzU3RyaW5nKCkgfHwgcDItPmlzU3RyaW5nKCkpIHsKICAgICAgICAgVVN0cmlu
ZyB2YWx1ZSA9IHAxLT50b1N0cmluZyhleGVjKSArIHAyLT50b1N0cmluZyhleGVjKTsKQEAgLTIw
MSwxNSArMjA3LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSoganNBZGQoRXhlY1N0YXRlKiAK
IHsKICAgICBkb3VibGUgbGVmdDsKICAgICBkb3VibGUgcmlnaHQ7Ci0gICAgCiAgICAgaWYgKGZh
c3RJc051bWJlcih2MSwgbGVmdCkgJiYgZmFzdElzTnVtYmVyKHYyLCByaWdodCkpCiAgICAgICAg
IHJldHVybiBqc051bWJlcihleGVjLCBsZWZ0ICsgcmlnaHQpOwogICAgIAotICAgIEpTVHlwZSB0
MSA9IHYxLT50eXBlKCk7Ci0gICAgSlNUeXBlIHQyID0gdjItPnR5cGUoKTsKLSAgICBjb25zdCB1
bnNpZ25lZCBib3RoVHlwZXMgPSAodDEgPDwgMykgfCB0MjsKLSAgICBBU1NFUlQoYm90aFR5cGVz
ICE9ICgoTnVtYmVyVHlwZSA8PCAzKSB8IE51bWJlclR5cGUpKTsKLSAgICBpZiAoYm90aFR5cGVz
ID09ICgoU3RyaW5nVHlwZSA8PCAzKSB8IFN0cmluZ1R5cGUpKSB7CisgICAgaWYgKHYxLT5pc1N0
cmluZygpICYmIHYyLT5pc1N0cmluZygpKSB7CiAgICAgICAgIFVTdHJpbmcgdmFsdWUgPSBzdGF0
aWNfY2FzdDxKU1N0cmluZyo+KHYxKS0+dmFsdWUoKSArIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4o
djIpLT52YWx1ZSgpOwogICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwpAQCAtMjIyLDMwICsyMjMsMjQgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlKiBqc0FkZChFeGVjU3RhdGUqIAogCiBzdGF0aWMgSlNWYWx1
ZSoganNUeXBlU3RyaW5nRm9yVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2KQogewot
ICAgIHN3aXRjaCAodi0+dHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgVW5kZWZpbmVkVHlwZToKKyAg
ICBpZiAodi0+aXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJ1
bmRlZmluZWQiKTsKKyAgICBpZiAodi0+aXNCb29sZWFuKCkpCisgICAgICAgIHJldHVybiBqc1N0
cmluZyhleGVjLCAiYm9vbGVhbiIpOworICAgIGlmICh2LT5pc051bWJlcigpKQorICAgICAgICBy
ZXR1cm4ganNTdHJpbmcoZXhlYywgIm51bWJlciIpOworICAgIGlmICh2LT5pc1N0cmluZygpKQor
ICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgInN0cmluZyIpOworICAgIGlmICh2LT5pc09i
amVjdCgpKSB7CisgICAgICAgIC8vIFJldHVybiAidW5kZWZpbmVkIiBmb3Igb2JqZWN0cyB0aGF0
IHNob3VsZCBiZSB0cmVhdGVkCisgICAgICAgIC8vIGFzIG51bGwgd2hlbiBkb2luZyBjb21wYXJp
c29ucy4KKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odiktPm1hc3F1ZXJhZGVB
c1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJ1bmRlZmlu
ZWQiKTsKLSAgICAgICAgY2FzZSBOdWxsVHlwZToKLSAgICAgICAgICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjLCAib2JqZWN0Iik7Ci0gICAgICAgIGNhc2UgQm9vbGVhblR5cGU6Ci0gICAgICAgICAg
ICByZXR1cm4ganNTdHJpbmcoZXhlYywgImJvb2xlYW4iKTsKLSAgICAgICAgY2FzZSBOdW1iZXJU
eXBlOgotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJudW1iZXIiKTsKLSAgICAg
ICAgY2FzZSBTdHJpbmdUeXBlOgotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJz
dHJpbmciKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmICh2LT5pc09iamVjdCgp
KSB7Ci0gICAgICAgICAgICAgICAgLy8gUmV0dXJuICJ1bmRlZmluZWQiIGZvciBvYmplY3RzIHRo
YXQgc2hvdWxkIGJlIHRyZWF0ZWQKLSAgICAgICAgICAgICAgICAvLyBhcyBudWxsIHdoZW4gZG9p
bmcgY29tcGFyaXNvbnMuCi0gICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEpTT2JqZWN0
Kj4odiktPm1hc3F1ZXJhZGVBc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgInVuZGVmaW5lZCIpOwotICAgICAgICAgICAgICAgIENhbGxEYXRh
IGNhbGxEYXRhOwotICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxKU09iamVjdCo+KHYp
LT5nZXRDYWxsRGF0YShjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgImZ1bmN0aW9uIik7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAib2JqZWN0Iik7CisgICAgICAgIENh
bGxEYXRhIGNhbGxEYXRhOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2KS0+
Z2V0Q2FsbERhdGEoY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkKKyAgICAgICAgICAgIHJldHVy
biBqc1N0cmluZyhleGVjLCAiZnVuY3Rpb24iKTsKICAgICB9CisgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsICJvYmplY3QiKTsKIH0KIAogc3RhdGljIGJvb2wgTkVWRVJfSU5MSU5FIHJlc29sdmUo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogdlBDLCBSZWdpc3RlciogciwgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW4sIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlKiYgZXhjZXB0
aW9uVmFsdWUpCkBAIC0xNTUxLDcgKzE1NDYsNyBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpwcml2YXRl
RXhlY3V0ZShFeGVjdXRpCiAgICAgICAgIGludDMyX3QgbGVmdDsKICAgICAgICAgdWludDMyX3Qg
cmlnaHQ7CiAgICAgICAgIGlmIChKU0ltbWVkaWF0ZTo6YXJlQm90aEltbWVkaWF0ZU51bWJlcnMo
dmFsLCBzaGlmdCkpCi0gICAgICAgICAgICByW2RzdF0gPSBqc051bWJlcihleGVjLCBKU0ltbWVk
aWF0ZTo6Z2V0VHJ1bmNhdGVkSW50MzIodmFsKSA8PCAoSlNJbW1lZGlhdGU6OnRvVHJ1bmNhdGVk
VUludDMyKHNoaWZ0KSAmIDB4MWYpKTsKKyAgICAgICAgICAgIHJbZHN0XSA9IGpzTnVtYmVyKGV4
ZWMsIEpTSW1tZWRpYXRlOjpnZXRUcnVuY2F0ZWRJbnQzMih2YWwpIDw8IChKU0ltbWVkaWF0ZTo6
Z2V0VHJ1bmNhdGVkVUludDMyKHNoaWZ0KSAmIDB4MWYpKTsKICAgICAgICAgZWxzZSBpZiAoZmFz
dFRvSW50MzIodmFsLCBsZWZ0KSAmJiBmYXN0VG9VSW50MzIoc2hpZnQsIHJpZ2h0KSkKICAgICAg
ICAgICAgIHJbZHN0XSA9IGpzTnVtYmVyKGV4ZWMsIGxlZnQgPDwgKHJpZ2h0ICYgMHgxZikpOwog
ICAgICAgICBlbHNlIHsKQEAgLTIyOTIsNyArMjI4Nyw3IEBAIEpTVmFsdWUqIE1hY2hpbmU6OnBy
aXZhdGVFeGVjdXRlKEV4ZWN1dGkKICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAoKyt2UEMpLT51
Lm9wZXJhbmQ7CiAgICAgICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gKCsrdlBDKS0+dS5vcGVyYW5k
OwogICAgICAgICBKU1ZhbHVlKiBzY3J1dGluZWUgPSByWygrK3ZQQyktPnUub3BlcmFuZF0uanNW
YWx1ZShleGVjKTsKLSAgICAgICAgaWYgKHNjcnV0aW5lZS0+dHlwZSgpICE9IFN0cmluZ1R5cGUp
CisgICAgICAgIGlmICghc2NydXRpbmVlLT5pc1N0cmluZygpKQogICAgICAgICAgICAgdlBDICs9
IGRlZmF1bHRPZmZzZXQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgVVN0cmluZzo6UmVw
KiB2YWx1ZSA9IHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oc2NydXRpbmVlKS0+dmFsdWUoKS5yZXAo
KTsKQEAgLTIzMTUsNyArMjMxMCw3IEBAIEpTVmFsdWUqIE1hY2hpbmU6OnByaXZhdGVFeGVjdXRl
KEV4ZWN1dGkKICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAoKyt2UEMpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gKCsrdlBDKS0+dS5vcGVyYW5kOwogICAgICAgICBK
U1ZhbHVlKiBzY3J1dGluZWUgPSByWygrK3ZQQyktPnUub3BlcmFuZF0uanNWYWx1ZShleGVjKTsK
LSAgICAgICAgaWYgKHNjcnV0aW5lZS0+dHlwZSgpICE9IFN0cmluZ1R5cGUpCisgICAgICAgIGlm
ICghc2NydXRpbmVlLT5pc1N0cmluZygpKQogICAgICAgICAgICAgdlBDICs9IGRlZmF1bHRPZmZz
ZXQ7CiAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICB2UEMgKz0gb2Zmc2V0Rm9yU3RyaW5nU3dp
dGNoKGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XSwgc2NydXRp
bmVlLCBkZWZhdWx0T2Zmc2V0KTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9HZXR0ZXJTZXR0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9HZXR0ZXJTZXR0ZXIuY3Bw
CShyZXZpc2lvbiAzNTcwMykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9HZXR0ZXJTZXR0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgR2V0dGVyU2V0dGVyOjptYXJr
KCkKICAgICAgICAgbV9zZXR0ZXItPm1hcmsoKTsKIH0KIAotSlNWYWx1ZSogR2V0dGVyU2V0dGVy
Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBKU1R5cGUpIGNvbnN0CitKU1ZhbHVlKiBHZXR0ZXJT
ZXR0ZXI6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNv
bnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpA
QCAtNzYsNCArNzYsOSBAQCBKU09iamVjdCogR2V0dGVyU2V0dGVyOjp0b09iamVjdChFeGVjU3Rh
CiAgICAgcmV0dXJuIGpzTnVsbCgpLT50b09iamVjdChleGVjKTsKIH0KIAorYm9vbCBHZXR0ZXJT
ZXR0ZXI6OmlzR2V0dGVyU2V0dGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvR2V0dGVyU2V0dGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0dldHRlclNldHRlci5oCShyZXZp
c2lvbiAzNTcwMykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9HZXR0ZXJTZXR0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksOCArMzksNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgSlNUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBHZXR0ZXJTZXR0
ZXJUeXBlOyB9Ci0KICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKIAogICAgICAgICBKU09i
amVjdCogZ2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9nZXR0ZXI7IH0KQEAgLTQ5LDcgKzQ3LDkg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHZvaWQgc2V0U2V0dGVyKEpTT2JqZWN0KiBzZXR0
ZXIpIHsgbV9zZXR0ZXIgPSBzZXR0ZXI7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgSlNWYWx1ZSogdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgSlNUeXBlIHByZWZlcnJlZCkgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OworCisgICAg
ICAgIHZpcnR1YWwgSlNWYWx1ZSogdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1i
ZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUqJiB2YWx1ZSk7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwpJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTQ2Vs
bC5jcHAJKHJldmlzaW9uIDM1NzAzKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTQ2VsbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNSw0ICsyMTUsMTkgQEAgSlNWYWx1ZSogSlNDZWxsOjpnZXRK
U051bWJlcigpCiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgSlNDZWxsOjppc1N0cmluZygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBKU0NlbGw6OmlzT2Jq
ZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEtK
UwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9KU0NlbGwuaAkocmV2aXNpb24gMzU3MDMpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDExICs0MywxMSBAQCBuYW1lc3Bh
Y2UgS0pTIHsKIAogICAgIHB1YmxpYzoKICAgICAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCi0g
ICAgICAgIHZpcnR1YWwgSlNUeXBlIHR5cGUoKSBjb25zdCA9IDA7CiAgICAgICAgIGJvb2wgaXNO
dW1iZXIoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0OwotICAgICAgICBi
b29sIGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNPYmplY3QoY29uc3QgQ2xhc3NJ
bmZvKikgY29uc3Q7IC8vIEZJWE1FOiBNZXJnZSB3aXRoIGluaGVyaXRzLgorICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBib29sIGlzR2V0dGVy
U2V0dGVyKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc09iamVjdCgpIGNvbnN0Owor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNPYmplY3QoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAK
ICAgICAgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCiAgICAgICAgIGJvb2wgZ2V0TnVtYmVy
KGRvdWJsZSYpIGNvbnN0OwpAQCAtNjYsNyArNjYsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
ICAgdmlydHVhbCBib29sIGdldFRydW5jYXRlZFVJbnQzMih1aW50MzJfdCYpIGNvbnN0OwogCiAg
ICAgICAgIC8vIEJhc2ljIGNvbnZlcnNpb25zLgotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUqIHRv
UHJpbWl0aXZlKEV4ZWNTdGF0ZSosIEpTVHlwZSBwcmVmZXJyZWRUeXBlID0gVW5zcGVjaWZpZWRU
eXBlKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSogdG9QcmltaXRpdmUoRXhl
Y1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBK
U1ZhbHVlKiYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUq
KSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSop
IGNvbnN0ID0gMDsKQEAgLTEwOCwxNyArMTA4LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgICBp
bmxpbmUgYm9vbCBKU0NlbGw6OmlzTnVtYmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biB0eXBlKCkgPT0gTnVtYmVyVHlwZTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBKU0NlbGw6
OmlzU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlKCkgPT0gU3RyaW5n
VHlwZTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzT2JqZWN0KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlKCkgPT0gT2JqZWN0VHlwZTsKKyAgICAgICAgcmV0
dXJuIEhlYXA6OmlzTnVtYmVyKGNvbnN0X2Nhc3Q8SlNDZWxsKj4odGhpcykpOwogICAgIH0KIAog
ICAgIGlubGluZSBib29sIEpTQ2VsbDo6bWFya2VkKCkgY29uc3QKQEAgLTE1Niw2ICsxNDYsMTEg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHJldHVybiAhSlNJbW1lZGlhdGU6OmlzSW1tZWRp
YXRlKHRoaXMpICYmIGFzQ2VsbCgpLT5pc1N0cmluZygpOwogICAgIH0KIAorICAgIGlubGluZSBi
b29sIEpTVmFsdWU6OmlzR2V0dGVyU2V0dGVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biAhSlNJbW1lZGlhdGU6OmlzSW1tZWRpYXRlKHRoaXMpICYmIGFzQ2VsbCgpLT5pc0dldHRlclNl
dHRlcigpOworICAgIH0KKwogICAgIGlubGluZSBib29sIEpTVmFsdWU6OmlzT2JqZWN0KCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiAhSlNJbW1lZGlhdGU6OmlzSW1tZWRpYXRlKHRoaXMp
ICYmIGFzQ2VsbCgpLT5pc09iamVjdCgpOwpAQCAtMjMxLDEyICsyMjYsNyBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICAgICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh0aGlzKSB8fCBh
c0NlbGwoKS0+bWFya2VkKCk7CiAgICAgfQogCi0gICAgaW5saW5lIEpTVHlwZSBKU1ZhbHVlOjp0
eXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0ltbWVkaWF0ZTo6aXNJbW1lZGlh
dGUodGhpcykgPyBKU0ltbWVkaWF0ZTo6dHlwZSh0aGlzKSA6IGFzQ2VsbCgpLT50eXBlKCk7Ci0g
ICAgfQotCi0gICAgaW5saW5lIEpTVmFsdWUqIEpTVmFsdWU6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0
ZSogZXhlYywgSlNUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CisgICAgaW5saW5lIEpTVmFsdWUq
IEpTVmFsdWU6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSBwcmVmZXJyZWRUeXBlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEpTSW1tZWRp
YXRlOjppc0ltbWVkaWF0ZSh0aGlzKSA/IGNvbnN0X2Nhc3Q8SlNWYWx1ZSo+KHRoaXMpIDogYXND
ZWxsKCktPnRvUHJpbWl0aXZlKGV4ZWMsIHByZWZlcnJlZFR5cGUpOwogICAgIH0KSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2tqcy9KU0ltbWVkaWF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9KU0ltbWVkaWF0ZS5oCShyZXZpc2lvbiAzNTcwMykKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9KU0ltbWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBACiAjaWZu
ZGVmIEtKU19KU19JTU1FRElBVEVfSAogI2RlZmluZSBLSlNfSlNfSU1NRURJQVRFX0gKIAotI2lu
Y2x1ZGUgIkpTVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC01MSwx
NSArNTAsMTggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICogSlNJbW1lZGlhdGU6ICAgWFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYICAgICAgICAgICAgICAgICBUVAogICAgICAqICAgICAg
ICAgICAgICAgWyBoaWdoIDMwIGJpdHM6IHNpZ25lZCBpbnQgXSAgICAgICBbIGxvdyAyIGJpdHMg
LS0gdHlwZSB0YWcgXQogICAgICAqCi0gICAgICogVGhlIGJpdCAicGF5bG9hZCIgKHRoZSBoaWdo
IDMwIGJpdHMpIGlzIGEgMzAgYml0IHNpZ25lZCBpbnQgZm9yIGltbWVkaWF0ZSBudW1iZXJzLCBh
IGZsYWcgdG8gZGlzdGluZ3Vpc2ggdHJ1ZS9mYWxzZQotICAgICAqIGFuZCB1bmRlZmluZWQvbnVs
bC4KLSAgICAgKgotICAgICAqIE5vdGljZSB0aGF0IHRoZSBKU1R5cGUgdmFsdWUgb2YgTnVsbFR5
cGUgaXMgNCwgd2hpY2ggcmVxdWlyZXMgMyBiaXRzIHRvIGVuY29kZS4gU2luY2Ugd2Ugb25seSBo
YXZlIDIgYml0cyAKLSAgICAgKiBhdmFpbGFibGUgZm9yIHR5cGUgdGFnZ2luZywgd2UgdGFnIHRo
ZSBudWxsIGltbWVkaWF0ZSB3aXRoIFVuZGVmaW5lZFR5cGUsIGFuZCBKU0ltbWVkaWF0ZTo6dHlw
ZSgpIGhhcyAKLSAgICAgKiB0byBzb3J0IHRoZW0gb3V0LgorICAgICAqIFRoZSBiaXQgInBheWxv
YWQiICh0aGUgaGlnaCAzMCBiaXRzKSBpcyBhIDMwIGJpdCBzaWduZWQgaW50IGZvciBpbW1lZGlh
dGUgbnVtYmVycywgYSBmbGFnIHRvIGRpc3Rpbmd1aXNoCisgICAgICogdHJ1ZS9mYWxzZSBhbmQg
dW5kZWZpbmVkL251bGwuCiAgICAgICovCiAKICAgICBjbGFzcyBKU0ltbWVkaWF0ZSB7CisgICAg
cHJpdmF0ZToKKyAgICAgICAgZW51bSBUYWcgeworICAgICAgICAgICAgVW5kZWZpbmVkT3JOdWxs
VGFnID0gMSwKKyAgICAgICAgICAgIEJvb2xlYW5UYWcgPSAyLAorICAgICAgICAgICAgTnVtYmVy
VGFnID0gMworICAgICAgICB9OworCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgQUxXQVlT
X0lOTElORSBib29sIGlzSW1tZWRpYXRlKGNvbnN0IEpTVmFsdWUqIHYpCiAgICAgICAgIHsKQEAg
LTY4LDI0ICs3MCwyNCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgCiAgICAgICAgIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNOdW1iZXIoY29uc3QgSlNWYWx1ZSogdikKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIChnZXRUYWcodikgPT0gTnVtYmVyVHlwZSk7CisgICAgICAg
ICAgICByZXR1cm4gZ2V0VGFnKHYpID09IE51bWJlclRhZzsKICAgICAgICAgfQogCiAgICAgICAg
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQb3NpdGl2ZU51bWJlcihjb25zdCBKU1ZhbHVl
KiB2KQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBBIHNpbmdsZSBtYXNrIHRvIGNoZWNrIGZv
ciB0aGUgc2lnbiBiaXQgYW5kIHRoZSBudW1iZXIgdGFnIGFsbCBhdCBvbmNlLgotICAgICAgICAg
ICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odikgJiAoMHg4MDAwMDAwMCB8
IE51bWJlclR5cGUpKSA9PSBOdW1iZXJUeXBlOworICAgICAgICAgICAgcmV0dXJuIChyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odikgJiAoMHg4MDAwMDAwMCB8IE51bWJlclRhZykpID09IE51
bWJlclRhZzsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0Jvb2xlYW4oY29uc3QgSlNWYWx1ZSogdikKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIChnZXRUYWcodikgPT0gQm9vbGVhblR5cGUpOworICAgICAgICAgICAgcmV0dXJu
IGdldFRhZyh2KSA9PSBCb29sZWFuVGFnOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAv
LyBTaW5jZSB3ZSBoYXZlIHJvb20gZm9yIG9ubHkgMyB1bmlxdWUgdGFncywgbnVsbCBhbmQgdW5k
ZWZpbmVkIGhhdmUgdG8gc2hhcmUuCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNVbmRlZmluZWRPck51bGwoY29uc3QgSlNWYWx1ZSogdikKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIChnZXRUYWcodikgPT0gVW5kZWZpbmVkVHlwZSk7CisgICAgICAgICAgICByZXR1
cm4gZ2V0VGFnKHYpID09IFVuZGVmaW5lZE9yTnVsbFRhZzsKICAgICAgICAgfQogCiAgICAgICAg
IHN0YXRpYyBib29sIGlzTmVnYXRpdmUoY29uc3QgSlNWYWx1ZSogdikKQEAgLTEwNyw5ICsxMDks
MTQgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBmcm9tKHVuc2ln
bmVkIGxvbmcgbG9uZyk7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBmcm9tKGRvdWJsZSk7CiAK
KyAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0VpdGhlckltbWVkaWF0ZShjb25z
dCBKU1ZhbHVlKiB2MSwgY29uc3QgSlNWYWx1ZSogdjIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSB8IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Pih2MikpICYgVGFnTWFzazsKKyAgICAgICAgfQorCiAgICAgICAgIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIGJvb2wgYXJlQm90aEltbWVkaWF0ZU51bWJlcnMoY29uc3QgSlNWYWx1
ZSogdjEsIGNvbnN0IEpTVmFsdWUqIHYyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MSkgJiByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odjIpICYgVGFnTWFzaykgPT0gTnVtYmVyVHlwZTsKKyAgICAgICAgICAgIHJldHVybiAo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSAmIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pih2MikgJiBUYWdNYXNrKSA9PSBOdW1iZXJUYWc7CiAgICAgICAgIH0KIAogICAgICAgICBz
dGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBhbmRJbW1lZGlhdGVOdW1iZXJzKGNvbnN0IEpT
VmFsdWUqIHYxLCBjb25zdCBKU1ZhbHVlKiB2MikKQEAgLTEyMSw3ICsxMjgsNyBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogeG9ySW1tZWRp
YXRlTnVtYmVycyhjb25zdCBKU1ZhbHVlKiB2MSwgY29uc3QgSlNWYWx1ZSogdjIpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChhcmVCb3RoSW1tZWRpYXRlTnVtYmVycyh2MSwgdjIpKTsK
LSAgICAgICAgICAgIHJldHVybiB0YWcocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSBe
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MiksIE51bWJlclR5cGUpOworICAgICAgICAg
ICAgcmV0dXJuIHRhZyhyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odjEpIF4gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHYyKSwgTnVtYmVyVGFnKTsKICAgICAgICAgfQogCiAgICAgICAg
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIG9ySW1tZWRpYXRlTnVtYmVycyhjb25zdCBK
U1ZhbHVlKiB2MSwgY29uc3QgSlNWYWx1ZSogdjIpCkBAIC0xMzMsMjggKzE0MCwyOCBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogcmlnaHRT
aGlmdEltbWVkaWF0ZU51bWJlcnMoY29uc3QgSlNWYWx1ZSogdmFsLCBjb25zdCBKU1ZhbHVlKiBz
aGlmdCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGFyZUJvdGhJbW1lZGlhdGVOdW1i
ZXJzKHZhbCwgc2hpZnQpKTsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpT
VmFsdWUqPigocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odmFsKSA+PiAoKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PihzaGlmdCkgPj4gMikgJiAweDFmKSkgfCBOdW1iZXJUeXBlKTsKKyAg
ICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPigocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4odmFsKSA+PiAoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzaGlm
dCkgPj4gMikgJiAweDFmKSkgfCBOdW1iZXJUYWcpOwogICAgICAgICB9CiAKICAgICAgICAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5Eb0Zhc3RBZGRpdGl2ZU9wZXJhdGlvbnMoY29uc3Qg
SlNWYWx1ZSogdikKICAgICAgICAgewogICAgICAgICAgICAgLy8gTnVtYmVyIGlzIG5vbi1uZWdh
dGl2ZSBhbmQgYW4gb3BlcmF0aW9uIGludm9sdmluZyB0d28gb2YgdGhlc2UgY2FuJ3Qgb3ZlcmZs
b3cuCiAgICAgICAgICAgICAvLyBDaGVja2luZyBmb3IgYWxsb3dlZCBuZWdhdGl2ZSBudW1iZXJz
IHRha2VzIG1vcmUgdGltZSB0aGFuIGl0J3Mgd29ydGggb24gU3VuU3BpZGVyLgotICAgICAgICAg
ICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odikgJiAoTnVtYmVyVHlwZSAr
ICgzIDw8IDMwKSkpID09IE51bWJlclR5cGU7CisgICAgICAgICAgICByZXR1cm4gKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pih2KSAmIChOdW1iZXJUYWcgKyAoMyA8PCAzMCkpKSA9PSBOdW1i
ZXJUYWc7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVl
KiBhZGRJbW1lZGlhdGVOdW1iZXJzKGNvbnN0IEpTVmFsdWUqIHYxLCBjb25zdCBKU1ZhbHVlKiB2
MikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0aXZlT3BlcmF0
aW9ucyh2MSkpOwogICAgICAgICAgICAgQVNTRVJUKGNhbkRvRmFzdEFkZGl0aXZlT3BlcmF0aW9u
cyh2MikpOwotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MSkgKyAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHYyKSAmIH5OdW1iZXJUeXBlKSk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxKU1ZhbHVlKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYxKSArIChyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odjIpICYgfk51bWJlclRhZykpOwogICAgICAgICB9CiAKICAg
ICAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogc3ViSW1tZWRpYXRlTnVtYmVycyhj
b25zdCBKU1ZhbHVlKiB2MSwgY29uc3QgSlNWYWx1ZSogdjIpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEFTU0VSVChjYW5Eb0Zhc3RBZGRpdGl2ZU9wZXJhdGlvbnModjEpKTsKICAgICAgICAgICAg
IEFTU0VSVChjYW5Eb0Zhc3RBZGRpdGl2ZU9wZXJhdGlvbnModjIpKTsKLSAgICAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4odjEpIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2MikgJiB+TnVtYmVyVHlwZSkp
OworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pih2MSkgLSAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHYy
KSAmIH5OdW1iZXJUYWcpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUqIGluY0ltbWVkaWF0ZU51bWJlcihjb25zdCBKU1ZhbHVlKiB2KQpAQCAtMTcz
LDE0ICsxODAsMTMgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHN0YXRpYyBib29sIHRvQm9v
bGVhbihjb25zdCBKU1ZhbHVlKik7CiAgICAgICAgIHN0YXRpYyBKU09iamVjdCogdG9PYmplY3Qo
Y29uc3QgSlNWYWx1ZSosIEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgVVN0cmluZyB0b1N0
cmluZyhjb25zdCBKU1ZhbHVlKik7Ci0gICAgICAgIHN0YXRpYyB1aW50MzJfdCB0b1RydW5jYXRl
ZFVJbnQzMihjb25zdCBKU1ZhbHVlKik7Ci0gICAgICAgIHN0YXRpYyBKU1R5cGUgdHlwZShjb25z
dCBKU1ZhbHVlKik7CiAKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0VUludDMyKGNvbnN0IEpTVmFs
dWUqLCB1aW50MzJfdCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRUcnVuY2F0ZWRJbnQzMihj
b25zdCBKU1ZhbHVlKiwgaW50MzJfdCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRUcnVuY2F0
ZWRVSW50MzIoY29uc3QgSlNWYWx1ZSosIHVpbnQzMl90Jik7CiAKICAgICAgICAgc3RhdGljIGlu
dDMyX3QgZ2V0VHJ1bmNhdGVkSW50MzIoY29uc3QgSlNWYWx1ZSopOworICAgICAgICBzdGF0aWMg
dWludDMyX3QgZ2V0VHJ1bmNhdGVkVUludDMyKGNvbnN0IEpTVmFsdWUqKTsKIAogICAgICAgICBz
dGF0aWMgSlNWYWx1ZSogdHJ1ZUltbWVkaWF0ZSgpOwogICAgICAgICBzdGF0aWMgSlNWYWx1ZSog
ZmFsc2VJbW1lZGlhdGUoKTsKQEAgLTIxNSwxMCArMjIxLDEwIEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgICB9CiAgICAgfTsKIAotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlh
dGU6OnRydWVJbW1lZGlhdGUoKSB7IHJldHVybiB0YWcoMSA8PCAyLCBCb29sZWFuVHlwZSk7IH0K
LSAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmYWxzZUltbWVkaWF0ZSgp
IHsgcmV0dXJuIHRhZygwLCBCb29sZWFuVHlwZSk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUqIEpTSW1tZWRpYXRlOjp1bmRlZmluZWRJbW1lZGlhdGUoKSB7IHJldHVybiB0YWcoMSA8PCAy
LCBVbmRlZmluZWRUeXBlKTsgfQotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlh
dGU6Om51bGxJbW1lZGlhdGUoKSB7IHJldHVybiB0YWcoMCwgVW5kZWZpbmVkVHlwZSk7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjp0cnVlSW1tZWRpYXRlKCkgeyBy
ZXR1cm4gdGFnKDEgPDwgMiwgQm9vbGVhblRhZyk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUqIEpTSW1tZWRpYXRlOjpmYWxzZUltbWVkaWF0ZSgpIHsgcmV0dXJuIHRhZygwLCBCb29sZWFu
VGFnKTsgfQorICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OnVuZGVmaW5l
ZEltbWVkaWF0ZSgpIHsgcmV0dXJuIHRhZygxIDw8IDIsIFVuZGVmaW5lZE9yTnVsbFRhZyk7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpudWxsSW1tZWRpYXRlKCkg
eyByZXR1cm4gdGFnKDAsIFVuZGVmaW5lZE9yTnVsbFRhZyk7IH0KIAogICAgIC8vIFRoaXMgdmFs
dWUgaXMgaW1wb3NzaWJsZSBiZWNhdXNlIDB4NCBpcyBub3QgYSB2YWxpZCBwb2ludGVyIGJ1dCBh
IHRhZyBvZiAwIHdvdWxkIGluZGljYXRlIG5vbi1pbW1lZGlhdGUKICAgICBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUqIEpTSW1tZWRpYXRlOjppbXBvc3NpYmxlVmFsdWUoKSB7IHJldHVybiB0YWcoMSA8
PCAyLCAwKTsgfQpAQCAtMjI3LDgwICsyMzMsODAgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgewog
ICAgICAgICBBU1NFUlQoaXNJbW1lZGlhdGUodikpOwogICAgICAgICB1aW50cHRyX3QgYml0cyA9
IHVuVGFnKHYpOwotICAgICAgICByZXR1cm4gKGJpdHMgIT0gMCkgJiAoSlNJbW1lZGlhdGU6Omdl
dFRhZyh2KSAhPSBVbmRlZmluZWRUeXBlKTsKKyAgICAgICAgcmV0dXJuIChiaXRzICE9IDApICYg
KEpTSW1tZWRpYXRlOjpnZXRUYWcodikgIT0gVW5kZWZpbmVkT3JOdWxsVGFnKTsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IEpTSW1tZWRpYXRlOjp0b1RydW5jYXRlZFVJbnQz
Mihjb25zdCBKU1ZhbHVlKiB2KQorICAgIEFMV0FZU19JTkxJTkUgdWludDMyX3QgSlNJbW1lZGlh
dGU6OmdldFRydW5jYXRlZFVJbnQzMihjb25zdCBKU1ZhbHVlKiB2KQogICAgIHsKLSAgICAgICAg
QVNTRVJUKGlzSW1tZWRpYXRlKHYpKTsKKyAgICAgICAgQVNTRVJUKGlzTnVtYmVyKHYpKTsKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludHB0
cl90Pih2KSA+PiAyKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1t
ZWRpYXRlOjpmcm9tKGNoYXIgaSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBO
dW1iZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclRhZyk7CiAgICAg
fQogCiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbShzaWduZWQg
Y2hhciBpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5cGUpOwor
ICAgICAgICByZXR1cm4gdGFnKGkgPDwgMiwgTnVtYmVyVGFnKTsKICAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKHVuc2lnbmVkIGNoYXIgaSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAgICAgICAgcmV0
dXJuIHRhZyhpIDw8IDIsIE51bWJlclRhZyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBK
U1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbShzaG9ydCBpKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHRhZyhpIDw8IDIsIE51bWJlclR5cGUpOworICAgICAgICByZXR1cm4gdGFnKGkgPDwgMiwgTnVt
YmVyVGFnKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRl
Ojpmcm9tKHVuc2lnbmVkIHNob3J0IGkpCiAgICAgewotICAgICAgICByZXR1cm4gdGFnKGkgPDwg
MiwgTnVtYmVyVHlwZSk7CisgICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJUYWcpOwog
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZyb20oaW50
IGkpCiAgICAgewogICAgICAgICBpZiAoKGkgPCBtaW5JbW1lZGlhdGVJbnQpIHwgKGkgPiBtYXhJ
bW1lZGlhdGVJbnQpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiB0YWco
aSA8PCAyLCBOdW1iZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclRh
Zyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJv
bSh1bnNpZ25lZCBpKQogICAgIHsKICAgICAgICAgaWYgKGkgPiBtYXhJbW1lZGlhdGVVSW50KQog
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBOdW1iZXJU
eXBlKTsKKyAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclRhZyk7CiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbShsb25nIGkpCiAgICAg
ewogICAgICAgICBpZiAoKGkgPCBtaW5JbW1lZGlhdGVJbnQpIHwgKGkgPiBtYXhJbW1lZGlhdGVJ
bnQpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiB0YWcoaSA8PCAyLCBO
dW1iZXJUeXBlKTsKKyAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclRhZyk7CiAgICAg
fQogCiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlKiBKU0ltbWVkaWF0ZTo6ZnJvbSh1bnNpZ25l
ZCBsb25nIGkpCiAgICAgewogICAgICAgICBpZiAoaSA+IG1heEltbWVkaWF0ZVVJbnQpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIHRhZyhpIDw8IDIsIE51bWJlclR5cGUp
OworICAgICAgICByZXR1cm4gdGFnKGkgPDwgMiwgTnVtYmVyVGFnKTsKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKGxvbmcgbG9uZyBpKQogICAg
IHsKICAgICAgICAgaWYgKChpIDwgbWluSW1tZWRpYXRlSW50KSB8IChpID4gbWF4SW1tZWRpYXRl
SW50KSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gdGFnKHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oaSkgPDwgMiwgTnVtYmVyVHlwZSk7CisgICAgICAgIHJldHVybiB0YWco
c3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSA8PCAyLCBOdW1iZXJUYWcpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogSlNJbW1lZGlhdGU6OmZyb20odW5zaWduZWQgbG9uZyBs
b25nIGkpCiAgICAgewogICAgICAgICBpZiAoaSA+IG1heEltbWVkaWF0ZVVJbnQpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIHRhZyhzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KGkpIDw8IDIsIE51bWJlclR5cGUpOworICAgICAgICByZXR1cm4gdGFnKHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oaSkgPDwgMiwgTnVtYmVyVGFnKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUqIEpTSW1tZWRpYXRlOjpmcm9tKGRvdWJsZSBkKQpAQCAtMzE0LDcgKzMyMCw3IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgICAgICBpZiAoKGludFZhbCAhPSBkKSB8fCAoIWludFZhbCAm
JiBzaWduYml0KGQpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIHJldHVybiB0
YWcoaW50VmFsIDw8IDIsIE51bWJlclR5cGUpOworICAgICAgICByZXR1cm4gdGFnKGludFZhbCA8
PCAyLCBOdW1iZXJUYWcpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgaW50MzJfdCBKU0lt
bWVkaWF0ZTo6Z2V0VHJ1bmNhdGVkSW50MzIoY29uc3QgSlNWYWx1ZSogdikKQEAgLTMyNyw3ICsz
MzMsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0ltbWVkaWF0
ZSh2KSk7CiAgICAgICAgIGNvbnN0IGludDMyX3QgaSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHVu
VGFnKHYpKSA+PiAyOwotICAgICAgICBpZiAoSlNJbW1lZGlhdGU6OmdldFRhZyh2KSA9PSBVbmRl
ZmluZWRUeXBlICYmIGkpCisgICAgICAgIGlmIChKU0ltbWVkaWF0ZTo6Z2V0VGFnKHYpID09IFVu
ZGVmaW5lZE9yTnVsbFRhZyAmJiBpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CiAgICAgICAgIHJldHVybiBpOwogICAgIH0KQEAg
LTM0OSwxNiArMzU1LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHJldHVybiBnZXRVSW50
MzIodiwgaSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBKU1R5cGUgSlNJbW1lZGlhdGU6
OnR5cGUoY29uc3QgSlNWYWx1ZSogdikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc0ltbWVkaWF0
ZSh2KSk7Ci0gICAgICAgIAotICAgICAgICB1aW50cHRyX3QgdGFnID0gZ2V0VGFnKHYpOwotICAg
ICAgICBpZiAodGFnID09IFVuZGVmaW5lZFR5cGUpCi0gICAgICAgICAgICByZXR1cm4gdiA9PSB1
bmRlZmluZWRJbW1lZGlhdGUoKSA/IFVuZGVmaW5lZFR5cGUgOiBOdWxsVHlwZTsKLSAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEpTVHlwZT4odGFnKTsKLSAgICB9Ci0KICAgICBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUqIGpzVW5kZWZpbmVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiBKU0ltbWVk
aWF0ZTo6dW5kZWZpbmVkSW1tZWRpYXRlKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNO
b3RBbk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTTm90QW5P
YmplY3QuY3BwCShyZXZpc2lvbiAzNTcwMykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU05vdEFu
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIEtK
UyB7CiAKIC8vIEpTVmFsdWUgbWV0aG9kcwotSlNWYWx1ZSogSlNOb3RBbk9iamVjdDo6dG9Qcmlt
aXRpdmUoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGUpIGNvbnN0CitKU1ZhbHVlKiBKU05vdEFuT2Jq
ZWN0Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUp
IGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEFTU0VSVChleGVjLT5oYWRF
eGNlcHRpb24oKSAmJiBleGVjLT5leGNlcHRpb24oKSA9PSBtX2V4Y2VwdGlvbik7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvSlNOb3RBbk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9KU05vdEFuT2JqZWN0LmgJKHJldmlzaW9uIDM1NzAzKQorKysgSmF2YVNjcmlw
dENvcmUva2pzL0pTTm90QW5PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBA
QCBuYW1lc3BhY2UgS0pTIHsKIAogICAgICBwcml2YXRlOgogICAgICAgICAvLyBKU1ZhbHVlIG1l
dGhvZHMKLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlKiB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBK
U1R5cGUgcHJlZmVycmVkVHlwZSA9IFVuc3BlY2lmaWVkVHlwZSkgY29uc3Q7CisgICAgICAgIHZp
cnR1YWwgSlNWYWx1ZSogdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhl
Y1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUqJik7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIHRv
TnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTTnVt
YmVyQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTTnVtYmVyQ2Vs
bC5jcHAJKHJldmlzaW9uIDM1NzAzKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTTnVtYmVyQ2Vs
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE4ICsyMywxMiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkpTTnVtYmVyQ2VsbC5oIgogCi0jaW5jbHVkZSAiSlNUeXBlLmgiCiAj
aW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCiAjaW5jbHVkZSAidXN0cmluZy5oIgogCiBuYW1lc3Bh
Y2UgS0pTIHsKIAotSlNUeXBlIEpTTnVtYmVyQ2VsbDo6dHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIE51bWJlclR5cGU7Ci19Ci0KLUpTVmFsdWUqIEpTTnVtYmVyQ2VsbDo6dG9QcmltaXRpdmUo
RXhlY1N0YXRlKiwgSlNUeXBlKSBjb25zdAorSlNWYWx1ZSogSlNOdW1iZXJDZWxsOjp0b1ByaW1p
dGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdAogewogICAgIHJl
dHVybiBjb25zdF9jYXN0PEpTTnVtYmVyQ2VsbCo+KHRoaXMpOwogfQpJbmRleDogSmF2YVNjcmlw
dENvcmUva2pzL0pTTnVtYmVyQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tq
cy9KU051bWJlckNlbGwuaAkocmV2aXNpb24gMzU3MDMpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
SlNOdW1iZXJDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDcgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgcHVibGljOgogICAgICAgICBkb3VibGUgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CiAKLSAgICAgICAgdmlydHVhbCBKU1R5cGUgdHlwZSgpIGNvbnN0OwotCi0g
ICAgICAgIHZpcnR1YWwgSlNWYWx1ZSogdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgSlNUeXBlIHBy
ZWZlcnJlZCA9IFVuc3BlY2lmaWVkVHlwZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNWYWx1
ZSogdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUqJiB2YWx1ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB0b0Jv
b2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVy
KEV4ZWNTdGF0ZSopIGNvbnN0OwpAQCAtNTgsOCArNTYsOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICAgICAgdmlydHVhbCBVU3RyaW5nIHRvVGhpc1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKICAg
ICAgICAgdmlydHVhbCBKU09iamVjdCogdG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIEpTVmFsdWUqIGdldEpTTnVtYmVyKCk7Ci0gICAgICAgIGludDMyX3Qg
ZmFzdFRvSW50MzIoKSBjb25zdDsKLSAgICAgICAgdWludDMyX3QgZmFzdFRvVUludDMyKCkgY29u
c3Q7CisKKyAgICAgICAgaW50MzJfdCB0b0ludDMyKCkgY29uc3Q7CisgICAgICAgIHVpbnQzMl90
IHRvVUludDMyKCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
aXplLCBFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHsKQEAgLTE0OCw3ICsxNDcsNyBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICAgICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh0aGlz
KSA/IEpTSW1tZWRpYXRlOjp0b0RvdWJsZSh0aGlzKSA6IHN0YXRpY19jYXN0PGNvbnN0IEpTTnVt
YmVyQ2VsbCo+KHRoaXMpLT52YWx1ZSgpOwogICAgIH0KIAotICAgIGlubGluZSBpbnQzMl90IEpT
TnVtYmVyQ2VsbDo6ZmFzdFRvSW50MzIoKSBjb25zdAorICAgIGlubGluZSBpbnQzMl90IEpTTnVt
YmVyQ2VsbDo6dG9JbnQzMigpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV92YWx1ZSA+PSAt
MjE0NzQ4MzY0OC4wICYmIG1fdmFsdWUgPCAyMTQ3NDgzNjQ4LjApCiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4obV92YWx1ZSk7CkBAIC0xNTYsNyArMTU1LDcgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjp0b0ludDMyU2xvd0Nhc2UobV92
YWx1ZSwgc2NyYXRjaCk7CiAgICAgfQogCi0gICAgaW5saW5lIHVpbnQzMl90IEpTTnVtYmVyQ2Vs
bDo6ZmFzdFRvVUludDMyKCkgY29uc3QKKyAgICBpbmxpbmUgdWludDMyX3QgSlNOdW1iZXJDZWxs
Ojp0b1VJbnQzMigpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV92YWx1ZSA+PSAwLjAgJiYg
bV92YWx1ZSA8IDQyOTQ5NjcyOTYuMCkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV92YWx1ZSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU09iamVjdC5jcHAJKHJldmlzaW9u
IDM1NzAzKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjUsMTEgKzY1LDYgQEAgdm9pZCBKU09iamVjdDo6bWFyaygpCiAjZW5kaWYKIH0KIAot
SlNUeXBlIEpTT2JqZWN0Ojp0eXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gT2JqZWN0VHlwZTsK
LX0KLQogVVN0cmluZyBKU09iamVjdDo6Y2xhc3NOYW1lKCkgY29uc3QKIHsKICAgICBjb25zdCBD
bGFzc0luZm8qIGluZm8gPSBjbGFzc0luZm8oKTsKQEAgLTIzMiw3ICsyMjcsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlKiBjYWxsRGVmYXVsCiAgICAgICAgIHJldHVybiBleGVjLT5l
eGNlcHRpb24oKTsKIAogICAgIEpTVmFsdWUqIHJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgY29uc3RfY2FzdDxKU09iamVjdCo+KG9iamVjdCksIGV4ZWMt
PmVtcHR5TGlzdCgpKTsKLSAgICBBU1NFUlQocmVzdWx0LT50eXBlKCkgIT0gR2V0dGVyU2V0dGVy
VHlwZSk7CisgICAgQVNTRVJUKCFyZXN1bHQtPmlzR2V0dGVyU2V0dGVyKCkpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGV4ZWMtPmV4Y2VwdGlvbigpOwog
ICAgIGlmIChyZXN1bHQtPmlzT2JqZWN0KCkpCkBAIC0yNDIsMTYgKzIzNywxNiBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlKiBjYWxsRGVmYXVsCiAKIGJvb2wgSlNPYmplY3Q6OmdldFBy
aW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlKiYg
cmVzdWx0KQogewotICAgIHJlc3VsdCA9IGRlZmF1bHRWYWx1ZShleGVjLCBOdW1iZXJUeXBlKTsK
KyAgICByZXN1bHQgPSBkZWZhdWx0VmFsdWUoZXhlYywgUHJlZmVyTnVtYmVyKTsKICAgICBudW1i
ZXIgPSByZXN1bHQtPnRvTnVtYmVyKGV4ZWMpOwogICAgIHJldHVybiAhcmVzdWx0LT5pc1N0cmlu
ZygpOwogfQogCiAvLyBFQ01BIDguNi4yLjYKLUpTVmFsdWUqIEpTT2JqZWN0OjpkZWZhdWx0VmFs
dWUoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGUgaGludCkgY29uc3QKK0pTVmFsdWUqIEpTT2JqZWN0
OjpkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhp
bnQpIGNvbnN0CiB7CiAgICAgLy8gTXVzdCBjYWxsIHRvU3RyaW5nIGZpcnN0IGZvciBEYXRlIG9i
amVjdHMuCi0gICAgaWYgKChoaW50ID09IFN0cmluZ1R5cGUpIHx8IChoaW50ICE9IE51bWJlclR5
cGUgJiYgbV9wcm90b3R5cGUgPT0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5kYXRlUHJv
dG90eXBlKCkpKSB7CisgICAgaWYgKChoaW50ID09IFByZWZlclN0cmluZykgfHwgKGhpbnQgIT0g
UHJlZmVyTnVtYmVyICYmIG1fcHJvdG90eXBlID09IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+ZGF0ZVByb3RvdHlwZSgpKSkgewogICAgICAgICBpZiAoSlNWYWx1ZSogdmFsdWUgPSBjYWxs
RGVmYXVsdFZhbHVlRnVuY3Rpb24oZXhlYywgdGhpcywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRv
U3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgaWYgKEpTVmFsdWUq
IHZhbHVlID0gY2FsbERlZmF1bHRWYWx1ZUZ1bmN0aW9uKGV4ZWMsIHRoaXMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS52YWx1ZU9mKSkKQEAgLTI4Myw3ICsyNzgsNyBAQCB2b2lkIEpTT2JqZWN0Ojpk
ZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiBlCiB7CiAgICAgSlNWYWx1ZSogb2JqZWN0ID0gZ2V0RGly
ZWN0KHByb3BlcnR5TmFtZSk7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXI7Ci0gICAg
aWYgKG9iamVjdCAmJiBvYmplY3QtPnR5cGUoKSA9PSBHZXR0ZXJTZXR0ZXJUeXBlKQorICAgIGlm
IChvYmplY3QgJiYgb2JqZWN0LT5pc0dldHRlclNldHRlcigpKQogICAgICAgICBnZXR0ZXJTZXR0
ZXIgPSBzdGF0aWNfY2FzdDxHZXR0ZXJTZXR0ZXIqPihvYmplY3QpOwogICAgIGVsc2UgewogICAg
ICAgICBnZXR0ZXJTZXR0ZXIgPSBuZXcgKGV4ZWMpIEdldHRlclNldHRlcjsKQEAgLTI5OCw3ICsy
OTMsNyBAQCB2b2lkIEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBlCiB7CiAgICAg
SlNWYWx1ZSogb2JqZWN0ID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFtZSk7CiAgICAgR2V0dGVyU2V0
dGVyKiBnZXR0ZXJTZXR0ZXI7Ci0gICAgaWYgKG9iamVjdCAmJiBvYmplY3QtPnR5cGUoKSA9PSBH
ZXR0ZXJTZXR0ZXJUeXBlKQorICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LT5pc0dldHRlclNldHRl
cigpKQogICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBzdGF0aWNfY2FzdDxHZXR0ZXJTZXR0ZXIqPihv
YmplY3QpOwogICAgIGVsc2UgewogICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBuZXcgKGV4ZWMpIEdl
dHRlclNldHRlcjsKQEAgLTMxNSw3ICszMTAsNyBAQCBKU1ZhbHVlKiBKU09iamVjdDo6bG9va3Vw
R2V0dGVyKEV4ZWNTdGF0CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgSlNWYWx1ZSogdmFs
dWUgPSBvYmplY3QtPmdldERpcmVjdChwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAodmFsdWUp
IHsKLSAgICAgICAgICAgIGlmICh2YWx1ZS0+dHlwZSgpICE9IEdldHRlclNldHRlclR5cGUpCisg
ICAgICAgICAgICBpZiAoIXZhbHVlLT5pc0dldHRlclNldHRlcigpKQogICAgICAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgSlNPYmplY3QqIGZ1bmN0aW9uT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8R2V0dGVyU2V0dGVyKj4odmFsdWUpLT5nZXR0ZXIoKTsKICAgICAg
ICAgICAgIGlmICghZnVuY3Rpb25PYmplY3QpCkBAIC0zMzUsNyArMzMwLDcgQEAgSlNWYWx1ZSog
SlNPYmplY3Q6Omxvb2t1cFNldHRlcihFeGVjU3RhdAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAg
ICAgIEpTVmFsdWUqIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3QocHJvcGVydHlOYW1lKTsKICAg
ICAgICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAodmFsdWUtPnR5cGUoKSAhPSBHZXR0
ZXJTZXR0ZXJUeXBlKQorICAgICAgICAgICAgaWYgKCF2YWx1ZS0+aXNHZXR0ZXJTZXR0ZXIoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIEpTT2Jq
ZWN0KiBmdW5jdGlvbk9iamVjdCA9IHN0YXRpY19jYXN0PEdldHRlclNldHRlcio+KHZhbHVlKS0+
c2V0dGVyKCk7CiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uT2JqZWN0KQpAQCAtNDI2LDcgKzQy
MSw3IEBAIGJvb2wgSlNPYmplY3Q6OnRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb24KIAogZG91Ymxl
IEpTT2JqZWN0Ojp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgSlNWYWx1
ZSogcHJpbWl0aXZlID0gdG9QcmltaXRpdmUoZXhlYywgTnVtYmVyVHlwZSk7CisgICAgSlNWYWx1
ZSogcHJpbWl0aXZlID0gdG9QcmltaXRpdmUoZXhlYywgUHJlZmVyTnVtYmVyKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpIC8vIHNob3VsZCBiZSBwaWNrZWQgdXAgc29vbiBpbiBub2Rl
cy5jcHAKICAgICAgICAgcmV0dXJuIDAuMDsKICAgICByZXR1cm4gcHJpbWl0aXZlLT50b051bWJl
cihleGVjKTsKQEAgLTQzNCw3ICs0MjksNyBAQCBkb3VibGUgSlNPYmplY3Q6OnRvTnVtYmVyKEV4
ZWNTdGF0ZSogZXhlCiAKIFVTdHJpbmcgSlNPYmplY3Q6OnRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKIHsKLSAgICBKU1ZhbHVlKiBwcmltaXRpdmUgPSB0b1ByaW1pdGl2ZShleGVjLCBT
dHJpbmdUeXBlKTsKKyAgICBKU1ZhbHVlKiBwcmltaXRpdmUgPSB0b1ByaW1pdGl2ZShleGVjLCBQ
cmVmZXJTdHJpbmcpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuICIiOwogICAgIHJldHVybiBwcmltaXRpdmUtPnRvU3RyaW5nKGV4ZWMpOwpAQCAtNDczLDYg
KzQ2OCwxMSBAQCB2b2lkIEpTT2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KFByCiAgICAg
ICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OmlzT2JqZWN0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogSlNPYmplY3QqIGNvbnN0cnVjdEVtcHR5
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gbmV3IChleGVjKSBKU09iamVj
dChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKTsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9KU09iamVjdC5oCShyZXZpc2lvbiAzNTcwMykKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJK
U051bWJlckNlbGwuaCIKLSNpbmNsdWRlICJKU1R5cGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU1h
cC5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIK
QEAgLTY3LDcgKzY2LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIEpTT2JqZWN0KCk7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKLSAgICAgICAgdmlydHVhbCBKU1R5cGUgdHlw
ZSgpIGNvbnN0OwogCiAgICAgICAgIC8qKgogICAgICAgICAgKiBBIHBvaW50ZXIgdG8gYSBDbGFz
c0luZm8gc3RydWN0IGZvciB0aGlzIGNsYXNzLiBUaGlzIHByb3ZpZGVzIGEgYmFzaWMKQEAgLTEz
Myw3ICsxMzEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgICogQHJldHVybiB0cnVlIGlm
IHRoaXMgb2JqZWN0J3MgY2xhc3MgaW5oZXJpdHMgZnJvbSBjbGFzcyB3aXRoIHRoZQogICAgICAg
ICAgKiBDbGFzc0luZm8gcG9pbnRlciBzcGVjaWZpZWQgaW4gY2luZm8KICAgICAgICAgICovCi0g
ICAgICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIGNvbnN0IHsg
cmV0dXJuIGlzT2JqZWN0KGNsYXNzSW5mbyk7IH0gLy8gRklYTUU6IE1lcmdlIHdpdGggaXNPYmpl
Y3QuCisgICAgICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIGNv
bnN0IHsgcmV0dXJuIEpTQ2VsbDo6aXNPYmplY3QoY2xhc3NJbmZvKTsgfQogCiAgICAgICAgIC8v
IGludGVybmFsIHByb3BlcnRpZXMgKEVDTUEgMjYyLTMgOC42LjIpCiAKQEAgLTI1Nyw3ICsyNTUs
NyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIFtb
RGVmYXVsdFZhbHVlXV0gaW50ZXJuYWwgcHJvcGVydHkgKGltcGxlbWVudGVkIGJ5CiAgICAgICAg
ICAqIGFsbCBPYmplY3RzKQogICAgICAgICAgKi8KLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlKiBk
ZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgSlNUeXBlIGhpbnQpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIEpTVmFsdWUqIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlKSBjb25zdDsKIAogICAgICAgICAvKioKICAgICAgICAgICogV2hldGhlciBvciBub3QgdGhl
IG9iamVjdCBpbXBsZW1lbnRzIHRoZSBoYXNJbnN0YW5jZSgpIG1ldGhvZC4gSWYgdGhpcwpAQCAt
MjgyLDcgKzI4MCw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBn
ZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jik7CiAKLSAgICAg
ICAgdmlydHVhbCBKU1ZhbHVlKiB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBKU1R5cGUgcHJlZmVy
cmVkVHlwZSA9IFVuc3BlY2lmaWVkVHlwZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNWYWx1
ZSogdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA9IE5vUHJl
ZmVyZW5jZSkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIo
RXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUqJiB2YWx1ZSk7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
ZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwpAQCAtMzMxLDYgKzMyOSw4IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgICAgICBib29sIGdldE93blByb3BlcnR5U2xvdEZvcldyaXRlKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmLCBib29sJiBzbG90SXNX
cml0ZWFibGUpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBib29sIGlzT2JqZWN0
KCkgY29uc3Q7CisKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBmaW5kUHJvcGVydHlIYXNoRW50
cnkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKICAg
ICAgICAgSlNWYWx1ZSogbV9wcm90b3R5cGU7CiAgICAgfTsKQEAgLTQzNCw3ICs0MzQsNyBAQCBp
bmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4CiBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wm
IHNsb3RJc1dyaXRlYWJsZSkKIHsKICAgICBpZiAoSlNWYWx1ZSoqIGxvY2F0aW9uID0gZ2V0RGly
ZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lLCBzbG90SXNXcml0ZWFibGUpKSB7Ci0gICAgICAgIGlm
IChtX3Byb3BlcnR5TWFwLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiBsb2NhdGlvblsw
XS0+dHlwZSgpID09IEdldHRlclNldHRlclR5cGUpIHsKKyAgICAgICAgaWYgKG1fcHJvcGVydHlN
YXAuaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmIGxvY2F0aW9uWzBdLT5pc0dldHRlclNl
dHRlcigpKSB7CiAgICAgICAgICAgICBzbG90SXNXcml0ZWFibGUgPSBmYWxzZTsKICAgICAgICAg
ICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgbG9jYXRpb24pOwogICAgICAgICB9IGVs
c2UKQEAgLTQ1OCw3ICs0NTgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93
blByb3BlCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIGlmIChKU1ZhbHVlKiogbG9jYXRpb24gPSBnZXREaXJlY3RMb2Nh
dGlvbihwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIGlmIChtX3Byb3BlcnR5TWFwLmhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKSAmJiBsb2NhdGlvblswXS0+dHlwZSgpID09IEdldHRlclNldHRl
clR5cGUpCisgICAgICAgIGlmIChtX3Byb3BlcnR5TWFwLmhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSAmJiBsb2NhdGlvblswXS0+aXNHZXR0ZXJTZXR0ZXIoKSkKICAgICAgICAgICAgIGZpbGxH
ZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgbG9jYXRpb24pOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBzbG90LnNldFZhbHVlU2xvdChsb2NhdGlvbik7CkBAIC00ODYsNyArNDg2LDcgQEAgaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChFeGVjU3RhdAogICAgIG1fcHJvcGVydHlNYXAu
cHV0KHByb3BlcnR5TmFtZSwganNOdW1iZXIoZXhlYywgdmFsdWUpLCBhdHRyKTsKIH0KIAotaW5s
aW5lIEpTVmFsdWUqIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVHlw
ZSBwcmVmZXJyZWRUeXBlKSBjb25zdAoraW5saW5lIEpTVmFsdWUqIEpTT2JqZWN0Ojp0b1ByaW1p
dGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlw
ZSkgY29uc3QKIHsKICAgICByZXR1cm4gZGVmYXVsdFZhbHVlKGV4ZWMsIHByZWZlcnJlZFR5cGUp
OwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvSlNTdHJpbmcuY3BwCShyZXZpc2lvbiAzNTcwMykKKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKLUpTVmFsdWUqIEpTU3RyaW5nOjp0b1ByaW1pdGl2
ZShFeGVjU3RhdGUqLCBKU1R5cGUpIGNvbnN0CitKU1ZhbHVlKiBKU1N0cmluZzo6dG9QcmltaXRp
dmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKIHsKICAgICByZXR1
cm4gY29uc3RfY2FzdDxKU1N0cmluZyo+KHRoaXMpOwogfQpAQCAtMTI0LDYgKzEyNCwxMiBAQCBi
b29sIEpTU3RyaW5nOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0CiAgICAgcmV0dXJuIEpTU3Ry
aW5nOjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9w
ZXJ0eU5hbWUpLCBzbG90KTsKIH0KIAorYm9vbCBKU1N0cmluZzo6aXNTdHJpbmcoKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBDaGFuZ2UgSlNDZWxsOjppc1N0cmluZyB0byBhIG5vbi12aXJ0dWFs
IGltcGxlbWVudGF0aW9uIGxpa2UgdGhlIG9uZSBpbiBNYWNoaW5lOjppc0pTU3RyaW5nLgorICAg
IHJldHVybiB0cnVlOworfQorCiBKU1N0cmluZyoganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBjaGFyKiBzKQogewogICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTU3RyaW5nKHMgPyBzIDog
IiIpOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL0pTU3RyaW5nLmgJKHJldmlzaW9uIDM1NzAzKQorKysgSmF2YVNj
cmlwdENvcmUva2pzL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDkgKzYwLDkgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgSlNUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmdUeXBlOyB9CisgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1N0cmluZygpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgSlNWYWx1ZSog
dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgSlNUeXBlIHByZWZlcnJlZCA9IFVuc3BlY2lmaWVkVHlw
ZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSogdG9QcmltaXRpdmUoRXhlY1N0YXRl
KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBn
ZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUqJiB2
YWx1ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvSlNWYWx1ZS5oCShyZXZpc2lvbiAzNTcwMykKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEzICs1OCwxMyBAQCBuYW1lc3BhY2Ug
S0pTIHsKIAogICAgIHB1YmxpYzoKICAgICAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCi0gICAg
ICAgIEpTVHlwZSB0eXBlKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25z
dDsKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1VuZGVmaW5l
ZE9yTnVsbCgpIGNvbnN0OwogICAgICAgICBib29sIGlzQm9vbGVhbigpIGNvbnN0OwogICAgICAg
ICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsK
KyAgICAgICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OwogICAgICAgICBib29sIGlzT2Jq
ZWN0KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNPYmplY3QoY29uc3QgQ2xhc3NJbmZvKikgY29u
c3Q7IC8vIEZJWE1FOiBNZXJnZSB3aXRoIGluaGVyaXRzLgogCkBAIC04OCw3ICs4OCw4IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgICAgICBib29sIGdldFRydW5jYXRlZFVJbnQzMih1aW50MzJfdCYp
IGNvbnN0OwogICAgICAgICAKICAgICAgICAgLy8gQmFzaWMgY29udmVyc2lvbnMuCi0gICAgICAg
IEpTVmFsdWUqIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIEpTVHlwZSBwcmVmZXJyZWRUeXBlID0g
VW5zcGVjaWZpZWRUeXBlKSBjb25zdDsKKyAgICAgICAgZW51bSBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlIHsgTm9QcmVmZXJlbmNlLCBQcmVmZXJOdW1iZXIsIFByZWZlclN0cmluZyB9OworICAgICAg
ICBKU1ZhbHVlKiB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBl
ID0gTm9QcmVmZXJlbmNlKSBjb25zdDsKICAgICAgICAgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIo
RXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUqJik7CiAKICAgICAgICAgYm9vbCB0
b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CkBAIC0xODcsNyArMTg4LDcgQEAgbmFtZXNwYWNl
IEtKUyB7CiAKICAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRCb29sZWFuKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBKU0ltbWVkaWF0ZTo6aXNCb29sZWFuKHRoaXMpID8gSlNJbW1l
ZGlhdGU6OnRvQm9vbGVhbih0aGlzKSA6IGZhbHNlOworICAgICAgICByZXR1cm4gdGhpcyA9PSBq
c0Jvb2xlYW4odHJ1ZSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBpbnQzMl90IEpTVmFs
dWU6OnRvSW50MzIoRXhlY1N0YXRlKiBleGVjKSBjb25zdApJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL2NvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2NvbGxl
Y3Rvci5jcHAJKHJldmlzaW9uIDM1NzAzKQorKysgSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjMsMzUgKzEwMjMsMTUgQEAgc2l6ZV90IEhlYXA6
OnByb3RlY3RlZE9iamVjdENvdW50KCkKIAogc3RhdGljIGNvbnN0IGNoYXIqIHR5cGVOYW1lKEpT
Q2VsbCogdmFsKQogewotICAgIGNvbnN0IGNoYXIqIG5hbWUgPSAiPz8/IjsKLSAgICBzd2l0Y2gg
KHZhbC0+dHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgVW5zcGVjaWZpZWRUeXBlOgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVW5kZWZpbmVkVHlwZToKLSAgICAgICAgICAgIG5hbWUg
PSAidW5kZWZpbmVkIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE51bGxUeXBl
OgotICAgICAgICAgICAgbmFtZSA9ICJudWxsIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEJvb2xlYW5UeXBlOgotICAgICAgICAgICAgbmFtZSA9ICJib29sZWFuIjsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0cmluZ1R5cGU6Ci0gICAgICAgICAgICBuYW1l
ID0gInN0cmluZyI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOdW1iZXJUeXBl
OgotICAgICAgICAgICAgbmFtZSA9ICJudW1iZXIiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgT2JqZWN0VHlwZTogewotICAgICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZv
ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2YWwpLT5jbGFzc0luZm8oKTsKLSAgICAgICAgICAg
IG5hbWUgPSBpbmZvID8gaW5mby0+Y2xhc3NOYW1lIDogIk9iamVjdCI7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdldHRlclNldHRlclR5cGU6Ci0gICAgICAg
ICAgICBuYW1lID0gImdldHRlcnNldHRlciI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgcmV0dXJuIG5hbWU7CisgICAgaWYgKHZhbC0+aXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJu
ICJzdHJpbmciOworICAgIGlmICh2YWwtPmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiAibnVt
YmVyIjsKKyAgICBpZiAodmFsLT5pc0dldHRlclNldHRlcigpKQorICAgICAgICByZXR1cm4gImdl
dHRlcnNldHRlciI7CisgICAgQVNTRVJUKHZhbC0+aXNPYmplY3QoKSk7CisgICAgY29uc3QgQ2xh
c3NJbmZvKiBpbmZvID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2YWwpLT5jbGFzc0luZm8oKTsK
KyAgICByZXR1cm4gaW5mbyA/IGluZm8tPmNsYXNzTmFtZSA6ICJPYmplY3QiOwogfQogCiBIYXNo
Q291bnRlZFNldDxjb25zdCBjaGFyKj4qIEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMo
KQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuaAkocmV2aXNpb24gMzU3MDMpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvY29sbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsOCBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgSGFzaFNldDxBcmdMaXN0Kj4mIG1hcmtMaXN0U2V0
KCkgeyBpZiAoIW1fbWFya0xpc3RTZXQpIG1fbWFya0xpc3RTZXQgPSBuZXcgSGFzaFNldDxBcmdM
aXN0Kj47IHJldHVybiAqbV9tYXJrTGlzdFNldDsgfQogCiAgICAgICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQotICAgICAgICBzdGF0
aWMgYm9vbCBmYXN0SXNOdW1iZXIoSlNDZWxsKik7CisgICAgICAgIHN0YXRpYyBib29sIGlzTnVt
YmVyKEpTQ2VsbCopOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgdGVtcGxhdGUgPEhlYXA6Okhl
YXBUeXBlIGhlYXBUeXBlPiB2b2lkKiBoZWFwQWxsb2NhdGUoc2l6ZV90KTsKICAgICAgICAgdGVt
cGxhdGUgPEhlYXA6OkhlYXBUeXBlIGhlYXBUeXBlPiBzaXplX3Qgc3dlZXAoKTsKQEAgLTIxNSw3
ICsyMTYsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgSGVhcDo6SGVhcFR5cGUgdHlwZTsK
ICAgICB9OwogICAgIAotICAgIGlubGluZSBib29sIEhlYXA6OmZhc3RJc051bWJlcihKU0NlbGwq
IGNlbGwpCisgICAgaW5saW5lIGJvb2wgSGVhcDo6aXNOdW1iZXIoSlNDZWxsKiBjZWxsKQogICAg
IHsKICAgICAgICAgQ29sbGVjdG9yQmxvY2sqIGJsb2NrID0gSGVhcDo6Y2VsbEJsb2NrKGNlbGwp
OwogICAgICAgICByZXR1cm4gYmxvY2sgJiYgYmxvY2stPnR5cGUgPT0gTnVtYmVySGVhcDsKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9ub2Rlcy5oCShyZXZpc2lvbiAzNTcwMykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9u
b2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJFcnJv
ci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNUeXBlLmgiCiAjaW5jbHVk
ZSAiTGFiZWxTdGFjay5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVy
SUQuaCIKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9vcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvb3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDM1NzAzKQor
KysgSmF2YVNjcmlwdENvcmUva2pzL29wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw4MyArMzYsOTMgQEAKIG5hbWVzcGFjZSBLSlMgewogCiAvLyBFQ01BIDExLjkuMwotYm9vbCBl
cXVhbChFeGVjU3RhdGUgKmV4ZWMsIEpTVmFsdWUgKnYxLCBKU1ZhbHVlICp2MikKK2Jvb2wgZXF1
YWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2MSwgSlNWYWx1ZSogdjIpCiB7Ci0gICAgSlNU
eXBlIHQxID0gdjEtPnR5cGUoKTsKLSAgICBKU1R5cGUgdDIgPSB2Mi0+dHlwZSgpOwotICAgIAot
ICAgIGlmICh0MSAhPSB0MikgewotICAgICAgICBpZiAodDEgPT0gVW5kZWZpbmVkVHlwZSkKLSAg
ICAgICAgICAgIHQxID0gTnVsbFR5cGU7Ci0gICAgICAgIGlmICh0MiA9PSBVbmRlZmluZWRUeXBl
KQotICAgICAgICAgICAgdDIgPSBOdWxsVHlwZTsKLSAgICAgICAgCi0gICAgICAgIGlmICh0MSA9
PSBCb29sZWFuVHlwZSkKLSAgICAgICAgICAgIHQxID0gTnVtYmVyVHlwZTsKLSAgICAgICAgaWYg
KHQyID09IEJvb2xlYW5UeXBlKQotICAgICAgICAgICAgdDIgPSBOdW1iZXJUeXBlOwotICAgICAg
ICAKLSAgICAgICAgaWYgKHQxID09IE51bWJlclR5cGUgJiYgdDIgPT0gU3RyaW5nVHlwZSkgewot
ICAgICAgICAgICAgLy8gdXNlIHRvTnVtYmVyCi0gICAgICAgIH0gZWxzZSBpZiAodDEgPT0gU3Ry
aW5nVHlwZSAmJiB0MiA9PSBOdW1iZXJUeXBlKQotICAgICAgICAgICAgdDEgPSBOdW1iZXJUeXBl
OwotICAgICAgICAgICAgLy8gdXNlIHRvTnVtYmVyCi0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgaWYgKCh0MSA9PSBTdHJpbmdUeXBlIHx8IHQxID09IE51bWJlclR5cGUpICYmIHQyID09IE9i
amVjdFR5cGUpIHsKLSAgICAgICAgICAgICAgICB2MiA9IHYyLT50b1ByaW1pdGl2ZShleGVjKTsK
LSAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXF1YWwoZXhlYywg
djEsIHYyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0MSA9PSBOdWxsVHlwZSAm
JiB0MiA9PSBPYmplY3RUeXBlKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxK
U09iamVjdCAqPih2MiktPm1hc3F1ZXJhZGVBc1VuZGVmaW5lZCgpOwotICAgICAgICAgICAgaWYg
KHQxID09IE9iamVjdFR5cGUgJiYgKHQyID09IFN0cmluZ1R5cGUgfHwgdDIgPT0gTnVtYmVyVHlw
ZSkpIHsKLSAgICAgICAgICAgICAgICB2MSA9IHYxLT50b1ByaW1pdGl2ZShleGVjKTsKLSAgICAg
ICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXF1YWwoZXhlYywgdjEsIHYy
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0MSA9PSBPYmplY3RUeXBlICYmIHQy
ID09IE51bGxUeXBlKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU09iamVj
dCAqPih2MSktPm1hc3F1ZXJhZGVBc1VuZGVmaW5lZCgpOwotICAgICAgICAgICAgaWYgKHQxICE9
IHQyKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICAKLSAgICBpZiAodDEgPT0gVW5kZWZpbmVkVHlwZSB8fCB0MSA9PSBOdWxsVHlwZSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgaWYgKHQxID09IE51bWJlclR5cGUpIHsKK3N0YXJ0
T3ZlcjoKKyAgICBpZiAoSlNJbW1lZGlhdGU6OmFyZUJvdGhJbW1lZGlhdGVOdW1iZXJzKHYxLCB2
MikpCisgICAgICAgIHJldHVybiB2MSA9PSB2MjsKKworICAgIGlmICh2MS0+aXNOdW1iZXIoKSAm
JiB2Mi0+aXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIHYxLT51bmNoZWNrZWRHZXROdW1iZXIo
KSA9PSB2Mi0+dW5jaGVja2VkR2V0TnVtYmVyKCk7CisKKyAgICBib29sIHMxID0gdjEtPmlzU3Ry
aW5nKCk7CisgICAgYm9vbCBzMiA9IHYyLT5pc1N0cmluZygpOworICAgIGlmIChzMSAmJiBzMikK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4odjEpLT52YWx1ZSgpID09IHN0
YXRpY19jYXN0PEpTU3RyaW5nKj4odjIpLT52YWx1ZSgpOworCisgICAgaWYgKHYxLT5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGlmICh2Mi0+aXNVbmRlZmluZWRPck51bGwoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIXYyLT5pc09iamVjdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNPYmpl
Y3QqPih2MiktPm1hc3F1ZXJhZGVBc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIGlmICh2Mi0+
aXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBpZiAoIXYxLT5pc09iamVjdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNPYmpl
Y3QqPih2MSktPm1hc3F1ZXJhZGVBc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIGlmICh2MS0+
aXNPYmplY3QoKSkgeworICAgICAgICBpZiAodjItPmlzT2JqZWN0KCkpCisgICAgICAgICAgICBy
ZXR1cm4gdjEgPT0gdjI7CisgICAgICAgIEpTVmFsdWUqIHAxID0gdjEtPnRvUHJpbWl0aXZlKGV4
ZWMpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHYxID0gcDE7CisgICAgICAgIGdvdG8gc3RhcnRPdmVyOworICAg
IH0KKworICAgIGlmICh2Mi0+aXNPYmplY3QoKSkgeworICAgICAgICBKU1ZhbHVlKiBwMiA9IHYy
LT50b1ByaW1pdGl2ZShleGVjKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB2MiA9IHAyOworICAgICAgICBnb3Rv
IHN0YXJ0T3ZlcjsKKyAgICB9CisKKyAgICBpZiAoczEgfHwgczIpIHsKICAgICAgICAgZG91Ymxl
IGQxID0gdjEtPnRvTnVtYmVyKGV4ZWMpOwogICAgICAgICBkb3VibGUgZDIgPSB2Mi0+dG9OdW1i
ZXIoZXhlYyk7CiAgICAgICAgIHJldHVybiBkMSA9PSBkMjsKICAgICB9Ci0gICAgCi0gICAgaWYg
KHQxID09IFN0cmluZ1R5cGUpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+
KHYxKS0+dmFsdWUoKSA9PSBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KHYyKS0+dmFsdWUoKTsKLSAg
ICAKLSAgICBpZiAodDEgPT0gQm9vbGVhblR5cGUpCi0gICAgICAgIHJldHVybiB2MS0+dG9Cb29s
ZWFuKGV4ZWMpID09IHYyLT50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgCi0gICAgLy8gdHlwZXMgYXJl
IE9iamVjdAorCisgICAgaWYgKHYxLT5pc0Jvb2xlYW4oKSkgeworICAgICAgICBpZiAodjItPmlz
TnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm4gdjEtPmdldEJvb2xlYW4oKSA9PSB2Mi0+dW5j
aGVja2VkR2V0TnVtYmVyKCk7CisgICAgfSBlbHNlIGlmICh2Mi0+aXNCb29sZWFuKCkpIHsKKyAg
ICAgICAgaWYgKHYxLT5pc051bWJlcigpKQorICAgICAgICAgICAgcmV0dXJuIHYxLT51bmNoZWNr
ZWRHZXROdW1iZXIoKSA9PSB2Mi0+Z2V0Qm9vbGVhbigpOworICAgIH0KKwogICAgIHJldHVybiB2
MSA9PSB2MjsKIH0KIAogYm9vbCBzdHJpY3RFcXVhbChKU1ZhbHVlKiB2MSwgSlNWYWx1ZSogdjIp
CiB7Ci0gICAgSlNUeXBlIHQxID0gdjEtPnR5cGUoKTsKLSAgICBKU1R5cGUgdDIgPSB2Mi0+dHlw
ZSgpOwotICAgIAotICAgIGlmICh0MSAhPSB0MikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKHQxID09IE51bWJlclR5cGUpCi0gICAgICAgIHJldHVybiB2MS0+Z2V0TnVtYmVyKCkg
PT0gdjItPmdldE51bWJlcigpOwotICAgIAotICAgIGlmICh0MSA9PSBTdHJpbmdUeXBlKQotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPih2MSktPnZhbHVlKCkgPT0gc3RhdGlj
X2Nhc3Q8SlNTdHJpbmcqPih2MiktPnZhbHVlKCk7Ci0gICAgCi0gICAgcmV0dXJuIHYxID09IHYy
OyAvLyBjb3ZlcnMgb2JqZWN0LCBib29sZWFuLCBudWxsLCBhbmQgdW5kZWZpbmVkIHR5cGVzCisg
ICAgaWYgKEpTSW1tZWRpYXRlOjppc0VpdGhlckltbWVkaWF0ZSh2MSwgdjIpKSB7CisgICAgICAg
IGlmICh2MSA9PSB2MikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAodjEg
PT0gSlNJbW1lZGlhdGU6OmZyb20oMCkpCisgICAgICAgICAgICByZXR1cm4gIUpTSW1tZWRpYXRl
Ojppc0ltbWVkaWF0ZSh2MikKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxKU0NlbGwq
Pih2MiktPmlzTnVtYmVyKCkKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxKU051bWJl
ckNlbGwqPih2MiktPnZhbHVlKCkgPT0gMDsKKyAgICAgICAgcmV0dXJuIHYyID09IEpTSW1tZWRp
YXRlOjpmcm9tKDApCisgICAgICAgICAgICAmJiAhSlNJbW1lZGlhdGU6OmlzSW1tZWRpYXRlKHYx
KQorICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8SlNDZWxsKj4odjEpLT5pc051bWJlcigpCisg
ICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxKU051bWJlckNlbGwqPih2MSktPnZhbHVlKCkgPT0g
MDsKKyAgICB9CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8SlNDZWxsKj4odjEpLT5pc051bWJlcigp
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNDZWxsKj4odjIpLT5pc051bWJlcigpCisg
ICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxKU051bWJlckNlbGwqPih2MSktPnZhbHVlKCkgPT0g
c3RhdGljX2Nhc3Q8SlNOdW1iZXJDZWxsKj4odjIpLT52YWx1ZSgpOworCisgICAgaWYgKHN0YXRp
Y19jYXN0PEpTQ2VsbCo+KHYxKS0+aXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEpTQ2VsbCo+KHYyKS0+aXNTdHJpbmcoKQorICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8
SlNTdHJpbmcqPih2MSktPnZhbHVlKCkgPT0gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPih2MiktPnZh
bHVlKCk7CisKKyAgICByZXR1cm4gdjEgPT0gdjI7CiB9CiAKIEpTVmFsdWUqIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNTcw
MykKKysrIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE4IEBACisyMDA4LTA4LTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGVsaW1pbmF0ZSBK
U1ZhbHVlOjp0eXBlKCkKKworICAgICAgICAqIEpTVXRpbHMuY3BwOgorICAgICAgICAoS0pTVmFs
dWVUb0NGVHlwZUludGVybmFsKTogUmVwbGFjZWQgdXNlcyBvZiBKU1ZhbHVlOjp0eXBlKCkgd2l0
aAorICAgICAgICBKU1ZhbHVlOjppcyBmdW5jdGlvbnMuCisgICAgICAgICogVXNlck9iamVjdElt
cC5jcHA6CisgICAgICAgIChVc2VyT2JqZWN0SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOiBEaXR0
by4KKyAgICAgICAgKFVzZXJPYmplY3RJbXA6OnRvUHJpbWl0aXZlKTogVGFrZSBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlIGFyZ3VtZW50CisgICAgICAgIGluc3RlYWQgb2YgSlNUeXBlIGFyZ3VtZW50
LgorICAgICAgICAqIFVzZXJPYmplY3RJbXAuaDogRGl0dG8uCisKIDIwMDgtMDctMzEgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVk
IGJ5IE1hY2llai4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0pTVXRpbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRHbHVlL0pTVXRpbHMuY3BwCShyZXZpc2lvbiAzNTcwMykKKysrIEphdmFT
Y3JpcHRHbHVlL0pTVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMjMgKzIwMCwyMSBA
QCBDRlR5cGVSZWYgS0pTVmFsdWVUb0NGVHlwZUludGVybmFsKEpTVmFsCiAKICAgICBDRlR5cGVS
ZWYgcmVzdWx0ID0gMDsKIAotICAgIHN3aXRjaCAoaW5WYWx1ZS0+dHlwZSgpKQotICAgIHsKLSAg
ICAgICAgY2FzZSBCb29sZWFuVHlwZToKKyAgICAgICAgaWYgKGluVmFsdWUtPmlzQm9vbGVhbigp
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGluVmFsdWUtPnRvQm9v
bGVhbihleGVjKSA/IGtDRkJvb2xlYW5UcnVlIDoga0NGQm9vbGVhbkZhbHNlOwogICAgICAgICAg
ICAgICAgIFJldGFpbkNGVHlwZShyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIFN0
cmluZ1R5cGU6CisgICAgICAgIGlmIChpblZhbHVlLT5pc1N0cmluZygpKQogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIFVTdHJpbmcgdVN0cmluZyA9IGluVmFsdWUtPnRvU3RyaW5nKGV4
ZWMpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFVTdHJpbmdUb0NGU3RyaW5nKHVTdHJpbmcp
OworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICBjYXNlIE51bWJlclR5cGU6CisgICAgICAgIGlmIChpblZh
bHVlLT5pc051bWJlcigpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGRvdWJsZSBu
dW1iZXIxID0gaW5WYWx1ZS0+dG9OdW1iZXIoZXhlYyk7CiAgICAgICAgICAgICAgICAgZG91Ymxl
IG51bWJlcjIgPSAoZG91YmxlKWluVmFsdWUtPnRvSW50ZWdlcihleGVjKTsKQEAgLTIyOSwxMCAr
MjI3LDEwIEBAIENGVHlwZVJlZiBLSlNWYWx1ZVRvQ0ZUeXBlSW50ZXJuYWwoSlNWYWwKICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IENGTnVtYmVyQ3JlYXRl
KDAsIGtDRk51bWJlckRvdWJsZVR5cGUsICZudW1iZXIxKTsKICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgICAgIGNhc2UgT2JqZWN0VHlwZToKKyAgICAgICAgaWYgKGluVmFsdWUt
PmlzT2JqZWN0KCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGluVmFsdWUtPmlzT2JqZWN0KCZVc2VyT2JqZWN0SW1wOjppbmZvKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVc2VyT2JqZWN0SW1wKiB1c2VyT2JqZWN0SW1wID0gc3Rh
dGljX2Nhc3Q8VXNlck9iamVjdEltcCAqPihpblZhbHVlKTsKQEAgLTM0MiwyMSArMzQwLDE3IEBA
IENGVHlwZVJlZiBLSlNWYWx1ZVRvQ0ZUeXBlSW50ZXJuYWwoSlNWYWwKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgY2FzZSBOdWxsVHlwZToKLSAgICAgICAgY2FzZSBVbmRlZmluZWRU
eXBlOgotICAgICAgICBjYXNlIFVuc3BlY2lmaWVkVHlwZToKKyAgICBpZiAoaW5WYWx1ZS0+aXNV
bmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgewogICAgICAgICAgICAgcmVzdWx0ID0gUmV0YWlu
Q0ZUeXBlKEdldENGTnVsbCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIktKU1ZhbHVlVG9DRlR5cGU6IHdyb25n
IHZhbHVlIHR5cGUgJWRcbiIsIGluVmFsdWUtPnR5cGUoKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwogfQog
CiBDRlR5cGVSZWYgS0pTVmFsdWVUb0NGVHlwZShKU1ZhbHVlICppblZhbHVlLCBFeGVjU3RhdGUg
KmV4ZWMpCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAkocmV2aXNpb24gMzU3MDMpCisr
KyBKYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1
LDcgKzEzNSw3IEBAIGJvb2wgVXNlck9iamVjdEltcDo6Z2V0T3duUHJvcGVydHlTbG90KEUKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBlbHNlIHsKICAgICAgICAgSlNWYWx1ZSAqa2pzVmFs
dWUgPSB0b1ByaW1pdGl2ZShleGVjKTsKLSAgICAgICAgaWYgKGtqc1ZhbHVlLT50eXBlKCkgIT0g
TnVsbFR5cGUgJiYga2pzVmFsdWUtPnR5cGUoKSAhPSBVbmRlZmluZWRUeXBlKSB7CisgICAgICAg
IGlmICgha2pzVmFsdWUtPmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgICAgIEpTT2Jq
ZWN0ICpranNPYmplY3QgPSBranNWYWx1ZS0+dG9PYmplY3QoZXhlYyk7CiAgICAgICAgICAgICBp
ZiAoa2pzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE2Myw3ICsxNjMsNyBAQCBKU1VzZXJP
YmplY3QqIFVzZXJPYmplY3RJbXA6OkdldEpTVXNlck9iCiAgICAgcmV0dXJuIGZKU1VzZXJPYmpl
Y3Q7CiB9CiAKLUpTVmFsdWUgKlVzZXJPYmplY3RJbXA6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSAq
ZXhlYywgSlNUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CitKU1ZhbHVlICpVc2VyT2JqZWN0SW1w
Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKmV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNv
bnN0CiB7CiAgICAgSlNWYWx1ZSAqcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKICAgICBKU1VzZXJP
YmplY3QqIGpzT2JqUHRyID0gS0pTVmFsdWVUb0pTT2JqZWN0KHRvT2JqZWN0KGV4ZWMpLCBleGVj
KTsKSW5kZXg6IEphdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgJKHJldmlzaW9uIDM1NzAzKQorKysgSmF2YVNj
cmlwdEdsdWUvVXNlck9iamVjdEltcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCB2b2lkIHB1
dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSwgSlNWYWx1
ZSAqdmFsdWUsIGludCBhdHRyID0gTm9uZSk7CiAKLSAgICBKU1ZhbHVlICp0b1ByaW1pdGl2ZShF
eGVjU3RhdGUgKmV4ZWMsIEpTVHlwZSBwcmVmZXJyZWRUeXBlID0gVW5zcGVjaWZpZWRUeXBlKSBj
b25zdDsKKyAgICBKU1ZhbHVlKiB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmlt
aXRpdmVUeXBlID0gTm9QcmVmZXJlbmNlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdG9Cb29s
ZWFuKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgdG9OdW1iZXIo
RXhlY1N0YXRlICpleGVjKSBjb25zdDsKICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhl
Y1N0YXRlICpleGVjKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNTcwMykKKysrIFdlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAKKzIwMDgtMDgtMTIgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gZWxpbWluYXRlIEpTVmFsdWU6OnR5cGUoKQorCisgICAgICAgICog
YnJpZGdlL2MvY19pbnN0YW5jZS5jcHA6CisgICAgICAgIChLSlM6OkJpbmRpbmdzOjpDSW5zdGFu
Y2U6OmRlZmF1bHRWYWx1ZSk6IFRha2UgUHJlZmVycmVkUHJpbWl0aXZlVHlwZQorICAgICAgICBh
cmd1bWVudCBpbnN0ZWFkIG9mIEpTVHlwZSBhcmd1bWVudC4gUmVtb3ZlZCB1bm5lZWRlZCBjb2Rl
IHRvIGhhbmRsZQorICAgICAgICBib29sZWFuLCBzaW5jZSB0aGF0J3MgbmV2ZXIgcGFzc2VkLgor
ICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuaDogRGl0dG8uCisKKyAgICAgICAgKiBicmlk
Z2UvYy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6Y29udmVydFZhbHVl
VG9OUFZhcmlhbnQpOiBVc2UgSlNWYWx1ZTo6aXMgZnVuY3Rpb25zCisgICAgICAgIGluc3RlYWQg
b2YgSlNWYWx1ZTo6dHlwZSgpLiBSZW1vdmVkIHVubmVlZGVkIGNvZGUgdG8gaGFuZGxlCisgICAg
ICAgICJ1bnNwZWNpZmllZCIuCisKKyAgICAgICAgKiBicmlkZ2Uvam5pL2puaV9pbnN0YW5jZS5j
cHA6CisgICAgICAgIChKYXZhSW5zdGFuY2U6OmRlZmF1bHRWYWx1ZSk6IFRha2UgUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSBhcmd1bWVudAorICAgICAgICBpbnN0ZWFkIG9mIEpTVHlwZSBhcmd1bWVu
dC4gUmVtb3ZlZCB1bm5lZWRlZCBjb2RlIHRvIGhhbmRsZSBib29sZWFuLgorICAgICAgICAqIGJy
aWRnZS9qbmkvam5pX2luc3RhbmNlLmg6IERpdHRvLgorCisgICAgICAgICogYnJpZGdlL2puaS9q
bmlfanNvYmplY3QubW06CisgICAgICAgIChKYXZhSlNPYmplY3Q6OmNvbnZlcnRWYWx1ZVRvSk9i
amVjdCk6IFVzZSBKU1ZhbHVlOjppcyBmdW5jdGlvbnMKKyAgICAgICAgaW5zdGVhZCBvZiBKU1Zh
bHVlOjp0eXBlKCkuCisKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6IFRh
a2UgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBhcmd1bWVudAorICAgICAgICBpbnN0ZWFkIG9mIEpT
VHlwZSBhcmd1bWVudC4gUmVtb3ZlZCB1bnVzZWQgYXJndW1lbnQuCisgICAgICAgICogYnJpZGdl
L29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6Z2V0VmFsdWVP
ZlVuZGVmaW5lZEZpZWxkKTogUmVtb3ZlZCB1bnVzZWQgYXJndW1lbnQuCisgICAgICAgIChPYmpj
SW5zdGFuY2U6OmRlZmF1bHRWYWx1ZSk6IFRha2UgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBhcmd1
bWVudAorICAgICAgICBpbnN0ZWFkIG9mIEpTVHlwZSBhcmd1bWVudC4gUmVtb3ZlZCB1bm5lZWRl
ZCBjb2RlIHRvIGhhbmRsZSBib29sZWFuCisgICAgICAgIGFuZCBhbm90aGVyIGRlYWQgY29kZSBw
YXRoIGZvciB1bmtub3duIHR5cGVzLgorCisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLmg6IFRha2UgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBhcmd1bWVudAorICAgICAgICBpbnN0
ZWFkIG9mIEpTVHlwZSBhcmd1bWVudC4gUmVtb3ZlZCBvdmVycmlkZSBvZiB0eXBlKCkgdGhhdCBj
YXVzZWQKKyAgICAgICAgdGhlIGZhbGxiYWNrIG9iamVjdCB0byByZXR1cm4gIlVuZGVmaW5lZFR5
cGUiIHdoZW4gdGhlcmUgaXMgbm8KKyAgICAgICAgaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdl
YlNjcmlwdDp3aXRoQXJndW1lbnRzOiBtZXRob2QgZGVmaW5lZC4KKyAgICAgICAgVGhhdCBkaWRu
J3QgYWNjb21wbGlzaCBtdWNoLCBzaW5jZSBtb3N0IGNoZWNrcyBmb3IgdW5kZWZpbmVkIGRvbid0
CisgICAgICAgIGV2ZXIgY2FsbCB0eXBlKCkuCisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tOgorICAgICAgICAoT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUp
OiBEaXR0by4KKworICAgICAgICAqIGJyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHA6CisgICAgICAg
IChLSlM6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpkZWZhdWx0VmFsdWUpOiBUYWtlIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUKKyAgICAgICAgYXJndW1lbnQgaW5zdGVhZCBvZiBKU1R5cGUgYXJndW1l
bnQuIFJlbW92ZWQgdW5uZWVkZWQgY29kZSB0byBoYW5kbGUKKyAgICAgICAgYm9vbGVhbi4KKyAg
ICAgICAgKiBicmlkZ2UvcXQvcXRfaW5zdGFuY2UuaDogRGl0dG8uCisKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZS5oOgorICAgICAgICAoS0pTOjpCaW5kaW5nczo6SW5zdGFuY2U6OmdldFZhbHVl
T2ZVbmRlZmluZWRGaWVsZCk6IFJlbW92ZWQKKyAgICAgICAgdW5zZWQgYXJndW1lbnQuCisgICAg
ICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKFJ1bnRpbWVPYmplY3RJ
bXA6OmRlZmF1bHRWYWx1ZSk6IFRha2UgUHJlZmVycmVkUHJpbWl0aXZlVHlwZQorICAgICAgICBh
cmd1bWVudCBpbnN0ZWFkIG9mIEpTVHlwZSBhcmd1bWVudC4KKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9vYmplY3QuaDogRGl0dG8uCisKIDIwMDgtMDgtMTIgIE1paG5lYSBPdmlkZW5pZSAgPG1p
aG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgRml4IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4OTEKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL3J1bnRpbWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9ydW50aW1lLmgJKHJldmlzaW9uIDM1NzAzKQor
KysgV2ViQ29yZS9icmlkZ2UvcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ2xhc3MgKmdldENsYXNzKCkgY29uc3QgPSAwOwog
ICAgIAogICAgIHZpcnR1YWwgSlNWYWx1ZSogZ2V0VmFsdWVPZkZpZWxkKEV4ZWNTdGF0ZSosIGNv
bnN0IEZpZWxkKikgY29uc3Q7Ci0gICAgdmlydHVhbCBKU1ZhbHVlKiBnZXRWYWx1ZU9mVW5kZWZp
bmVkRmllbGQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVHlwZSkgY29uc3QgeyBy
ZXR1cm4ganNVbmRlZmluZWQoKTsgfQorICAgIHZpcnR1YWwgSlNWYWx1ZSogZ2V0VmFsdWVPZlVu
ZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKSBjb25zdCB7IHJldHVy
biBqc1VuZGVmaW5lZCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlT2ZGaWVsZChFeGVj
U3RhdGUqLCBjb25zdCBGaWVsZCosIEpTVmFsdWUqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoKSB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIEpTVmFsdWUqKSB7fQpAQCAtMTIwLDcgKzEyMCw4IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYpIHsgfQogCi0gICAgdmlydHVhbCBKU1ZhbHVlKiBkZWZhdWx0VmFsdWUoRXhl
Y1N0YXRlKiwgSlNUeXBlIGhpbnQpIGNvbnN0ID0gMDsKKyAgICB0eXBlZGVmIEpTVmFsdWU6OlBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUgUHJlZmVycmVkUHJpbWl0aXZlVHlwZTsKKyAgICB2aXJ0dWFs
IEpTVmFsdWUqIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlOjpQcmVmZXJyZWRQcmlt
aXRpdmVUeXBlKSBjb25zdCA9IDA7CiAgICAgCiAgICAgdmlydHVhbCBKU1ZhbHVlKiB2YWx1ZU9m
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QgeyByZXR1cm4ganNTdHJpbmcoZXhlYywgZ2V0Q2xhc3Mo
KS0+bmFtZSgpKTsgfQogICAgIApJbmRleDogV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAkocmV2
aXNpb24gMzU3MDMpCisrKyBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3OSw3ICsxNzksNyBAQCBib29sIFJ1bnRpbWVPYmplY3RJbXA6OmRlbGV0
ZVByb3BlcnR5KEV4CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1KU1ZhbHVlKiBSdW50aW1lT2Jq
ZWN0SW1wOjpkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGUgaGludCkgY29uc3QK
K0pTVmFsdWUqIFJ1bnRpbWVPYmplY3RJbXA6OmRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMs
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkgY29uc3QKIHsKICAgICBpZiAoIWluc3RhbmNl
KQogICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CkluZGV4OiBX
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHJldmlzaW9uIDM1NzAzKQorKysgV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
Kik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgIHZpcnR1YWwgSlNWYWx1ZSogZGVmYXVsdFZh
bHVlKEV4ZWNTdGF0ZSosIEpTVHlwZSBoaW50KSBjb25zdDsKLSAgICB2aXJ0dWFsIEtKUzo6Q2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoS0pTOjpDYWxsRGF0YSYpOworICAgIHZpcnR1YWwgSlNWYWx1ZSog
ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0Owor
ICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOwog
CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKTsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2Mv
Y19pbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNl
LmNwcAkocmV2aXNpb24gMzU3MDMpCisrKyBXZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMTQgKzEyOSwxMiBAQCBKU1ZhbHVlKiBDSW5zdGFuY2U6
Omludm9rZURlZmF1bHRNZXRob2QoCiB9CiAKIAotSlNWYWx1ZSogQ0luc3RhbmNlOjpkZWZhdWx0
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGUgaGludCkgY29uc3QKK0pTVmFsdWUqIENJbnN0
YW5jZTo6ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSBoaW50KSBjb25zdAogewotICAgIGlmIChoaW50ID09IFN0cmluZ1R5cGUpCisgICAgaWYgKGhp
bnQgPT0gSlNWYWx1ZTo6UHJlZmVyU3RyaW5nKQogICAgICAgICByZXR1cm4gc3RyaW5nVmFsdWUo
ZXhlYyk7Ci0gICAgaWYgKGhpbnQgPT0gTnVtYmVyVHlwZSkKKyAgICBpZiAoaGludCA9PSBKU1Zh
bHVlOjpQcmVmZXJOdW1iZXIpCiAgICAgICAgIHJldHVybiBudW1iZXJWYWx1ZShleGVjKTsKLSAg
IGlmIChoaW50ID09IEJvb2xlYW5UeXBlKQotICAgICAgICByZXR1cm4gYm9vbGVhblZhbHVlKCk7
CiAgICAgcmV0dXJuIHZhbHVlT2YoZXhlYyk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2Mv
Y19pbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5o
CShyZXZpc2lvbiAzNTcwMykKKysrIFdlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENsYXNzICpn
ZXRDbGFzcygpIGNvbnN0OwogCiAgICAgdmlydHVhbCBKU1ZhbHVlKiB2YWx1ZU9mKEV4ZWNTdGF0
ZSopIGNvbnN0OwotICAgIHZpcnR1YWwgSlNWYWx1ZSogZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSos
IEpTVHlwZSBoaW50KSBjb25zdDsKKyAgICB2aXJ0dWFsIEpTVmFsdWUqIGRlZmF1bHRWYWx1ZShF
eGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKICAgICAKICAgICB2aXJ0
dWFsIEpTVmFsdWUgKmludm9rZU1ldGhvZCAoRXhlY1N0YXRlICpleGVjLCBjb25zdCBNZXRob2RM
aXN0ICZtZXRob2QsIGNvbnN0IEFyZ0xpc3QgJmFyZ3MpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2Mv
Y191dGlsaXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5j
cHAJKHJldmlzaW9uIDM1NzAzKQorKysgV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NiwyNSArNjYsMjEgQEAgc3RhdGljIFN0cmluZyBjb252ZXJ0VVRG
OFRvVVRGMTZXaXRoTGF0aQogCiAvLyBWYXJpYW50IHZhbHVlIG11c3QgYmUgcmVsZWFzZWQgd2l0
aCBOUFJlbGVhc2VWYXJpYW50VmFsdWUoKQogdm9pZCBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlLCBOUFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAg
ICBKU1R5cGUgdHlwZSA9IHZhbHVlLT50eXBlKCk7Ci0gICAgCit7ICAgIAogICAgIFZPSURfVE9f
TlBWQVJJQU5UKCpyZXN1bHQpOwogCi0gICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSkgeworICAg
IGlmICh2YWx1ZS0+aXNTdHJpbmcoKSkgewogICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWx1
ZS0+dG9TdHJpbmcoZXhlYyk7CiAgICAgICAgIENTdHJpbmcgY3N0cmluZyA9IHVzdHJpbmcuVVRG
OFN0cmluZygpOwogICAgICAgICBOUFN0cmluZyBzdHJpbmcgPSB7IChjb25zdCBOUFVURjgqKWNz
dHJpbmcuY19zdHIoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNzdHJpbmcuc2l6ZSgpKSB9Owog
ICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRXaXRoU3RyaW5nQ29weShyZXN1bHQsICZzdHJp
bmcpOwotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBOdW1iZXJUeXBlKSB7CisgICAgfSBlbHNlIGlm
ICh2YWx1ZS0+aXNOdW1iZXIoKSkgewogICAgICAgICBET1VCTEVfVE9fTlBWQVJJQU5UKHZhbHVl
LT50b051bWJlcihleGVjKSwgKnJlc3VsdCk7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IEJvb2xl
YW5UeXBlKSB7CisgICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNCb29sZWFuKCkpIHsKICAgICAgICAg
Qk9PTEVBTl9UT19OUFZBUklBTlQodmFsdWUtPnRvQm9vbGVhbihleGVjKSwgKnJlc3VsdCk7Ci0g
ICAgfSBlbHNlIGlmICh0eXBlID09IFVuc3BlY2lmaWVkVHlwZSkgewotICAgICAgICBWT0lEX1RP
X05QVkFSSUFOVCgqcmVzdWx0KTsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gTnVsbFR5cGUpIHsK
KyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc051bGwoKSkgewogICAgICAgICBOVUxMX1RPX05QVkFS
SUFOVCgqcmVzdWx0KTsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gT2JqZWN0VHlwZSkgeworICAg
IH0gZWxzZSBpZiAodmFsdWUtPmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVj
dCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odmFsdWUpOwogICAgICAgICBpZiAob2JqZWN0LT5j
bGFzc0luZm8oKSA9PSAmUnVudGltZU9iamVjdEltcDo6c19pbmZvKSB7CiAgICAgICAgICAgICBS
dW50aW1lT2JqZWN0SW1wKiBpbXAgPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0SW1wKj4odmFs
dWUpOwpJbmRleDogV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9pbnN0YW5jZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9pbnN0YW5jZS5jcHAJKHJldmlzaW9uIDM1NzAz
KQorKysgV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgwLDI0ICsyODAsMTkgQEAgSlNWYWx1ZSAqSmF2YUluc3RhbmNlOjppbnZv
a2VNZXRob2QgKEV4ZQogICAgIHJldHVybiByZXN1bHRWYWx1ZTsKIH0KIAotSlNWYWx1ZSogSmF2
YUluc3RhbmNlOjpkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGUgaGludCkgY29u
c3QKK0pTVmFsdWUqIEphdmFJbnN0YW5jZTo6ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KSBjb25zdAogewotICAgIGlmIChoaW50ID09IFN0
cmluZ1R5cGUpCisgICAgaWYgKGhpbnQgPT0gSlNWYWx1ZTo6UHJlZmVyU3RyaW5nKQogICAgICAg
ICByZXR1cm4gc3RyaW5nVmFsdWUoZXhlYyk7Ci0gICAgaWYgKGhpbnQgPT0gTnVtYmVyVHlwZSkK
KyAgICBpZiAoaGludCA9PSBKU1ZhbHVlOjpQcmVmZXJOdW1iZXIpCiAgICAgICAgIHJldHVybiBu
dW1iZXJWYWx1ZShleGVjKTsKLSAgICBpZiAoaGludCA9PSBCb29sZWFuVHlwZSkKKyAgICBKYXZh
Q2xhc3MgKmFDbGFzcyA9IHN0YXRpY19jYXN0PEphdmFDbGFzcyo+KGdldENsYXNzKCkpOworICAg
IGlmIChhQ2xhc3MtPmlzU3RyaW5nQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIHN0cmluZ1ZhbHVl
KGV4ZWMpOworICAgIGlmIChhQ2xhc3MtPmlzTnVtYmVyQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJu
IG51bWJlclZhbHVlKGV4ZWMpOworICAgIGlmIChhQ2xhc3MtPmlzQm9vbGVhbkNsYXNzKCkpCiAg
ICAgICAgIHJldHVybiBib29sZWFuVmFsdWUoKTsKLSAgICBpZiAoaGludCA9PSBVbnNwZWNpZmll
ZFR5cGUpIHsKLSAgICAgICAgSmF2YUNsYXNzICphQ2xhc3MgPSBzdGF0aWNfY2FzdDxKYXZhQ2xh
c3MqPihnZXRDbGFzcygpKTsKLSAgICAgICAgaWYgKGFDbGFzcy0+aXNTdHJpbmdDbGFzcygpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlKGV4ZWMpOwotICAgICAgICBpZiAoYUNsYXNz
LT5pc051bWJlckNsYXNzKCkpCi0gICAgICAgICAgICByZXR1cm4gbnVtYmVyVmFsdWUoZXhlYyk7
Ci0gICAgICAgIGlmIChhQ2xhc3MtPmlzQm9vbGVhbkNsYXNzKCkpCi0gICAgICAgICAgICByZXR1
cm4gYm9vbGVhblZhbHVlKCk7Ci0gICAgfQotICAgIAogICAgIHJldHVybiB2YWx1ZU9mKGV4ZWMp
OwogfQogCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2luc3RhbmNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9pbnN0YW5jZS5oCShyZXZpc2lvbiAzNTcwMykK
KysrIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfaW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDbGFzcyAqZ2V0Q2xhc3MoKSBjb25z
dDsKICAgICAKICAgICB2aXJ0dWFsIEpTVmFsdWUqIHZhbHVlT2YoRXhlY1N0YXRlKikgY29uc3Q7
Ci0gICAgdmlydHVhbCBKU1ZhbHVlKiBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgSlNUeXBlIGhp
bnQpIGNvbnN0OworICAgIHZpcnR1YWwgSlNWYWx1ZSogZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwogCiAgICAgdmlydHVhbCBKU1ZhbHVlKiBp
bnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBNZXRob2RMaXN0JiBtZXRob2QsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpOwogCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2Jq
ZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0J
KHJldmlzaW9uIDM1NzAzKQorKysgV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDkwLDIwICs0OTAsMTcgQEAgam9iamVjdCBKYXZhSlNPYmplY3Q6
OmNvbnZlcnRWYWx1ZVRvSk9iagogICAgIC8vIEphdmEgaW5zdGFuY2UgLT4gSmF2YSBpbnN0YW5j
ZQogICAgIC8vIEV2ZXJ5dGhpbmcgZWxzZSAtPiBKYXZhSlNPYmplY3QKICAgICAKLSAgICBKU1R5
cGUgdHlwZSA9IHZhbHVlLT50eXBlKCk7Ci0gICAgaWYgKHR5cGUgPT0gTnVtYmVyVHlwZSkgewor
ICAgIGlmICh2YWx1ZS0+aXNOdW1iZXIoKSkgewogICAgICAgICBqY2xhc3MgSlNPYmplY3RDbGFz
cyA9IGVudi0+RmluZENsYXNzICgiamF2YS9sYW5nL0RvdWJsZSIpOwogICAgICAgICBqbWV0aG9k
SUQgY29uc3RydWN0b3JJRCA9IGVudi0+R2V0TWV0aG9kSUQgKEpTT2JqZWN0Q2xhc3MsICI8aW5p
dD4iLCAiKEQpViIpOwogICAgICAgICBpZiAoY29uc3RydWN0b3JJRCAhPSBOVUxMKSB7CiAgICAg
ICAgICAgICByZXN1bHQgPSBlbnYtPk5ld09iamVjdCAoSlNPYmplY3RDbGFzcywgY29uc3RydWN0
b3JJRCwgKGpkb3VibGUpdmFsdWUtPnRvTnVtYmVyKGV4ZWMpKTsKICAgICAgICAgfQotICAgIH0K
LSAgICBlbHNlIGlmICh0eXBlID09IFN0cmluZ1R5cGUpIHsKKyAgICB9IGVsc2UgaWYgKHZhbHVl
LT5pc1N0cmluZygpKSB7CiAgICAgICAgIFVTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS0+dG9T
dHJpbmcoZXhlYyk7CiAgICAgICAgIEpOSUVudiAqZW52ID0gZ2V0Sk5JRW52KCk7CiAgICAgICAg
IHJlc3VsdCA9IGVudi0+TmV3U3RyaW5nICgoY29uc3QgamNoYXIgKilzdHJpbmdWYWx1ZS5kYXRh
KCksIHN0cmluZ1ZhbHVlLnNpemUoKSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHR5cGUgPT0gQm9v
bGVhblR5cGUpIHsKKyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc0Jvb2xlYW4oKSkgewogICAgICAg
ICBqY2xhc3MgSlNPYmplY3RDbGFzcyA9IGVudi0+RmluZENsYXNzICgiamF2YS9sYW5nL0Jvb2xl
YW4iKTsKICAgICAgICAgam1ldGhvZElEIGNvbnN0cnVjdG9ySUQgPSBlbnYtPkdldE1ldGhvZElE
IChKU09iamVjdENsYXNzLCAiPGluaXQ+IiwgIihaKVYiKTsKICAgICAgICAgaWYgKGNvbnN0cnVj
dG9ySUQgIT0gTlVMTCkgewpAQCAtNTE0LDcgKzUxMSw3IEBAIGpvYmplY3QgSmF2YUpTT2JqZWN0
Ojpjb252ZXJ0VmFsdWVUb0pPYmoKICAgICAgICAgLy8gQ3JlYXRlIGEgSmF2YUpTT2JqZWN0Lgog
ICAgICAgICBqbG9uZyBuYXRpdmVIYW5kbGU7CiAgICAgICAgIAotICAgICAgICBpZiAodHlwZSA9
PSBPYmplY3RUeXBlKXsKKyAgICAgICAgaWYgKHZhbHVlLT5pc09iamVjdCgpKSB7CiAgICAgICAg
ICAgICBKU09iamVjdCAqaW1wID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2YWx1ZSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIC8vIFdlIGVpdGhlciBoYXZlIGEgd3JhcHBlciBhcm91bmQg
YSBKYXZhIGluc3RhbmNlIG9yIGEgSmF2YVNjcmlwdApJbmRleDogV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2luc3RhbmNlLmgJKHJldmlzaW9uIDM1NzAzKQorKysgV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2luc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgQ2xhc3MgKmdldENsYXNzKCkgY29uc3Q7CiAgICAgICAgIAogICAgIHZpcnR1YWwg
SlNWYWx1ZSogdmFsdWVPZihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUq
IGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBKU1R5cGUgaGludCkgY29uc3Q7CisgICAgdmlydHVh
bCBKU1ZhbHVlKiBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSkgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBKU1ZhbHVlICppbnZva2VNZXRob2QoRXhlY1N0
YXRlICpleGVjLCBjb25zdCBNZXRob2RMaXN0ICZtZXRob2QsIGNvbnN0IEFyZ0xpc3QgJmFyZ3Mp
OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBjb25zdDsK
QEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NldFZh
bHVlT2ZVbmRlZmluZWRGaWVsZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZU9mVW5kZWZp
bmVkRmllbGQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eSwgSlNW
YWx1ZSAqYVZhbHVlKTsKICAgICAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgKmdldFZhbHVlT2ZVbmRl
ZmluZWRGaWVsZChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5LCBK
U1R5cGUgaGludCkgY29uc3Q7CisgICAgdmlydHVhbCBKU1ZhbHVlKiBnZXRWYWx1ZU9mVW5kZWZp
bmVkRmllbGQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpIGNvbnN0Owog
CiAgICAgT2JqZWN0U3RydWN0UHRyIGdldE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIF9pbnN0YW5j
ZS5nZXQoKTsgfQogICAgIApJbmRleDogV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQko
cmV2aXNpb24gMzU3MDMpCisrKyBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIE9iamNJbnN0YW5jZTo6c2V0
VmFsdWVPZlVuZGVmaW5lZEZpCiAgICAgfQogfQogCi1KU1ZhbHVlKiBPYmpjSW5zdGFuY2U6Omdl
dFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5LCBKU1R5cGUpIGNvbnN0CitKU1ZhbHVlKiBPYmpjSW5zdGFuY2U6OmdldFZhbHVl
T2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KSBjb25zdAogewogICAgIEpTVmFsdWUqIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
CkBAIC0zNDMsMjMgKzM0MywxNyBAQCBKU1ZhbHVlKiBPYmpjSW5zdGFuY2U6OmdldFZhbHVlT2ZV
bmRlZmluCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNWYWx1ZSogT2JqY0luc3RhbmNlOjpk
ZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGUgaGludCkgY29uc3QKK0pTVmFsdWUq
IE9iamNJbnN0YW5jZTo6ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSBoaW50KSBjb25zdAogewotICAgIHN3aXRjaCAoaGludCkgewotICAgIGNhc2Ug
U3RyaW5nVHlwZToKKyAgICBpZiAoaGludCA9PSBKU1ZhbHVlOjpQcmVmZXJTdHJpbmcpCiAgICAg
ICAgIHJldHVybiBzdHJpbmdWYWx1ZShleGVjKTsKLSAgICBjYXNlIE51bWJlclR5cGU6CisgICAg
aWYgKGhpbnQgPT0gSlNWYWx1ZTo6UHJlZmVyTnVtYmVyKQogICAgICAgICByZXR1cm4gbnVtYmVy
VmFsdWUoZXhlYyk7Ci0gICAgY2FzZSBCb29sZWFuVHlwZToKLSAgICAgICAgcmV0dXJuIGJvb2xl
YW5WYWx1ZSgpOwotICAgIGNhc2UgVW5zcGVjaWZpZWRUeXBlOgotICAgICAgICBpZiAoW19pbnN0
YW5jZS5nZXQoKSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAg
cmV0dXJuIHN0cmluZ1ZhbHVlKGV4ZWMpOwotICAgICAgICBpZiAoW19pbnN0YW5jZS5nZXQoKSBp
c0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQotICAgICAgICAgICAgcmV0dXJuIG51bWJl
clZhbHVlKGV4ZWMpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiB2YWx1ZU9mKGV4ZWMp
OwotICAgIH0KKyAgICBpZiAoW19pbnN0YW5jZS5nZXQoKSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKQorICAgICAgICByZXR1cm4gc3RyaW5nVmFsdWUoZXhlYyk7CisgICAgaWYgKFtf
aW5zdGFuY2UuZ2V0KCkgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAg
cmV0dXJuIG51bWJlclZhbHVlKGV4ZWMpOworICAgIHJldHVybiB2YWx1ZU9mKGV4ZWMpOwogfQog
CiBKU1ZhbHVlKiBPYmpjSW5zdGFuY2U6OnN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkocmV2aXNpb24gMzU3MDMpCisr
KyBXZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDUsOSArMTA1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSopOwogICAgIHZpcnR1YWwg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
UHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAg
ICB2aXJ0dWFsIEpTVmFsdWUqIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBKU1R5cGUgaGludCkg
Y29uc3Q7CisgICAgdmlydHVhbCBKU1ZhbHVlKiBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEpTVHlwZSB0eXBlKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAm
aW5mbzsgfQpJbmRleDogV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDM1
NzAzKQorKysgV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIwOSwxNiArMjA5LDYgQEAgdm9pZCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnB1dChF
eGVjU3RhdAogewogfQogCi1KU1R5cGUgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjp0eXBlKCkgY29u
c3QKLXsKLSAgICBpZCB0YXJnZXRPYmplY3QgPSBfaW5zdGFuY2UtPmdldE9iamVjdCgpOwotICAg
IAotICAgIGlmIChbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52
b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOildKQotICAgICAg
ICByZXR1cm4gT2JqZWN0VHlwZTsKLSAgICAKLSAgICByZXR1cm4gVW5kZWZpbmVkVHlwZTsKLX0K
LQogc3RhdGljIEpTVmFsdWUqIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogZnVuY3Rpb24sIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYg
YXJncykKIHsKICAgICBpZiAoIXRoaXNWYWx1ZS0+aXNPYmplY3QoJlJ1bnRpbWVPYmplY3RJbXA6
OnNfaW5mbykpCkBAIC0yNjcsOSArMjU3LDkgQEAgYm9vbCBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OmRlbGV0ZVByb3BlcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSlNWYWx1ZSogT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wOjpkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGUgaGludCkg
Y29uc3QKK0pTVmFsdWUqIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4g
X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgX2l0ZW0sIGhpbnQpOwor
ICAgIHJldHVybiBfaW5zdGFuY2UtPmdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChleGVjLCBfaXRl
bSk7CiB9CiAKIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRl
ICopIGNvbnN0CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAzNTcw
MykKKysrIFdlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjg1LDE0ICsyODUsMTIgQEAgSlNWYWx1ZSogUXRJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1l
dGhvZAogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsICJub3QgYSBm
dW5jdGlvbiIpOwogfQogCi1KU1ZhbHVlKiBRdEluc3RhbmNlOjpkZWZhdWx0VmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBKU1R5cGUgaGludCkgY29uc3QKK0pTVmFsdWUqIFF0SW5zdGFuY2U6OmRlZmF1
bHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkgY29u
c3QKIHsKLSAgICBpZiAoaGludCA9PSBTdHJpbmdUeXBlKQorICAgIGlmIChoaW50ID09IFByZWZl
clN0cmluZykKICAgICAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlKGV4ZWMpOwotICAgIGlmIChoaW50
ID09IE51bWJlclR5cGUpCisgICAgaWYgKGhpbnQgPT0gUHJlZmVyTnVtYmVyKQogICAgICAgICBy
ZXR1cm4gbnVtYmVyVmFsdWUoZXhlYyk7Ci0gICAgaWYgKGhpbnQgPT0gQm9vbGVhblR5cGUpCi0g
ICAgICAgIHJldHVybiBib29sZWFuVmFsdWUoKTsKICAgICByZXR1cm4gdmFsdWVPZihleGVjKTsK
IH0KIApJbmRleDogV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCShyZXZpc2lvbiAzNTcwMykKKysrIFdl
YkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmQoKTsKIAogICAgIHZpcnR1YWwgSlNW
YWx1ZSogdmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OwotICAgIHZpcnR1YWwgSlNWYWx1
ZSogZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNUeXBlIGhpbnQpIGNvbnN0OworICAg
IHZpcnR1YWwgSlNWYWx1ZSogZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUpIGNvbnN0OwogCiAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxs
RGF0YSYpOwogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMzU3MDMpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA4LTA4LTEyICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAtIGVsaW1pbmF0ZSBKU1ZhbHVlOjp0eXBlKCkKKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKGFlRGVzY0Zyb21KU1ZhbHVlKTogUmV3cml0ZSB0
byB1c2UgdGhlIEpTVmFsdWU6OmlzIGZ1bmN0aW9ucyBpbnN0ZWFkCisgICAgICAgIG9mIGEgc3dp
dGNoIG9uIEpTVmFsdWU6OnR5cGUoKS4KKwogMjAwOC0wOC0xMiAgVGltb3RoeSBIYXRjaGVyICA8
dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVubmVlZGVkIGhlYWRlciBpbXBv
cnRzIGZyb20gc29tZSBXZWIgSW5zcGVjdG9yIGZpbGVzLgpJbmRleDogV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHJldmlzaW9uIDM1NzAzKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMyMDAsNzMgKzMyMDAsNTYgQEAgc3RhdGljIFdlYkZyYW1lICppbmNy
ZW1lbnRGcmFtZShXZWJGcmFtZQogc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVz
Y0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSoganNWYWx1ZSkKIHsKICAgICBO
U0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2MgPSAwOwotICAgIHN3aXRjaCAoanNWYWx1ZS0+
dHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgQm9vbGVhblR5cGU6Ci0gICAgICAgICAgICBhZURlc2Mg
PSBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlwdG9yV2l0aEJvb2xlYW46anNWYWx1ZS0+
Z2V0Qm9vbGVhbigpXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0cmluZ1R5
cGU6Ci0gICAgICAgICAgICBhZURlc2MgPSBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlw
dG9yV2l0aFN0cmluZzpTdHJpbmcoanNWYWx1ZS0+Z2V0U3RyaW5nKCkpXTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE51bWJlclR5cGU6IHsKLSAgICAgICAgICAgIGRvdWJsZSB2
YWx1ZSA9IGpzVmFsdWUtPmdldE51bWJlcigpOwotICAgICAgICAgICAgaW50IGludFZhbHVlID0g
KGludCl2YWx1ZTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkKLSAgICAgICAg
ICAgICAgICBhZURlc2MgPSBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlwdG9yV2l0aERl
c2NyaXB0b3JUeXBlOnR5cGVTSW50MzIgYnl0ZXM6JmludFZhbHVlIGxlbmd0aDpzaXplb2YoaW50
VmFsdWUpXTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhZURlc2MgPSBbTlNB
cHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlwdG9yV2l0aERlc2NyaXB0b3JUeXBlOnR5cGVJRUVF
NjRCaXRGbG9hdGluZ1BvaW50IGJ5dGVzOiZ2YWx1ZSBsZW5ndGg6c2l6ZW9mKHZhbHVlKV07Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE9iamVjdFR5cGU6IHsK
LSAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc1ZhbHVlLT5nZXRPYmplY3QoKTsKLSAg
ICAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzKCZEYXRlSW5zdGFuY2U6OmluZm8pKSB7Ci0g
ICAgICAgICAgICAgICAgRGF0ZUluc3RhbmNlKiBkYXRlID0gc3RhdGljX2Nhc3Q8RGF0ZUluc3Rh
bmNlKj4ob2JqZWN0KTsKLSAgICAgICAgICAgICAgICBkb3VibGUgbXMgPSAwOwotICAgICAgICAg
ICAgICAgIGludCB0ek9mZnNldCA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGUtPmdldFRp
bWUobXMsIHR6T2Zmc2V0KSkgewotICAgICAgICAgICAgICAgICAgICBDRkFic29sdXRlVGltZSB1
dGNTZWNvbmRzID0gbXMgLyAxMDAwIC0ga0NGQWJzb2x1dGVUaW1lSW50ZXJ2YWxTaW5jZTE5NzA7
Ci0gICAgICAgICAgICAgICAgICAgIExvbmdEYXRlVGltZSBsZHQ7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChub0VyciA9PSBVQ0NvbnZlcnRDRkFic29sdXRlVGltZVRvTG9uZ0RhdGVUaW1lKHV0
Y1NlY29uZHMsICZsZHQpKQotICAgICAgICAgICAgICAgICAgICAgICAgYWVEZXNjID0gW05TQXBw
bGVFdmVudERlc2NyaXB0b3IgZGVzY3JpcHRvcldpdGhEZXNjcmlwdG9yVHlwZTp0eXBlTG9uZ0Rh
dGVUaW1lIGJ5dGVzOiZsZHQgbGVuZ3RoOnNpemVvZihsZHQpXTsKLSAgICAgICAgICAgICAgICB9
CisgICAgaWYgKGpzVmFsdWUtPmlzQm9vbGVhbigpKQorICAgICAgICByZXR1cm4gW05TQXBwbGVF
dmVudERlc2NyaXB0b3IgZGVzY3JpcHRvcldpdGhCb29sZWFuOmpzVmFsdWUtPmdldEJvb2xlYW4o
KV07CisgICAgaWYgKGpzVmFsdWUtPmlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBbTlNBcHBs
ZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlwdG9yV2l0aFN0cmluZzpTdHJpbmcoanNWYWx1ZS0+Z2V0
U3RyaW5nKCkpXTsKKyAgICBpZiAoanNWYWx1ZS0+aXNOdW1iZXIoKSkgeworICAgICAgICBkb3Vi
bGUgdmFsdWUgPSBqc1ZhbHVlLT5nZXROdW1iZXIoKTsKKyAgICAgICAgaW50IGludFZhbHVlID0g
dmFsdWU7CisgICAgICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVy
biBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlwdG9yV2l0aERlc2NyaXB0b3JUeXBlOnR5
cGVTSW50MzIgYnl0ZXM6JmludFZhbHVlIGxlbmd0aDpzaXplb2YoaW50VmFsdWUpXTsKKyAgICAg
ICAgcmV0dXJuIFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRoRGVzY3JpcHRv
clR5cGU6dHlwZUlFRUU2NEJpdEZsb2F0aW5nUG9pbnQgYnl0ZXM6JnZhbHVlIGxlbmd0aDpzaXpl
b2YodmFsdWUpXTsKKyAgICB9CisgICAgaWYgKGpzVmFsdWUtPmlzT2JqZWN0KCkpIHsKKyAgICAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGpzVmFsdWUtPmdldE9iamVjdCgpOworICAgICAgICBpZiAo
b2JqZWN0LT5pbmhlcml0cygmRGF0ZUluc3RhbmNlOjppbmZvKSkgeworICAgICAgICAgICAgRGF0
ZUluc3RhbmNlKiBkYXRlID0gc3RhdGljX2Nhc3Q8RGF0ZUluc3RhbmNlKj4ob2JqZWN0KTsKKyAg
ICAgICAgICAgIGRvdWJsZSBtcyA9IDA7CisgICAgICAgICAgICBpbnQgdHpPZmZzZXQgPSAwOwor
ICAgICAgICAgICAgaWYgKGRhdGUtPmdldFRpbWUobXMsIHR6T2Zmc2V0KSkgeworICAgICAgICAg
ICAgICAgIENGQWJzb2x1dGVUaW1lIHV0Y1NlY29uZHMgPSBtcyAvIDEwMDAgLSBrQ0ZBYnNvbHV0
ZVRpbWVJbnRlcnZhbFNpbmNlMTk3MDsKKyAgICAgICAgICAgICAgICBMb25nRGF0ZVRpbWUgbGR0
OworICAgICAgICAgICAgICAgIGlmIChub0VyciA9PSBVQ0NvbnZlcnRDRkFic29sdXRlVGltZVRv
TG9uZ0RhdGVUaW1lKHV0Y1NlY29uZHMsICZsZHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgZGVzY3JpcHRvcldpdGhEZXNjcmlwdG9yVHlwZTp0
eXBlTG9uZ0RhdGVUaW1lIGJ5dGVzOiZsZHQgbGVuZ3RoOnNpemVvZihsZHQpXTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6Omlu
Zm8pKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIEhhc2hTZXQ8SlNPYmplY3QqPiB2aXNpdGVk
RWxlbXM7Ci0gICAgICAgICAgICAgICAgaWYgKCF2aXNpdGVkRWxlbXMuY29udGFpbnMob2JqZWN0
KSkgewotICAgICAgICAgICAgICAgICAgICB2aXNpdGVkRWxlbXMuYWRkKG9iamVjdCk7Ci0gICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IHN0
YXRpY19jYXN0PEpTQXJyYXkqPihvYmplY3QpOwotICAgICAgICAgICAgICAgICAgICBhZURlc2Mg
PSBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBsaXN0RGVzY3JpcHRvcl07Ci0gICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIG51bUl0ZW1zID0gYXJyYXktPmdldExlbmd0aCgpOwotICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtSXRlbXM7ICsraSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFthZURlc2MgaW5zZXJ0RGVzY3JpcHRvcjphZURlc2NGcm9tSlNW
YWx1ZShleGVjLCBhcnJheS0+Z2V0KGV4ZWMsIGkpKSBhdEluZGV4OjBdOwotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRlZEVsZW1zLnJlbW92ZShvYmplY3Qp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghYWVE
ZXNjKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSogcHJpbWl0aXZlID0gb2JqZWN0LT50b1By
aW1pdGl2ZShleGVjKTsKLSAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIG51bGxEZXNjcmlwdG9y
XTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFlRGVzY0Zyb21K
U1ZhbHVlKGV4ZWMsIHByaW1pdGl2ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAob2Jq
ZWN0LT5pbmhlcml0cygmSlNBcnJheTo6aW5mbykpIHsKKyAgICAgICAgICAgIHN0YXRpYyBIYXNo
U2V0PEpTT2JqZWN0Kj4gdmlzaXRlZEVsZW1zOworICAgICAgICAgICAgaWYgKCF2aXNpdGVkRWxl
bXMuY29udGFpbnMob2JqZWN0KSkgeworICAgICAgICAgICAgICAgIHZpc2l0ZWRFbGVtcy5hZGQo
b2JqZWN0KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBKU0FycmF5KiBhcnJh
eSA9IHN0YXRpY19jYXN0PEpTQXJyYXkqPihvYmplY3QpOworICAgICAgICAgICAgICAgIGFlRGVz
YyA9IFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGxpc3REZXNjcmlwdG9yXTsKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBudW1JdGVtcyA9IGFycmF5LT5nZXRMZW5ndGgoKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtSXRlbXM7ICsraSkKKyAgICAgICAgICAg
ICAgICAgICAgW2FlRGVzYyBpbnNlcnREZXNjcmlwdG9yOmFlRGVzY0Zyb21KU1ZhbHVlKGV4ZWMs
IGFycmF5LT5nZXQoZXhlYywgaSkpIGF0SW5kZXg6MF07CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgdmlzaXRlZEVsZW1zLnJlbW92ZShvYmplY3QpOworICAgICAgICAgICAgICAg
IHJldHVybiBhZURlc2M7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQotICAgICAgICBjYXNlIFVuZGVmaW5lZFR5cGU6Ci0gICAgICAgICAgICBhZURlc2MgPSBb
TlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlwdG9yV2l0aFR5cGVDb2RlOmNNaXNzaW5nVmFs
dWVdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBM
T0dfRVJST1IoIlVua25vd24gSmF2YVNjcmlwdCB0eXBlOiAlZCIsIGpzVmFsdWUtPnR5cGUoKSk7
Ci0gICAgICAgICAgICAvLyBubyBicmVhazsKLSAgICAgICAgY2FzZSBVbnNwZWNpZmllZFR5cGU6
Ci0gICAgICAgIGNhc2UgTnVsbFR5cGU6Ci0gICAgICAgIGNhc2UgR2V0dGVyU2V0dGVyVHlwZToK
LSAgICAgICAgICAgIGFlRGVzYyA9IFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIG51bGxEZXNjcmlw
dG9yXTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBKU1ZhbHVlKiBwcmltaXRpdmUgPSBv
YmplY3QtPnRvUHJpbWl0aXZlKGV4ZWMpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBy
ZXR1cm4gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgbnVsbERlc2NyaXB0b3JdOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBhZURlc2NGcm9tSlNWYWx1ZShleGVjLCBwcmltaXRpdmUpOwogICAg
IH0KLSAgICAKLSAgICByZXR1cm4gYWVEZXNjOworICAgIGlmIChqc1ZhbHVlLT5pc1VuZGVmaW5l
ZCgpKQorICAgICAgICByZXR1cm4gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgZGVzY3JpcHRvcldp
dGhUeXBlQ29kZTpjTWlzc2luZ1ZhbHVlXTsKKyAgICBBU1NFUlQoanNWYWx1ZS0+aXNOdWxsKCkp
OworICAgIHJldHVybiBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBudWxsRGVzY3JpcHRvcl07CiB9
CiAKIC0gKE5TQXBwbGVFdmVudERlc2NyaXB0b3IgKilhZURlc2NCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0RnJvbVN0cmluZzooTlNTdHJpbmcgKilzY3JpcHQKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM1NzAz
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMDgtMDgtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gYWRkZWQgYSB0ZXN0IHNp
bmNlIEkgaGFkIHRvIHJld3JpdGUgdGhlID09IGFuZCA9PT0gb3BlcmF0b3JzCisKKyAgICAgICAg
KiBmYXN0L2pzL2VxdWFsaXR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9q
cy9lcXVhbGl0eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9lcXVh
bGl0eS5qczogQWRkZWQuCisKIDIwMDgtMDgtMTIgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1l
cm1hbm5Aa2RlLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9TZWxlY3RvckFQSS9pZC1mYXN0cGF0aC1hbG1vc3Qtc3RyaWN0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vU2VsZWN0b3JBUEkvaWQtZmFzdHBhdGgt
YWxtb3N0LXN0cmljdC5odG1sCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1NlbGVjdG9yQVBJL2lkLWZhc3RwYXRoLWFsbW9zdC1zdHJpY3QuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQg
SFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9s
b29zZS5kdGQiPgorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgogPGh0bWw+CiA8aGVhZD4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L1NlbGVjdG9yQVBJL2lkLWZhc3RwYXRoLXN0cmljdC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL2lkLWZhc3RwYXRoLXN0cmljdC5odG1sCShyZXZp
c2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL2lkLWZhc3Rw
YXRoLXN0cmljdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNCBAQAotPCFET0NUWVBF
IGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgotICAgImh0dHA6Ly93d3cu
dzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvZXF1YWxpdHktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvZXF1YWxpdHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9lcXVhbGl0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDAxIEBACitUZXN0IGZvciBlcXVhbGl0eSBvZiBtYW55IGNvbWJpbmF0aW9ucyB0
eXBlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgMCA9PSAwIGlzIHRy
dWUKK1BBU1MgMCA9PSAxIGlzIGZhbHNlCitQQVNTIDAgPT0gMC4xIGlzIGZhbHNlCitQQVNTIDAg
PT0gLTAgaXMgdHJ1ZQorUEFTUyAwID09ICIwIiBpcyB0cnVlCitQQVNTIDAgPT0gIjEiIGlzIGZh
bHNlCitQQVNTIDAgPT0gIjAuMSIgaXMgZmFsc2UKK1BBU1MgMCA9PSAiLTAiIGlzIHRydWUKK1BB
U1MgMCA9PSBudWxsIGlzIGZhbHNlCitQQVNTIDAgPT0gdW5kZWZpbmVkIGlzIGZhbHNlCitQQVNT
IDAgPT0gZmFsc2UgaXMgdHJ1ZQorUEFTUyAwID09IHRydWUgaXMgZmFsc2UKK1BBU1MgMCA9PSBu
ZXcgU3RyaW5nKCIwIikgaXMgdHJ1ZQorUEFTUyAwID09IG5ldyBPYmplY3QgaXMgZmFsc2UKK1BB
U1MgMSA9PSAwIGlzIGZhbHNlCitQQVNTIDEgPT0gMSBpcyB0cnVlCitQQVNTIDEgPT0gMC4xIGlz
IGZhbHNlCitQQVNTIDEgPT0gLTAgaXMgZmFsc2UKK1BBU1MgMSA9PSAiMCIgaXMgZmFsc2UKK1BB
U1MgMSA9PSAiMSIgaXMgdHJ1ZQorUEFTUyAxID09ICIwLjEiIGlzIGZhbHNlCitQQVNTIDEgPT0g
Ii0wIiBpcyBmYWxzZQorUEFTUyAxID09IG51bGwgaXMgZmFsc2UKK1BBU1MgMSA9PSB1bmRlZmlu
ZWQgaXMgZmFsc2UKK1BBU1MgMSA9PSBmYWxzZSBpcyBmYWxzZQorUEFTUyAxID09IHRydWUgaXMg
dHJ1ZQorUEFTUyAxID09IG5ldyBTdHJpbmcoIjAiKSBpcyBmYWxzZQorUEFTUyAxID09IG5ldyBP
YmplY3QgaXMgZmFsc2UKK1BBU1MgMC4xID09IDAgaXMgZmFsc2UKK1BBU1MgMC4xID09IDEgaXMg
ZmFsc2UKK1BBU1MgMC4xID09IDAuMSBpcyB0cnVlCitQQVNTIDAuMSA9PSAtMCBpcyBmYWxzZQor
UEFTUyAwLjEgPT0gIjAiIGlzIGZhbHNlCitQQVNTIDAuMSA9PSAiMSIgaXMgZmFsc2UKK1BBU1Mg
MC4xID09ICIwLjEiIGlzIHRydWUKK1BBU1MgMC4xID09ICItMCIgaXMgZmFsc2UKK1BBU1MgMC4x
ID09IG51bGwgaXMgZmFsc2UKK1BBU1MgMC4xID09IHVuZGVmaW5lZCBpcyBmYWxzZQorUEFTUyAw
LjEgPT0gZmFsc2UgaXMgZmFsc2UKK1BBU1MgMC4xID09IHRydWUgaXMgZmFsc2UKK1BBU1MgMC4x
ID09IG5ldyBTdHJpbmcoIjAiKSBpcyBmYWxzZQorUEFTUyAwLjEgPT0gbmV3IE9iamVjdCBpcyBm
YWxzZQorUEFTUyAtMCA9PSAwIGlzIHRydWUKK1BBU1MgLTAgPT0gMSBpcyBmYWxzZQorUEFTUyAt
MCA9PSAwLjEgaXMgZmFsc2UKK1BBU1MgLTAgPT0gLTAgaXMgdHJ1ZQorUEFTUyAtMCA9PSAiMCIg
aXMgdHJ1ZQorUEFTUyAtMCA9PSAiMSIgaXMgZmFsc2UKK1BBU1MgLTAgPT0gIjAuMSIgaXMgZmFs
c2UKK1BBU1MgLTAgPT0gIi0wIiBpcyB0cnVlCitQQVNTIC0wID09IG51bGwgaXMgZmFsc2UKK1BB
U1MgLTAgPT0gdW5kZWZpbmVkIGlzIGZhbHNlCitQQVNTIC0wID09IGZhbHNlIGlzIHRydWUKK1BB
U1MgLTAgPT0gdHJ1ZSBpcyBmYWxzZQorUEFTUyAtMCA9PSBuZXcgU3RyaW5nKCIwIikgaXMgdHJ1
ZQorUEFTUyAtMCA9PSBuZXcgT2JqZWN0IGlzIGZhbHNlCitQQVNTICIwIiA9PSAwIGlzIHRydWUK
K1BBU1MgIjAiID09IDEgaXMgZmFsc2UKK1BBU1MgIjAiID09IDAuMSBpcyBmYWxzZQorUEFTUyAi
MCIgPT0gLTAgaXMgdHJ1ZQorUEFTUyAiMCIgPT0gIjAiIGlzIHRydWUKK1BBU1MgIjAiID09ICIx
IiBpcyBmYWxzZQorUEFTUyAiMCIgPT0gIjAuMSIgaXMgZmFsc2UKK1BBU1MgIjAiID09ICItMCIg
aXMgZmFsc2UKK1BBU1MgIjAiID09IG51bGwgaXMgZmFsc2UKK1BBU1MgIjAiID09IHVuZGVmaW5l
ZCBpcyBmYWxzZQorUEFTUyAiMCIgPT0gZmFsc2UgaXMgdHJ1ZQorUEFTUyAiMCIgPT0gdHJ1ZSBp
cyBmYWxzZQorUEFTUyAiMCIgPT0gbmV3IFN0cmluZygiMCIpIGlzIHRydWUKK1BBU1MgIjAiID09
IG5ldyBPYmplY3QgaXMgZmFsc2UKK1BBU1MgIjEiID09IDAgaXMgZmFsc2UKK1BBU1MgIjEiID09
IDEgaXMgdHJ1ZQorUEFTUyAiMSIgPT0gMC4xIGlzIGZhbHNlCitQQVNTICIxIiA9PSAtMCBpcyBm
YWxzZQorUEFTUyAiMSIgPT0gIjAiIGlzIGZhbHNlCitQQVNTICIxIiA9PSAiMSIgaXMgdHJ1ZQor
UEFTUyAiMSIgPT0gIjAuMSIgaXMgZmFsc2UKK1BBU1MgIjEiID09ICItMCIgaXMgZmFsc2UKK1BB
U1MgIjEiID09IG51bGwgaXMgZmFsc2UKK1BBU1MgIjEiID09IHVuZGVmaW5lZCBpcyBmYWxzZQor
UEFTUyAiMSIgPT0gZmFsc2UgaXMgZmFsc2UKK1BBU1MgIjEiID09IHRydWUgaXMgdHJ1ZQorUEFT
UyAiMSIgPT0gbmV3IFN0cmluZygiMCIpIGlzIGZhbHNlCitQQVNTICIxIiA9PSBuZXcgT2JqZWN0
IGlzIGZhbHNlCitQQVNTICIwLjEiID09IDAgaXMgZmFsc2UKK1BBU1MgIjAuMSIgPT0gMSBpcyBm
YWxzZQorUEFTUyAiMC4xIiA9PSAwLjEgaXMgdHJ1ZQorUEFTUyAiMC4xIiA9PSAtMCBpcyBmYWxz
ZQorUEFTUyAiMC4xIiA9PSAiMCIgaXMgZmFsc2UKK1BBU1MgIjAuMSIgPT0gIjEiIGlzIGZhbHNl
CitQQVNTICIwLjEiID09ICIwLjEiIGlzIHRydWUKK1BBU1MgIjAuMSIgPT0gIi0wIiBpcyBmYWxz
ZQorUEFTUyAiMC4xIiA9PSBudWxsIGlzIGZhbHNlCitQQVNTICIwLjEiID09IHVuZGVmaW5lZCBp
cyBmYWxzZQorUEFTUyAiMC4xIiA9PSBmYWxzZSBpcyBmYWxzZQorUEFTUyAiMC4xIiA9PSB0cnVl
IGlzIGZhbHNlCitQQVNTICIwLjEiID09IG5ldyBTdHJpbmcoIjAiKSBpcyBmYWxzZQorUEFTUyAi
MC4xIiA9PSBuZXcgT2JqZWN0IGlzIGZhbHNlCitQQVNTICItMCIgPT0gMCBpcyB0cnVlCitQQVNT
ICItMCIgPT0gMSBpcyBmYWxzZQorUEFTUyAiLTAiID09IDAuMSBpcyBmYWxzZQorUEFTUyAiLTAi
ID09IC0wIGlzIHRydWUKK1BBU1MgIi0wIiA9PSAiMCIgaXMgZmFsc2UKK1BBU1MgIi0wIiA9PSAi
MSIgaXMgZmFsc2UKK1BBU1MgIi0wIiA9PSAiMC4xIiBpcyBmYWxzZQorUEFTUyAiLTAiID09ICIt
MCIgaXMgdHJ1ZQorUEFTUyAiLTAiID09IG51bGwgaXMgZmFsc2UKK1BBU1MgIi0wIiA9PSB1bmRl
ZmluZWQgaXMgZmFsc2UKK1BBU1MgIi0wIiA9PSBmYWxzZSBpcyB0cnVlCitQQVNTICItMCIgPT0g
dHJ1ZSBpcyBmYWxzZQorUEFTUyAiLTAiID09IG5ldyBTdHJpbmcoIjAiKSBpcyBmYWxzZQorUEFT
UyAiLTAiID09IG5ldyBPYmplY3QgaXMgZmFsc2UKK1BBU1MgbnVsbCA9PSAwIGlzIGZhbHNlCitQ
QVNTIG51bGwgPT0gMSBpcyBmYWxzZQorUEFTUyBudWxsID09IDAuMSBpcyBmYWxzZQorUEFTUyBu
dWxsID09IC0wIGlzIGZhbHNlCitQQVNTIG51bGwgPT0gIjAiIGlzIGZhbHNlCitQQVNTIG51bGwg
PT0gIjEiIGlzIGZhbHNlCitQQVNTIG51bGwgPT0gIjAuMSIgaXMgZmFsc2UKK1BBU1MgbnVsbCA9
PSAiLTAiIGlzIGZhbHNlCitQQVNTIG51bGwgPT0gbnVsbCBpcyB0cnVlCitQQVNTIG51bGwgPT0g
dW5kZWZpbmVkIGlzIHRydWUKK1BBU1MgbnVsbCA9PSBmYWxzZSBpcyBmYWxzZQorUEFTUyBudWxs
ID09IHRydWUgaXMgZmFsc2UKK1BBU1MgbnVsbCA9PSBuZXcgU3RyaW5nKCIwIikgaXMgZmFsc2UK
K1BBU1MgbnVsbCA9PSBuZXcgT2JqZWN0IGlzIGZhbHNlCitQQVNTIHVuZGVmaW5lZCA9PSAwIGlz
IGZhbHNlCitQQVNTIHVuZGVmaW5lZCA9PSAxIGlzIGZhbHNlCitQQVNTIHVuZGVmaW5lZCA9PSAw
LjEgaXMgZmFsc2UKK1BBU1MgdW5kZWZpbmVkID09IC0wIGlzIGZhbHNlCitQQVNTIHVuZGVmaW5l
ZCA9PSAiMCIgaXMgZmFsc2UKK1BBU1MgdW5kZWZpbmVkID09ICIxIiBpcyBmYWxzZQorUEFTUyB1
bmRlZmluZWQgPT0gIjAuMSIgaXMgZmFsc2UKK1BBU1MgdW5kZWZpbmVkID09ICItMCIgaXMgZmFs
c2UKK1BBU1MgdW5kZWZpbmVkID09IG51bGwgaXMgdHJ1ZQorUEFTUyB1bmRlZmluZWQgPT0gdW5k
ZWZpbmVkIGlzIHRydWUKK1BBU1MgdW5kZWZpbmVkID09IGZhbHNlIGlzIGZhbHNlCitQQVNTIHVu
ZGVmaW5lZCA9PSB0cnVlIGlzIGZhbHNlCitQQVNTIHVuZGVmaW5lZCA9PSBuZXcgU3RyaW5nKCIw
IikgaXMgZmFsc2UKK1BBU1MgdW5kZWZpbmVkID09IG5ldyBPYmplY3QgaXMgZmFsc2UKK1BBU1Mg
ZmFsc2UgPT0gMCBpcyB0cnVlCitQQVNTIGZhbHNlID09IDEgaXMgZmFsc2UKK1BBU1MgZmFsc2Ug
PT0gMC4xIGlzIGZhbHNlCitQQVNTIGZhbHNlID09IC0wIGlzIHRydWUKK1BBU1MgZmFsc2UgPT0g
IjAiIGlzIHRydWUKK1BBU1MgZmFsc2UgPT0gIjEiIGlzIGZhbHNlCitQQVNTIGZhbHNlID09ICIw
LjEiIGlzIGZhbHNlCitQQVNTIGZhbHNlID09ICItMCIgaXMgdHJ1ZQorUEFTUyBmYWxzZSA9PSBu
dWxsIGlzIGZhbHNlCitQQVNTIGZhbHNlID09IHVuZGVmaW5lZCBpcyBmYWxzZQorUEFTUyBmYWxz
ZSA9PSBmYWxzZSBpcyB0cnVlCitQQVNTIGZhbHNlID09IHRydWUgaXMgZmFsc2UKK1BBU1MgZmFs
c2UgPT0gbmV3IFN0cmluZygiMCIpIGlzIHRydWUKK1BBU1MgZmFsc2UgPT0gbmV3IE9iamVjdCBp
cyBmYWxzZQorUEFTUyB0cnVlID09IDAgaXMgZmFsc2UKK1BBU1MgdHJ1ZSA9PSAxIGlzIHRydWUK
K1BBU1MgdHJ1ZSA9PSAwLjEgaXMgZmFsc2UKK1BBU1MgdHJ1ZSA9PSAtMCBpcyBmYWxzZQorUEFT
UyB0cnVlID09ICIwIiBpcyBmYWxzZQorUEFTUyB0cnVlID09ICIxIiBpcyB0cnVlCitQQVNTIHRy
dWUgPT0gIjAuMSIgaXMgZmFsc2UKK1BBU1MgdHJ1ZSA9PSAiLTAiIGlzIGZhbHNlCitQQVNTIHRy
dWUgPT0gbnVsbCBpcyBmYWxzZQorUEFTUyB0cnVlID09IHVuZGVmaW5lZCBpcyBmYWxzZQorUEFT
UyB0cnVlID09IGZhbHNlIGlzIGZhbHNlCitQQVNTIHRydWUgPT0gdHJ1ZSBpcyB0cnVlCitQQVNT
IHRydWUgPT0gbmV3IFN0cmluZygiMCIpIGlzIGZhbHNlCitQQVNTIHRydWUgPT0gbmV3IE9iamVj
dCBpcyBmYWxzZQorUEFTUyBuZXcgU3RyaW5nKCIwIikgPT0gMCBpcyB0cnVlCitQQVNTIG5ldyBT
dHJpbmcoIjAiKSA9PSAxIGlzIGZhbHNlCitQQVNTIG5ldyBTdHJpbmcoIjAiKSA9PSAwLjEgaXMg
ZmFsc2UKK1BBU1MgbmV3IFN0cmluZygiMCIpID09IC0wIGlzIHRydWUKK1BBU1MgbmV3IFN0cmlu
ZygiMCIpID09ICIwIiBpcyB0cnVlCitQQVNTIG5ldyBTdHJpbmcoIjAiKSA9PSAiMSIgaXMgZmFs
c2UKK1BBU1MgbmV3IFN0cmluZygiMCIpID09ICIwLjEiIGlzIGZhbHNlCitQQVNTIG5ldyBTdHJp
bmcoIjAiKSA9PSAiLTAiIGlzIGZhbHNlCitQQVNTIG5ldyBTdHJpbmcoIjAiKSA9PSBudWxsIGlz
IGZhbHNlCitQQVNTIG5ldyBTdHJpbmcoIjAiKSA9PSB1bmRlZmluZWQgaXMgZmFsc2UKK1BBU1Mg
bmV3IFN0cmluZygiMCIpID09IGZhbHNlIGlzIHRydWUKK1BBU1MgbmV3IFN0cmluZygiMCIpID09
IHRydWUgaXMgZmFsc2UKK1BBU1MgbmV3IFN0cmluZygiMCIpID09IG5ldyBTdHJpbmcoIjAiKSBp
cyBmYWxzZQorUEFTUyBuZXcgU3RyaW5nKCIwIikgPT0gbmV3IE9iamVjdCBpcyBmYWxzZQorUEFT
UyBuZXcgT2JqZWN0ID09IDAgaXMgZmFsc2UKK1BBU1MgbmV3IE9iamVjdCA9PSAxIGlzIGZhbHNl
CitQQVNTIG5ldyBPYmplY3QgPT0gMC4xIGlzIGZhbHNlCitQQVNTIG5ldyBPYmplY3QgPT0gLTAg
aXMgZmFsc2UKK1BBU1MgbmV3IE9iamVjdCA9PSAiMCIgaXMgZmFsc2UKK1BBU1MgbmV3IE9iamVj
dCA9PSAiMSIgaXMgZmFsc2UKK1BBU1MgbmV3IE9iamVjdCA9PSAiMC4xIiBpcyBmYWxzZQorUEFT
UyBuZXcgT2JqZWN0ID09ICItMCIgaXMgZmFsc2UKK1BBU1MgbmV3IE9iamVjdCA9PSBudWxsIGlz
IGZhbHNlCitQQVNTIG5ldyBPYmplY3QgPT0gdW5kZWZpbmVkIGlzIGZhbHNlCitQQVNTIG5ldyBP
YmplY3QgPT0gZmFsc2UgaXMgZmFsc2UKK1BBU1MgbmV3IE9iamVjdCA9PSB0cnVlIGlzIGZhbHNl
CitQQVNTIG5ldyBPYmplY3QgPT0gbmV3IFN0cmluZygiMCIpIGlzIGZhbHNlCitQQVNTIG5ldyBP
YmplY3QgPT0gbmV3IE9iamVjdCBpcyBmYWxzZQorUEFTUyAwID09PSAwIGlzIHRydWUKK1BBU1Mg
MCA9PT0gMSBpcyBmYWxzZQorUEFTUyAwID09PSAwLjEgaXMgZmFsc2UKK1BBU1MgMCA9PT0gLTAg
aXMgdHJ1ZQorUEFTUyAwID09PSAiMCIgaXMgZmFsc2UKK1BBU1MgMCA9PT0gIjEiIGlzIGZhbHNl
CitQQVNTIDAgPT09ICIwLjEiIGlzIGZhbHNlCitQQVNTIDAgPT09ICItMCIgaXMgZmFsc2UKK1BB
U1MgMCA9PT0gbnVsbCBpcyBmYWxzZQorUEFTUyAwID09PSB1bmRlZmluZWQgaXMgZmFsc2UKK1BB
U1MgMCA9PT0gZmFsc2UgaXMgZmFsc2UKK1BBU1MgMCA9PT0gdHJ1ZSBpcyBmYWxzZQorUEFTUyAw
ID09PSBuZXcgU3RyaW5nKCIwIikgaXMgZmFsc2UKK1BBU1MgMCA9PT0gbmV3IE9iamVjdCBpcyBm
YWxzZQorUEFTUyAxID09PSAwIGlzIGZhbHNlCitQQVNTIDEgPT09IDEgaXMgdHJ1ZQorUEFTUyAx
ID09PSAwLjEgaXMgZmFsc2UKK1BBU1MgMSA9PT0gLTAgaXMgZmFsc2UKK1BBU1MgMSA9PT0gIjAi
IGlzIGZhbHNlCitQQVNTIDEgPT09ICIxIiBpcyBmYWxzZQorUEFTUyAxID09PSAiMC4xIiBpcyBm
YWxzZQorUEFTUyAxID09PSAiLTAiIGlzIGZhbHNlCitQQVNTIDEgPT09IG51bGwgaXMgZmFsc2UK
K1BBU1MgMSA9PT0gdW5kZWZpbmVkIGlzIGZhbHNlCitQQVNTIDEgPT09IGZhbHNlIGlzIGZhbHNl
CitQQVNTIDEgPT09IHRydWUgaXMgZmFsc2UKK1BBU1MgMSA9PT0gbmV3IFN0cmluZygiMCIpIGlz
IGZhbHNlCitQQVNTIDEgPT09IG5ldyBPYmplY3QgaXMgZmFsc2UKK1BBU1MgMC4xID09PSAwIGlz
IGZhbHNlCitQQVNTIDAuMSA9PT0gMSBpcyBmYWxzZQorUEFTUyAwLjEgPT09IDAuMSBpcyB0cnVl
CitQQVNTIDAuMSA9PT0gLTAgaXMgZmFsc2UKK1BBU1MgMC4xID09PSAiMCIgaXMgZmFsc2UKK1BB
U1MgMC4xID09PSAiMSIgaXMgZmFsc2UKK1BBU1MgMC4xID09PSAiMC4xIiBpcyBmYWxzZQorUEFT
UyAwLjEgPT09ICItMCIgaXMgZmFsc2UKK1BBU1MgMC4xID09PSBudWxsIGlzIGZhbHNlCitQQVNT
IDAuMSA9PT0gdW5kZWZpbmVkIGlzIGZhbHNlCitQQVNTIDAuMSA9PT0gZmFsc2UgaXMgZmFsc2UK
K1BBU1MgMC4xID09PSB0cnVlIGlzIGZhbHNlCitQQVNTIDAuMSA9PT0gbmV3IFN0cmluZygiMCIp
IGlzIGZhbHNlCitQQVNTIDAuMSA9PT0gbmV3IE9iamVjdCBpcyBmYWxzZQorUEFTUyAtMCA9PT0g
MCBpcyB0cnVlCitQQVNTIC0wID09PSAxIGlzIGZhbHNlCitQQVNTIC0wID09PSAwLjEgaXMgZmFs
c2UKK1BBU1MgLTAgPT09IC0wIGlzIHRydWUKK1BBU1MgLTAgPT09ICIwIiBpcyBmYWxzZQorUEFT
UyAtMCA9PT0gIjEiIGlzIGZhbHNlCitQQVNTIC0wID09PSAiMC4xIiBpcyBmYWxzZQorUEFTUyAt
MCA9PT0gIi0wIiBpcyBmYWxzZQorUEFTUyAtMCA9PT0gbnVsbCBpcyBmYWxzZQorUEFTUyAtMCA9
PT0gdW5kZWZpbmVkIGlzIGZhbHNlCitQQVNTIC0wID09PSBmYWxzZSBpcyBmYWxzZQorUEFTUyAt
MCA9PT0gdHJ1ZSBpcyBmYWxzZQorUEFTUyAtMCA9PT0gbmV3IFN0cmluZygiMCIpIGlzIGZhbHNl
CitQQVNTIC0wID09PSBuZXcgT2JqZWN0IGlzIGZhbHNlCitQQVNTICIwIiA9PT0gMCBpcyBmYWxz
ZQorUEFTUyAiMCIgPT09IDEgaXMgZmFsc2UKK1BBU1MgIjAiID09PSAwLjEgaXMgZmFsc2UKK1BB
U1MgIjAiID09PSAtMCBpcyBmYWxzZQorUEFTUyAiMCIgPT09ICIwIiBpcyB0cnVlCitQQVNTICIw
IiA9PT0gIjEiIGlzIGZhbHNlCitQQVNTICIwIiA9PT0gIjAuMSIgaXMgZmFsc2UKK1BBU1MgIjAi
ID09PSAiLTAiIGlzIGZhbHNlCitQQVNTICIwIiA9PT0gbnVsbCBpcyBmYWxzZQorUEFTUyAiMCIg
PT09IHVuZGVmaW5lZCBpcyBmYWxzZQorUEFTUyAiMCIgPT09IGZhbHNlIGlzIGZhbHNlCitQQVNT
ICIwIiA9PT0gdHJ1ZSBpcyBmYWxzZQorUEFTUyAiMCIgPT09IG5ldyBTdHJpbmcoIjAiKSBpcyBm
YWxzZQorUEFTUyAiMCIgPT09IG5ldyBPYmplY3QgaXMgZmFsc2UKK1BBU1MgIjEiID09PSAwIGlz
IGZhbHNlCitQQVNTICIxIiA9PT0gMSBpcyBmYWxzZQorUEFTUyAiMSIgPT09IDAuMSBpcyBmYWxz
ZQorUEFTUyAiMSIgPT09IC0wIGlzIGZhbHNlCitQQVNTICIxIiA9PT0gIjAiIGlzIGZhbHNlCitQ
QVNTICIxIiA9PT0gIjEiIGlzIHRydWUKK1BBU1MgIjEiID09PSAiMC4xIiBpcyBmYWxzZQorUEFT
UyAiMSIgPT09ICItMCIgaXMgZmFsc2UKK1BBU1MgIjEiID09PSBudWxsIGlzIGZhbHNlCitQQVNT
ICIxIiA9PT0gdW5kZWZpbmVkIGlzIGZhbHNlCitQQVNTICIxIiA9PT0gZmFsc2UgaXMgZmFsc2UK
K1BBU1MgIjEiID09PSB0cnVlIGlzIGZhbHNlCitQQVNTICIxIiA9PT0gbmV3IFN0cmluZygiMCIp
IGlzIGZhbHNlCitQQVNTICIxIiA9PT0gbmV3IE9iamVjdCBpcyBmYWxzZQorUEFTUyAiMC4xIiA9
PT0gMCBpcyBmYWxzZQorUEFTUyAiMC4xIiA9PT0gMSBpcyBmYWxzZQorUEFTUyAiMC4xIiA9PT0g
MC4xIGlzIGZhbHNlCitQQVNTICIwLjEiID09PSAtMCBpcyBmYWxzZQorUEFTUyAiMC4xIiA9PT0g
IjAiIGlzIGZhbHNlCitQQVNTICIwLjEiID09PSAiMSIgaXMgZmFsc2UKK1BBU1MgIjAuMSIgPT09
ICIwLjEiIGlzIHRydWUKK1BBU1MgIjAuMSIgPT09ICItMCIgaXMgZmFsc2UKK1BBU1MgIjAuMSIg
PT09IG51bGwgaXMgZmFsc2UKK1BBU1MgIjAuMSIgPT09IHVuZGVmaW5lZCBpcyBmYWxzZQorUEFT
UyAiMC4xIiA9PT0gZmFsc2UgaXMgZmFsc2UKK1BBU1MgIjAuMSIgPT09IHRydWUgaXMgZmFsc2UK
K1BBU1MgIjAuMSIgPT09IG5ldyBTdHJpbmcoIjAiKSBpcyBmYWxzZQorUEFTUyAiMC4xIiA9PT0g
bmV3IE9iamVjdCBpcyBmYWxzZQorUEFTUyAiLTAiID09PSAwIGlzIGZhbHNlCitQQVNTICItMCIg
PT09IDEgaXMgZmFsc2UKK1BBU1MgIi0wIiA9PT0gMC4xIGlzIGZhbHNlCitQQVNTICItMCIgPT09
IC0wIGlzIGZhbHNlCitQQVNTICItMCIgPT09ICIwIiBpcyBmYWxzZQorUEFTUyAiLTAiID09PSAi
MSIgaXMgZmFsc2UKK1BBU1MgIi0wIiA9PT0gIjAuMSIgaXMgZmFsc2UKK1BBU1MgIi0wIiA9PT0g
Ii0wIiBpcyB0cnVlCitQQVNTICItMCIgPT09IG51bGwgaXMgZmFsc2UKK1BBU1MgIi0wIiA9PT0g
dW5kZWZpbmVkIGlzIGZhbHNlCitQQVNTICItMCIgPT09IGZhbHNlIGlzIGZhbHNlCitQQVNTICIt
MCIgPT09IHRydWUgaXMgZmFsc2UKK1BBU1MgIi0wIiA9PT0gbmV3IFN0cmluZygiMCIpIGlzIGZh
bHNlCitQQVNTICItMCIgPT09IG5ldyBPYmplY3QgaXMgZmFsc2UKK1BBU1MgbnVsbCA9PT0gMCBp
cyBmYWxzZQorUEFTUyBudWxsID09PSAxIGlzIGZhbHNlCitQQVNTIG51bGwgPT09IDAuMSBpcyBm
YWxzZQorUEFTUyBudWxsID09PSAtMCBpcyBmYWxzZQorUEFTUyBudWxsID09PSAiMCIgaXMgZmFs
c2UKK1BBU1MgbnVsbCA9PT0gIjEiIGlzIGZhbHNlCitQQVNTIG51bGwgPT09ICIwLjEiIGlzIGZh
bHNlCitQQVNTIG51bGwgPT09ICItMCIgaXMgZmFsc2UKK1BBU1MgbnVsbCA9PT0gbnVsbCBpcyB0
cnVlCitQQVNTIG51bGwgPT09IHVuZGVmaW5lZCBpcyBmYWxzZQorUEFTUyBudWxsID09PSBmYWxz
ZSBpcyBmYWxzZQorUEFTUyBudWxsID09PSB0cnVlIGlzIGZhbHNlCitQQVNTIG51bGwgPT09IG5l
dyBTdHJpbmcoIjAiKSBpcyBmYWxzZQorUEFTUyBudWxsID09PSBuZXcgT2JqZWN0IGlzIGZhbHNl
CitQQVNTIHVuZGVmaW5lZCA9PT0gMCBpcyBmYWxzZQorUEFTUyB1bmRlZmluZWQgPT09IDEgaXMg
ZmFsc2UKK1BBU1MgdW5kZWZpbmVkID09PSAwLjEgaXMgZmFsc2UKK1BBU1MgdW5kZWZpbmVkID09
PSAtMCBpcyBmYWxzZQorUEFTUyB1bmRlZmluZWQgPT09ICIwIiBpcyBmYWxzZQorUEFTUyB1bmRl
ZmluZWQgPT09ICIxIiBpcyBmYWxzZQorUEFTUyB1bmRlZmluZWQgPT09ICIwLjEiIGlzIGZhbHNl
CitQQVNTIHVuZGVmaW5lZCA9PT0gIi0wIiBpcyBmYWxzZQorUEFTUyB1bmRlZmluZWQgPT09IG51
bGwgaXMgZmFsc2UKK1BBU1MgdW5kZWZpbmVkID09PSB1bmRlZmluZWQgaXMgdHJ1ZQorUEFTUyB1
bmRlZmluZWQgPT09IGZhbHNlIGlzIGZhbHNlCitQQVNTIHVuZGVmaW5lZCA9PT0gdHJ1ZSBpcyBm
YWxzZQorUEFTUyB1bmRlZmluZWQgPT09IG5ldyBTdHJpbmcoIjAiKSBpcyBmYWxzZQorUEFTUyB1
bmRlZmluZWQgPT09IG5ldyBPYmplY3QgaXMgZmFsc2UKK1BBU1MgZmFsc2UgPT09IDAgaXMgZmFs
c2UKK1BBU1MgZmFsc2UgPT09IDEgaXMgZmFsc2UKK1BBU1MgZmFsc2UgPT09IDAuMSBpcyBmYWxz
ZQorUEFTUyBmYWxzZSA9PT0gLTAgaXMgZmFsc2UKK1BBU1MgZmFsc2UgPT09ICIwIiBpcyBmYWxz
ZQorUEFTUyBmYWxzZSA9PT0gIjEiIGlzIGZhbHNlCitQQVNTIGZhbHNlID09PSAiMC4xIiBpcyBm
YWxzZQorUEFTUyBmYWxzZSA9PT0gIi0wIiBpcyBmYWxzZQorUEFTUyBmYWxzZSA9PT0gbnVsbCBp
cyBmYWxzZQorUEFTUyBmYWxzZSA9PT0gdW5kZWZpbmVkIGlzIGZhbHNlCitQQVNTIGZhbHNlID09
PSBmYWxzZSBpcyB0cnVlCitQQVNTIGZhbHNlID09PSB0cnVlIGlzIGZhbHNlCitQQVNTIGZhbHNl
ID09PSBuZXcgU3RyaW5nKCIwIikgaXMgZmFsc2UKK1BBU1MgZmFsc2UgPT09IG5ldyBPYmplY3Qg
aXMgZmFsc2UKK1BBU1MgdHJ1ZSA9PT0gMCBpcyBmYWxzZQorUEFTUyB0cnVlID09PSAxIGlzIGZh
bHNlCitQQVNTIHRydWUgPT09IDAuMSBpcyBmYWxzZQorUEFTUyB0cnVlID09PSAtMCBpcyBmYWxz
ZQorUEFTUyB0cnVlID09PSAiMCIgaXMgZmFsc2UKK1BBU1MgdHJ1ZSA9PT0gIjEiIGlzIGZhbHNl
CitQQVNTIHRydWUgPT09ICIwLjEiIGlzIGZhbHNlCitQQVNTIHRydWUgPT09ICItMCIgaXMgZmFs
c2UKK1BBU1MgdHJ1ZSA9PT0gbnVsbCBpcyBmYWxzZQorUEFTUyB0cnVlID09PSB1bmRlZmluZWQg
aXMgZmFsc2UKK1BBU1MgdHJ1ZSA9PT0gZmFsc2UgaXMgZmFsc2UKK1BBU1MgdHJ1ZSA9PT0gdHJ1
ZSBpcyB0cnVlCitQQVNTIHRydWUgPT09IG5ldyBTdHJpbmcoIjAiKSBpcyBmYWxzZQorUEFTUyB0
cnVlID09PSBuZXcgT2JqZWN0IGlzIGZhbHNlCitQQVNTIG5ldyBTdHJpbmcoIjAiKSA9PT0gMCBp
cyBmYWxzZQorUEFTUyBuZXcgU3RyaW5nKCIwIikgPT09IDEgaXMgZmFsc2UKK1BBU1MgbmV3IFN0
cmluZygiMCIpID09PSAwLjEgaXMgZmFsc2UKK1BBU1MgbmV3IFN0cmluZygiMCIpID09PSAtMCBp
cyBmYWxzZQorUEFTUyBuZXcgU3RyaW5nKCIwIikgPT09ICIwIiBpcyBmYWxzZQorUEFTUyBuZXcg
U3RyaW5nKCIwIikgPT09ICIxIiBpcyBmYWxzZQorUEFTUyBuZXcgU3RyaW5nKCIwIikgPT09ICIw
LjEiIGlzIGZhbHNlCitQQVNTIG5ldyBTdHJpbmcoIjAiKSA9PT0gIi0wIiBpcyBmYWxzZQorUEFT
UyBuZXcgU3RyaW5nKCIwIikgPT09IG51bGwgaXMgZmFsc2UKK1BBU1MgbmV3IFN0cmluZygiMCIp
ID09PSB1bmRlZmluZWQgaXMgZmFsc2UKK1BBU1MgbmV3IFN0cmluZygiMCIpID09PSBmYWxzZSBp
cyBmYWxzZQorUEFTUyBuZXcgU3RyaW5nKCIwIikgPT09IHRydWUgaXMgZmFsc2UKK1BBU1MgbmV3
IFN0cmluZygiMCIpID09PSBuZXcgU3RyaW5nKCIwIikgaXMgZmFsc2UKK1BBU1MgbmV3IFN0cmlu
ZygiMCIpID09PSBuZXcgT2JqZWN0IGlzIGZhbHNlCitQQVNTIG5ldyBPYmplY3QgPT09IDAgaXMg
ZmFsc2UKK1BBU1MgbmV3IE9iamVjdCA9PT0gMSBpcyBmYWxzZQorUEFTUyBuZXcgT2JqZWN0ID09
PSAwLjEgaXMgZmFsc2UKK1BBU1MgbmV3IE9iamVjdCA9PT0gLTAgaXMgZmFsc2UKK1BBU1MgbmV3
IE9iamVjdCA9PT0gIjAiIGlzIGZhbHNlCitQQVNTIG5ldyBPYmplY3QgPT09ICIxIiBpcyBmYWxz
ZQorUEFTUyBuZXcgT2JqZWN0ID09PSAiMC4xIiBpcyBmYWxzZQorUEFTUyBuZXcgT2JqZWN0ID09
PSAiLTAiIGlzIGZhbHNlCitQQVNTIG5ldyBPYmplY3QgPT09IG51bGwgaXMgZmFsc2UKK1BBU1Mg
bmV3IE9iamVjdCA9PT0gdW5kZWZpbmVkIGlzIGZhbHNlCitQQVNTIG5ldyBPYmplY3QgPT09IGZh
bHNlIGlzIGZhbHNlCitQQVNTIG5ldyBPYmplY3QgPT09IHRydWUgaXMgZmFsc2UKK1BBU1MgbmV3
IE9iamVjdCA9PT0gbmV3IFN0cmluZygiMCIpIGlzIGZhbHNlCitQQVNTIG5ldyBPYmplY3QgPT09
IG5ldyBPYmplY3QgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2pz
L2VxdWFsaXR5LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAg
KyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2VxdWFsaXR5Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9lcXVhbGl0eS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9lcXVhbGl0eS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2VxdWFsaXR5
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRl
c3RzL2Zhc3QvanMvZXF1YWxpdHkuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUK
ICAgKyB0ZXh0L2h0bWwKTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2VxdWFsaXR5LmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2VxdWFsaXR5LmpzCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvZXF1YWxpdHkuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTYgQEAKK2Rlc2NyaXB0aW9uKAorJ1Rlc3QgZm9yIGVxdWFsaXR5IG9mIG1hbnkg
Y29tYmluYXRpb25zIHR5cGVzLicKKyk7CisKK3ZhciB2YWx1ZXMgPSBbICcwJywgJzEnLCAnMC4x
JywgJy0wJywgJyIwIicsICciMSInLCAnIjAuMSInLCAnIi0wIicsICdudWxsJywgJ3VuZGVmaW5l
ZCcsICdmYWxzZScsICd0cnVlJywgJ25ldyBTdHJpbmcoIjAiKScsICduZXcgT2JqZWN0JyBdOwor
Cit2YXIgZXhjZXB0aW9ucyA9IFsKKyAgICAnIi0wIiA9PSBmYWxzZScsCisgICAgJyIwIiA9PSBm
YWxzZScsCisgICAgJyIwIiA9PSBuZXcgU3RyaW5nKCIwIiknLAorICAgICciMSIgPT0gdHJ1ZScs
CisgICAgJy0wID09ICItMCInLAorICAgICctMCA9PSAiMCInLAorICAgICctMCA9PSBmYWxzZScs
CisgICAgJy0wID09IG5ldyBTdHJpbmcoIjAiKScsCisgICAgJzAgPT0gIi0wIicsCisgICAgJzAg
PT0gIjAiJywKKyAgICAnMCA9PSAtMCcsCisgICAgJzAgPT0gZmFsc2UnLAorICAgICcwID09IG5l
dyBTdHJpbmcoIjAiKScsCisgICAgJzAgPT09IC0wJywKKyAgICAnMC4xID09ICIwLjEiJywKKyAg
ICAnMSA9PSAiMSInLAorICAgICcxID09IHRydWUnLAorICAgICduZXcgT2JqZWN0ID09IG5ldyBP
YmplY3QnLAorICAgICduZXcgT2JqZWN0ID09PSBuZXcgT2JqZWN0JywKKyAgICAnbmV3IFN0cmlu
ZygiMCIpID09IGZhbHNlJywKKyAgICAnbmV3IFN0cmluZygiMCIpID09IG5ldyBTdHJpbmcoIjAi
KScsCisgICAgJ25ldyBTdHJpbmcoIjAiKSA9PT0gbmV3IFN0cmluZygiMCIpJywKKyAgICAnbnVs
bCA9PSB1bmRlZmluZWQnLAorXTsKKwordmFyIGV4Y2VwdGlvbk1hcCA9IG5ldyBPYmplY3Q7CisK
K3ZhciBpLCBqOworCitmb3IgKGkgPSAwOyBpIDwgZXhjZXB0aW9ucy5sZW5ndGg7ICsraSkKKyAg
ICBleGNlcHRpb25NYXBbZXhjZXB0aW9uc1tpXV0gPSAxOworCitmb3IgKGkgPSAwOyBpIDwgdmFs
dWVzLmxlbmd0aDsgKytpKSB7CisgICAgZm9yIChqID0gMDsgaiA8IHZhbHVlcy5sZW5ndGg7ICsr
aikgeworICAgICAgICB2YXIgZXhwcmVzc2lvbiA9IHZhbHVlc1tpXSArICIgPT0gIiArIHZhbHVl
c1tqXTsKKyAgICAgICAgdmFyIHJldmVyc2VkID0gdmFsdWVzW2pdICsgIiA9PSAiICsgdmFsdWVz
W2ldOworICAgICAgICBzaG91bGRCZShleHByZXNzaW9uLCAoKGkgPT0gaikgXiAoZXhjZXB0aW9u
TWFwW2V4cHJlc3Npb25dIHx8IGV4Y2VwdGlvbk1hcFtyZXZlcnNlZF0pKSA/ICJ0cnVlIiA6ICJm
YWxzZSIpOworICAgIH0KK30KKworZm9yIChpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7ICsraSkg
eworICAgIGZvciAoaiA9IDA7IGogPCB2YWx1ZXMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgdmFy
IGV4cHJlc3Npb24gPSB2YWx1ZXNbaV0gKyAiID09PSAiICsgdmFsdWVzW2pdOworICAgICAgICB2
YXIgcmV2ZXJzZWQgPSB2YWx1ZXNbal0gKyAiID09PSAiICsgdmFsdWVzW2ldOworICAgICAgICBz
aG91bGRCZShleHByZXNzaW9uLCAoKGkgPT0gaikgXiAoZXhjZXB0aW9uTWFwW2V4cHJlc3Npb25d
IHx8IGV4Y2VwdGlvbk1hcFtyZXZlcnNlZF0pKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIH0K
K30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL2ltbXV0YWJsZS1wcm9wZXJ0aWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3ZnL2N1c3RvbS9pbW11dGFibGUtcHJvcGVydGllcy5odG1sCShyZXZpc2lvbiAzNTcw
MykKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vaW1tdXRhYmxlLXByb3BlcnRpZXMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMyArMSwxMyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL0xheW91dFRlc3RzL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaW1tdXRhYmxlLXByb3BlcnRp
ZXMuanMiPjwvc2NyaXB0PiAKLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9MYXlvdXRUZXN0cy9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9pbW11dGFibGUtcHJvcGVydGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vc3ZnLW1vZGlmeS1jdXJy
ZW50VHJhbnNsYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9z
dmctbW9kaWZ5LWN1cnJlbnRUcmFuc2xhdGUuaHRtbAkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlv
dXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy1tb2RpZnktY3VycmVudFRyYW5zbGF0ZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEzICsxLDEzIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PC9oZWFkPgogPGJvZHk+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdmctbW9kaWZ5LWN1cnJlbnRUcmFu
c2xhdGUuanMiPjwvc2NyaXB0PiAKLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9MYXlvdXRUZXN0cy9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zdmctbW9kaWZ5LWN1cnJlbnRUcmFuc2xhdGUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2Zy14
bWwtZG9tLXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N2
Zy14bWwtZG9tLXN5bmMuaHRtbAkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcv
Y3VzdG9tL3N2Zy14bWwtZG9tLXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMSwx
MyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0
bWw+CiA8aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgotPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgogPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc3ZnLXhtbC1kb20tc3luYy5qcyI+PC9zY3JpcHQ+IAotPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N2Zy14bWwtZG9tLXN5bmMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcv
Y3VzdG9tL3RlYXJvZmZzLXdpdGgtdGVhcm9mZnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL3RlYXJvZmZzLXdpdGgtdGVhcm9mZnMuaHRtbAkocmV2aXNpb24gMzU3
MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3RlYXJvZmZzLXdpdGgtdGVhcm9mZnMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMSwxMyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL0xheW91dFRlc3RzL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVhcm9mZnMtd2l0aC10
ZWFyb2Zmcy5qcyI+PC9zY3JpcHQ+IAotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL0xheW91dFRlc3Rz
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3RlYXJvZmZzLXdpdGgtdGVhcm9mZnMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVz
L3Jlc291cmNlcy9TVkdBRWxlbWVudC1kb20taHJlZi1hdHRyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0FFbGVtZW50LWRvbS1o
cmVmLWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMt
dXBkYXRlcy9yZXNvdXJjZXMvU1ZHQUVsZW1lbnQtZG9tLWhyZWYtYXR0ci5qcwkod29ya2luZyBj
b3B5KQpAQCAtMjUsMyArMjUsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogZXhl
Y3V0ZVRlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdBRWxlbWVudC1kb20tdGFy
Z2V0LWF0dHIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHQUVsZW1lbnQtZG9tLXRhcmdldC1hdHRyLmpzCShyZXZpc2lvbiAzNTcw
MykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0FFbGVt
ZW50LWRvbS10YXJnZXQtYXR0ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYsMyArMjYsNSBAQCBm
dW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogZXhlY3V0ZVRlc3QoKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRh
dGVzL3Jlc291cmNlcy9TVkdBRWxlbWVudC1zdmdkb20taHJlZi1wcm9wLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0FFbGVtZW50
LXN2Z2RvbS1ocmVmLXByb3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3Zn
L2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHQUVsZW1lbnQtc3ZnZG9tLWhyZWYtcHJvcC5q
cwkod29ya2luZyBjb3B5KQpAQCAtMjUsMyArMjUsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgp
IHsKIH0KIAogZXhlY3V0ZVRlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdBRWxl
bWVudC1zdmdkb20tdGFyZ2V0LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Zn
L2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHQUVsZW1lbnQtc3ZnZG9tLXRhcmdldC1wcm9w
LmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMv
cmVzb3VyY2VzL1NWR0FFbGVtZW50LXN2Z2RvbS10YXJnZXQtcHJvcC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMjYsMyArMjYsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogZXhlY3V0
ZVRlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdDaXJjbGVFbGVtZW50LWRvbS1j
eC1hdHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMv
cmVzb3VyY2VzL1NWR0NpcmNsZUVsZW1lbnQtZG9tLWN4LWF0dHIuanMJKHJldmlzaW9uIDM1NzAz
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHQ2lyY2xl
RWxlbWVudC1kb20tY3gtYXR0ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjEsMyArMjEsNSBAQCBm
dW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KGNpcmNsZUVsZW1lbnQsIDUw
LCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0NpcmNsZUVsZW1lbnQtZG9tLWN5
LWF0dHIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9y
ZXNvdXJjZXMvU1ZHQ2lyY2xlRWxlbWVudC1kb20tY3ktYXR0ci5qcwkocmV2aXNpb24gMzU3MDMp
CisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdDaXJjbGVF
bGVtZW50LWRvbS1jeS1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwzICsyMSw1IEBAIGZ1
bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoY2lyY2xlRWxlbWVudCwgMTUw
LCA1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHQ2lyY2xlRWxlbWVudC1kb20tci1h
dHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVz
b3VyY2VzL1NWR0NpcmNsZUVsZW1lbnQtZG9tLXItYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisr
KyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdDaXJjbGVFbGVt
ZW50LWRvbS1yLWF0dHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTIxLDMgKzIxLDUgQEAgZnVuY3Rp
b24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChjaXJjbGVFbGVtZW50LCAxNTAsIDE1
MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHQ2lyY2xlRWxlbWVudC1zdmdkb20tY3gt
cHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jl
c291cmNlcy9TVkdDaXJjbGVFbGVtZW50LXN2Z2RvbS1jeC1wcm9wLmpzCShyZXZpc2lvbiAzNTcw
MykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0NpcmNs
ZUVsZW1lbnQtc3ZnZG9tLWN4LXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTIxLDMgKzIxLDUg
QEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChjaXJjbGVFbGVtZW50
LCA1MCwgMTUwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdDaXJjbGVFbGVtZW50LXN2
Z2RvbS1jeS1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVw
ZGF0ZXMvcmVzb3VyY2VzL1NWR0NpcmNsZUVsZW1lbnQtc3ZnZG9tLWN5LXByb3AuanMJKHJldmlz
aW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMv
U1ZHQ2lyY2xlRWxlbWVudC1zdmdkb20tY3ktcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjEs
MyArMjEsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KGNpcmNs
ZUVsZW1lbnQsIDE1MCwgNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0NpcmNsZUVs
ZW1lbnQtc3ZnZG9tLXItcHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHlu
YW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdDaXJjbGVFbGVtZW50LXN2Z2RvbS1yLXByb3AuanMJ
KHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNv
dXJjZXMvU1ZHQ2lyY2xlRWxlbWVudC1zdmdkb20tci1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSwzICsyMSw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3Qo
Y2lyY2xlRWxlbWVudCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0Ns
aXBQYXRoRWxlbWVudC1kb20tY2xpcFBhdGhVbml0cy1hdHRyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0NsaXBQYXRoRWxlbWVu
dC1kb20tY2xpcFBhdGhVbml0cy1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0NsaXBQYXRoRWxlbWVudC1kb20t
Y2xpcFBhdGhVbml0cy1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwzICszNiw1IEBAIGZ1
bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVsZW1lbnQsIDE1MCwg
MTUwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdDbGlwUGF0aEVsZW1lbnQtc3ZnZG9t
LWNsaXBQYXRoVW5pdHMtcHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHlu
YW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdDbGlwUGF0aEVsZW1lbnQtc3ZnZG9tLWNsaXBQYXRo
VW5pdHMtcHJvcC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1p
Yy11cGRhdGVzL3Jlc291cmNlcy9TVkdDbGlwUGF0aEVsZW1lbnQtc3ZnZG9tLWNsaXBQYXRoVW5p
dHMtcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtMzYsMyArMzYsNSBAQCBmdW5jdGlvbiBleGVj
dXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAxNTAsIDE1MCk7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFt
aWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHQ3Vyc29yRWxlbWVudC1kb20teC1hdHRyLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0N1
cnNvckVsZW1lbnQtZG9tLXgtYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0
cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdDdXJzb3JFbGVtZW50LWRvbS14LWF0
dHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMgKzI3LDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRl
c3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChyZWN0RWxlbWVudCwgMTUwLCAxNTApOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVw
ZGF0ZXMvcmVzb3VyY2VzL1NWR0N1cnNvckVsZW1lbnQtZG9tLXktYXR0ci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdDdXJzb3JF
bGVtZW50LWRvbS15LWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3Zn
L2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHQ3Vyc29yRWxlbWVudC1kb20teS1hdHRyLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywzICsyNyw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkg
ewogfQogCiBzdGFydFRlc3QocmVjdEVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVz
L3Jlc291cmNlcy9TVkdDdXJzb3JFbGVtZW50LXN2Z2RvbS14LXByb3AuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHQ3Vyc29yRWxl
bWVudC1zdmdkb20teC1wcm9wLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2
Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0N1cnNvckVsZW1lbnQtc3ZnZG9tLXgtcHJv
cC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjcsMyArMjcsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVz
dCgpIHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAxNTAsIDE1MCk7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBk
YXRlcy9yZXNvdXJjZXMvU1ZHQ3Vyc29yRWxlbWVudC1zdmdkb20teS1wcm9wLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0N1cnNv
ckVsZW1lbnQtc3ZnZG9tLXktcHJvcC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0
cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdDdXJzb3JFbGVtZW50LXN2Z2RvbS15
LXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMgKzI3LDUgQEAgZnVuY3Rpb24gZXhlY3V0
ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChyZWN0RWxlbWVudCwgMTUwLCAxNTApOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWlj
LXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0VsbGlwc2VFbGVtZW50LWRvbS1jeC1hdHRyLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0Vs
bGlwc2VFbGVtZW50LWRvbS1jeC1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0VsbGlwc2VFbGVtZW50LWRvbS1j
eC1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwzICsyMiw1IEBAIGZ1bmN0aW9uIGV4ZWN1
dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoZWxsaXBzZUVsZW1lbnQsIDQ1LCAxNTApOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5h
bWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0VsbGlwc2VFbGVtZW50LWRvbS1jeS1hdHRyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NW
R0VsbGlwc2VFbGVtZW50LWRvbS1jeS1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91
dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0VsbGlwc2VFbGVtZW50LWRv
bS1jeS1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwzICsyMiw1IEBAIGZ1bmN0aW9uIGV4
ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoZWxsaXBzZUVsZW1lbnQsIDE1MCwgNTApOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9k
eW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0VsbGlwc2VFbGVtZW50LWRvbS1yeC1hdHRyLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2Vz
L1NWR0VsbGlwc2VFbGVtZW50LWRvbS1yeC1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0VsbGlwc2VFbGVtZW50
LWRvbS1yeC1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwzICsyMiw1IEBAIGZ1bmN0aW9u
IGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoZWxsaXBzZUVsZW1lbnQsIDE1MCwgMTUw
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9z
dmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdFbGxpcHNlRWxlbWVudC1kb20tcnktYXR0
ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291
cmNlcy9TVkdFbGxpcHNlRWxlbWVudC1kb20tcnktYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisr
KyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdFbGxpcHNlRWxl
bWVudC1kb20tcnktYXR0ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjIsMyArMjIsNSBAQCBmdW5j
dGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KGVsbGlwc2VFbGVtZW50LCAxNTAs
IDE1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHRWxsaXBzZUVsZW1lbnQtc3ZnZG9t
LWN4LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHRWxsaXBzZUVsZW1lbnQtc3ZnZG9tLWN4LXByb3AuanMJKHJldmlzaW9u
IDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZH
RWxsaXBzZUVsZW1lbnQtc3ZnZG9tLWN4LXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTIyLDMg
KzIyLDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChlbGxpcHNl
RWxlbWVudCwgNDUsIDE1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRl
eDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHRWxsaXBzZUVs
ZW1lbnQtc3ZnZG9tLWN5LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5
bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHRWxsaXBzZUVsZW1lbnQtc3ZnZG9tLWN5LXByb3Au
anMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9y
ZXNvdXJjZXMvU1ZHRWxsaXBzZUVsZW1lbnQtc3ZnZG9tLWN5LXByb3AuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDMgKzIyLDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0
VGVzdChlbGxpcHNlRWxlbWVudCwgMTUwLCA1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMv
U1ZHRWxsaXBzZUVsZW1lbnQtc3ZnZG9tLXJ4LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHRWxsaXBzZUVsZW1lbnQtc3Zn
ZG9tLXJ4LXByb3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFt
aWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHRWxsaXBzZUVsZW1lbnQtc3ZnZG9tLXJ4LXByb3AuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDMgKzIyLDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7
CiB9CiAKIHN0YXJ0VGVzdChlbGxpcHNlRWxlbWVudCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0
ZXMvcmVzb3VyY2VzL1NWR0VsbGlwc2VFbGVtZW50LXN2Z2RvbS1yeS1wcm9wLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0VsbGlw
c2VFbGVtZW50LXN2Z2RvbS1yeS1wcm9wLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0VsbGlwc2VFbGVtZW50LXN2Z2Rv
bS1yeS1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwzICsyMiw1IEBAIGZ1bmN0aW9uIGV4
ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoZWxsaXBzZUVsZW1lbnQsIDE1MCwgMTUwKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcv
ZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC1kb20taGVp
Z2h0LWF0dHIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQtZG9tLWhlaWdodC1hdHRyLmpzCShy
ZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3Vy
Y2VzL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LWRvbS1oZWlnaHQtYXR0ci5qcwkod29ya2luZyBj
b3B5KQpAQCAtMjcsMyArMjcsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3Rh
cnRUZXN0KGZvcmVpZ25PYmplY3RFbGVtZW50LCAxNTAsIDgxKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jl
c291cmNlcy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC1kb20td2lkdGgtYXR0ci5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC1kb20td2lkdGgtYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBM
YXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC1kb20td2lkdGgtYXR0ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjcsMyArMjcsNSBA
QCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KGZvcmVpZ25PYmplY3RF
bGVtZW50LCAxMDEsIDEwMCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRl
eDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQtZG9tLXgtYXR0ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
ZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC1kb20teC1h
dHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0
ZXMvcmVzb3VyY2VzL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LWRvbS14LWF0dHIuanMJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDMgKzI3LDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAK
IHN0YXJ0VGVzdChmb3JlaWduT2JqZWN0RWxlbWVudCwgMTAsIDEwMCk7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQtZG9tLXktYXR0ci5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC1kb20teS1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91
dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LWRvbS15LWF0dHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMgKzI3LDUgQEAgZnVuY3Rp
b24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChmb3JlaWduT2JqZWN0RWxlbWVudCwg
MTUwLCA1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQtc3ZnZG9tLWhlaWdodC1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9k
eW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LXN2Z2RvbS1o
ZWlnaHQtcHJvcC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1p
Yy11cGRhdGVzL3Jlc291cmNlcy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC1zdmdkb20taGVpZ2h0
LXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMgKzI3LDUgQEAgZnVuY3Rpb24gZXhlY3V0
ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChmb3JlaWduT2JqZWN0RWxlbWVudCwgMTUwLCA4MSk7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQtc3ZnZG9t
LXdpZHRoLXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBk
YXRlcy9yZXNvdXJjZXMvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQtc3ZnZG9tLXdpZHRoLXByb3Au
anMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9y
ZXNvdXJjZXMvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQtc3ZnZG9tLXdpZHRoLXByb3AuanMJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDMgKzI3LDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9
CiAKIHN0YXJ0VGVzdChmb3JlaWduT2JqZWN0RWxlbWVudCwgMTAxLCAxMDApOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVw
ZGF0ZXMvcmVzb3VyY2VzL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LXN2Z2RvbS14LXByb3AuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMv
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQtc3ZnZG9tLXgtcHJvcC5qcwkocmV2aXNpb24gMzU3MDMp
CisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC1zdmdkb20teC1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNywzICsy
Nyw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoZm9yZWlnbk9i
amVjdEVsZW1lbnQsIDEwLCAxMDApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
SW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LXN2Z2RvbS15LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQt
c3ZnZG9tLXktcHJvcC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHlu
YW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC1zdmdkb20teS1w
cm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNywzICsyNyw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVU
ZXN0KCkgewogfQogCiBzdGFydFRlc3QoZm9yZWlnbk9iamVjdEVsZW1lbnQsIDE1MCwgNTApOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9k
eW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ltYWdlRWxlbWVudC1kb20taGVpZ2h0LWF0dHIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJj
ZXMvU1ZHSW1hZ2VFbGVtZW50LWRvbS1oZWlnaHQtYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisr
KyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdJbWFnZUVsZW1l
bnQtZG9tLWhlaWdodC1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzICsyMyw1IEBAIGZ1
bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoaW1hZ2VFbGVtZW50LCAxNTAs
IDUwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdJbWFnZUVsZW1lbnQtZG9tLXByZXNl
cnZlQXNwZWN0UmF0aW8tYXR0ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHlu
YW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdJbWFnZUVsZW1lbnQtZG9tLXByZXNlcnZlQXNwZWN0
UmF0aW8tYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1p
Yy11cGRhdGVzL3Jlc291cmNlcy9TVkdJbWFnZUVsZW1lbnQtZG9tLXByZXNlcnZlQXNwZWN0UmF0
aW8tYXR0ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjQsMyArMjQsNSBAQCBmdW5jdGlvbiBleGVj
dXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KGltYWdlRWxlbWVudCwgNTAsIDE1MCk7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFt
aWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHSW1hZ2VFbGVtZW50LWRvbS13aWR0aC1hdHRyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NW
R0ltYWdlRWxlbWVudC1kb20td2lkdGgtYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlv
dXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdJbWFnZUVsZW1lbnQtZG9t
LXdpZHRoLWF0dHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDMgKzIzLDUgQEAgZnVuY3Rpb24g
ZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChpbWFnZUVsZW1lbnQsIDUwLCAxNTApOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9k
eW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ltYWdlRWxlbWVudC1kb20teC1hdHRyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NW
R0ltYWdlRWxlbWVudC1kb20teC1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ltYWdlRWxlbWVudC1kb20teC1h
dHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzICsyMyw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVU
ZXN0KCkgewogfQogCiBzdGFydFRlc3QoaW1hZ2VFbGVtZW50LCA1LCAxMDApOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVw
ZGF0ZXMvcmVzb3VyY2VzL1NWR0ltYWdlRWxlbWVudC1kb20teS1hdHRyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ltYWdlRWxl
bWVudC1kb20teS1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9k
eW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ltYWdlRWxlbWVudC1kb20teS1hdHRyLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0yMywzICsyMyw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewog
fQogCiBzdGFydFRlc3QoaW1hZ2VFbGVtZW50LCAxMDAsIDUpOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVz
b3VyY2VzL1NWR0ltYWdlRWxlbWVudC1zdmdkb20taGVpZ2h0LXByb3AuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHSW1hZ2VFbGVt
ZW50LXN2Z2RvbS1oZWlnaHQtcHJvcC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0
cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9tLWhl
aWdodC1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzICsyMyw1IEBAIGZ1bmN0aW9uIGV4
ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoaW1hZ2VFbGVtZW50LCAxNTAsIDUwKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHlu
YW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9tLXByZXNlcnZlQXNw
ZWN0UmF0aW8tcHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11
cGRhdGVzL3Jlc291cmNlcy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9tLXByZXNlcnZlQXNwZWN0UmF0
aW8tcHJvcC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11
cGRhdGVzL3Jlc291cmNlcy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9tLXByZXNlcnZlQXNwZWN0UmF0
aW8tcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjUsMyArMjUsNSBAQCBmdW5jdGlvbiBleGVj
dXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KGltYWdlRWxlbWVudCwgNTAsIDEwMCk7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFt
aWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHSW1hZ2VFbGVtZW50LXN2Z2RvbS13aWR0aC1wcm9wLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2Vz
L1NWR0ltYWdlRWxlbWVudC1zdmdkb20td2lkdGgtcHJvcC5qcwkocmV2aXNpb24gMzU3MDMpCisr
KyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdJbWFnZUVsZW1l
bnQtc3ZnZG9tLXdpZHRoLXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDMgKzIzLDUgQEAg
ZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChpbWFnZUVsZW1lbnQsIDUw
LCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ltYWdlRWxlbWVudC1zdmdkb20t
eC1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMv
cmVzb3VyY2VzL1NWR0ltYWdlRWxlbWVudC1zdmdkb20teC1wcm9wLmpzCShyZXZpc2lvbiAzNTcw
MykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ltYWdl
RWxlbWVudC1zdmdkb20teC1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzICsyMyw1IEBA
IGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoaW1hZ2VFbGVtZW50LCA1
LCAxMDApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ltYWdlRWxlbWVudC1zdmdkb20t
eS1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMv
cmVzb3VyY2VzL1NWR0ltYWdlRWxlbWVudC1zdmdkb20teS1wcm9wLmpzCShyZXZpc2lvbiAzNTcw
MykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0ltYWdl
RWxlbWVudC1zdmdkb20teS1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzICsyMyw1IEBA
IGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoaW1hZ2VFbGVtZW50LCAx
MDAsIDUpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVFbGVtZW50LWRvbS14MS1h
dHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVz
b3VyY2VzL1NWR0xpbmVFbGVtZW50LWRvbS14MS1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysr
IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVFbGVtZW50
LWRvbS14MS1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzICsyMyw1IEBAIGZ1bmN0aW9u
IGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QobGluZUVsZW1lbnQsIDEwMSwgMTEpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9k
eW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVFbGVtZW50LWRvbS14Mi1hdHRyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NW
R0xpbmVFbGVtZW50LWRvbS14Mi1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVFbGVtZW50LWRvbS14Mi1h
dHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzICsyMyw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVU
ZXN0KCkgewogfQogCiBzdGFydFRlc3QobGluZUVsZW1lbnQsIDExLCAxMSk7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBk
YXRlcy9yZXNvdXJjZXMvU1ZHTGluZUVsZW1lbnQtZG9tLXkxLWF0dHIuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTGluZUVsZW1l
bnQtZG9tLXkxLWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5
bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTGluZUVsZW1lbnQtZG9tLXkxLWF0dHIuanMJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDMgKzIzLDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9
CiAKIHN0YXJ0VGVzdChsaW5lRWxlbWVudCwgMTEsIDEwMSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNv
dXJjZXMvU1ZHTGluZUVsZW1lbnQtZG9tLXkyLWF0dHIuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTGluZUVsZW1lbnQtZG9tLXky
LWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBk
YXRlcy9yZXNvdXJjZXMvU1ZHTGluZUVsZW1lbnQtZG9tLXkyLWF0dHIuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDMgKzIzLDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0
VGVzdChsaW5lRWxlbWVudCwgMTEsIDExKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdM
aW5lRWxlbWVudC1zdmdkb20teDEtcHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdMaW5lRWxlbWVudC1zdmdkb20teDEtcHJv
cC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVz
L3Jlc291cmNlcy9TVkdMaW5lRWxlbWVudC1zdmdkb20teDEtcHJvcC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMjMsMyArMjMsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRU
ZXN0KGxpbmVFbGVtZW50LCAxMDEsIDExKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdM
aW5lRWxlbWVudC1zdmdkb20teDItcHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdMaW5lRWxlbWVudC1zdmdkb20teDItcHJv
cC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVz
L3Jlc291cmNlcy9TVkdMaW5lRWxlbWVudC1zdmdkb20teDItcHJvcC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMjMsMyArMjMsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRU
ZXN0KGxpbmVFbGVtZW50LCAxMSwgMTEpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xp
bmVFbGVtZW50LXN2Z2RvbS15MS1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVFbGVtZW50LXN2Z2RvbS15MS1wcm9w
LmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMv
cmVzb3VyY2VzL1NWR0xpbmVFbGVtZW50LXN2Z2RvbS15MS1wcm9wLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0yMywzICsyMyw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRl
c3QobGluZUVsZW1lbnQsIDExLCAxMDEpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xp
bmVFbGVtZW50LXN2Z2RvbS15Mi1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVFbGVtZW50LXN2Z2RvbS15Mi1wcm9w
LmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMv
cmVzb3VyY2VzL1NWR0xpbmVFbGVtZW50LXN2Z2RvbS15Mi1wcm9wLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0yMywzICsyMyw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRl
c3QobGluZUVsZW1lbnQsIDExLCAxMSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LWRvbS1ncmFkaWVudFRyYW5zZm9ybS1hdHRyLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC1kb20tZ3JhZGllbnRUcmFuc2Zvcm0tYXR0ci5qcwkocmV2aXNpb24g
MzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQtZG9tLWdyYWRpZW50VHJhbnNmb3JtLWF0dHIuanMJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDMgKzQxLDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAK
IHN0YXJ0VGVzdChlbGxpcHNlRWxlbWVudCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVz
b3VyY2VzL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC1kb20tZ3JhZGllbnRVbml0cy1hdHRyLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2Vz
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC1kb20tZ3JhZGllbnRVbml0cy1hdHRyLmpzCShyZXZp
c2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2Vz
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC1kb20tZ3JhZGllbnRVbml0cy1hdHRyLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCwzICs0MCw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQog
CiBzdGFydFRlc3QoZWxsaXBzZUVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jl
c291cmNlcy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQtZG9tLXgxLWF0dHIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LWRvbS14MS1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91
dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVhckdyYWRpZW50RWxl
bWVudC1kb20teDEtYXR0ci5qcwkod29ya2luZyBjb3B5KQpAQCAtNDEsMyArNDEsNSBAQCBmdW5j
dGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KGVsbGlwc2VFbGVtZW50LCAxNTAs
IDE1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LWRvbS14Mi1hdHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVw
ZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC1kb20teDItYXR0ci5qcwko
cmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291
cmNlcy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQtZG9tLXgyLWF0dHIuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDMgKzQyLDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0
VGVzdChlbGxpcHNlRWxlbWVudCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2Vz
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC1kb20teTEtYXR0ci5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQtZG9tLXkxLWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LWRv
bS15MS1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MSwzICs0MSw1IEBAIGZ1bmN0aW9uIGV4
ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoZWxsaXBzZUVsZW1lbnQsIDE1MCwgMTUwKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcv
ZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQtZG9tLXky
LWF0dHIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9y
ZXNvdXJjZXMvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LWRvbS15Mi1hdHRyLmpzCShyZXZpc2lv
biAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC1kb20teTItYXR0ci5qcwkod29ya2luZyBjb3B5KQpAQCAt
NDIsMyArNDIsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KGVs
bGlwc2VFbGVtZW50LCAxNTAsIDE1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LXN2Z2RvbS1ncmFkaWVudFRyYW5zZm9ybS1wcm9wLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC1zdmdkb20tZ3JhZGllbnRUcmFuc2Zvcm0tcHJvcC5qcwkocmV2
aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNl
cy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQtc3ZnZG9tLWdyYWRpZW50VHJhbnNmb3JtLXByb3Au
anMJKHdvcmtpbmcgY29weSkKQEAgLTY5LDMgKzY5LDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3Qo
KSB7CiB9CiAKIHN0YXJ0VGVzdChlbGxpcHNlRWxlbWVudCwgMTUwLCAxNTApOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVw
ZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC1zdmdkb20tZ3JhZGllbnRV
bml0cy1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0
ZXMvcmVzb3VyY2VzL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC1zdmdkb20tZ3JhZGllbnRVbml0
cy1wcm9wLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVw
ZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC1zdmdkb20tZ3JhZGllbnRV
bml0cy1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MCwzICs0MCw1IEBAIGZ1bmN0aW9uIGV4
ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoZWxsaXBzZUVsZW1lbnQsIDE1MCwgMTUwKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcv
ZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQtc3ZnZG9t
LXgxLXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LXN2Z2RvbS14MS1wcm9wLmpzCShy
ZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3Vy
Y2VzL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC1zdmdkb20teDEtcHJvcC5qcwkod29ya2luZyBj
b3B5KQpAQCAtNDEsMyArNDEsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3Rh
cnRUZXN0KGVsbGlwc2VFbGVtZW50LCAxNTAsIDE1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJj
ZXMvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LXN2Z2RvbS14Mi1wcm9wLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC1zdmdkb20teDItcHJvcC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlv
dXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQtc3ZnZG9tLXgyLXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTQyLDMgKzQyLDUgQEAg
ZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChlbGxpcHNlRWxlbWVudCwg
MTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91
dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVhckdyYWRpZW50RWxl
bWVudC1zdmdkb20teTEtcHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHlu
YW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQtc3ZnZG9tLXkx
LXByb3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBk
YXRlcy9yZXNvdXJjZXMvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LXN2Z2RvbS15MS1wcm9wLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC00MSwzICs0MSw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkg
ewogfQogCiBzdGFydFRlc3QoZWxsaXBzZUVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRh
dGVzL3Jlc291cmNlcy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQtc3ZnZG9tLXkyLXByb3AuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LXN2Z2RvbS15Mi1wcm9wLmpzCShyZXZpc2lvbiAzNTcw
MykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC1zdmdkb20teTItcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDIs
MyArNDIsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KGVsbGlw
c2VFbGVtZW50LCAxNTAsIDE1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJ
bmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2Vy
RWxlbWVudC1kb20tbWFya2VySGVpZ2h0LWF0dHIuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1kb20tbWFy
a2VySGVpZ2h0LWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5
bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1kb20tbWFya2VySGVpZ2h0
LWF0dHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTQxLDMgKzQxLDUgQEAgZnVuY3Rpb24gZXhlY3V0
ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChwYXRoRWxlbWVudCwgMTgwLCAxODApOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWlj
LXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hcmtlckVsZW1lbnQtZG9tLW1hcmtlclVuaXRzLWF0dHIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJj
ZXMvU1ZHTWFya2VyRWxlbWVudC1kb20tbWFya2VyVW5pdHMtYXR0ci5qcwkocmV2aXNpb24gMzU3
MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXJr
ZXJFbGVtZW50LWRvbS1tYXJrZXJVbml0cy1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MSwz
ICs0MSw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocGF0aEVs
ZW1lbnQsIDE4MCwgMTgwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4
OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXJrZXJFbGVt
ZW50LWRvbS1tYXJrZXJXaWR0aC1hdHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hcmtlckVsZW1lbnQtZG9tLW1hcmtlcldp
ZHRoLWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMt
dXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1kb20tbWFya2VyV2lkdGgtYXR0ci5q
cwkod29ya2luZyBjb3B5KQpAQCAtNDEsMyArNDEsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgp
IHsKIH0KIAogc3RhcnRUZXN0KHBhdGhFbGVtZW50LCAxODAsIDE4MCk7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1kb20tb3JpZW50LWF0dHIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2Vy
RWxlbWVudC1kb20tb3JpZW50LWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1kb20tb3Jp
ZW50LWF0dHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTQyLDMgKzQyLDUgQEAgZnVuY3Rpb24gZXhl
Y3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChwYXRoRWxlbWVudCwgMTgwLCAxODApOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5h
bWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hcmtlckVsZW1lbnQtZG9tLXJlZlgtYXR0ci5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9T
VkdNYXJrZXJFbGVtZW50LWRvbS1yZWZYLWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5
b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1k
b20tcmVmWC1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MSwzICs0MSw1IEBAIGZ1bmN0aW9u
IGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocGF0aEVsZW1lbnQsIDE4MCwgMTgwKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcv
ZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXJrZXJFbGVtZW50LWRvbS1yZWZZLWF0dHIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJj
ZXMvU1ZHTWFya2VyRWxlbWVudC1kb20tcmVmWS1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysr
IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hcmtlckVsZW1l
bnQtZG9tLXJlZlktYXR0ci5qcwkod29ya2luZyBjb3B5KQpAQCAtNDEsMyArNDEsNSBAQCBmdW5j
dGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHBhdGhFbGVtZW50LCAxODAsIDE4
MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1zdmdkb20tbWFy
a2VySGVpZ2h0LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMt
dXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1zdmdkb20tbWFya2VySGVpZ2h0LXBy
b3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1zdmdkb20tbWFya2VySGVpZ2h0LXByb3AuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDMgKzQyLDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7
CiB9CiAKIHN0YXJ0VGVzdChwYXRoRWxlbWVudCwgMTgwLCAxODApOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMv
cmVzb3VyY2VzL1NWR01hcmtlckVsZW1lbnQtc3ZnZG9tLW1hcmtlclVuaXRzLXByb3AuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZH
TWFya2VyRWxlbWVudC1zdmdkb20tbWFya2VyVW5pdHMtcHJvcC5qcwkocmV2aXNpb24gMzU3MDMp
CisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXJrZXJF
bGVtZW50LXN2Z2RvbS1tYXJrZXJVbml0cy1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MSwz
ICs0MSw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocGF0aEVs
ZW1lbnQsIDE4MCwgMTgwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4
OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXJrZXJFbGVt
ZW50LXN2Z2RvbS1tYXJrZXJXaWR0aC1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hcmtlckVsZW1lbnQtc3ZnZG9tLW1h
cmtlcldpZHRoLXByb3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5
bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1zdmdkb20tbWFya2VyV2lk
dGgtcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDEsMyArNDEsNSBAQCBmdW5jdGlvbiBleGVj
dXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHBhdGhFbGVtZW50LCAxODAsIDE4MCk7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFt
aWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1zdmdkb20tb3JpZW50QW5nbGUt
cHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jl
c291cmNlcy9TVkdNYXJrZXJFbGVtZW50LXN2Z2RvbS1vcmllbnRBbmdsZS1wcm9wLmpzCShyZXZp
c2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2Vz
L1NWR01hcmtlckVsZW1lbnQtc3ZnZG9tLW9yaWVudEFuZ2xlLXByb3AuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDMgKzQ1LDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0
VGVzdChwYXRoRWxlbWVudCwgMTgwLCAxODApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NW
R01hcmtlckVsZW1lbnQtc3ZnZG9tLW9yaWVudFR5cGUtcHJvcC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXJrZXJFbGVtZW50
LXN2Z2RvbS1vcmllbnRUeXBlLXByb3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1zdmdkb20t
b3JpZW50VHlwZS1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NSwzICs0NSw1IEBAIGZ1bmN0
aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocGF0aEVsZW1lbnQsIDE4MCwgMTgw
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9z
dmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXJrZXJFbGVtZW50LXN2Z2RvbS1yZWZY
LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9y
ZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVudC1zdmdkb20tcmVmWC1wcm9wLmpzCShyZXZpc2lvbiAz
NTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01h
cmtlckVsZW1lbnQtc3ZnZG9tLXJlZlgtcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDEsMyAr
NDEsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHBhdGhFbGVt
ZW50LCAxODAsIDE4MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDog
TGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxlbWVu
dC1zdmdkb20tcmVmWS1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5h
bWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hcmtlckVsZW1lbnQtc3ZnZG9tLXJlZlktcHJvcC5q
cwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jl
c291cmNlcy9TVkdNYXJrZXJFbGVtZW50LXN2Z2RvbS1yZWZZLXByb3AuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDMgKzQxLDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0
VGVzdChwYXRoRWxlbWVudCwgMTgwLCAxODApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NW
R01hcmtlckVsZW1lbnQtc3ZnZG9tLXNldE9yaWVudFRvQW5nbGUtY2FsbC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXJrZXJF
bGVtZW50LXN2Z2RvbS1zZXRPcmllbnRUb0FuZ2xlLWNhbGwuanMJKHJldmlzaW9uIDM1NzAzKQor
KysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFya2VyRWxl
bWVudC1zdmdkb20tc2V0T3JpZW50VG9BbmdsZS1jYWxsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00
NSwzICs0NSw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocGF0
aEVsZW1lbnQsIDE4MCwgMTgwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXJrZXJF
bGVtZW50LXN2Z2RvbS1zZXRPcmllbnRUb0F1dG8tY2FsbC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXJrZXJFbGVtZW50LXN2
Z2RvbS1zZXRPcmllbnRUb0F1dG8tY2FsbC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRU
ZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXJrZXJFbGVtZW50LXN2Z2Rv
bS1zZXRPcmllbnRUb0F1dG8tY2FsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDUsMyArNDUsNSBA
QCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHBhdGhFbGVtZW50LCAx
ODAsIDE4MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFza0VsZW1lbnQtZG9tLWhl
aWdodC1hdHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0
ZXMvcmVzb3VyY2VzL1NWR01hc2tFbGVtZW50LWRvbS1oZWlnaHQtYXR0ci5qcwkocmV2aXNpb24g
MzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdN
YXNrRWxlbWVudC1kb20taGVpZ2h0LWF0dHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDMgKzQ0
LDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChyZWN0RWxlbWVu
dCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hc2tFbGVtZW50LWRv
bS1tYXNrQ29udGVudFVuaXRzLWF0dHIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Zn
L2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFza0VsZW1lbnQtZG9tLW1hc2tDb250ZW50
VW5pdHMtYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1p
Yy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXNrRWxlbWVudC1kb20tbWFza0NvbnRlbnRVbml0cy1h
dHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NSwzICs0NSw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVU
ZXN0KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11
cGRhdGVzL3Jlc291cmNlcy9TVkdNYXNrRWxlbWVudC1kb20tbWFza1VuaXRzLWF0dHIuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZH
TWFza0VsZW1lbnQtZG9tLW1hc2tVbml0cy1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hc2tFbGVtZW50LWRv
bS1tYXNrVW5pdHMtYXR0ci5qcwkod29ya2luZyBjb3B5KQpAQCAtNDgsMyArNDgsNSBAQCBmdW5j
dGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAxNTAsIDE1
MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFza0VsZW1lbnQtZG9tLXdpZHRoLWF0
dHIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNv
dXJjZXMvU1ZHTWFza0VsZW1lbnQtZG9tLXdpZHRoLWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQor
KysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFza0VsZW1l
bnQtZG9tLXdpZHRoLWF0dHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDMgKzQ0LDUgQEAgZnVu
Y3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChyZWN0RWxlbWVudCwgMTUwLCAx
NTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hc2tFbGVtZW50LWRvbS14LWF0dHIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJj
ZXMvU1ZHTWFza0VsZW1lbnQtZG9tLXgtYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlv
dXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXNrRWxlbWVudC1kb20t
eC1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NSwzICs0NSw1IEBAIGZ1bmN0aW9uIGV4ZWN1
dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1p
Yy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXNrRWxlbWVudC1kb20teS1hdHRyLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hc2tF
bGVtZW50LWRvbS15LWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3Zn
L2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFza0VsZW1lbnQtZG9tLXktYXR0ci5qcwko
d29ya2luZyBjb3B5KQpAQCAtNDUsMyArNDUsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsK
IH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAxNTAsIDE1MCk7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9y
ZXNvdXJjZXMvU1ZHTWFza0VsZW1lbnQtc3ZnZG9tLWhlaWdodC1wcm9wLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hc2tFbGVt
ZW50LXN2Z2RvbS1oZWlnaHQtcHJvcC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0
cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXNrRWxlbWVudC1zdmdkb20taGVp
Z2h0LXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDMgKzQ0LDUgQEAgZnVuY3Rpb24gZXhl
Y3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChyZWN0RWxlbWVudCwgMTUwLCAxNTApOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5h
bWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hc2tFbGVtZW50LXN2Z2RvbS1tYXNrQ29udGVudFVu
aXRzLXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHTWFza0VsZW1lbnQtc3ZnZG9tLW1hc2tDb250ZW50VW5pdHMtcHJvcC5q
cwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jl
c291cmNlcy9TVkdNYXNrRWxlbWVudC1zdmdkb20tbWFza0NvbnRlbnRVbml0cy1wcm9wLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC00NSwzICs0NSw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewog
fQogCiBzdGFydFRlc3QocmVjdEVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jl
c291cmNlcy9TVkdNYXNrRWxlbWVudC1zdmdkb20tbWFza1VuaXRzLXByb3AuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFza0Vs
ZW1lbnQtc3ZnZG9tLW1hc2tVbml0cy1wcm9wLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91
dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hc2tFbGVtZW50LXN2Z2Rv
bS1tYXNrVW5pdHMtcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDgsMyArNDgsNSBAQCBmdW5j
dGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAxNTAsIDE1
MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFza0VsZW1lbnQtc3ZnZG9tLXdpZHRo
LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9y
ZXNvdXJjZXMvU1ZHTWFza0VsZW1lbnQtc3ZnZG9tLXdpZHRoLXByb3AuanMJKHJldmlzaW9uIDM1
NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFz
a0VsZW1lbnQtc3ZnZG9tLXdpZHRoLXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDMgKzQ0
LDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChyZWN0RWxlbWVu
dCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR01hc2tFbGVtZW50LXN2
Z2RvbS14LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBk
YXRlcy9yZXNvdXJjZXMvU1ZHTWFza0VsZW1lbnQtc3ZnZG9tLXgtcHJvcC5qcwkocmV2aXNpb24g
MzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdN
YXNrRWxlbWVudC1zdmdkb20teC1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NSwzICs0NSw1
IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVsZW1lbnQs
IDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdNYXNrRWxlbWVudC1zdmdk
b20teS1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0
ZXMvcmVzb3VyY2VzL1NWR01hc2tFbGVtZW50LXN2Z2RvbS15LXByb3AuanMJKHJldmlzaW9uIDM1
NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHTWFz
a0VsZW1lbnQtc3ZnZG9tLXktcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDUsMyArNDUsNSBA
QCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAx
NTAsIDE1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9t
LWhlaWdodC1hdHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVw
ZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRlcm5FbGVtZW50LWRvbS1oZWlnaHQtYXR0ci5qcwkocmV2
aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNl
cy9TVkdQYXR0ZXJuRWxlbWVudC1kb20taGVpZ2h0LWF0dHIuanMJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDMgKzQ2LDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChy
ZWN0RWxlbWVudCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
SW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRl
cm5FbGVtZW50LWRvbS1wYXR0ZXJuQ29udGVudFVuaXRzLWF0dHIuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1l
bnQtZG9tLXBhdHRlcm5Db250ZW50VW5pdHMtYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBM
YXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdQYXR0ZXJuRWxlbWVu
dC1kb20tcGF0dGVybkNvbnRlbnRVbml0cy1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NSwz
ICs0NSw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVs
ZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4
OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdQYXR0ZXJuRWxl
bWVudC1kb20tcGF0dGVyblRyYW5zZm9ybS1hdHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRlcm5FbGVtZW50LWRvbS1w
YXR0ZXJuVHJhbnNmb3JtLWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLXBhdHRl
cm5UcmFuc2Zvcm0tYXR0ci5qcwkod29ya2luZyBjb3B5KQpAQCAtNDcsMyArNDcsNSBAQCBmdW5j
dGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAxNTAsIDE1
MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLXBhdHRl
cm5Vbml0cy1hdHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVw
ZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRlcm5FbGVtZW50LWRvbS1wYXR0ZXJuVW5pdHMtYXR0ci5q
cwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jl
c291cmNlcy9TVkdQYXR0ZXJuRWxlbWVudC1kb20tcGF0dGVyblVuaXRzLWF0dHIuanMJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDMgKzQ1LDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAK
IHN0YXJ0VGVzdChyZWN0RWxlbWVudCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3Vy
Y2VzL1NWR1BhdHRlcm5FbGVtZW50LWRvbS13aWR0aC1hdHRyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRlcm5FbGVtZW50
LWRvbS13aWR0aC1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9k
eW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRlcm5FbGVtZW50LWRvbS13aWR0aC1hdHRy
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NiwzICs0Niw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0
KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRh
dGVzL3Jlc291cmNlcy9TVkdQYXR0ZXJuRWxlbWVudC1kb20teC1hdHRyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRlcm5F
bGVtZW50LWRvbS14LWF0dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3Zn
L2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLXgtYXR0ci5q
cwkod29ya2luZyBjb3B5KQpAQCAtNDgsMyArNDgsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgp
IHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAxNTAsIDE1MCk7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1lbnQtZG9tLXktYXR0ci5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdQYXR0ZXJuRWxl
bWVudC1kb20teS1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9k
eW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRlcm5FbGVtZW50LWRvbS15LWF0dHIuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDMgKzQ4LDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7
CiB9CiAKIHN0YXJ0VGVzdChyZWN0RWxlbWVudCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMv
cmVzb3VyY2VzL1NWR1BhdHRlcm5FbGVtZW50LXN2Z2RvbS1oZWlnaHQtcHJvcC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdQYXR0
ZXJuRWxlbWVudC1zdmdkb20taGVpZ2h0LXByb3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5
b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1lbnQt
c3ZnZG9tLWhlaWdodC1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NiwzICs0Niw1IEBAIGZ1
bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVsZW1lbnQsIDE1MCwg
MTUwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdQYXR0ZXJuRWxlbWVudC1zdmdkb20t
cGF0dGVybkNvbnRlbnRVbml0cy1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRlcm5FbGVtZW50LXN2Z2RvbS1wYXR0
ZXJuQ29udGVudFVuaXRzLXByb3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1lbnQtc3ZnZG9tLXBh
dHRlcm5Db250ZW50VW5pdHMtcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDUsMyArNDUsNSBA
QCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAx
NTAsIDE1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1lbnQtc3Zn
ZG9tLXBhdHRlcm5UcmFuc2Zvcm0tcHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdQYXR0ZXJuRWxlbWVudC1zdmdkb20tcGF0
dGVyblRyYW5zZm9ybS1wcm9wLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2
Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRlcm5FbGVtZW50LXN2Z2RvbS1wYXR0
ZXJuVHJhbnNmb3JtLXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTc1LDMgKzc1LDUgQEAgZnVu
Y3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChyZWN0RWxlbWVudCwgMTUwLCAx
NTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRlcm5FbGVtZW50LXN2Z2RvbS1w
YXR0ZXJuVW5pdHMtcHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1p
Yy11cGRhdGVzL3Jlc291cmNlcy9TVkdQYXR0ZXJuRWxlbWVudC1zdmdkb20tcGF0dGVyblVuaXRz
LXByb3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBk
YXRlcy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1lbnQtc3ZnZG9tLXBhdHRlcm5Vbml0cy1wcm9w
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NSwzICs0NSw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0
KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRh
dGVzL3Jlc291cmNlcy9TVkdQYXR0ZXJuRWxlbWVudC1zdmdkb20td2lkdGgtcHJvcC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdQ
YXR0ZXJuRWxlbWVudC1zdmdkb20td2lkdGgtcHJvcC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBM
YXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdQYXR0ZXJuRWxlbWVu
dC1zdmdkb20td2lkdGgtcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDYsMyArNDYsNSBAQCBm
dW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAxNTAs
IDE1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1lbnQtc3ZnZG9t
LXgtcHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVz
L3Jlc291cmNlcy9TVkdQYXR0ZXJuRWxlbWVudC1zdmdkb20teC1wcm9wLmpzCShyZXZpc2lvbiAz
NTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1Bh
dHRlcm5FbGVtZW50LXN2Z2RvbS14LXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDMgKzQ4
LDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChyZWN0RWxlbWVu
dCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1BhdHRlcm5FbGVtZW50
LXN2Z2RvbS15LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMt
dXBkYXRlcy9yZXNvdXJjZXMvU1ZHUGF0dGVybkVsZW1lbnQtc3ZnZG9tLXktcHJvcC5qcwkocmV2
aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNl
cy9TVkdQYXR0ZXJuRWxlbWVudC1zdmdkb20teS1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00
OCwzICs0OCw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocmVj
dEVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQtZG9tLWN4LWF0dHIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LWRv
bS1jeC1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWlj
LXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC1kb20tY3gtYXR0ci5q
cwkod29ya2luZyBjb3B5KQpAQCAtNDEsMyArNDEsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgp
IHsKIH0KIAogc3RhcnRUZXN0KGVsbGlwc2VFbGVtZW50LCAxNTAsIDE1MCk7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBk
YXRlcy9yZXNvdXJjZXMvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LWRvbS1jeS1hdHRyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC1kb20tY3ktYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisr
KyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQtZG9tLWN5LWF0dHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTQxLDMgKzQxLDUg
QEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChlbGxpcHNlRWxlbWVu
dCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC1kb20tZngtYXR0ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHlu
YW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQtZG9tLWZ4LWF0
dHIuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LWRvbS1meC1hdHRyLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSwzICs0MSw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQog
CiBzdGFydFRlc3QoZWxsaXBzZUVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jl
c291cmNlcy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQtZG9tLWZ5LWF0dHIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LWRvbS1meS1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91
dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC1kb20tZnktYXR0ci5qcwkod29ya2luZyBjb3B5KQpAQCAtNDEsMyArNDEsNSBAQCBmdW5j
dGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KGVsbGlwc2VFbGVtZW50LCAxNTAs
IDE1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LWRvbS1ncmFkaWVudFRyYW5zZm9ybS1hdHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC1k
b20tZ3JhZGllbnRUcmFuc2Zvcm0tYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRU
ZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQtZG9tLWdyYWRpZW50VHJhbnNmb3JtLWF0dHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTQxLDMg
KzQxLDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChlbGxpcHNl
RWxlbWVudCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JhZGlhbEdy
YWRpZW50RWxlbWVudC1kb20tZ3JhZGllbnRVbml0cy1hdHRyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC1kb20tZ3JhZGllbnRVbml0cy1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC1kb20tZ3JhZGllbnRVbml0cy1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MCwz
ICs0MCw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoZWxsaXBz
ZUVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQtZG9tLXItYXR0ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQtZG9t
LXItYXR0ci5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11
cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQtZG9tLXItYXR0ci5qcwko
d29ya2luZyBjb3B5KQpAQCAtNDIsMyArNDIsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsK
IH0KIAogc3RhcnRUZXN0KGVsbGlwc2VFbGVtZW50LCAxNTAsIDE1MCk7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9yZXNvdXJjZXMvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LXN2Z2RvbS1jeC1wcm9wLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC1zdmdkb20tY3gtcHJvcC5qcwkocmV2aXNpb24gMzU3MDMp
CisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQtc3ZnZG9tLWN4LXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTQxLDMg
KzQxLDUgQEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChlbGxpcHNl
RWxlbWVudCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JhZGlhbEdy
YWRpZW50RWxlbWVudC1zdmdkb20tY3ktcHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQt
c3ZnZG9tLWN5LXByb3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5
bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LXN2Z2RvbS1j
eS1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MSwzICs0MSw1IEBAIGZ1bmN0aW9uIGV4ZWN1
dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QoZWxsaXBzZUVsZW1lbnQsIDE1MCwgMTUwKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHlu
YW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQtc3ZnZG9tLWZ4
LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9y
ZXNvdXJjZXMvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LXN2Z2RvbS1meC1wcm9wLmpzCShyZXZp
c2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2Vz
L1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC1zdmdkb20tZngtcHJvcC5qcwkod29ya2luZyBjb3B5
KQpAQCAtNDEsMyArNDEsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRU
ZXN0KGVsbGlwc2VFbGVtZW50LCAxNTAsIDE1MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMv
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LXN2Z2RvbS1meS1wcm9wLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC1zdmdkb20tZnktcHJvcC5qcwkocmV2aXNpb24gMzU3MDMpCisrKyBMYXlvdXRU
ZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQtc3ZnZG9tLWZ5LXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTQxLDMgKzQxLDUgQEAgZnVu
Y3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChlbGxpcHNlRWxlbWVudCwgMTUw
LCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC1zdmdkb20tZ3JhZGllbnRUcmFuc2Zvcm0tcHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQtc3ZnZG9tLWdyYWRpZW50VHJhbnNmb3JtLXByb3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysg
TGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LXN2Z2RvbS1ncmFkaWVudFRyYW5zZm9ybS1wcm9wLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC02OCwzICs2OCw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRl
c3QoZWxsaXBzZUVsZW1lbnQsIDE1MCwgMTUwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQtc3ZnZG9tLWdyYWRpZW50VW5pdHMtcHJvcC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQtc3ZnZG9tLWdyYWRpZW50VW5pdHMtcHJvcC5qcwkocmV2aXNp
b24gMzU3MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQtc3ZnZG9tLWdyYWRpZW50VW5pdHMtcHJvcC5qcwkod29y
a2luZyBjb3B5KQpAQCAtNDAsMyArNDAsNSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0K
IAogc3RhcnRUZXN0KGVsbGlwc2VFbGVtZW50LCAxNTAsIDE1MCk7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9y
ZXNvdXJjZXMvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LXN2Z2RvbS1yLXByb3AuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50LXN2Z2RvbS1yLXByb3AuanMJKHJldmlzaW9uIDM1NzAzKQorKysg
TGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LXN2Z2RvbS1yLXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTQyLDMgKzQyLDUg
QEAgZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChlbGxpcHNlRWxlbWVu
dCwgMTUwLCAxNTApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JlY3RFbGVtZW50LWRv
bS1oZWlnaHQtYXR0ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11
cGRhdGVzL3Jlc291cmNlcy9TVkdSZWN0RWxlbWVudC1kb20taGVpZ2h0LWF0dHIuanMJKHJldmlz
aW9uIDM1NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMv
U1ZHUmVjdEVsZW1lbnQtZG9tLWhlaWdodC1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwz
ICsyMiw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVs
ZW1lbnQsIDEwMCwgMjUpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JlY3RFbGVtZW50
LWRvbS13aWR0aC1hdHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWlj
LXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JlY3RFbGVtZW50LWRvbS13aWR0aC1hdHRyLmpzCShyZXZp
c2lvbiAzNTcwMykKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2Vz
L1NWR1JlY3RFbGVtZW50LWRvbS13aWR0aC1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwz
ICsyMiw1IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVs
ZW1lbnQsIDI1LCAxMDApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JlY3RFbGVtZW50
LWRvbS14LWF0dHIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBk
YXRlcy9yZXNvdXJjZXMvU1ZHUmVjdEVsZW1lbnQtZG9tLXgtYXR0ci5qcwkocmV2aXNpb24gMzU3
MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSZWN0
RWxlbWVudC1kb20teC1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwzICsyMiw1IEBAIGZ1
bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVsZW1lbnQsIDAsIDEw
MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUmVjdEVsZW1lbnQtZG9tLXktYXR0ci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNl
cy9TVkdSZWN0RWxlbWVudC1kb20teS1hdHRyLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExheW91
dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JlY3RFbGVtZW50LWRvbS15
LWF0dHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTIyLDMgKzIyLDUgQEAgZnVuY3Rpb24gZXhlY3V0
ZVRlc3QoKSB7CiB9CiAKIHN0YXJ0VGVzdChyZWN0RWxlbWVudCwgMTAwLCAwKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11
cGRhdGVzL3Jlc291cmNlcy9TVkdSZWN0RWxlbWVudC1zdmdkb20taGVpZ2h0LXByb3AuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZH
UmVjdEVsZW1lbnQtc3ZnZG9tLWhlaWdodC1wcm9wLmpzCShyZXZpc2lvbiAzNTcwMykKKysrIExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JlY3RFbGVtZW50LXN2
Z2RvbS1oZWlnaHQtcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjIsMyArMjIsNSBAQCBmdW5j
dGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAxMDAsIDI1
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9z
dmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSZWN0RWxlbWVudC1zdmdkb20td2lkdGgt
cHJvcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jl
c291cmNlcy9TVkdSZWN0RWxlbWVudC1zdmdkb20td2lkdGgtcHJvcC5qcwkocmV2aXNpb24gMzU3
MDMpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSZWN0
RWxlbWVudC1zdmdkb20td2lkdGgtcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjIsMyArMjIs
NSBAQCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50
LCAyNSwgMTAwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSZWN0RWxlbWVudC1zdmdk
b20teC1wcm9wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0
ZXMvcmVzb3VyY2VzL1NWR1JlY3RFbGVtZW50LXN2Z2RvbS14LXByb3AuanMJKHJldmlzaW9uIDM1
NzAzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9yZXNvdXJjZXMvU1ZHUmVj
dEVsZW1lbnQtc3ZnZG9tLXgtcHJvcC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjIsMyArMjIsNSBA
QCBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKIH0KIAogc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAw
LCAxMDApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1JlY3RFbGVtZW50LXN2Z2RvbS15
LXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9y
ZXNvdXJjZXMvU1ZHUmVjdEVsZW1lbnQtc3ZnZG9tLXktcHJvcC5qcwkocmV2aXNpb24gMzU3MDMp
CisrKyBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdSZWN0RWxl
bWVudC1zdmdkb20teS1wcm9wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwzICsyMiw1IEBAIGZ1
bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewogfQogCiBzdGFydFRlc3QocmVjdEVsZW1lbnQsIDEwMCwg
MCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22926</attachid>
            <date>2008-08-21 15:14:33 -0700</date>
            <delta_ts>2008-08-29 17:26:06 -0700</delta_ts>
            <desc>remove the need for InternalFunction to return a UString&amp; to its name</desc>
            <filename>FunctionNamePatch.txt</filename>
            <type>text/plain</type>
            <size>9384</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM1ODc4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDgtMDgtMjEgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gc21hbGwgdHdlYWsgdG8gRGVidWdnZXJDYWxsRnJhbWUgc28gaXQg
ZG9lc24ndCByZXF1aXJlCisgICAgICAgICAgZnVuY3Rpb24gbmFtZXMgdGhhdCBhcmUgYWxyZWFk
eSBpbiBhIFVTdHJpbmcKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDogVXBkYXRlZC4K
KworICAgICAgICAqIGtqcy9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChLSlM6OkRl
YnVnZ2VyQ2FsbEZyYW1lOjpnZXRGdW5jdGlvbk5hbWUpOiBSZXBsYWNlZCBmdW5jdGlvbk5hbWUg
d2l0aCB0aGlzLgorICAgICAgICBSZXR1cm5zIGEgYm9vbCBpbiBjYXNlcyB3aGVyZSBmdW5jdGlv
bk5hbWUgd291bGQgcmV0dXJuIDAsIGFuZCB1c2VzIGEKKyAgICAgICAgVVN0cmluZyBvdXQgcGFy
YW1ldGVyIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgY29uc3QgVVN0cmluZyouCisgICAgICAgICog
a2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmg6IERpdHRvLgorCisgICAgICAgICoga2pzL0ludGVybmFs
RnVuY3Rpb24uY3BwOgorICAgICAgICAoS0pTOjpJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKTogQ2hh
bmdlZCByZXR1cm4gdHlwZSB0byBVU3RyaW5nIHRvIHByZXBhcmUgZm9yCisgICAgICAgIGEgZnV0
dXJlIHdoZXJlIGltbWVkaWF0ZS1lbmNvZGVkIHN0cmluZ3Mgd2lsbCBub3QgaGF2ZSBhIFVTdHJp
bmcuCisgICAgICAgICoga2pzL0ludGVybmFsRnVuY3Rpb24uaDogRGl0dG8uCisKIDIwMDgtMDgt
MjAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAgICAgIFdpbmRv
d3MgYnVpbGQgZml4LgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24g
MzU4NzgpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3OSw3ICsyNzksNyBAQCBfX1pOSzNLSlMxNkludGVybmFsRnVuY3Rpb24yMWltcGxl
bWVudHNICiBfX1pOSzNLSlMxNkpTVmFyaWFibGVPYmplY3QxNmlzVmFyaWFibGVPYmplY3RFdgog
X19aTkszS0pTMTZKU1ZhcmlhYmxlT2JqZWN0MjFnZXRQcm9wZXJ0eUF0dHJpYnV0ZXNFUE5TXzlF
eGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUmoKIF9fWk5LM0tKUzE3RGVidWdnZXJDYWxsRnJh
bWUxMHRoaXNPYmplY3RFdgotX19aTkszS0pTMTdEZWJ1Z2dlckNhbGxGcmFtZTEyZnVuY3Rpb25O
YW1lRXYKK19fWk5LM0tKUzE3RGVidWdnZXJDYWxsRnJhbWUxNWdldEZ1bmN0aW9uTmFtZUVSTlNf
N1VTdHJpbmdFCiBfX1pOSzNLSlMxN0RlYnVnZ2VyQ2FsbEZyYW1lNHR5cGVFdgogX19aTkszS0pT
MTdEZWJ1Z2dlckNhbGxGcmFtZThldmFsdWF0ZUVSS05TXzdVU3RyaW5nRVJQTlNfN0pTVmFsdWVF
CiBfX1pOSzNLSlM0Tm9kZTh0b1N0cmluZ0V2CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDM1ODc4KQorKysgSmF2YVNjcmlwdENvcmUva2pz
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTUgKzQxLDE3IEBA
IFJlZ2lzdGVyKiBEZWJ1Z2dlckNhbGxGcmFtZTo6Y2FsbEZyYW1lKCkKICAgICByZXR1cm4gbV9y
ZWdpc3RlcnMgLSBtX2NvZGVCbG9jay0+bnVtTG9jYWxzIC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJh
bWVIZWFkZXJTaXplOwogfQogCi1jb25zdCBVU3RyaW5nKiBEZWJ1Z2dlckNhbGxGcmFtZTo6ZnVu
Y3Rpb25OYW1lKCkgY29uc3QKK2Jvb2wgRGVidWdnZXJDYWxsRnJhbWU6OmdldEZ1bmN0aW9uTmFt
ZShVU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIGlmICghbV9jb2RlQmxvY2spCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjYWxsRnJhbWUoKVtSZWdpc3RlckZpbGU6
OkNhbGxlZV0uZ2V0SlNWYWx1ZSgpKTsKICAgICBpZiAoIWZ1bmN0aW9uKQotICAgICAgICByZXR1
cm4gMDsKLSAgICByZXR1cm4gJmZ1bmN0aW9uLT5uYW1lKG1fZXhlYyk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIG5hbWUgPSBmdW5jdGlvbi0+bmFtZShtX2V4ZWMpOworICAgIHJldHVy
biB0cnVlOwogfQogCiBEZWJ1Z2dlckNhbGxGcmFtZTo6VHlwZSBEZWJ1Z2dlckNhbGxGcmFtZTo6
dHlwZSgpIGNvbnN0CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRGVidWdnZXJDYWxsRnJhbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRGVidWdnZXJDYWxsRnJhbWUuaAko
cmV2aXNpb24gMzU4NzgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRGVidWdnZXJDYWxsRnJhbWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZHluYW1pY0dsb2JhbE9iamVjdDsgfQogICAgICAgICBjb25zdCBTY29wZUNoYWluTm9kZSog
c2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVDaGFpbjsgfQotICAgICAgICBjb25z
dCBVU3RyaW5nKiBmdW5jdGlvbk5hbWUoKSBjb25zdDsKKyAgICAgICAgYm9vbCBnZXRGdW5jdGlv
bk5hbWUoVVN0cmluZyYpIGNvbnN0OyAvLyByZXR1cm5zIGZhbHNlIGlmIG5vdCBhIGZ1bmN0aW9u
CiAgICAgICAgIERlYnVnZ2VyQ2FsbEZyYW1lOjpUeXBlIHR5cGUoKSBjb25zdDsKICAgICAgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QoKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSogZXZhbHVhdGUo
Y29uc3QgVVN0cmluZyYsIEpTVmFsdWUqJiBleGNlcHRpb24pIGNvbnN0OwpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL0ludGVybmFsRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMzU4NzgpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDcgKzQzLDcgQEAgSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihFeGVjUwogICAg
IHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNTdHJpbmcoZXhlYywgbmFt
ZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKLWNv
bnN0IFVTdHJpbmcmIEludGVybmFsRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQorVVN0
cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1Zh
bHVlKiB2ID0gZ2V0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKTsKICAgICBBU1NF
UlQodi0+aXNTdHJpbmcoKSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSW50ZXJuYWxGdW5j
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9JbnRlcm5hbEZ1bmN0aW9u
LmgJKHJldmlzaW9uIDM1ODc4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0ludGVybmFsRnVuY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJu
ICZpbmZvOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKICAgICAgICAg
Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIFVTdHJp
bmcgbmFtZShFeGVjU3RhdGUqKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgSW50ZXJuYWxG
dW5jdGlvbihFeGVjU3RhdGUqKTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNTg3OCkKKysrIFdlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDgtMDgtMjEgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gc21hbGwgdHdlYWsgdG8gRGVidWdnZXJDYWxsRnJhbWUgc28gaXQg
ZG9lc24ndCByZXF1aXJlCisgICAgICAgICAgZnVuY3Rpb24gbmFtZXMgdGhhdCBhcmUgYWxyZWFk
eSBpbiBhIFVTdHJpbmcKKworICAgICAgICAqIHBhZ2UvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjpmdW5jdGlvbk5hbWUpOgor
ICAgICAgICBVcGRhdGVkIGZvciBjaGFuZ2UgdG8gRGVidWdnZXJDYWxsRnJhbWU6OmdldEZ1bmN0
aW9uTmFtZS4KKwogMjAwOC0wOC0yMSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFrZSBkZWxldGluZyBhbGwgdGV4dCB3aGlsZSBlZGl0aW5nIGEgRE9N
IGF0dHJpYnV0ZSBpbgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDM1ODc4KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1NDkxLDYgKzE1NDkxLDkgQEAKIAkJCXBy
b2R1Y3RSZWZHcm91cCA9IDAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLzsK
IAkJCXByb2plY3REaXJQYXRoID0gIiI7CiAJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJcHJvamVj
dFJvb3RzID0gKAorCQkJCSIiLAorCQkJKTsKIAkJCXRhcmdldHMgPSAoCiAJCQkJOTNGMTk4QTUw
ODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmUgKi8sCiAJCQkJREQwNDFGQkUwOUQ5RERCRTAwMTBB
RjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKQEAgLTE1NjY4LDcgKzE1NjcxLDcgQEAKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0
aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19E
SVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmVcIlxuXG5pZiBbIFwiJHtCVUlMRF9TVFlMRX1cIiA9
IFwiUmVsZWFzZVwiIC1vIFwiJHtCVUlMRF9TVFlMRX1cIiA9IFwiRGVidWdcIiBdIDsgdGhlblxu
ICAgIGV4cG9ydCBDUkVBVEVfSEFTSF9UQUJMRT1cIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9KYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnMvY3JlYXRlX2hhc2hfdGFibGVcIlxu
ZWxzZVxuICAgIGV4cG9ydCBDUkVBVEVfSEFTSF9UQUJMRT1cIiR7TkVYVF9ST09UfSR7U1lTVEVN
X0xJQlJBUllfRElSfS9GcmFtZXdvcmtzL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRl
SGVhZGVycy9jcmVhdGVfaGFzaF90YWJsZVwiXG5maVxuXG5sbiAtc2ZoIFwiJHtTUkNST09UfVwi
IFdlYkNvcmVcbmV4cG9ydCBXZWJDb3JlPVwiV2ViQ29yZVwiXG5cbmlmIFsgXCIke0FDVElPTn1c
IiA9IFwiYnVpbGRcIiAtbyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsXCIgXTsgdGhlblxuICAg
IG1ha2UgLWYgXCJXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5
c2N0bCAtbiBody5hdmFpbGNwdWBcbmZpXG4iOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAg
XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViQ29yZVwiXG5jZCBcIiR7
QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlXCJcblxuaWYgWyBcIiR7
QlVJTERfU1RZTEV9XCIgPSBcIlJlbGVhc2VcIiAtbyBcIiR7QlVJTERfU1RZTEV9XCIgPSBcIkRl
YnVnXCIgXSA7IHRoZW5cbiAgICBleHBvcnQgQ1JFQVRFX0hBU0hfVEFCTEU9XCIke0JVSUxUX1BS
T0RVQ1RTX0RJUn0vSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzL2NyZWF0
ZV9oYXNoX3RhYmxlXCJcbmVsc2VcbiAgICBleHBvcnQgQ1JFQVRFX0hBU0hfVEFCTEU9XCIke05F
WFRfUk9PVH0ke1NZU1RFTV9MSUJSQVJZX0RJUn0vRnJhbWV3b3Jrcy9KYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnMvY3JlYXRlX2hhc2hfdGFibGVcIlxuZmlcblxubG4gLXNm
aCBcIiR7U1JDUk9PVH1cIiBXZWJDb3JlXG5leHBvcnQgV2ViQ29yZT1cIldlYkNvcmVcIlxuXG5l
Y2hvICRDUkVBVEVfSEFTSF9UQUJMRVxuXG5pZiBbIFwiJHtBQ1RJT059XCIgPSBcImJ1aWxkXCIg
LW8gXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbFwiIF07IHRoZW5cbiAgICBtYWtlIC1mIFwiV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcuYXZh
aWxjcHVgXG5maVxuIjsKIAkJfTsKIC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2Vj
dGlvbiAqLwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCShyZXZpc2lv
biAzNTg3OCkKKysrIFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUsMTAgKzY1LDkgQEAgU3RyaW5nIEphdmFTY3JpcHRDYWxsRnJhbWU6OmZ1
bmN0aW9uTmFtZQogICAgIEFTU0VSVChtX2lzVmFsaWQpOwogICAgIGlmICghbV9pc1ZhbGlkKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgY29uc3QgVVN0cmluZyogZnVuY3Rpb25OYW1l
ID0gbV9kZWJ1Z2dlckNhbGxGcmFtZS5mdW5jdGlvbk5hbWUoKTsKLSAgICBpZiAoIWZ1bmN0aW9u
TmFtZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiAqZnVuY3Rpb25OYW1l
OworICAgIFVTdHJpbmcgZnVuY3Rpb25OYW1lOworICAgIG1fZGVidWdnZXJDYWxsRnJhbWUuZ2V0
RnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTsKIH0K
IAogRGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgSmF2YVNjcmlwdENhbGxGcmFtZTo6dHlwZSgpIGNv
bnN0CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMzU4NzgpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA4LTA4LTIxICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAtIHNtYWxsIHR3ZWFrIHRvIERlYnVnZ2VyQ2FsbEZyYW1lIHNvIGl0IGRvZXNuJ3Qg
cmVxdWlyZQorICAgICAgICAgIGZ1bmN0aW9uIG5hbWVzIHRoYXQgYXJlIGFscmVhZHkgaW4gYSBV
U3RyaW5nCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW06Cisg
ICAgICAgICgtW1dlYlNjcmlwdENhbGxGcmFtZSBmdW5jdGlvbk5hbWVdKToKKyAgICAgICAgVXBk
YXRlZCBmb3IgY2hhbmdlIHRvIERlYnVnZ2VyQ2FsbEZyYW1lOjpnZXRGdW5jdGlvbk5hbWUuCisK
IDIwMDgtMDgtMjAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
dWJiZXItc3RhbXBlZCBieSBKb2huIFN1bGxpdmFuLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0JKHJldmlzaW9uIDM1ODc4KQorKysgV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE5Myw4ICsxOTMsMTEgQEAgTlNTdHJpbmcgKiBjb25zdCBXZWJTY3JpcHRFcnJvckxpbmVOdW1i
ZQogICAgIGlmICghX3ByaXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgY29uc3QgVVN0cmluZyogZnVuY3Rpb25OYW1lID0gX3ByaXZhdGUtPmRlYnVn
Z2VyQ2FsbEZyYW1lLT5mdW5jdGlvbk5hbWUoKTsKLSAgICByZXR1cm4gZnVuY3Rpb25OYW1lID8g
dG9OU1N0cmluZygqZnVuY3Rpb25OYW1lKSA6IG5pbDsKKyAgICBVU3RyaW5nIGZ1bmN0aW9uTmFt
ZTsKKyAgICBpZiAoIV9wcml2YXRlLT5kZWJ1Z2dlckNhbGxGcmFtZS0+Z2V0RnVuY3Rpb25OYW1l
KGZ1bmN0aW9uTmFtZSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgcmV0dXJuIHRv
TlNTdHJpbmcoZnVuY3Rpb25OYW1lKTsKIH0KIAogLy8gUmV0dXJucyB0aGUgcGVuZGluZyBleGNl
cHRpb24gZm9yIHRoaXMgZnJhbWUgKG5pbCBpZiBub25lKS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23077</attachid>
            <date>2008-08-29 17:26:37 -0700</date>
            <delta_ts>2008-08-30 16:04:13 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>SmallStringPatch.txt</filename>
            <type>text/plain</type>
            <size>36573</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDM1OTk1KQorKysgSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNyAr
MjMyLDYgQEAgX19aTjNLSlM4UHJvZmlsZXIxM3N0b3BQcm9maWxpbmdFUE5TXzlFeAogX19aTjNL
SlM4UHJvZmlsZXIxNHN0YXJ0UHJvZmlsaW5nRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdF
UE5TXzE0UHJvZmlsZXJDbGllbnRFCiBfX1pOM0tKUzhQcm9maWxlcjIxZGlkRmluaXNoQWxsRXhl
Y3V0aW9uRVBOU185RXhlY1N0YXRlRQogX19aTjNLSlM4UHJvZmlsZXI4cHJvZmlsZXJFdgotX19a
TjNLSlM4anNTdHJpbmdFUE5TXzlFeGVjU3RhdGVFUEtjCiBfX1pOM0tKUzhqc1N0cmluZ0VQTlNf
OUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQogX19aTjNLSlM5Y29uc3RydWN0RVBOU185RXhlY1N0
YXRlRVBOU183SlNWYWx1ZUVOU18xM0NvbnN0cnVjdFR5cGVFUktOU18xM0NvbnN0cnVjdERhdGFF
UktOU183QXJnTGlzdEUKIF9fWk4zS0pTZXFFUktOU183VVN0cmluZ0VQS2MKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkocmV2aXNpb24gMzU5OTUpCisrKyBKYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAg
SlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRnVuY3Rpb24oSlNDb250ZQogICAgIAogICAgIEFyZ0xp
c3QgYXJnczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVyQ291bnQ7IGkr
KykKLSAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgVVN0cmluZyhwYXJhbWV0ZXJO
YW1lc1tpXS0+dXN0cmluZygpKSkpOworICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVj
LCBwYXJhbWV0ZXJOYW1lc1tpXS0+dXN0cmluZygpKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJp
bmcoZXhlYywgYm9keS0+dXN0cmluZygpKSk7CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY29u
c3RydWN0RnVuY3Rpb24oZXhlYywgYXJncywgbmFtZUlELCBzb3VyY2VVUkwtPnVzdHJpbmcoKSwg
c3RhcnRpbmdMaW5lTnVtYmVyKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCShyZXZpc2lvbiAz
NTk5NSkKKysrIEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjYsMjMgKzIyNiwyMyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUqIGpzQWRkKEV4ZWNTdGF0
ZSogCiBzdGF0aWMgSlNWYWx1ZSoganNUeXBlU3RyaW5nRm9yVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlKiB2KQogewogICAgIGlmICh2LT5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgInVuZGVmaW5lZCIpOworICAgICAgICByZXR1cm4ganNTdHJpbmdV
bmNoZWNrZWQoZXhlYywgInVuZGVmaW5lZCIpOwogICAgIGlmICh2LT5pc0Jvb2xlYW4oKSkKLSAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJib29sZWFuIik7CisgICAgICAgIHJldHVybiBq
c1N0cmluZ1VuY2hlY2tlZChleGVjLCAiYm9vbGVhbiIpOwogICAgIGlmICh2LT5pc051bWJlcigp
KQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIm51bWJlciIpOworICAgICAgICByZXR1
cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgIm51bWJlciIpOwogICAgIGlmICh2LT5pc1N0cmlu
ZygpKQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgInN0cmluZyIpOworICAgICAgICBy
ZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgInN0cmluZyIpOwogICAgIGlmICh2LT5pc09i
amVjdCgpKSB7CiAgICAgICAgIC8vIFJldHVybiAidW5kZWZpbmVkIiBmb3Igb2JqZWN0cyB0aGF0
IHNob3VsZCBiZSB0cmVhdGVkCiAgICAgICAgIC8vIGFzIG51bGwgd2hlbiBkb2luZyBjb21wYXJp
c29ucy4KICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odiktPm1hc3F1ZXJhZGVB
c1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJ1bmRlZmlu
ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBqc1N0cmluZ1VuY2hlY2tlZChleGVjLCAidW5kZWZp
bmVkIik7CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8SlNPYmplY3QqPih2KS0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkK
LSAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiZnVuY3Rpb24iKTsKKyAgICAgICAg
ICAgIHJldHVybiBqc1N0cmluZ1VuY2hlY2tlZChleGVjLCAiZnVuY3Rpb24iKTsKICAgICB9Ci0g
ICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJvYmplY3QiKTsKKyAgICByZXR1cm4ganNTdHJpbmdV
bmNoZWNrZWQoZXhlYywgIm9iamVjdCIpOwogfQogCiBzdGF0aWMgYm9vbCBORVZFUl9JTkxJTkUg
cmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiB2UEMsIFJlZ2lzdGVyKiByLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUq
JiBleGNlcHRpb25WYWx1ZSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9BcnJheVByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0FycmF5UHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMzU5OTUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQXJyYXlQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgSlNWYWx1ZSogYXJyYXlQcm90
b0Z1bmNUb1N0cmluZyhFeGVjU3RhdAogICAgIGJvb2wgYWxyZWFkeVZpc2l0ZWQgPSAhYXJyYXlW
aXNpdGVkRWxlbWVudHMuYWRkKHRoaXNPYmopLnNlY29uZDsKICAgICBWZWN0b3I8VUNoYXIsIDI1
Nj4gc3RyQnVmZmVyOwogICAgIGlmIChhbHJlYWR5VmlzaXRlZCkKLSAgICAgICAgcmV0dXJuIGpz
U3RyaW5nKGV4ZWMsIFVTdHJpbmcoMCwgMCkpOyAvLyByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLCBh
dm9kaW5nIGluZmluaXRlIHJlY3Vyc2lvbi4KKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMp
OyAvLyByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLCBhdm9pZGluZyBpbmZpbml0ZSByZWN1cnNpb24u
CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCktPnRvVUludDMyKGV4ZWMpOwogICAgIGZvciAodW5zaWduZWQgayA9
IDA7IGsgPCBsZW5ndGg7IGsrKykgewpAQCAtMTcwLDcgKzE3MCw3IEBAIEpTVmFsdWUqIGFycmF5
UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXgKICAgICBib29sIGFscmVhZHlWaXNpdGVkID0gIWFy
cmF5VmlzaXRlZEVsZW1lbnRzLmFkZCh0aGlzT2JqKS5zZWNvbmQ7CiAgICAgVmVjdG9yPFVDaGFy
LCAyNTY+IHN0ckJ1ZmZlcjsKICAgICBpZiAoYWxyZWFkeVZpc2l0ZWQpCi0gICAgICAgIHJldHVy
biBqc1N0cmluZyhleGVjLCBVU3RyaW5nKDAsIDApKTsgLy8gcmV0dXJuIGFuIGVtcHR5IHN0cmlu
ZywgYXZvZGluZyBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgIHJldHVybiBqc1N0cmluZyhl
eGVjKTsgLy8gcmV0dXJuIGFuIGVtcHR5IHN0cmluZywgYXZvZGluZyBpbmZpbml0ZSByZWN1cnNp
b24uCiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCktPnRvVUludDMyKGV4ZWMpOwogICAgIGZvciAodW5zaWduZWQg
ayA9IDA7IGsgPCBsZW5ndGg7IGsrKykgewpAQCAtMjIwLDcgKzIyMCw3IEBAIEpTVmFsdWUqIGFy
cmF5UHJvdG9GdW5jSm9pbihFeGVjU3RhdGUqIGUKICAgICBib29sIGFscmVhZHlWaXNpdGVkID0g
IWFycmF5VmlzaXRlZEVsZW1lbnRzLmFkZCh0aGlzT2JqKS5zZWNvbmQ7CiAgICAgVmVjdG9yPFVD
aGFyLCAyNTY+IHN0ckJ1ZmZlcjsKICAgICBpZiAoYWxyZWFkeVZpc2l0ZWQpCi0gICAgICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCBVU3RyaW5nKDAsIDApKTsgLy8gcmV0dXJuIGFuIGVtcHR5IHN0
cmluZywgYXZvZGluZyBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjKTsgLy8gcmV0dXJuIGFuIGVtcHR5IHN0cmluZywgYXZvZGluZyBpbmZpbml0ZSByZWN1
cnNpb24uCiAKICAgICBVQ2hhciBjb21tYSA9ICcsJzsKICAgICBVU3RyaW5nIHNlcGFyYXRvciA9
IGFyZ3MuYXQoZXhlYywgMCktPmlzVW5kZWZpbmVkKCkgPyBVU3RyaW5nKCZjb21tYSwgMSkgOiBh
cmdzLmF0KGV4ZWMsIDApLT50b1N0cmluZyhleGVjKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9Cb29sZWFuUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
Qm9vbGVhblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDM1OTk1KQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxOSArNTQsMTkg
QEAgQm9vbGVhblByb3RvdHlwZTo6Qm9vbGVhblByb3RvdHlwZShFeGVjUwogSlNWYWx1ZSogYm9v
bGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVl
KiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKQogewogICAgIGlmICh0aGlzVmFsdWUgPT0ganNC
b29sZWFuKGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJmYWxzZSIpOwor
ICAgICAgICByZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgImZhbHNlIik7CiAKICAgICBp
ZiAodGhpc1ZhbHVlID09IGpzQm9vbGVhbih0cnVlKSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsICJ0cnVlIik7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1VuY2hlY2tlZChleGVjLCAi
dHJ1ZSIpOwogCiAgICAgaWYgKCF0aGlzVmFsdWUtPmlzT2JqZWN0KCZCb29sZWFuT2JqZWN0Ojpp
bmZvKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKIAogICAg
IGlmIChzdGF0aWNfY2FzdDxCb29sZWFuT2JqZWN0Kj4odGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1
ZSgpID09IGpzQm9vbGVhbihmYWxzZSkpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAi
ZmFsc2UiKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nVW5jaGVja2VkKGV4ZWMsICJmYWxzZSIp
OwogCiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PEJvb2xlYW5PYmplY3QqPih0aGlzVmFsdWUpLT5p
bnRlcm5hbFZhbHVlKCkgPT0ganNCb29sZWFuKHRydWUpKTsKLSAgICByZXR1cm4ganNTdHJpbmco
ZXhlYywgInRydWUiKTsKKyAgICByZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgInRydWUi
KTsKIH0KIAogSlNWYWx1ZSogYm9vbGVhblByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCosIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvRGF0ZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvRGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzU5OTUpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvRGF0ZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBKU1ZhbHVlKiBjYWxsRGF0ZShFeGVjU3RhdGUqIGV4ZWMK
ICAgICB0bSBsb2NhbFRNOwogICAgIGdldExvY2FsVGltZSgmbG9jYWxUaW1lLCAmbG9jYWxUTSk7
CiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdHMobG9jYWxUTSk7Ci0gICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsIGZvcm1hdERhdGUodHMpICsgIiAiICsgZm9ybWF0VGltZSh0cywgZmFsc2UpKTsKKyAg
ICByZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgZm9ybWF0RGF0ZSh0cykgKyAiICIgKyBm
b3JtYXRUaW1lKHRzLCBmYWxzZSkpOwogfQogCiBDYWxsVHlwZSBEYXRlQ29uc3RydWN0b3I6Omdl
dENhbGxEYXRhKENhbGxEYXRhJiBjYWxsRGF0YSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9E
YXRlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRGF0ZVBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDM1OTk1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0RhdGVQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RhdGljIEpT
Q2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdAogICAgIHNpemVfdCByZXQgPSBzdHJmdGlt
ZSh0aW1lYnVmZmVyLCBidWZzaXplLCBmb3JtYXRTdHJpbmdzW2Zvcm1hdF0sICZsb2NhbFRNKTsK
ICAKICAgICBpZiAocmV0ID09IDApCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiIik7
CisgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjKTsKICAKICAgICAvLyBDb3B5IG9yaWdpbmFs
IGludG8gdGhlIGJ1ZmZlcgogICAgIGlmICh5ZWFyTmVlZHNPZmZzZXQgJiYgZm9ybWF0ICE9IExv
Y2FsZVRpbWUpIHsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2Nh
bGVEYXRlKEV4ZWNTdGF0CiAgICAgICAgIHN0cm5jcHkoeWVhckxvY2F0aW9uLCB5ZWFyU3RyaW5n
LCB5ZWFyTGVuIC0gMSk7CiAgICAgfQogIAotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0aW1l
YnVmZmVyKTsKKyAgICByZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgdGltZWJ1ZmZlcik7
CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShXSU5fT1MpCkBAIC0zNjksMTEgKzM2OSwxMSBAQCBK
U1ZhbHVlKiBkYXRlUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlCiAgICAgRGF0ZUluc3RhbmNl
KiB0aGlzRGF0ZU9iaiA9IHN0YXRpY19jYXN0PERhdGVJbnN0YW5jZSo+KHRoaXNWYWx1ZSk7IAog
ICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwogICAgIGlm
IChpc25hbihtaWxsaSkpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiSW52YWxpZCBE
YXRlIik7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1VuY2hlY2tlZChleGVjLCAiSW52YWxpZCBE
YXRlIik7CiAKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0OwogICAgIHRoaXNEYXRlT2JqLT5tc1Rv
R3JlZ29yaWFuRGF0ZVRpbWUobWlsbGksIHV0YywgdCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIGZvcm1hdERhdGUodCkgKyAiICIgKyBmb3JtYXRUaW1lKHQsIHV0YykpOworICAgIHJldHVy
biBqc1N0cmluZ1VuY2hlY2tlZChleGVjLCBmb3JtYXREYXRlKHQpICsgIiAiICsgZm9ybWF0VGlt
ZSh0LCB1dGMpKTsKIH0KIAogSlNWYWx1ZSogZGF0ZVByb3RvRnVuY1RvVVRDU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3Qm
KQpAQCAtMzg2LDExICszODYsMTEgQEAgSlNWYWx1ZSogZGF0ZVByb3RvRnVuY1RvVVRDU3RyaW5n
KEV4ZWNTdAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBzdGF0aWNfY2FzdDxEYXRl
SW5zdGFuY2UqPih0aGlzVmFsdWUpOyAKICAgICBkb3VibGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+
aW50ZXJuYWxOdW1iZXIoKTsKICAgICBpZiAoaXNuYW4obWlsbGkpKQotICAgICAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpOworICAgICAgICByZXR1cm4ganNTdHJpbmdV
bmNoZWNrZWQoZXhlYywgIkludmFsaWQgRGF0ZSIpOwogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUg
dDsKICAgICB0aGlzRGF0ZU9iai0+bXNUb0dyZWdvcmlhbkRhdGVUaW1lKG1pbGxpLCB1dGMsIHQp
OwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBmb3JtYXREYXRlVVRDVmFyaWFudCh0KSArICIg
IiArIGZvcm1hdFRpbWUodCwgdXRjKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nVW5jaGVja2VkKGV4
ZWMsIGZvcm1hdERhdGVVVENWYXJpYW50KHQpICsgIiAiICsgZm9ybWF0VGltZSh0LCB1dGMpKTsK
IH0KIAogSlNWYWx1ZSogZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiwgSlNWYWx1ZSogdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JikKQEAgLTQwMywx
MSArNDAzLDExIEBAIEpTVmFsdWUqIGRhdGVQcm90b0Z1bmNUb0RhdGVTdHJpbmcoRXhlY1MKICAg
ICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gc3RhdGljX2Nhc3Q8RGF0ZUluc3RhbmNlKj4o
dGhpc1ZhbHVlKTsgCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVPYmotPmludGVybmFsTnVt
YmVyKCk7CiAgICAgaWYgKGlzbmFuKG1pbGxpKSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsICJJbnZhbGlkIERhdGUiKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nVW5jaGVja2VkKGV4
ZWMsICJJbnZhbGlkIERhdGUiKTsKIAogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7CiAgICAgdGhp
c0RhdGVPYmotPm1zVG9HcmVnb3JpYW5EYXRlVGltZShtaWxsaSwgdXRjLCB0KTsKLSAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgZm9ybWF0RGF0ZSh0KSk7CisgICAgcmV0dXJuIGpzU3RyaW5nVW5j
aGVja2VkKGV4ZWMsIGZvcm1hdERhdGUodCkpOwogfQogCiBKU1ZhbHVlKiBkYXRlUHJvdG9GdW5j
VG9UaW1lU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFs
dWUsIGNvbnN0IEFyZ0xpc3QmKQpAQCAtNDIwLDExICs0MjAsMTEgQEAgSlNWYWx1ZSogZGF0ZVBy
b3RvRnVuY1RvVGltZVN0cmluZyhFeGVjUwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmog
PSBzdGF0aWNfY2FzdDxEYXRlSW5zdGFuY2UqPih0aGlzVmFsdWUpOyAKICAgICBkb3VibGUgbWls
bGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKICAgICBpZiAoaXNuYW4obWlsbGkp
KQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpOworICAgICAg
ICByZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgIkludmFsaWQgRGF0ZSIpOwogCiAgICAg
R3JlZ29yaWFuRGF0ZVRpbWUgdDsKICAgICB0aGlzRGF0ZU9iai0+bXNUb0dyZWdvcmlhbkRhdGVU
aW1lKG1pbGxpLCB1dGMsIHQpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBmb3JtYXRUaW1l
KHQsIHV0YykpOworICAgIHJldHVybiBqc1N0cmluZ1VuY2hlY2tlZChleGVjLCBmb3JtYXRUaW1l
KHQsIHV0YykpOwogfQogCiBKU1ZhbHVlKiBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlz
dCYgYXJncykKQEAgLTQzNSwxMSArNDM1LDExIEBAIEpTVmFsdWUqIGRhdGVQcm90b0Z1bmNUb0xv
Y2FsZVN0cmluZyhFeGUKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gc3RhdGljX2Nh
c3Q8RGF0ZUluc3RhbmNlKj4odGhpc1ZhbHVlKTsgCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0Rh
dGVPYmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKGlzbmFuKG1pbGxpKSkKLSAgICAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKKyAgICAgICAgcmV0dXJuIGpz
U3RyaW5nVW5jaGVja2VkKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKIAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBkb3VibGUgc2VjcyA9IGZsb29yKG1pbGxpIC8gbXNQZXJTZWNvbmQpOwotICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCBmb3JtYXRMb2NhbGVEYXRlKGV4ZWMsIHNlY3MsIHRydWUsIHRy
dWUsIGFyZ3MpKTsKKyAgICByZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgZm9ybWF0TG9j
YWxlRGF0ZShleGVjLCBzZWNzLCB0cnVlLCB0cnVlLCBhcmdzKSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShhcmdzKTsKIApAQCAtNDU5LDExICs0NTksMTEgQEAgSlNWYWx1ZSogZGF0ZVByb3Rv
RnVuY1RvTG9jYWxlRGF0ZVN0cmluZwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBz
dGF0aWNfY2FzdDxEYXRlSW5zdGFuY2UqPih0aGlzVmFsdWUpOyAKICAgICBkb3VibGUgbWlsbGkg
PSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKICAgICBpZiAoaXNuYW4obWlsbGkpKQot
ICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpOworICAgICAgICBy
ZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgIkludmFsaWQgRGF0ZSIpOwogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGRvdWJsZSBzZWNzID0gZmxvb3IobWlsbGkgLyBtc1BlclNlY29uZCk7
Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGZvcm1hdExvY2FsZURhdGUoZXhlYywgc2Vjcywg
dHJ1ZSwgZmFsc2UsIGFyZ3MpKTsKKyAgICByZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywg
Zm9ybWF0TG9jYWxlRGF0ZShleGVjLCBzZWNzLCB0cnVlLCBmYWxzZSwgYXJncykpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAKQEAgLTQ4MywxMSArNDgzLDExIEBAIEpTVmFsdWUq
IGRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gc3RhdGljX2Nhc3Q8RGF0ZUluc3RhbmNlKj4odGhpc1ZhbHVlKTsgCiAgICAgZG91
YmxlIG1pbGxpID0gdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKGlzbmFu
KG1pbGxpKSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsK
KyAgICAgICAgcmV0dXJuIGpzU3RyaW5nVW5jaGVja2VkKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsK
IAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBkb3VibGUgc2VjcyA9IGZsb29yKG1pbGxpIC8gbXNQ
ZXJTZWNvbmQpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBmb3JtYXRMb2NhbGVEYXRlKGV4
ZWMsIHNlY3MsIGZhbHNlLCB0cnVlLCBhcmdzKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nVW5jaGVj
a2VkKGV4ZWMsIGZvcm1hdExvY2FsZURhdGUoZXhlYywgc2VjcywgZmFsc2UsIHRydWUsIGFyZ3Mp
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogCkBAIC01NjksMTEgKzU2OSwxMSBA
QCBKU1ZhbHVlKiBkYXRlUHJvdG9GdW5jVG9HTVRTdHJpbmcoRXhlY1N0CiAgICAgRGF0ZUluc3Rh
bmNlKiB0aGlzRGF0ZU9iaiA9IHN0YXRpY19jYXN0PERhdGVJbnN0YW5jZSo+KHRoaXNWYWx1ZSk7
IAogICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwogICAg
IGlmIChpc25hbihtaWxsaSkpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiSW52YWxp
ZCBEYXRlIik7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1VuY2hlY2tlZChleGVjLCAiSW52YWxp
ZCBEYXRlIik7CiAKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0OwogICAgIHRoaXNEYXRlT2JqLT5t
c1RvR3JlZ29yaWFuRGF0ZVRpbWUobWlsbGksIHV0YywgdCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsIGZvcm1hdERhdGVVVENWYXJpYW50KHQpICsgIiAiICsgZm9ybWF0VGltZSh0LCB1dGMp
KTsKKyAgICByZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgZm9ybWF0RGF0ZVVUQ1Zhcmlh
bnQodCkgKyAiICIgKyBmb3JtYXRUaW1lKHQsIHV0YykpOwogfQogCiBKU1ZhbHVlKiBkYXRlUHJv
dG9GdW5jR2V0TW9udGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqIHRoaXNW
YWx1ZSwgY29uc3QgQXJnTGlzdCYpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXJyb3JQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvclByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDM1OTk1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0Vycm9yUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQCBFcnJvclByb3RvdHlwZTo6
RXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlCiB7CiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwg
YmUgYWRkZWQgbGF0ZXIgaW4gRXJyb3JDb25zdHJ1Y3RvcidzIGNvbnN0cnVjdG9yCiAKLSAgICBw
dXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3RyaW5nKGV4ZWMsICJFcnJv
ciIpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5tZXNz
YWdlLCBqc1N0cmluZyhleGVjLCAiVW5rbm93biBlcnJvciIpLCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc1N0cmluZ1VuY2hlY2tlZChleGVj
LCAiRXJyb3IiKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubWVzc2FnZSwganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgIlVua25vd24gZXJyb3IiKSwgRG9u
dEVudW0pOwogCiAgICAgcHV0RGlyZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5
cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnRvU3RyaW5nLCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOwogfQpAQCAt
NjIsNyArNjIsNyBAQCBKU1ZhbHVlKiBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0CiAg
ICAgICAgIHMgKz0gdi0+dG9TdHJpbmcoZXhlYyk7CiAgICAgfQogCi0gICAgcmV0dXJuIGpzU3Ry
aW5nKGV4ZWMsIHMpOworICAgIHJldHVybiBqc1N0cmluZ1VuY2hlY2tlZChleGVjLCBzKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNDZWxsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNDZWxsLmNwcAkocmV2aXNpb24g
MzU5OTUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODQsNyArODQsNyBAQCB2b2lkKiBKU0NlbGw6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSwg
CiAgICAgcmV0dXJuIGV4ZWMtPmhlYXAoKS0+YWxsb2NhdGUoc2l6ZSk7CiAjZW5kaWYKIH0KLQor
ICAgIAogYm9vbCBKU0NlbGw6OmdldFVJbnQzMih1aW50MzJfdCYpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGZhbHNlOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9u
IDM1OTk1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Niw0ICsxNTYsNjkgQEAgSlNHbG9iYWxEYXRhKiYgSlNHbG9iYWxEYXRhOjpz
aGFyZWRJbnN0YQogICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKIH0KIAorY2xhc3MgU21hbGxT
dHJpbmdzU3RvcmFnZSB7CitwdWJsaWM6CisgICAgU21hbGxTdHJpbmdzU3RvcmFnZSgpOworICAg
IH5TbWFsbFN0cmluZ3NTdG9yYWdlKCk7CisKKyAgICBVQ2hhciBjaGFyYWN0ZXJzWzI1Nl07Cisg
ICAgVVN0cmluZzo6UmVwKiByZXBzOworfTsKKworU21hbGxTdHJpbmdzU3RvcmFnZTo6U21hbGxT
dHJpbmdzU3RvcmFnZSgpCit7CisgICAgcmVwcyA9IHN0YXRpY19jYXN0PFVTdHJpbmc6OlJlcCo+
KGZhc3RaZXJvZWRNYWxsb2Moc2l6ZW9mKFVTdHJpbmc6OlJlcCkgKiAyNTYpKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKKyAgICAgICAgY2hhcmFjdGVyc1tpXSA9
IGk7CisgICAgICAgIHJlcHNbaV0ubGVuID0gMTsKKyAgICAgICAgcmVwc1tpXS5yYyA9IDI1NjsK
KyAgICAgICAgcmVwc1tpXS5iYXNlU3RyaW5nID0gJnJlcHNbaV07CisgICAgICAgIHJlcHNbaV0u
YnVmID0gJmNoYXJhY3RlcnNbaV07CisgICAgICAgIHJlcHNbaV0udXNlZENhcGFjaXR5ID0gMTsK
KyAgICAgICAgcmVwc1tpXS5jYXBhY2l0eSA9IDE7CisgICAgICAgIHJlcHNbaV0uY2hlY2tDb25z
aXN0ZW5jeSgpOworICAgIH0KK30KKyAgICAKK1NtYWxsU3RyaW5nc1N0b3JhZ2U6On5TbWFsbFN0
cmluZ3NTdG9yYWdlKCkKK3sKKyAgICBmYXN0RnJlZShyZXBzKTsKK30KKworU21hbGxTdHJpbmdz
OjpTbWFsbFN0cmluZ3MoKQorICAgIDogbV9lbXB0eVN0cmluZygwKQorICAgICwgbV9zdG9yYWdl
KDApCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgKytpKQorICAgICAgICBt
X3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbaV0gPSAwOworfQorCitTbWFsbFN0cmluZ3M6On5TbWFs
bFN0cmluZ3MoKQoreworfQorCit2b2lkIFNtYWxsU3RyaW5nczo6bWFyaygpCit7CisgICAgaWYg
KG1fZW1wdHlTdHJpbmcgJiYgIW1fZW1wdHlTdHJpbmctPm1hcmtlZCgpKQorICAgICAgICBtX2Vt
cHR5U3RyaW5nLT5tYXJrKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgKytp
KSB7CisgICAgICAgIGlmIChtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbaV0gJiYgIW1fc2luZ2xl
Q2hhcmFjdGVyU3RyaW5nc1tpXS0+bWFya2VkKCkpCisgICAgICAgICAgICBtX3NpbmdsZUNoYXJh
Y3RlclN0cmluZ3NbaV0tPm1hcmsoKTsKKyAgICB9Cit9CisgICAgCit2b2lkIFNtYWxsU3RyaW5n
czo6Y3JlYXRlRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFTU0VSVCghbV9l
bXB0eVN0cmluZyk7CisgICAgbV9lbXB0eVN0cmluZyA9IG5ldyAoZXhlYykgSlNTdHJpbmcoIiIs
IEpTU3RyaW5nOjpIYXNPdGhlck93bmVyKTsKK30KKwordm9pZCBTbWFsbFN0cmluZ3M6OmNyZWF0
ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGNoYXIgY2hh
cmFjdGVyKQoreworICAgIGlmICghbV9zdG9yYWdlKQorICAgICAgICBtX3N0b3JhZ2Uuc2V0KG5l
dyBTbWFsbFN0cmluZ3NTdG9yYWdlKTsKKyAgICBBU1NFUlQoIW1fc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nc1tjaGFyYWN0ZXJdKTsKKyAgICBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVy
XSA9IG5ldyAoZXhlYykgSlNTdHJpbmcoJm1fc3RvcmFnZS0+cmVwc1tjaGFyYWN0ZXJdLCBKU1N0
cmluZzo6SGFzT3RoZXJPd25lcik7Cit9CisKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9K
U0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxE
YXRhLmgJKHJldmlzaW9uIDM1OTk1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hD
b3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBzdHJ1Y3QgT3BhcXVlSlNDbGFzczsKQEAgLTQyLDE2ICs0Myw1MCBAQCBuYW1lc3Bh
Y2UgS0pTIHsKIAogICAgIGNsYXNzIEFyZ0xpc3Q7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmll
cnM7CisgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEhlYXA7CiAgICAgY2xhc3MgSWRl
bnRpZmllclRhYmxlOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIEpTU3Ry
aW5nOwogICAgIGNsYXNzIExleGVyOwogICAgIGNsYXNzIE1hY2hpbmU7CiAgICAgY2xhc3MgUGFy
c2VyOwogICAgIGNsYXNzIFBhcnNlclJlZkNvdW50ZWQ7CisgICAgY2xhc3MgU21hbGxTdHJpbmdz
OwogICAgIGNsYXNzIFVTdHJpbmc7CiAgICAgc3RydWN0IEhhc2hUYWJsZTsKIAorICAgIC8vIEZJ
WE1FOiBHaXZlIFNtYWxsU3RyaW5ncyBpdHMgb3duIGhlYWRlcj8KKyAgICBjbGFzcyBTbWFsbFN0
cmluZ3NTdG9yYWdlOworICAgIGNsYXNzIFNtYWxsU3RyaW5ncyA6IE5vbmNvcHlhYmxlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFNtYWxsU3RyaW5ncygpOworICAgICAgICB+U21hbGxTdHJpbmdz
KCk7CisKKyAgICAgICAgSlNTdHJpbmcqIGVtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2VtcHR5U3RyaW5nKQorICAgICAgICAgICAgICAg
IGNyZWF0ZUVtcHR5U3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIG1fZW1wdHlTdHJp
bmc7CisgICAgICAgIH0KKyAgICAgICAgSlNTdHJpbmcqIHNpbmdsZUNoYXJhY3RlclN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIW1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tjaGFyYWN0ZXJdKQorICAgICAg
ICAgICAgICAgIGNyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhleGVjLCBjaGFyYWN0ZXIpOwor
ICAgICAgICAgICAgcmV0dXJuIG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tjaGFyYWN0ZXJdOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIG1hcmsoKTsKKyAgICAgICAgCisgICAg
cHJpdmF0ZToKKyAgICAgICAgdm9pZCBjcmVhdGVFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKKyAg
ICAgICAgdm9pZCBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgY2hhcik7CisKKyAgICAgICAgSlNTdHJpbmcqIG1fZW1wdHlTdHJpbmc7CisgICAgICAgIEpT
U3RyaW5nKiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbMjU2XTsKKyAgICAgICAgT3duUHRyPFNt
YWxsU3RyaW5nc1N0b3JhZ2U+IG1fc3RvcmFnZTsKKyAgICB9OworICAgIAogICAgIGNsYXNzIEpT
R2xvYmFsRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFsRGF0YT4gewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsKQEAgLTc1LDYg
KzExMCw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBDb21tb25JZGVudGlmaWVycyogcHJv
cGVydHlOYW1lczsKICAgICAgICAgY29uc3QgQXJnTGlzdCogZW1wdHlMaXN0OyAvLyBMaXN0cyBh
cmUgc3VwcG9zZWQgdG8gYmUgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayB0byBoYXZlIHRoZWlyIGVs
ZW1lbnRzIHByb3Blcmx5IG1hcmtlZCwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGhlcmUgLSBidXQg
dGhpcyBsaXN0IGhhcyBub3RoaW5nIHRvIG1hcmsuCiAKKyAgICAgICAgU21hbGxTdHJpbmdzIHNt
YWxsU3RyaW5nczsKKyAgICAgICAgCiAgICAgICAgIEhhc2hNYXA8T3BhcXVlSlNDbGFzcyosIE9w
YXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSo+KiBvcGFxdWVKU0NsYXNzRGF0YTsKIAogICAgICAgICBI
YXNoU2V0PFBhcnNlclJlZkNvdW50ZWQqPiogbmV3UGFyc2VyT2JqZWN0czsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9KU1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMzU5OTUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
SlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTkgKzExNSw4MiBAQCBib29sIEpT
U3RyaW5nOjppc1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUpTU3RyaW5n
KiBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpCitKU1N0cmluZyoganNT
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTU3RyaW5n
KHMgPyBzIDogIiIpOworICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuc21hbGxTdHJpbmdz
LmVtcHR5U3RyaW5nKGV4ZWMpOwogfQogCiBKU1N0cmluZyoganNTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBVU3RyaW5nJiBzKQogewotICAgIHJldHVybiBzLmlzTnVsbCgpID8gbmV3IChl
eGVjKSBKU1N0cmluZygiIikgOiBuZXcgKGV4ZWMpIEpTU3RyaW5nKHMpOworICAgIGludCBzaXpl
ID0gcy5zaXplKCk7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gZXhlYy0+Z2xvYmFs
RGF0YSgpLnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZyhleGVjKTsKKyAgICBpZiAoc2l6ZSA9PSAx
KSB7CisgICAgICAgIFVDaGFyIGMgPSBzLmRhdGEoKVswXTsKKyAgICAgICAgaWYgKGMgPD0gMHhG
RikKKyAgICAgICAgICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuc21hbGxTdHJpbmdzLnNp
bmdsZUNoYXJhY3RlclN0cmluZyhleGVjLCBjKTsKKyAgICB9CisgICAgcmV0dXJuIG5ldyAoZXhl
YykgSlNTdHJpbmcocyk7CiB9CisgICAgCitKU1N0cmluZyoganNTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjLCBVQ2hhciBjKQoreworICAgIGlmIChjIDw9IDB4RkYpCisgICAgICAgIHJldHVybiBleGVj
LT5nbG9iYWxEYXRhKCkuc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhleGVjLCBj
KTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBKU1N0cmluZyhVU3RyaW5nKCZjLCAxKSk7Cit9CisK
K0pTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFVTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCkKK3sKKyAgICBBU1NFUlQob2Zmc2V0IDwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMuc2l6ZSgpKSk7CisgICAgVUNoYXIgYyA9IHMuZGF0YSgp
W29mZnNldF07CisgICAgaWYgKGMgPD0gMHhGRikKKyAgICAgICAgcmV0dXJuIGV4ZWMtPmdsb2Jh
bERhdGEoKS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV4ZWMsIGMpOworICAg
IHJldHVybiBuZXcgKGV4ZWMpIEpTU3RyaW5nKHMuc3Vic3RyKG9mZnNldCwgMSkpOworfQorCitK
U1N0cmluZyoganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBBU1NFUlQob2Zmc2V0IDwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHMuc2l6ZSgpKSk7CisgICAgQVNTRVJUKGxlbmd0aCA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzLnNpemUoKSkpOworICAgIEFTU0VSVChvZmZzZXQgKyBsZW5ndGgg
PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5zaXplKCkpKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmco
ZXhlYyk7CisgICAgaWYgKGxlbmd0aCA9PSAxKSB7CisgICAgICAgIFVDaGFyIGMgPSBzLmRhdGEo
KVtvZmZzZXRdOworICAgICAgICBpZiAoYyA8PSAweEZGKQorICAgICAgICAgICAgcmV0dXJuIGV4
ZWMtPmdsb2JhbERhdGEoKS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV4ZWMs
IGMpOworICAgIH0KKyAgICByZXR1cm4gbmV3IChleGVjKSBKU1N0cmluZyhzLnN1YnN0cihvZmZz
ZXQsIGxlbmd0aCkpOworfQorCitKU1N0cmluZyoganNTdHJpbmdVbmNoZWNrZWQoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBjaGFyKiBzKQoreworICAgIEFTU0VSVChzKTsKKyAgICBBU1NFUlQoc1sw
XSk7CisgICAgQVNTRVJUKHNbMV0pOworICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTU3RyaW5nKHMp
OworfQorCisKK0pTU3RyaW5nKiBqc1N0cmluZ1VuY2hlY2tlZChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFVTdHJpbmcmIHMpCit7CisgICAgQVNTRVJUKHMuc2l6ZSgpID4gMSk7CisgICAgcmV0dXJu
IG5ldyAoZXhlYykgSlNTdHJpbmcocyk7Cit9CisKIAogSlNTdHJpbmcqIGpzT3duZWRTdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzKQogewotICAgIHJldHVybiBzLmlzTnVs
bCgpID8gbmV3IChleGVjKSBKU1N0cmluZygiIiwgSlNTdHJpbmc6Okhhc090aGVyT3duZXIpIDog
bmV3IChleGVjKSBKU1N0cmluZyhzLCBKU1N0cmluZzo6SGFzT3RoZXJPd25lcik7CisgICAgaW50
IHNpemUgPSBzLnNpemUoKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiBleGVjLT5n
bG9iYWxEYXRhKCkuc21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKGV4ZWMpOworICAgIGlmIChzaXpl
ID09IDEpIHsKKyAgICAgICAgVUNoYXIgYyA9IHMuZGF0YSgpWzBdOworICAgICAgICBpZiAoYyA8
PSAweEZGKQorICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5zbWFsbFN0cmlu
Z3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV4ZWMsIGMpOworICAgIH0KKyAgICByZXR1cm4gbmV3
IChleGVjKSBKU1N0cmluZyhzLCBKU1N0cmluZzo6SGFzT3RoZXJPd25lcik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEtKUwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTU3RyaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTU3RyaW5nLmgJKHJldmlzaW9uIDM1OTk1KQor
KysgSmF2YVNjcmlwdENvcmUva2pzL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcg
KzQ2LDExIEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQog
ICAgICAgICB7CiAgICAgICAgIH0KLQorICAgICAgICBKU1N0cmluZyhQYXNzUmVmUHRyPFVTdHJp
bmc6OlJlcD4gdmFsdWUsIEhhc090aGVyT3duZXJUeXBlKQorICAgICAgICAgICAgOiBtX3ZhbHVl
KHZhbHVlKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGNvbnN0IFVT
dHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgICAgIGJvb2wg
Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC04MCw4ICs4NCwxNiBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICAgICAgVVN0cmluZyBtX3ZhbHVlOwogICAgIH07CiAKKyAgICBKU1N0cmluZyoganNT
dHJpbmcoRXhlY1N0YXRlKik7CiAgICAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3Ry
aW5nCi0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqID0gIiIp
OyAvLyByZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBwYXNzZWQgMAorCisgICAgLy8gU3BlY2lhbCBj
YXNlcyBmb3Igc2luZ2xlIGNoYXJhY3RlcnMgYW5kIHN1YnN0cmluZ3MuCisgICAgSlNTdHJpbmcq
IGpzU3RyaW5nKEV4ZWNTdGF0ZSosIFVDaGFyKTsKKyAgICBKU1N0cmluZyoganNTaW5nbGVDaGFy
YWN0ZXJTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNl
dCk7CisgICAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICBKU1N0cmluZyoganNTdHJp
bmdVbmNoZWNrZWQoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOyAvLyBhcmd1bWVudCBtdXN0
IGJlIHR3byBvciBtb3JlIGNoYXJhY3RlcnMgbG9uZworICAgIEpTU3RyaW5nKiBqc1N0cmluZ1Vu
Y2hlY2tlZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIGFyZ3VtZW50IG11c3QgYmUgdHdv
IG9yIG1vcmUgY2hhcmFjdGVycyBsb25nCiAKICAgICAvLyBTaG91bGQgYmUgdXNlZCBmb3Igc3Ry
aW5ncyB0aGF0IGFyZSBvd25lZCBieSBhbiBvYmplY3QgdGhhdCB3aWxsCiAgICAgLy8gbGlrZWx5
IG91dGxpdmUgdGhlIEpTVmFsdWUgdGhpcyBtYWtlcywgc3VjaCBhcyB0aGUgcGFyc2UgdHJlZSBv
ciBhCkBAIC05OCw3ICsxMTAsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgYm9vbCBpc1N0
cmljdFVJbnQzMjsKICAgICAgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS50b1N0cmljdFVJ
bnQzMigmaXNTdHJpY3RVSW50MzIpOwogICAgICAgICBpZiAoaXNTdHJpY3RVSW50MzIgJiYgaSA8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3ZhbHVlLnNpemUoKSkpIHsKLSAgICAgICAgICAgIHNs
b3Quc2V0VmFsdWUoanNTdHJpbmcoZXhlYywgdmFsdWUoKS5zdWJzdHIoaSwgMSkpKTsKKyAgICAg
ICAgICAgIHNsb3Quc2V0VmFsdWUoanNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoZXhlYywgdmFs
dWUoKSwgaSkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMTA4
LDcgKzEyMCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0
cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICBpZiAocHJvcGVy
dHlOYW1lIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdmFsdWUuc2l6ZSgpKSkgewotICAgICAg
ICAgICAgc2xvdC5zZXRWYWx1ZShqc1N0cmluZyhleGVjLCB2YWx1ZSgpLnN1YnN0cihwcm9wZXJ0
eU5hbWUsIDEpKSk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKGpzU2luZ2xlQ2hhcmFjdGVy
U3Vic3RyaW5nKGV4ZWMsIHZhbHVlKCksIHByb3BlcnR5TmFtZSkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL051bWJlclBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL051bWJlclByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDM1OTk1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL051bWJlclBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMsNyBAQCBKU1ZhbHVlKiBu
dW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEV4ZWNTdGF0CiAKICAgICBkb3VibGUgeCA9IHYtPnVuY2hl
Y2tlZEdldE51bWJlcigpOwogICAgIGlmIChpc25hbih4KSkKLSAgICAgICAgcmV0dXJuIGpzU3Ry
aW5nKGV4ZWMsICJOYU4iKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nVW5jaGVja2VkKGV4ZWMs
ICJOYU4iKTsKIAogICAgIFVTdHJpbmcgczsKICAgICBpZiAoeCA8IDApIHsKQEAgLTMzOSw3ICsz
MzksNyBAQCBKU1ZhbHVlKiBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4CiAgICAgfQog
CiAgICAgaWYgKGlzbmFuKHgpKQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIk5hTiIp
OworICAgICAgICByZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgIk5hTiIpOwogCiAgICAg
aWYgKHggPT0gLTAuMCkgLy8gKC0wLjApLnRvRXhwb25lbnRpYWwoKSBzaG91bGQgcHJpbnQgYXMg
MCBpbnN0ZWFkIG9mIC0wCiAgICAgICAgIHggPSAwOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL09i
amVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDM1OTk1KQorKysgSmF2YVNjcmlwdENvcmUva2pz
L09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBK
U1ZhbHVlKiBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFCiAKIEpTVmFsdWUqIG9iamVj
dFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0
aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKQogewotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAi
W29iamVjdCAiICsgdGhpc1ZhbHVlLT50b1RoaXNPYmplY3QoZXhlYyktPmNsYXNzTmFtZSgpICsg
Il0iKTsKKyAgICByZXR1cm4ganNTdHJpbmdVbmNoZWNrZWQoZXhlYywgIltvYmplY3QgIiArIHRo
aXNWYWx1ZS0+dG9UaGlzT2JqZWN0KGV4ZWMpLT5jbGFzc05hbWUoKSArICJdIik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEtKUwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cENvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwQ29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAzNTk5NSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFJlZ0V4
cE1hdGNoZXNBcnJheTo6ZmlsbEFycmF5SW5zdGFuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8PSBsYXN0TnVtU3VicGF0dGVybnM7ICsraSkgewogICAgICAgICBpbnQgc3RhcnQgPSBkLT5s
YXN0T3ZlY3RvclsyICogaV07CiAgICAgICAgIGlmIChzdGFydCA+PSAwKQotICAgICAgICAgICAg
SlNBcnJheTo6cHV0KGV4ZWMsIGksIGpzU3RyaW5nKGV4ZWMsIGQtPmxhc3RJbnB1dC5zdWJzdHIo
c3RhcnQsIGQtPmxhc3RPdmVjdG9yWzIgKiBpICsgMV0gLSBzdGFydCkpKTsKKyAgICAgICAgICAg
IEpTQXJyYXk6OnB1dChleGVjLCBpLCBqc1N0cmluZyhleGVjLCBkLT5sYXN0SW5wdXQsIHN0YXJ0
LCBkLT5sYXN0T3ZlY3RvclsyICogaSArIDFdIC0gc3RhcnQpKTsKICAgICB9CiAgICAgSlNBcnJh
eTo6cHV0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pbmRleCwganNOdW1iZXIoZXhlYywg
ZC0+bGFzdE92ZWN0b3JbMF0pKTsKICAgICBKU0FycmF5OjpwdXQoZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmlucHV0LCBqc1N0cmluZyhleGVjLCBkLT5sYXN0SW5wdXQpKTsKQEAgLTE3NSw4
ICsxNzUsOCBAQCBKU09iamVjdCogUmVnRXhwQ29uc3RydWN0b3I6OmFycmF5T2ZNYXRjCiBKU1Zh
bHVlKiBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0QmFja3JlZihFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIGkpIGNvbnN0CiB7CiAgICAgaWYgKGQtPmxhc3RPdmVjdG9yICYmIGkgPD0gZC0+bGFzdE51
bVN1YlBhdHRlcm5zKQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgZC0+bGFzdElucHV0
LnN1YnN0cihkLT5sYXN0T3ZlY3RvclsyICogaV0sIGQtPmxhc3RPdmVjdG9yWzIgKiBpICsgMV0g
LSBkLT5sYXN0T3ZlY3RvclsyICogaV0pKTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIiIp
OworICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgZC0+bGFzdElucHV0LCBkLT5sYXN0T3Zl
Y3RvclsyICogaV0sIGQtPmxhc3RPdmVjdG9yWzIgKiBpICsgMV0gLSBkLT5sYXN0T3ZlY3Rvclsy
ICogaV0pOworICAgIHJldHVybiBqc1N0cmluZyhleGVjKTsKIH0KIAogSlNWYWx1ZSogUmVnRXhw
Q29uc3RydWN0b3I6OmdldExhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CkBAIC0xODQs
MjUgKzE4NCwyNSBAQCBKU1ZhbHVlKiBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0TGFzdFBhcmVuCiAg
ICAgdW5zaWduZWQgaSA9IGQtPmxhc3ROdW1TdWJQYXR0ZXJuczsKICAgICBpZiAoaSA+IDApIHsK
ICAgICAgICAgQVNTRVJUKGQtPmxhc3RPdmVjdG9yKTsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsIGQtPmxhc3RJbnB1dC5zdWJzdHIoZC0+bGFzdE92ZWN0b3JbMiAqIGldLCBkLT5sYXN0
T3ZlY3RvclsyICogaSArIDFdIC0gZC0+bGFzdE92ZWN0b3JbMiAqIGldKSk7CisgICAgICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCBkLT5sYXN0SW5wdXQsIGQtPmxhc3RPdmVjdG9yWzIgKiBpXSwg
ZC0+bGFzdE92ZWN0b3JbMiAqIGkgKyAxXSAtIGQtPmxhc3RPdmVjdG9yWzIgKiBpXSk7CiAgICAg
fQotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiIik7CisgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMpOwogfQogCiBKU1ZhbHVlKiBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0TGVmdENvbnRleHQoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogewogICAgIGlmIChkLT5sYXN0T3ZlY3RvcikKLSAgICAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGQtPmxhc3RJbnB1dC5zdWJzdHIoMCwgZC0+bGFzdE92ZWN0
b3JbMF0pKTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIiIpOworICAgICAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgZC0+bGFzdElucHV0LCAwLCBkLT5sYXN0T3ZlY3RvclswXSk7CisgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMpOwogfQogCiBKU1ZhbHVlKiBSZWdFeHBDb25zdHJ1Y3Rvcjo6
Z2V0UmlnaHRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBpZiAoZC0+bGFz
dE92ZWN0b3IpIHsKICAgICAgICAgVVN0cmluZyBzID0gZC0+bGFzdElucHV0OwotICAgICAgICBy
ZXR1cm4ganNTdHJpbmcoZXhlYywgcy5zdWJzdHIoZC0+bGFzdE92ZWN0b3JbMV0sIHMuc2l6ZSgp
IC0gZC0+bGFzdE92ZWN0b3JbMV0pKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHMs
IGQtPmxhc3RPdmVjdG9yWzFdLCBzLnNpemUoKSAtIGQtPmxhc3RPdmVjdG9yWzFdKTsKICAgICB9
Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICIiKTsKKyAgICByZXR1cm4ganNTdHJpbmcoZXhl
Yyk7CiB9CiAgICAgCiBib29sIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBKU1ZhbHVlKiBSZWdFeHBDb25zdHJ1Y3Rv
cjo6Z2V0VmFsdWVQcm9wCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9
CiAKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIiIpOworICAgIHJldHVybiBqc1N0cmluZyhl
eGVjKTsKIH0KIAogdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKiB2YWx1ZSkKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAzNTk5NSkKKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDEsNyArMTAxLDcgQEAgSlNWYWx1ZSogcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YQog
ewogICAgIGlmICghdGhpc1ZhbHVlLT5pc09iamVjdCgmUmVnRXhwT2JqZWN0OjppbmZvKSkgewog
ICAgICAgICBpZiAodGhpc1ZhbHVlLT5pc09iamVjdCgmUmVnRXhwUHJvdG90eXBlOjppbmZvKSkK
LSAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiLy8iKTsKKyAgICAgICAgICAgIHJl
dHVybiBqc1N0cmluZ1VuY2hlY2tlZChleGVjLCAiLy8iKTsKICAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKICAgICB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzU5OTUpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvU3RyaW5nQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxOCArMzAs
MTcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKIHN0YXRpYyBKU1ZhbHVlKiBzdHJpbmdGcm9tQ2hhckNv
ZGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQogewotICAgIFVTdHJpbmcgczsKLSAgICBpZiAoYXJncy5zaXplKCkpIHsKLSAgICAgICAg
VUNoYXIqIGJ1ZiA9IHN0YXRpY19jYXN0PFVDaGFyKj4oZmFzdE1hbGxvYyhhcmdzLnNpemUoKSAq
IHNpemVvZihVQ2hhcikpKTsKLSAgICAgICAgVUNoYXIqIHAgPSBidWY7Ci0gICAgICAgIEFyZ0xp
c3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGFyZ3MuZW5kKCk7Ci0gICAgICAgIGZvciAoQXJnTGlz
dDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhcmdzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgICAgICpwKysgPSBzdGF0aWNfY2FzdDxVQ2hhcj4oKCppdCkuanNWYWx1ZShleGVjKS0+
dG9VSW50MzIoZXhlYykpOwotICAgICAgICBzID0gVVN0cmluZyhidWYsIGFyZ3Muc2l6ZSgpLCBm
YWxzZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHMgPSAiIjsKKyAgICBpbnQgc2l6ZSA9IGFyZ3Mu
c2l6ZSgpOworICAgIGlmIChzaXplID09IDEpCisgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCBhcmdzLmF0KGV4ZWMsIDApLT50b1VJbnQzMihleGVjKSk7CisKKyAgICBVQ2hhciogYnVmID0g
c3RhdGljX2Nhc3Q8VUNoYXIqPihmYXN0TWFsbG9jKHNpemUgKiBzaXplb2YoVUNoYXIpKSk7Cisg
ICAgVUNoYXIqIHAgPSBidWY7CisgICAgQXJnTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYXJn
cy5lbmQoKTsKKyAgICBmb3IgKEFyZ0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYXJncy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICpwKysgPSBzdGF0aWNfY2FzdDxVQ2hhcj4o
KCppdCkuanNWYWx1ZShleGVjKS0+dG9VSW50MzIoZXhlYykpOwogCi0gICAgcmV0dXJuIGpzU3Ry
aW5nKGV4ZWMsIHMpOworICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBVU3RyaW5nKGJ1Ziwgc2l6
ZSwgZmFsc2UpKTsKIH0KIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdDb25zdHJ1
Y3Rvcik7CkBAIC03OCw3ICs3Nyw3IEBAIENvbnN0cnVjdFR5cGUgU3RyaW5nQ29uc3RydWN0b3I6
OmdldENvbnMKIHN0YXRpYyBKU1ZhbHVlKiBjYWxsU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAg
IGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICIiKTsK
KyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMpOwogICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCBhcmdzLmF0KGV4ZWMsIDApLT50b1N0cmluZyhleGVjKSk7CiB9CiAKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9TdHJpbmdPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAzNTk5NSkKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9TdHJpbmdPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIGNv
bnN0IENsYXNzSW5mbyBTdHJpbmdPYmplY3Q6OmluZm8gPSB7ICIKIFN0cmluZ09iamVjdDo6U3Ry
aW5nT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHByb3RvdHlwZSkKICAgICA6IEpT
V3JhcHBlck9iamVjdChwcm90b3R5cGUpCiB7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShqc1N0cmlu
ZyhleGVjLCAiIikpOworICAgIHNldEludGVybmFsVmFsdWUoanNTdHJpbmcoZXhlYykpOwogfQog
CiBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChKU09iamVjdCogcHJvdG90eXBlLCBKU1N0cmlu
Zyogc3RyaW5nKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1N0cmluZ1Byb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDM1OTk1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL1N0cmluZ1Byb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1MCw3ICsyNTAsNyBAQCBKU1ZhbHVlKiBzdHJpbmdQcm90b0Z1
bmNSZXBsYWNlKEV4ZWNTdGF0CiAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaFN0YXJ0IDwg
MCkKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGpzVW5kZWZpbmVkKCkpOwog
ICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmFw
cGVuZChqc1N0cmluZyhleGVjLCBzb3VyY2Uuc3Vic3RyKG1hdGNoU3RhcnQsIG1hdGNoTGVuKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgc291
cmNlLCBtYXRjaFN0YXJ0LCBtYXRjaExlbikpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGV4ZWMsIGNvbXBsZXRlTWF0Y2hTdGFydCkp
OwpAQCAtMjkyLDcgKzI5Miw3IEBAIEpTVmFsdWUqIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2UoRXhl
Y1N0YXQKIAogICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgQXJn
TGlzdCBhcmdzOwotICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBzb3VyY2Uuc3Vi
c3RyKG1hdGNoUG9zLCBtYXRjaExlbikpKTsKKyAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmco
ZXhlYywgc291cmNlLCBtYXRjaFBvcywgbWF0Y2hMZW4pKTsKICAgICAgICAgYXJncy5hcHBlbmQo
anNOdW1iZXIoZXhlYywgbWF0Y2hQb3MpKTsKICAgICAgICAgYXJncy5hcHBlbmQoc291cmNlVmFs
KTsKIApAQCAtMzIwLDE0ICszMjAsMTEgQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jQ2hhckF0
KEV4ZWNTdGF0ZQogICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS0+dG9UaGlzU3RyaW5nKGV4ZWMp
OwogICAgIGludCBsZW4gPSBzLnNpemUoKTsKIAotICAgIFVTdHJpbmcgdTsKICAgICBKU1ZhbHVl
KiBhMCA9IGFyZ3MuYXQoZXhlYywgMCk7CiAgICAgZG91YmxlIGRwb3MgPSBhMC0+dG9JbnRlZ2Vy
KGV4ZWMpOwogICAgIGlmIChkcG9zID49IDAgJiYgZHBvcyA8IGxlbikKLSAgICAgICAgdSA9IHMu
c3Vic3RyKHN0YXRpY19jYXN0PGludD4oZHBvcyksIDEpOwotICAgIGVsc2UKLSAgICAgICAgdSA9
ICIiOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB1KTsKKyAgICAgICAgcmV0dXJuIGpzU2lu
Z2xlQ2hhcmFjdGVyU3Vic3RyaW5nKGV4ZWMsIHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihkcG9z
KSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMpOwogfQogCiBKU1ZhbHVlKiBzdHJpbmdQcm90
b0Z1bmNDaGFyQ29kZUF0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCkBAIC00MjMsNyArNDIwLDcgQEAgSlNWYWx1ZSog
c3RyaW5nUHJvdG9GdW5jTWF0Y2goRXhlY1N0YXRlKgogICAgIEFyZ0xpc3QgbGlzdDsKICAgICBp
bnQgbGFzdEluZGV4ID0gMDsKICAgICB3aGlsZSAocG9zID49IDApIHsKLSAgICAgICAgbGlzdC5h
cHBlbmQoanNTdHJpbmcoZXhlYywgdS5zdWJzdHIocG9zLCBtYXRjaExlbmd0aCkpKTsKKyAgICAg
ICAgbGlzdC5hcHBlbmQoanNTdHJpbmcoZXhlYywgdSwgcG9zLCBtYXRjaExlbmd0aCkpOwogICAg
ICAgICBsYXN0SW5kZXggPSBwb3M7CiAgICAgICAgIHBvcyArPSBtYXRjaExlbmd0aCA9PSAwID8g
MSA6IG1hdGNoTGVuZ3RoOwogICAgICAgICByZWdFeHBPYmotPnBlcmZvcm1NYXRjaChyZWcuZ2V0
KCksIHUsIHBvcywgcG9zLCBtYXRjaExlbmd0aCk7CkBAIC00ODMsMTAgKzQ4MCwxMCBAQCBKU1Zh
bHVlKiBzdHJpbmdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqCiAgICAgICAgICAgICBmcm9tID0g
MDsKICAgICAgICAgaWYgKHRvID4gbGVuKQogICAgICAgICAgICAgdG8gPSBsZW47Ci0gICAgICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCBzLnN1YnN0cihzdGF0aWNfY2FzdDxpbnQ+KGZyb20pLCBz
dGF0aWNfY2FzdDxpbnQ+KHRvIC0gZnJvbSkpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihmcm9tKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRvKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihmcm9tKSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsICIiKTsKKyAgICByZXR1cm4ganNTdHJpbmcoZXhlYyk7CiB9CiAKIEpT
VmFsdWUqIHN0cmluZ1Byb3RvRnVuY1NwbGl0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBK
U1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCkBAIC01MTksNyArNTE2LDcg
QEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jU3BsaXQoRXhlY1N0YXRlKgogICAgICAgICAgICAg
aW50IG1sZW4gPSBvdmVjdG9yWzFdIC0gb3ZlY3RvclswXTsKICAgICAgICAgICAgIHBvcyA9IG1w
b3MgKyAobWxlbiA9PSAwID8gMSA6IG1sZW4pOwogICAgICAgICAgICAgaWYgKG1wb3MgIT0gcDAg
fHwgbWxlbikgewotICAgICAgICAgICAgICAgIHJlcy0+cHV0KGV4ZWMsaSwganNTdHJpbmcoZXhl
YywgdS5zdWJzdHIocDAsIG1wb3MgLSBwMCkpKTsKKyAgICAgICAgICAgICAgICByZXMtPnB1dChl
eGVjLGksIGpzU3RyaW5nKGV4ZWMsIHUsIHAwLCBtcG9zIC0gcDApKTsKICAgICAgICAgICAgICAg
ICBwMCA9IG1wb3MgKyBtbGVuOwogICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgIH0K
QEAgLTUyOCw3ICs1MjUsNyBAQCBKU1ZhbHVlKiBzdHJpbmdQcm90b0Z1bmNTcGxpdChFeGVjU3Rh
dGUqCiAgICAgICAgICAgICAgICAgaWYgKHNwb3MgPCAwKQogICAgICAgICAgICAgICAgICAgICBy
ZXMtPnB1dChleGVjLCBpKyssIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgcmVzLT5wdXQoZXhlYywgaSsrLCBqc1N0cmluZyhleGVjLCB1
LnN1YnN0cihzcG9zLCBvdmVjdG9yW3NpICogMiArIDFdIC0gc3BvcykpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzLT5wdXQoZXhlYywgaSsrLCBqc1N0cmluZyhleGVjLCB1LCBzcG9zLCBvdmVj
dG9yW3NpICogMiArIDFdIC0gc3BvcykpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKQEAgLTU0MCwxMSArNTM3LDExIEBAIEpTVmFsdWUqIHN0cmluZ1Byb3RvRnVuY1Nw
bGl0KEV4ZWNTdGF0ZSoKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGkpICE9IGxpbWl0ICYmIGkgPCB1LnNpemUoKSAtIDEpCi0gICAgICAgICAgICAgICAgICAgIHJl
cy0+cHV0KGV4ZWMsIGkrKywganNTdHJpbmcoZXhlYywgdS5zdWJzdHIocDArKywgMSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzLT5wdXQoZXhlYywgaSsrLCBqc1N0cmluZyhleGVjLCB1LCBw
MCsrLCAxKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB3
aGlsZSAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpICE9IGxpbWl0ICYmIChwb3MgPSB1LmZpbmQo
dTIsIHAwKSkgPj0gMCkgewotICAgICAgICAgICAgICAgIHJlcy0+cHV0KGV4ZWMsIGksIGpzU3Ry
aW5nKGV4ZWMsIHUuc3Vic3RyKHAwLCBwb3MgLSBwMCkpKTsKKyAgICAgICAgICAgICAgICByZXMt
PnB1dChleGVjLCBpLCBqc1N0cmluZyhleGVjLCB1LCBwMCwgcG9zIC0gcDApKTsKICAgICAgICAg
ICAgICAgICBwMCA9IHBvcyArIHUyLnNpemUoKTsKICAgICAgICAgICAgICAgICBpKys7CiAgICAg
ICAgICAgICB9CkBAIC01NTMsNyArNTUwLDcgQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jU3Bs
aXQoRXhlY1N0YXRlKgogCiAgICAgLy8gYWRkIHJlbWFpbmluZyBzdHJpbmcsIGlmIGFueQogICAg
IGlmIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgIT0gbGltaXQpCi0gICAgICAgIHJlcy0+cHV0
KGV4ZWMsIGkrKywganNTdHJpbmcoZXhlYywgdS5zdWJzdHIocDApKSk7CisgICAgICAgIHJlcy0+
cHV0KGV4ZWMsIGkrKywganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoZXhlYywgdSwgcDApKTsK
ICAgICByZXMtPnB1dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJl
cihleGVjLCBpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTU2OSw5ICs1NjYsOSBAQCBK
U1ZhbHVlKiBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRlCiAgICAgZG91YmxlIHN0YXJ0
ID0gYTAtPnRvSW50ZWdlcihleGVjKTsKICAgICBkb3VibGUgbGVuZ3RoID0gYTEtPmlzVW5kZWZp
bmVkKCkgPyBsZW4gOiBhMS0+dG9JbnRlZ2VyKGV4ZWMpOwogICAgIGlmIChzdGFydCA+PSBsZW4p
Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiIik7CisgICAgICAgIHJldHVybiBqc1N0
cmluZyhleGVjKTsKICAgICBpZiAobGVuZ3RoIDwgMCkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsICIiKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMpOwogICAgIGlmIChzdGFy
dCA8IDApIHsKICAgICAgICAgc3RhcnQgKz0gbGVuOwogICAgICAgICBpZiAoc3RhcnQgPCAwKQpA
QCAtNTc5LDcgKzU3Niw3IEBAIEpTVmFsdWUqIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3Rh
dGUKICAgICB9CiAgICAgaWYgKGxlbmd0aCA+IGxlbikKICAgICAgICAgbGVuZ3RoID0gbGVuOwot
ICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzLnN1YnN0cihzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0
KSwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgpKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
IHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihs
ZW5ndGgpKTsKIH0KIAogSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCkBAIC02MTEsNyArNjA4LDcgQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5n
KEV4ZWNTdAogICAgICAgICBlbmQgPSBzdGFydDsKICAgICAgICAgc3RhcnQgPSB0ZW1wOwogICAg
IH0KLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgcy5zdWJzdHIoc3RhdGljX2Nhc3Q8aW50Pihz
dGFydCksIChzdGF0aWNfY2FzdDxpbnQ+KGVuZCkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSkp
KTsKKyAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0
YXJ0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCkgLSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c3RhcnQpKTsKIH0KIAogSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYp
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAkocmV2aXNpb24gMzU5OTUpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTY5LDYgKzk2
OSw3IEBAIGJvb2wgSGVhcDo6Y29sbGVjdCgpCiAgICAgaWYgKG1fbWFya0xpc3RTZXQgJiYgbV9t
YXJrTGlzdFNldC0+c2l6ZSgpKQogICAgICAgICBBcmdMaXN0OjptYXJrTGlzdHMoKm1fbWFya0xp
c3RTZXQpOwogICAgIG1fZ2xvYmFsRGF0YS0+bWFjaGluZS0+cmVnaXN0ZXJGaWxlKCkubWFya0Nh
bGxGcmFtZXModGhpcyk7CisgICAgbV9nbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MubWFyaygpOwog
CiAgICAgSkFWQVNDUklQVENPUkVfR0NfTUFSS0VEKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23083</attachid>
            <date>2008-08-30 16:04:13 -0700</date>
            <delta_ts>2008-08-30 23:20:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>SingleCharacterPatch.txt</filename>
            <type>text/plain</type>
            <size>75107</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2MDA1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTg2IEBACisyMDA4LTA4LTMwICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAtIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDMzMworICAgICAgICAgIGltcHJvdmUgSmF2YVNjcmlwdCBzcGVlZCB3aGVuIGhhbmRsaW5n
IHNpbmdsZS1jaGFyYWN0ZXIgc3RyaW5ncworCisgICAgICAgIDEuMDM5eCBhcyBmYXN0IG9uIFN1
blNwaWRlciBvdmVyYWxsLgorICAgICAgICAxLjEyN3ggYXMgZmFzdCBvbiBTdW5TcGlkZXIgc3Ry
aW5nIHRlc3RzLgorICAgICAgICAxLjkxMHggYXMgZmFzdCBvbiBTdW5TcGlkZXIgc3RyaW5nLWJh
c2U2NCB0ZXN0LgorCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpT
T2JqZWN0TWFrZUZ1bmN0aW9uKTogUmVtb3ZlZCB1bm5lZWRlZCBleHBsaWNpdCBjb25zdHJ1Y3Rp
b24gb2YgVVN0cmluZy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDogVXBkYXRlZC4K
KworICAgICAgICAqIFZNL01hY2hpbmUuY3BwOgorICAgICAgICAoS0pTOjpqc0FkZFNsb3dDYXNl
KTogQ2hhbmdlZCB0byB1c2UgYSBjb2RlIHBhdGggdGhhdCBkb2Vzbid0IGludm9sdmUKKyAgICAg
ICAgYSBVU3RyaW5nIGNvbnN0cnVjdG9yLiBUaGlzIGF2b2lkcyBhbiBleHRyYSBqdW1wIGNhdXNl
ZCBieSB0aGUgImluIGNoYXJnZSIKKyAgICAgICAgdnMuICJub3QgaW4gY2hhcmdlIiBjb25zdHJ1
Y3RvcnMuCisgICAgICAgIChLSlM6OmpzQWRkKTogRGl0dG8uCisgICAgICAgIChLSlM6OmpzVHlw
ZVN0cmluZ0ZvclZhbHVlKTogQWRvcHRlZCBqc05vbnRyaXZpYWxTdHJpbmcuCisKKyAgICAgICAg
KiBranMvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoS0pTOjphcnJheVByb3RvRnVuY1Rv
U3RyaW5nKTogQWRvcHRlZCBqc0VtcHR5U3RyaW5nLgorICAgICAgICAoS0pTOjphcnJheVByb3Rv
RnVuY1RvTG9jYWxlU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChLSlM6OmFycmF5UHJvdG9GdW5j
Sm9pbik6IERpdHRvLgorICAgICAgICAqIGtqcy9Cb29sZWFuUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEtKUzo6Ym9vbGVhblByb3RvRnVuY1RvU3RyaW5nKTogQWRvcHRlZCBqc05vbnRyaXZpYWxT
dHJpbmcuCisgICAgICAgICoga2pzL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChLSlM6
OmNhbGxEYXRlKTogRGl0dG8uCisgICAgICAgICoga2pzL0RhdGVQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoS0pTOjpmb3JtYXRMb2NhbGVEYXRlKTogQWRvcHRlZCBqc0VtcHR5U3RyaW5nIGFuZCBq
c05vbnRyaXZpYWxTdHJpbmcuCisgICAgICAgIChLSlM6OmRhdGVQcm90b0Z1bmNUb1N0cmluZyk6
IERpdHRvLgorICAgICAgICAoS0pTOjpkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmcpOiBEaXR0by4K
KyAgICAgICAgKEtKUzo6ZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyk6IERpdHRvLgorICAgICAg
ICAoS0pTOjpkYXRlUHJvdG9GdW5jVG9UaW1lU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChLSlM6
OmRhdGVQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6IERpdHRvLgorICAgICAgICAoS0pTOjpkYXRl
UHJvdG9GdW5jVG9Mb2NhbGVEYXRlU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChLSlM6OmRhdGVQ
cm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKEtKUzo6ZGF0ZVBy
b3RvRnVuY1RvR01UU3RyaW5nKTogRGl0dG8uCisKKyAgICAgICAgKiBranMvRXJyb3JQcm90b3R5
cGUuY3BwOgorICAgICAgICAoS0pTOjpFcnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5cGUpOiBE
aXR0by4KKyAgICAgICAgKEtKUzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6IERpdHRvLgorCisg
ICAgICAgICoga2pzL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChLSlM6OlNtYWxsU3RyaW5n
c1N0b3JhZ2U6OlNtYWxsU3RyaW5nc1N0b3JhZ2UpOiBDb25zdHJ1Y3QgdGhlCisgICAgICAgIGJ1
ZmZlciBhbmQgVVN0cmluZzo6UmVwIGZvciBhbGwgMjU2IHNpbmdsZS1jaGFyYWN0ZXIgc3RyaW5n
cyBmb3IKKyAgICAgICAgdGhlIFUrMDAwMCB0aHJvdWdoIFUrMDBGRi4gVGhpcyBjb3ZlcnMgYWxs
IHRoZSB2YWx1ZXMgdXNlZCBpbgorICAgICAgICB0aGUgYmFzZTY0IHRlc3QgYXMgd2VsbCBhcyBt
b3N0IHZhbHVlcyBzZWVuIGVsc2V3aGVyZSBvbiB0aGUgd2ViCisgICAgICAgIGFzIHdlbGwuIEl0
J3MgcG9zc2libGUgdGhhdCBsYXRlciB3ZSBtaWdodCBmaXggdGhpcyB0byBvbmx5IHdvcmsKKyAg
ICAgICAgZm9yIFUrMDAwMCB0aHJvdWdoIFUrMDA3RiBidXQgdGhlIG90aGVycyBhcmUgdXNlZCBx
dWl0ZSBhIGJpdCBpbgorICAgICAgICB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBiYXNlNjQg
dGVzdC4KKyAgICAgICAgKEtKUzo6U21hbGxTdHJpbmdzU3RvcmFnZTo6flNtYWxsU3RyaW5nc1N0
b3JhZ2UpOiBGcmVlIG1lbW9yeS4KKyAgICAgICAgKEtKUzo6U21hbGxTdHJpbmdzOjpTbWFsbFN0
cmluZ3MpOiBDcmVhdGUgYSBzZXQgb2Ygc21hbGwgc3RyaW5ncywKKyAgICAgICAgaW5pdGlhbGx5
IG5vdCBjcmVhdGVkOyBjcmVhdGVkIGxhdGVyIHdoZW4gdGhleSBhcmUgdXNlZC4KKyAgICAgICAg
KEtKUzo6U21hbGxTdHJpbmdzOjp+U21hbGxTdHJpbmdzKTogRGVhbGxvY2F0ZS4gTm90IGxlZnQg
Y29tcGlsZXIKKyAgICAgICAgZ2VuZXJhdGVkIGJlY2F1c2UgdGhlIFNtYWxsU3RyaW5nc1N0b3Jh
Z2UgY2xhc3MncyBkZXN0cnVjdG9yIG5lZWRzCisgICAgICAgIHRvIGJlIHZpc2libGUuCisgICAg
ICAgIChLSlM6OlNtYWxsU3RyaW5nczo6bWFyayk6IE1hcmsgYWxsIHRoZSBzdHJpbmdzLgorICAg
ICAgICAoS0pTOjpTbWFsbFN0cmluZ3M6OmNyZWF0ZUVtcHR5U3RyaW5nKTogQ3JlYXRlIGEgY2Vs
bCBmb3IgdGhlCisgICAgICAgIGVtcHR5IHN0cmluZy4gQ2FsbGVkIG9ubHkgdGhlIGZpcnN0IHRp
bWUuCisgICAgICAgIChLSlM6OlNtYWxsU3RyaW5nczo6Y3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKTogQ3JlYXRlIGEgY2VsbAorICAgICAgICBmb3Igb25lIG9mIHRoZSBzaW5nbGUtY2hhcmFj
dGVyIHN0cmluZ3MuIENhbGxlZCBvbmx5IHRoZSBmaXJzdCB0aW1lLgorICAgICAgICAqIGtqcy9K
U0dsb2JhbERhdGEuaDogQWRkZWQgU21hbGxTdHJpbmdzLgorCisgICAgICAgICoga2pzL0pTU3Ry
aW5nLmNwcDoKKyAgICAgICAgKEtKUzo6anNTdHJpbmcpOiBFbGltaW5hdGVkIHRoZSBvdmVybG9h
ZCB0aGF0IHRha2VzIGEgY29uc3QgY2hhciouCisgICAgICAgIEFkZGVkIGNvZGUgdG8gdXNlIFNt
YWxsU3RyaW5ncyB0byBnZXQgc3RyaW5ncyBvZiBzbWFsbCBzaXplcyByYXRoZXIKKyAgICAgICAg
dGhhbiBjcmVhdGluZyBhIG5ldyBKU1N0cmluZyBldmVyeSB0aW1lLgorICAgICAgICAoS0pTOjpq
c1N1YnN0cmluZyk6IEFkZGVkLiBVc2VkIHdoZW4gY3JlYXRpbmcgYSBzdHJpbmcgZnJvbSBhIHN1
YnN0cmluZworICAgICAgICB0byBhdm9pZCBjcmVhdGluZyBhIEpTU3RyaW5nIGluIGNhc2VzIHdo
ZXJlIHRoZSBzdWJzdHJpbmcgd2lsbCBlbmQgdXAKKyAgICAgICAgZW1wdHkgb3IgYXMgb25lIGNo
YXJhY3Rlci4KKyAgICAgICAgKEtKUzo6anNPd25lZFN0cmluZyk6IEFkZGVkIHRoZSBzYW1lIGNv
ZGUgYXMgaW4ganNTdHJpbmcuCisKKyAgICAgICAgKiBranMvSlNTdHJpbmcuaDogQWRkZWQgbmV3
IGZ1bmN0aW9ucyBqc0VtcHR5U3RyaW5nLCBqc1NpbmdsZUNoYXJhY3RlclN0cmluZywKKyAgICAg
ICAganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcsIGpzU3Vic3RyaW5nLCBhbmQganNOb250cml2
aWFsU3RyaW5nIGZvciB2YXJpb3VzCisgICAgICAgIGNhc2VzIHdoZXJlIHdlIHdhbnQgdG8gY3Jl
YXRlIEpTU3RyaW5nLCBhbmQgd2FudCBzcGVjaWFsIGhhbmRsaW5nIGZvciBzbWFsbAorICAgICAg
ICBzdHJpbmdzLgorICAgICAgICAoS0pTOjpKU1N0cmluZzo6SlNTdHJpbmcpOiBBZGRlZCBhbiBv
dmVybG9hZCB0aGF0IHRha2VzIGEgUGFzc1JlZlB0ciBvZgorICAgICAgICBhIFVTdHJpbmc6OlJl
cCBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBjb25zdHJ1Y3QgYSBVU3RyaW5nOyBQYXNzUmVmUHRyIGNh
biBiZQorICAgICAgICBtb3JlIGVmZmljaWVudC4KKyAgICAgICAgKEtKUzo6anNFbXB0eVN0cmlu
Zyk6IEFkZGVkLgorICAgICAgICAoS0pTOjpqc1NpbmdsZUNoYXJhY3RlclN0cmluZyk6IEFkZGVk
LgorICAgICAgICAoS0pTOjpqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyk6IEFkZGVkLgorICAg
ICAgICAoS0pTOjpqc05vbnRyaXZpYWxTdHJpbmcpOiBBZGRlZC4KKyAgICAgICAgKEtKUzo6SlNT
dHJpbmc6OmdldEluZGV4KTogQWRvcHRlZCBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZy4KKyAg
ICAgICAgKEtKUzo6SlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdCk6IERpdHRvLgorCisg
ICAgICAgICoga2pzL051bWJlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChLSlM6Om51bWJlclBy
b3RvRnVuY1RvRml4ZWQpOiBBZG9wdGVkIGpzTm9udHJpdmlhbFN0cmluZy4KKyAgICAgICAgKEtK
Uzo6bnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbCk6IERpdHRvLgorICAgICAgICAoS0pTOjpu
dW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbik6IERpdHRvLgorCisgICAgICAgICoga2pzL09iamVj
dFByb3RvdHlwZS5jcHA6CisgICAgICAgIChLSlM6Om9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3Ry
aW5nKTogQWRvcHRlZCB0b1RoaXNKU1N0cmluZy4KKyAgICAgICAgKEtKUzo6b2JqZWN0UHJvdG9G
dW5jVG9TdHJpbmcpOiBBZG9wdGVkIGpzTm9udHJpdmlhbFN0cmluZy4KKworICAgICAgICAqIGtq
cy9SZWdFeHBDb25zdHJ1Y3Rvci5jcHA6IFNlcGFyYXRlZCB0aGUgbGFzdElucHV0IHZhbHVlIHRo
YXQncyB1c2VkCisgICAgICAgIHdpdGggdGhlIGxhc3RPdmVjdG9yIHRvIHJldHVybiBtYXRjaGVz
IGZyb20gdGhlIGlucHV0IHZhbHVlIHRoYXQgY2FuIGJlCisgICAgICAgIGNoYW5nZWQgdmlhIEph
dmFTY3JpcHQuIFRoZXkgd2lsbCBiZSBlcXVhbCBpbiBtYW55IGNhc2VzLCBidXQgbm90IGFsbC4K
KyAgICAgICAgKEtKUzo6UmVnRXhwQ29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaCk6IFNldCBpbnB1
dC4KKyAgICAgICAgKEtKUzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpSZWdFeHBNYXRjaGVzQXJyYXkp
OiBEaXR0by4KKyAgICAgICAgKEtKUzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpmaWxsQXJyYXlJbnN0
YW5jZSk6IEFkb3B0ZWQganNTdWJzdHJpbmcuIEFsc28sCisgICAgICAgIHVzZSBpbnB1dCByYXRo
ZXIgdGhhbiBsYXN0SW5wdXQgaW4gdGhlIGFwcHJvcHJpYXRlIHBsYWNlLgorICAgICAgICAoS0pT
OjpSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0QmFja3JlZik6IEFkb3B0ZWQganNTdWJzdHJpbmcgYW5k
IGpzRW1wdHlTdHJpbmcuCisgICAgICAgIEFkZGVkIGNvZGUgdG8gaGFuZGxlIHRoZSBjYXNlIHdo
ZXJlIHRoZXJlIGlzIG5vIGJhY2tyZWYgLS0gYmVmb3JlIHRoaXMKKyAgICAgICAgZGVwZW5kZWQg
b24gcmFuZ2UgY2hlY2tpbmcgaW4gVVN0cmluZzo6c3Vic3RyIHdoaWNoIGlzIG5vdCBwcmVzZW50
IGluCisgICAgICAgIGpzU3Vic3RyaW5nLgorICAgICAgICAoS0pTOjpSZWdFeHBDb25zdHJ1Y3Rv
cjo6Z2V0TGFzdFBhcmVuKTogRGl0dG8uCisgICAgICAgIChLSlM6OlJlZ0V4cENvbnN0cnVjdG9y
OjpnZXRMZWZ0Q29udGV4dCk6IERpdHRvLgorICAgICAgICAoS0pTOjpSZWdFeHBDb25zdHJ1Y3Rv
cjo6Z2V0UmlnaHRDb250ZXh0KTogRGl0dG8uCisgICAgICAgIChLSlM6OlJlZ0V4cENvbnN0cnVj
dG9yOjpnZXRWYWx1ZVByb3BlcnR5KTogVXNlIGlucHV0IHJhdGhlciB0aGFuIGxhc3RJbnB1dC4K
KyAgICAgICAgQWxzbyBhZG9wdCBqc0VtcHR5U3RyaW5nLgorICAgICAgICAoS0pTOjpSZWdFeHBD
b25zdHJ1Y3Rvcjo6cHV0VmFsdWVQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoS0pTOjpSZWdF
eHBDb25zdHJ1Y3Rvcjo6aW5wdXQpOiBEaXR0by4KKworICAgICAgICAqIGtqcy9SZWdFeHBQcm90
b3R5cGUuY3BwOgorICAgICAgICAoS0pTOjpyZWdFeHBQcm90b0Z1bmNUb1N0cmluZyk6IEFkb3B0
IGpzTm9uVHJpdmlhbFN0cmluZy4gQWxzbyBjaGFuZ2VkIHRvCisgICAgICAgIHVzZSBVU3RyaW5n
OjphcHBlbmQgdG8gYXBwZW5kIHNpbmdsZSBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIHVzaW5nICs9
IGFuZAorICAgICAgICBhIEMtc3R5bGUgc3RyaW5nLgorCisgICAgICAgICoga2pzL1N0cmluZ0Nv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEtKUzo6c3RyaW5nRnJvbUNoYXJDb2RlU2xvd0Nhc2Up
OiBGYWN0b3JlZCBvdXQgb2Ygc3RyaW5Gcm9tQ2hhckNvZGUuCisgICAgICAgIE9ubHkgdXNlZCBm
b3IgY2FzZXMgd2hlcmUgdGhlIGNhbGxlciBkb2VzIG5vdCBwYXNzIGV4YWN0bHkgb25lIGFyZ3Vt
ZW50LgorICAgICAgICAoS0pTOjpzdHJpbmdGcm9tQ2hhckNvZGUpOiBBZG9wdGVkIGpzU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nLgorICAgICAgICAoS0pTOjpjYWxsU3RyaW5nQ29uc3RydWN0b3IpOiBB
ZG9wdGVkIGpzRW1wdHlTdHJpbmcuCisKKyAgICAgICAgKiBranMvU3RyaW5nT2JqZWN0LmNwcDoK
KyAgICAgICAgKEtKUzo6U3RyaW5nT2JqZWN0OjpTdHJpbmdPYmplY3QpOiBBZG9wdGVkIGpzRW1w
dHlTdHJpbmcuCisKKyAgICAgICAgKiBranMvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEtKUzo6c3RyaW5nUHJvdG9GdW5jUmVwbGFjZSk6IEFkb3B0ZWQganNTdWJzdHJpbmcuCisgICAg
ICAgIChLSlM6OnN0cmluZ1Byb3RvRnVuY0NoYXJBdCk6IEFkb3B0ZWQganNFbXB0eVN0cmluZyBh
bmQKKyAgICAgICAganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcgYW5kIGFsc28gYWRkZWQgYSBz
cGVjaWFsIGNhc2Ugd2hlbiB0aGUKKyAgICAgICAgaW5kZXggaXMgYW4gaW1tZWRpYXRlIG51bWJl
ciB0byBhdm9pZCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGZsb2F0aW5nCisgICAgICAgIHBvaW50
LCBzaW5jZSB0aGF0J3MgdGhlIGNvbW1vbiBjYXNlLgorICAgICAgICAoS0pTOjpzdHJpbmdQcm90
b0Z1bmNDaGFyQ29kZUF0KTogRGl0dG8uCisgICAgICAgIChLSlM6OnN0cmluZ1Byb3RvRnVuY01h
dGNoKTogQWRvcHRlZCBqc1N1YnN0cmluZyBhbmQganNFbXB0eVN0cmluZy4KKyAgICAgICAgKEtK
Uzo6c3RyaW5nUHJvdG9GdW5jU2xpY2UpOiBBZG9wdGVkIGpzU3Vic3RyaW5nIGFuZAorICAgICAg
ICBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZy4gQWxzbyBnb3QgcmlkIG9mIHNvbWUgdW5uZWVk
ZWQgbG9jYWxzIGFuZAorICAgICAgICByZW1vdmVkIHVubmVlZGVkIGNvZGUgdG8gc2V0IHRoZSBs
ZW5ndGggcHJvcGVydHkgb2YgdGhlIGFycmF5LCBzaW5jZSBpdAorICAgICAgICBpcyBhdXRvbWF0
aWNhbGx5IHVwZGF0ZWQgYXMgdmFsdWVzIGFyZSBhZGRlZCB0byB0aGUgYXJyYXkuCisgICAgICAg
IChLSlM6OnN0cmluZ1Byb3RvRnVuY1NwbGl0KTogQWRvcHRlZCBqc0VtcHR5U3RyaW5nLgorICAg
ICAgICAoS0pTOjpzdHJpbmdQcm90b0Z1bmNTdWJzdHIpOiBBZG9wdGVkIGpzU3Vic3RyaW5nLgor
ICAgICAgICAoS0pTOjpzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcpOiBEaXR0by4KKworICAgICAg
ICAqIGtqcy9jb2xsZWN0b3IuY3BwOgorICAgICAgICAoS0pTOjpIZWFwOjpjb2xsZWN0KTogQWRk
ZWQgYSBjYWxsIHRvIG1hcmsgU21hbGxTdHJpbmdzLgorCisgICAgICAgICoga2pzL3VzdHJpbmcu
Y3BwOgorICAgICAgICAoS0pTOjpVU3RyaW5nOjpleHBhbmRlZFNpemUpOiBNYWRlIHRoaXMgYSBz
dGF0aWMgbWVtYmVyIGZ1bmN0aW9uIHNpbmNlCisgICAgICAgIGl0IGRvZXNuJ3QgbmVlZCB0byBs
b29rIGF0IGFueSBkYXRhIG1lbWJlcnMuCisgICAgICAgIChLSlM6OlVTdHJpbmc6OmV4cGFuZENh
cGFjaXR5KTogVXNlIGEgbm9uLWlubGluZSBmdW5jdGlvbiwgbWFrZU51bGwsIHRvCisgICAgICAg
IHNldCB0aGUgcmVwIHRvIG51bGwgaW4gZmFpbHVyZSBjYXNlcy4gVGhpcyBhdm9pZHMgYWRkaW5n
IGEgUElDIGJyYW5jaCBmb3IKKyAgICAgICAgdGhlIG5vcm1hbCBjYXNlIHdoZW4gdGhlcmUgaXMg
bm8gZmFpbHVyZS4KKyAgICAgICAgKEtKUzo6VVN0cmluZzo6ZXhwYW5kUHJlQ2FwYWNpdHkpOiBE
aXR0by4KKyAgICAgICAgKEtKUzo6VVN0cmluZzo6VVN0cmluZyk6IERpdHRvLgorICAgICAgICAo
S0pTOjpjb25jYXRlbmF0ZSk6IFJlZmFjdG9yZWQgdGhlIGNvbmNhdGVuYXRpb24gY29uc3RydWN0
b3IgaW50byB0aGlzCisgICAgICAgIHNlcGFyYXRlIGZ1bmN0aW9uLiBDYWxsaW5nIHRoZSBjb25j
YXRlbmF0aW9uIGNvbnN0cnVjdG9yIHdhcyBsZWFkaW5nIHRvCisgICAgICAgIGFuIGV4dHJhIGJy
YW5jaCBiZWNhdXNlIG9mIHRoZSBpbi1jaGFyZ2UgdnMuIG5vdC1pbi1jaGFyZ2UgdmVyc2lvbnMg
bm90CisgICAgICAgIGJvdGggYmVpbmcgaW5saW5lZCwgYW5kIHRoaXMgd2FzIHNob3dpbmcgdXAg
YXMgbmVhcmx5IDElIG9uIFNoYXJrLiBBbHNvCisgICAgICAgIGFkZGVkIGEgc3BlY2lhbCBjYXNl
IGZvciB3aGVuIHRoZSBzZWNvbmQgc3RyaW5nIGlzIGEgc2luZ2xlIGNoYXJhY3RlciwKKyAgICAg
ICAgc2luY2UgaXQncyBhIGNvbW1vbiBpZGlvbSB0byBidWlsZCB1cCBhIHN0cmluZyB0aGF0IHdh
eSBhbmQgd2UgY2FuIGRvCisgICAgICAgIHRoaW5ncyBtdWNoIG1vcmUgcXVpY2tseSwgd2l0aG91
dCBpbnZvbHZpbmcgbWVtY3B5IGZvciBleGFtcGxlLiBBbHNvCisgICAgICAgIGFkb3B0ZWQgdGhl
IG5vbi1pbmxpbmUgZnVuY3Rpb24sIG51bGxSZXAsIGZvciB0aGUgc2FtZSByZWFzb24gZ2l2ZW4g
Zm9yCisgICAgICAgIG1ha2VOdWxsIGFib3ZlLgorICAgICAgICAoS0pTOjpVU3RyaW5nOjphcHBl
bmQpOiBBZG9wdGVkIG1ha2VOdWxsIGZvciBmYWlsdXJlIGNhc2VzLgorICAgICAgICAoS0pTOjpV
U3RyaW5nOjpvcGVyYXRvcj0pOiBEaXR0by4KKyAgICAgICAgKEtKUzo6VVN0cmluZzo6dG9Eb3Vi
bGUpOiBBZGRlZCBhIHNwZWNpYWwgY2FzZSBmb3IgY29udmVydGluZyBzaW5nbGUKKyAgICAgICAg
Y2hhcmFjdGVyIHN0cmluZ3MgdG8gbnVtYmVycy4gV2UncmUgZG9pbmcgdGhpcyBhIHRvbiBvZiB0
aW1lcyB3aGlsZQorICAgICAgICBydW5uaW5nIHRoZSBiYXNlNjQgdGVzdC4KKyAgICAgICAgKEtK
Uzo6b3BlcmF0b3I9PSk6IEFkZGVkIHNwZWNpYWwgY2FzZXMgc28gd2UgY2FuIGNvbXBhcmUgc2lu
Z2xlLWNoYXJhY3RlcgorICAgICAgICBzdHJpbmdzIHdpdGhvdXQgY2FsbGluZyBtZW1jbXAuIExh
dGVyIHdlIG1pZ2h0IHdhbnQgdG8gc3BlY2lhbCBjYXNlIG90aGVyCisgICAgICAgIHNob3J0IGxl
bmd0aHMgc2ltaWxhcmx5LgorICAgICAgICAoS0pTOjpVU3RyaW5nOjptYWtlTnVsbCk6IEFkZGVk
LgorICAgICAgICAoS0pTOjpVU3RyaW5nOjpudWxsUmVwKTogQWRkZWQuCisgICAgICAgICoga2pz
L3VzdHJpbmcuaDogQWRkZWQgZGVjbGFyYXRpb25zIGZvciB0aGUgbnVsbFJlcCBhbmQgbWFrZU51
bGwuIENoYW5nZWQKKyAgICAgICAgZXhwYW5kZWRTaXplIHRvIGJlIGEgc3RhdGljIG1lbWJlciBm
dW5jdGlvbi4gQWRkZWQgYSBkZWNsYXJhdGlvbiBvZiB0aGUKKyAgICAgICAgY29uY2F0ZW5hdGUg
ZnVuY3Rpb24uIFJlbW92ZWQgdGhlIGNvbmNhdGVuYXRpb24gY29uc3RydWN0b3IuIFJld3JvdGUK
KyAgICAgICAgb3BlcmF0b3IrIHRvIHVzZSB0aGUgY29uY2F0ZW5hdGUgZnVuY3Rpb24uCisKIDIw
MDgtMDgtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCdWlsZCBmaXguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiAz
NjAwNSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5
KQpAQCAtMTEzLDYgKzExMyw3IEBAIF9fWk4zS0pTMTJKU0dsb2JhbERhdGFEMUV2CiBfX1pOM0tK
UzEyU2FtcGxpbmdUb29sNGR1bXBFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0tKUzEyU2FtcGxpbmdU
b29sNHN0b3BFdgogX19aTjNLSlMxMlNhbXBsaW5nVG9vbDVzdGFydEVqCitfX1pOM0tKUzEyU21h
bGxTdHJpbmdzMTdjcmVhdGVFbXB0eVN0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zS0pTMTJT
dHJpbmdPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlm
aWVyRQogX19aTjNLSlMxMlN0cmluZ09iamVjdDE0dG9UaGlzSlNTdHJpbmdFUE5TXzlFeGVjU3Rh
dGVFCiBfX1pOM0tKUzEyU3RyaW5nT2JqZWN0MTZnZXRQcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0
YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RQpAQCAtMjMyLDcgKzIzMyw2IEBAIF9fWk4zS0pT
OFByb2ZpbGVyMTNzdG9wUHJvZmlsaW5nRVBOU185RXgKIF9fWk4zS0pTOFByb2ZpbGVyMTRzdGFy
dFByb2ZpbGluZ0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRVBOU18xNFByb2ZpbGVyQ2xp
ZW50RQogX19aTjNLSlM4UHJvZmlsZXIyMWRpZEZpbmlzaEFsbEV4ZWN1dGlvbkVQTlNfOUV4ZWNT
dGF0ZUUKIF9fWk4zS0pTOFByb2ZpbGVyOHByb2ZpbGVyRXYKLV9fWk4zS0pTOGpzU3RyaW5nRVBO
U185RXhlY1N0YXRlRVBLYwogX19aTjNLSlM4anNTdHJpbmdFUE5TXzlFeGVjU3RhdGVFUktOU183
VVN0cmluZ0UKIF9fWk4zS0pTOWNvbnN0cnVjdEVQTlNfOUV4ZWNTdGF0ZUVQTlNfN0pTVmFsdWVF
TlNfMTNDb25zdHJ1Y3RUeXBlRVJLTlNfMTNDb25zdHJ1Y3REYXRhRVJLTlNfN0FyZ0xpc3RFCiBf
X1pOM0tKU2VxRVJLTlNfN1VTdHJpbmdFUEtjCkBAIC0zMzQsNSArMzM0LDYgQEAgX19aVFZOM0tK
UzE1SlNXcmFwcGVyT2JqZWN0RQogX19aVFZOM0tKUzE2SW50ZXJuYWxGdW5jdGlvbkUKIF9fWlRW
TjNLSlMxNkpTVmFyaWFibGVPYmplY3RFCiBfX1pUVk4zS0pTOEpTT2JqZWN0RQorX19aVFZOM0tK
UzhKU1N0cmluZ0UKIF9qc2NvcmVfZmFzdG1hbGxvY19pbnRyb3NwZWN0aW9uCiBfa0pTQ2xhc3NE
ZWZpbml0aW9uRW1wdHkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkocmV2aXNp
b24gMzYwMDUpCisrKyBKYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRnVuY3Rp
b24oSlNDb250ZQogICAgIAogICAgIEFyZ0xpc3QgYXJnczsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcGFyYW1ldGVyQ291bnQ7IGkrKykKLSAgICAgICAgYXJncy5hcHBlbmQoanNTdHJp
bmcoZXhlYywgVVN0cmluZyhwYXJhbWV0ZXJOYW1lc1tpXS0+dXN0cmluZygpKSkpOworICAgICAg
ICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBwYXJhbWV0ZXJOYW1lc1tpXS0+dXN0cmluZygp
KSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgYm9keS0+dXN0cmluZygpKSk7CiAK
ICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXJncywgbmFt
ZUlELCBzb3VyY2VVUkwtPnVzdHJpbmcoKSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L1ZNL01hY2hpbmUuY3BwCShyZXZpc2lvbiAzNjAwNSkKKysrIEphdmFTY3JpcHRDb3JlL1ZNL01h
Y2hpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsMTAgKzE5MSwxMCBAQCBzdGF0aWMgSlNW
YWx1ZSoganNBZGRTbG93Q2FzZShFeGVjU3RhdGUqCiAgICAgSlNWYWx1ZSogcDIgPSB2Mi0+dG9Q
cmltaXRpdmUoZXhlYyk7CiAKICAgICBpZiAocDEtPmlzU3RyaW5nKCkgfHwgcDItPmlzU3RyaW5n
KCkpIHsKLSAgICAgICAgVVN0cmluZyB2YWx1ZSA9IHAxLT50b1N0cmluZyhleGVjKSArIHAyLT50
b1N0cmluZyhleGVjKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQorICAgICAgICBSZWZQ
dHI8VVN0cmluZzo6UmVwPiB2YWx1ZSA9IGNvbmNhdGVuYXRlKHAxLT50b1N0cmluZyhleGVjKS5y
ZXAoKSwgcDItPnRvU3RyaW5nKGV4ZWMpLnJlcCgpKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKICAg
ICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Ci0gICAgICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCB2YWx1ZS5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIHJldHVybiBqc051bWJlcihleGVjLCBw
MS0+dG9OdW1iZXIoZXhlYykgKyBwMi0+dG9OdW1iZXIoZXhlYykpOwpAQCAtMjE3LDEwICsyMTcs
MTAgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlKiBqc0FkZChFeGVjU3RhdGUqIAogICAgICAgICBy
ZXR1cm4ganNOdW1iZXIoZXhlYywgbGVmdCArIHJpZ2h0KTsKICAgICAKICAgICBpZiAodjEtPmlz
U3RyaW5nKCkgJiYgdjItPmlzU3RyaW5nKCkpIHsKLSAgICAgICAgVVN0cmluZyB2YWx1ZSA9IHN0
YXRpY19jYXN0PEpTU3RyaW5nKj4odjEpLT52YWx1ZSgpICsgc3RhdGljX2Nhc3Q8SlNTdHJpbmcq
Pih2MiktPnZhbHVlKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgUmVm
UHRyPFVTdHJpbmc6OlJlcD4gdmFsdWUgPSBjb25jYXRlbmF0ZShzdGF0aWNfY2FzdDxKU1N0cmlu
Zyo+KHYxKS0+dmFsdWUoKS5yZXAoKSwgc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPih2MiktPnZhbHVl
KCkucmVwKCkpOworICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHZhbHVlLnJlbGVhc2UoKSk7CiAg
ICAgfQogCiAgICAgLy8gQWxsIG90aGVyIGNhc2VzIGFyZSBwcmV0dHkgdW5jb21tb24KQEAgLTIz
MCwyMyArMjMwLDIzIEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSoganNBZGQoRXhlY1N0YXRlKiAK
IHN0YXRpYyBKU1ZhbHVlKiBqc1R5cGVTdHJpbmdGb3JWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUqIHYpCiB7CiAgICAgaWYgKHYtPmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCAidW5kZWZpbmVkIik7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcoZXhlYywgInVuZGVmaW5lZCIpOwogICAgIGlmICh2LT5pc0Jvb2xlYW4oKSkKLSAgICAg
ICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJib29sZWFuIik7CisgICAgICAgIHJldHVybiBqc05v
bnRyaXZpYWxTdHJpbmcoZXhlYywgImJvb2xlYW4iKTsKICAgICBpZiAodi0+aXNOdW1iZXIoKSkK
LSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJudW1iZXIiKTsKKyAgICAgICAgcmV0dXJu
IGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAibnVtYmVyIik7CiAgICAgaWYgKHYtPmlzU3RyaW5n
KCkpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAic3RyaW5nIik7CisgICAgICAgIHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgInN0cmluZyIpOwogICAgIGlmICh2LT5pc09i
amVjdCgpKSB7CiAgICAgICAgIC8vIFJldHVybiAidW5kZWZpbmVkIiBmb3Igb2JqZWN0cyB0aGF0
IHNob3VsZCBiZSB0cmVhdGVkCiAgICAgICAgIC8vIGFzIG51bGwgd2hlbiBkb2luZyBjb21wYXJp
c29ucy4KICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odiktPm1hc3F1ZXJhZGVB
c1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJ1bmRlZmlu
ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgInVuZGVm
aW5lZCIpOwogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgaWYgKHN0YXRpY19j
YXN0PEpTT2JqZWN0Kj4odiktPmdldENhbGxEYXRhKGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUp
Ci0gICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgImZ1bmN0aW9uIik7CisgICAgICAg
ICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiIpOwogICAgIH0K
LSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIm9iamVjdCIpOworICAgIHJldHVybiBqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgIm9iamVjdCIpOwogfQogCiBzdGF0aWMgYm9vbCBORVZFUl9JTkxJ
TkUgcmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiB2UEMsIFJlZ2lzdGVyKiBy
LCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFs
dWUqJiBleGNlcHRpb25WYWx1ZSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9BcnJheVByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0FycmF5UHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMzYwMDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQXJyYXlQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgSlNWYWx1ZSogYXJyYXlQ
cm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdAogICAgIGJvb2wgYWxyZWFkeVZpc2l0ZWQgPSAhYXJy
YXlWaXNpdGVkRWxlbWVudHMuYWRkKHRoaXNPYmopLnNlY29uZDsKICAgICBWZWN0b3I8VUNoYXIs
IDI1Nj4gc3RyQnVmZmVyOwogICAgIGlmIChhbHJlYWR5VmlzaXRlZCkKLSAgICAgICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmcoMCwgMCkpOyAvLyByZXR1cm4gYW4gZW1wdHkgc3RyaW5n
LCBhdm9kaW5nIGluZmluaXRlIHJlY3Vyc2lvbi4KKyAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJp
bmcoZXhlYyk7IC8vIHJldHVybiBhbiBlbXB0eSBzdHJpbmcsIGF2b2lkaW5nIGluZmluaXRlIHJl
Y3Vyc2lvbi4KIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS0+dG9VSW50MzIoZXhlYyk7CiAgICAgZm9yICh1bnNp
Z25lZCBrID0gMDsgayA8IGxlbmd0aDsgaysrKSB7CkBAIC0xNzAsNyArMTcwLDcgQEAgSlNWYWx1
ZSogYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeAogICAgIGJvb2wgYWxyZWFkeVZpc2l0
ZWQgPSAhYXJyYXlWaXNpdGVkRWxlbWVudHMuYWRkKHRoaXNPYmopLnNlY29uZDsKICAgICBWZWN0
b3I8VUNoYXIsIDI1Nj4gc3RyQnVmZmVyOwogICAgIGlmIChhbHJlYWR5VmlzaXRlZCkKLSAgICAg
ICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmcoMCwgMCkpOyAvLyByZXR1cm4gYW4gZW1w
dHkgc3RyaW5nLCBhdm9kaW5nIGluZmluaXRlIHJlY3Vyc2lvbi4KKyAgICAgICAgcmV0dXJuIGpz
RW1wdHlTdHJpbmcoZXhlYyk7IC8vIHJldHVybiBhbiBlbXB0eSBzdHJpbmcsIGF2b2RpbmcgaW5m
aW5pdGUgcmVjdXJzaW9uLgogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpLT50b1VJbnQzMihleGVjKTsKICAgICBm
b3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbGVuZ3RoOyBrKyspIHsKQEAgLTIyMCw3ICsyMjAsNyBA
QCBKU1ZhbHVlKiBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBlCiAgICAgYm9vbCBhbHJl
YWR5VmlzaXRlZCA9ICFhcnJheVZpc2l0ZWRFbGVtZW50cy5hZGQodGhpc09iaikuc2Vjb25kOwog
ICAgIFZlY3RvcjxVQ2hhciwgMjU2PiBzdHJCdWZmZXI7CiAgICAgaWYgKGFscmVhZHlWaXNpdGVk
KQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgVVN0cmluZygwLCAwKSk7IC8vIHJldHVy
biBhbiBlbXB0eSBzdHJpbmcsIGF2b2RpbmcgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgICAgICBy
ZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsgLy8gcmV0dXJuIGFuIGVtcHR5IHN0cmluZywgYXZv
ZGluZyBpbmZpbml0ZSByZWN1cnNpb24uCiAKICAgICBVQ2hhciBjb21tYSA9ICcsJzsKICAgICBV
U3RyaW5nIHNlcGFyYXRvciA9IGFyZ3MuYXQoZXhlYywgMCktPmlzVW5kZWZpbmVkKCkgPyBVU3Ry
aW5nKCZjb21tYSwgMSkgOiBhcmdzLmF0KGV4ZWMsIDApLT50b1N0cmluZyhleGVjKTsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9Cb29sZWFuUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ranMvQm9vbGVhblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDM2MDA1KQor
KysgSmF2YVNjcmlwdENvcmUva2pzL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NCwxOSArNTQsMTkgQEAgQm9vbGVhblByb3RvdHlwZTo6Qm9vbGVhblByb3RvdHlwZShF
eGVjUwogSlNWYWx1ZSogYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKQogewogICAgIGlm
ICh0aGlzVmFsdWUgPT0ganNCb29sZWFuKGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsICJmYWxzZSIpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMs
ICJmYWxzZSIpOwogCiAgICAgaWYgKHRoaXNWYWx1ZSA9PSBqc0Jvb2xlYW4odHJ1ZSkpCi0gICAg
ICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAidHJ1ZSIpOworICAgICAgICByZXR1cm4ganNOb250
cml2aWFsU3RyaW5nKGV4ZWMsICJ0cnVlIik7CiAKICAgICBpZiAoIXRoaXNWYWx1ZS0+aXNPYmpl
Y3QoJkJvb2xlYW5PYmplY3Q6OmluZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBUeXBlRXJyb3IpOwogCiAgICAgaWYgKHN0YXRpY19jYXN0PEJvb2xlYW5PYmplY3QqPih0aGlz
VmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkgPT0ganNCb29sZWFuKGZhbHNlKSkKLSAgICAgICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsICJmYWxzZSIpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFs
U3RyaW5nKGV4ZWMsICJmYWxzZSIpOwogCiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PEJvb2xlYW5P
YmplY3QqPih0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkgPT0ganNCb29sZWFuKHRydWUpKTsK
LSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgInRydWUiKTsKKyAgICByZXR1cm4ganNOb250cml2
aWFsU3RyaW5nKGV4ZWMsICJ0cnVlIik7CiB9CiAKIEpTVmFsdWUqIGJvb2xlYW5Qcm90b0Z1bmNW
YWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0RhdGVDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0RhdGVDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDM2MDA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0RhdGVDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgSlNWYWx1ZSogY2Fs
bERhdGUoRXhlY1N0YXRlKiBleGVjCiAgICAgdG0gbG9jYWxUTTsKICAgICBnZXRMb2NhbFRpbWUo
JmxvY2FsVGltZSwgJmxvY2FsVE0pOwogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHRzKGxvY2FsVE0p
OwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBmb3JtYXREYXRlKHRzKSArICIgIiArIGZvcm1h
dFRpbWUodHMsIGZhbHNlKSk7CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBm
b3JtYXREYXRlKHRzKSArICIgIiArIGZvcm1hdFRpbWUodHMsIGZhbHNlKSk7CiB9CiAKIENhbGxU
eXBlIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEmIGNhbGxEYXRhKQpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9EYXRlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMzYwMDUpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvRGF0ZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
NCw3ICsxOTQsNyBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNTdGF0CiAg
ICAgc2l6ZV90IHJldCA9IHN0cmZ0aW1lKHRpbWVidWZmZXIsIGJ1ZnNpemUsIGZvcm1hdFN0cmlu
Z3NbZm9ybWF0XSwgJmxvY2FsVE0pOwogIAogICAgIGlmIChyZXQgPT0gMCkKLSAgICAgICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsICIiKTsKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhl
Yyk7CiAgCiAgICAgLy8gQ29weSBvcmlnaW5hbCBpbnRvIHRoZSBidWZmZXIKICAgICBpZiAoeWVh
ck5lZWRzT2Zmc2V0ICYmIGZvcm1hdCAhPSBMb2NhbGVUaW1lKSB7CkBAIC0yMDgsNyArMjA4LDcg
QEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdAogICAgICAgICBzdHJu
Y3B5KHllYXJMb2NhdGlvbiwgeWVhclN0cmluZywgeWVhckxlbiAtIDEpOwogICAgIH0KICAKLSAg
ICByZXR1cm4ganNTdHJpbmcoZXhlYywgdGltZWJ1ZmZlcik7CisgICAgcmV0dXJuIGpzTm9udHJp
dmlhbFN0cmluZyhleGVjLCB0aW1lYnVmZmVyKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKFdJ
Tl9PUykKQEAgLTM2OSwxMSArMzY5LDExIEBAIEpTVmFsdWUqIGRhdGVQcm90b0Z1bmNUb1N0cmlu
ZyhFeGVjU3RhdGUKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gc3RhdGljX2Nhc3Q8
RGF0ZUluc3RhbmNlKj4odGhpc1ZhbHVlKTsgCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVP
YmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKGlzbmFuKG1pbGxpKSkKLSAgICAgICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKKyAgICAgICAgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRlIik7CiAKICAgICBHcmVnb3JpYW5EYXRl
VGltZSB0OwogICAgIHRoaXNEYXRlT2JqLT5tc1RvR3JlZ29yaWFuRGF0ZVRpbWUobWlsbGksIHV0
YywgdCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGZvcm1hdERhdGUodCkgKyAiICIgKyBm
b3JtYXRUaW1lKHQsIHV0YykpOworICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
Zm9ybWF0RGF0ZSh0KSArICIgIiArIGZvcm1hdFRpbWUodCwgdXRjKSk7CiB9CiAKIEpTVmFsdWUq
IGRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNW
YWx1ZSogdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JikKQEAgLTM4NiwxMSArMzg2LDExIEBAIEpT
VmFsdWUqIGRhdGVQcm90b0Z1bmNUb1VUQ1N0cmluZyhFeGVjU3QKICAgICBEYXRlSW5zdGFuY2Uq
IHRoaXNEYXRlT2JqID0gc3RhdGljX2Nhc3Q8RGF0ZUluc3RhbmNlKj4odGhpc1ZhbHVlKTsgCiAg
ICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYg
KGlzbmFuKG1pbGxpKSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJJbnZhbGlkIERh
dGUiKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBE
YXRlIik7CiAKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0OwogICAgIHRoaXNEYXRlT2JqLT5tc1Rv
R3JlZ29yaWFuRGF0ZVRpbWUobWlsbGksIHV0YywgdCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIGZvcm1hdERhdGVVVENWYXJpYW50KHQpICsgIiAiICsgZm9ybWF0VGltZSh0LCB1dGMpKTsK
KyAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIGZvcm1hdERhdGVVVENWYXJpYW50
KHQpICsgIiAiICsgZm9ybWF0VGltZSh0LCB1dGMpKTsKIH0KIAogSlNWYWx1ZSogZGF0ZVByb3Rv
RnVuY1RvRGF0ZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSogdGhp
c1ZhbHVlLCBjb25zdCBBcmdMaXN0JikKQEAgLTQwMywxMSArNDAzLDExIEBAIEpTVmFsdWUqIGRh
dGVQcm90b0Z1bmNUb0RhdGVTdHJpbmcoRXhlY1MKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRl
T2JqID0gc3RhdGljX2Nhc3Q8RGF0ZUluc3RhbmNlKj4odGhpc1ZhbHVlKTsgCiAgICAgZG91Ymxl
IG1pbGxpID0gdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKGlzbmFuKG1p
bGxpKSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKKyAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRlIik7CiAK
ICAgICBHcmVnb3JpYW5EYXRlVGltZSB0OwogICAgIHRoaXNEYXRlT2JqLT5tc1RvR3JlZ29yaWFu
RGF0ZVRpbWUobWlsbGksIHV0YywgdCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGZvcm1h
dERhdGUodCkpOworICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgZm9ybWF0RGF0
ZSh0KSk7CiB9CiAKIEpTVmFsdWUqIGRhdGVQcm90b0Z1bmNUb1RpbWVTdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpCkBA
IC00MjAsMTEgKzQyMCwxMSBAQCBKU1ZhbHVlKiBkYXRlUHJvdG9GdW5jVG9UaW1lU3RyaW5nKEV4
ZWNTCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IHN0YXRpY19jYXN0PERhdGVJbnN0
YW5jZSo+KHRoaXNWYWx1ZSk7IAogICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRl
cm5hbE51bWJlcigpOwogICAgIGlmIChpc25hbihtaWxsaSkpCi0gICAgICAgIHJldHVybiBqc1N0
cmluZyhleGVjLCAiSW52YWxpZCBEYXRlIik7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpOwogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsK
ICAgICB0aGlzRGF0ZU9iai0+bXNUb0dyZWdvcmlhbkRhdGVUaW1lKG1pbGxpLCB1dGMsIHQpOwot
ICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBmb3JtYXRUaW1lKHQsIHV0YykpOworICAgIHJldHVy
biBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgZm9ybWF0VGltZSh0LCB1dGMpKTsKIH0KIAogSlNW
YWx1ZSogZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCkBAIC00MzUsMTEg
KzQzNSwxMSBAQCBKU1ZhbHVlKiBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IHN0YXRpY19jYXN0PERhdGVJbnN0YW5jZSo+KHRo
aXNWYWx1ZSk7IAogICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJl
cigpOwogICAgIGlmIChpc25hbihtaWxsaSkpCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCAiSW52YWxpZCBEYXRlIik7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhl
YywgIkludmFsaWQgRGF0ZSIpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGRvdWJsZSBzZWNz
ID0gZmxvb3IobWlsbGkgLyBtc1BlclNlY29uZCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
IGZvcm1hdExvY2FsZURhdGUoZXhlYywgc2VjcywgdHJ1ZSwgdHJ1ZSwgYXJncykpOworICAgIHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgZm9ybWF0TG9jYWxlRGF0ZShleGVjLCBzZWNz
LCB0cnVlLCB0cnVlLCBhcmdzKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShhcmdzKTsKIApA
QCAtNDU5LDExICs0NTksMTEgQEAgSlNWYWx1ZSogZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0
cmluZwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBzdGF0aWNfY2FzdDxEYXRlSW5z
dGFuY2UqPih0aGlzVmFsdWUpOyAKICAgICBkb3VibGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50
ZXJuYWxOdW1iZXIoKTsKICAgICBpZiAoaXNuYW4obWlsbGkpKQotICAgICAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFs
U3RyaW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBk
b3VibGUgc2VjcyA9IGZsb29yKG1pbGxpIC8gbXNQZXJTZWNvbmQpOwotICAgIHJldHVybiBqc1N0
cmluZyhleGVjLCBmb3JtYXRMb2NhbGVEYXRlKGV4ZWMsIHNlY3MsIHRydWUsIGZhbHNlLCBhcmdz
KSk7CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBmb3JtYXRMb2NhbGVEYXRl
KGV4ZWMsIHNlY3MsIHRydWUsIGZhbHNlLCBhcmdzKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShhcmdzKTsKIApAQCAtNDgzLDExICs0ODMsMTEgQEAgSlNWYWx1ZSogZGF0ZVByb3RvRnVuY1Rv
TG9jYWxlVGltZVN0cmluZwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBzdGF0aWNf
Y2FzdDxEYXRlSW5zdGFuY2UqPih0aGlzVmFsdWUpOyAKICAgICBkb3VibGUgbWlsbGkgPSB0aGlz
RGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKICAgICBpZiAoaXNuYW4obWlsbGkpKQotICAgICAg
ICByZXR1cm4ganNTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpOworICAgICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKIAogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBkb3VibGUgc2VjcyA9IGZsb29yKG1pbGxpIC8gbXNQZXJTZWNvbmQpOwotICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCBmb3JtYXRMb2NhbGVEYXRlKGV4ZWMsIHNlY3MsIGZhbHNl
LCB0cnVlLCBhcmdzKSk7CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBmb3Jt
YXRMb2NhbGVEYXRlKGV4ZWMsIHNlY3MsIGZhbHNlLCB0cnVlLCBhcmdzKSk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShhcmdzKTsKIApAQCAtNTY5LDExICs1NjksMTEgQEAgSlNWYWx1ZSogZGF0
ZVByb3RvRnVuY1RvR01UU3RyaW5nKEV4ZWNTdAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVP
YmogPSBzdGF0aWNfY2FzdDxEYXRlSW5zdGFuY2UqPih0aGlzVmFsdWUpOyAKICAgICBkb3VibGUg
bWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKICAgICBpZiAoaXNuYW4obWls
bGkpKQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpOworICAg
ICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKTsKIAog
ICAgIEdyZWdvcmlhbkRhdGVUaW1lIHQ7CiAgICAgdGhpc0RhdGVPYmotPm1zVG9HcmVnb3JpYW5E
YXRlVGltZShtaWxsaSwgdXRjLCB0KTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgZm9ybWF0
RGF0ZVVUQ1ZhcmlhbnQodCkgKyAiICIgKyBmb3JtYXRUaW1lKHQsIHV0YykpOworICAgIHJldHVy
biBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgZm9ybWF0RGF0ZVVUQ1ZhcmlhbnQodCkgKyAiICIg
KyBmb3JtYXRUaW1lKHQsIHV0YykpOwogfQogCiBKU1ZhbHVlKiBkYXRlUHJvdG9GdW5jR2V0TW9u
dGgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3Qg
QXJnTGlzdCYpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXJyb3JQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDM2MDA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0Vycm9yUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQCBFcnJvclByb3RvdHlwZTo6RXJyb3JQcm90b3R5
cGUoRXhlY1N0YXRlCiB7CiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0
ZXIgaW4gRXJyb3JDb25zdHJ1Y3RvcidzIGNvbnN0cnVjdG9yCiAKLSAgICBwdXREaXJlY3QoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3RyaW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51
bSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5tZXNzYWdlLCBqc1N0cmlu
ZyhleGVjLCAiVW5rbm93biBlcnJvciIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkVycm9yIiks
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2Us
IGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiVW5rbm93biBlcnJvciIpLCBEb250RW51bSk7CiAK
ICAgICBwdXREaXJlY3RGdW5jdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9u
KGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJp
bmcsIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CiB9CkBAIC02Miw3ICs2Miw3
IEBAIEpTVmFsdWUqIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXQKICAgICAgICAgcyAr
PSB2LT50b1N0cmluZyhleGVjKTsKICAgICB9CiAKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywg
cyk7CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBzKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxEYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNp
b24gMzYwMDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxEYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU2LDQgKzE1Niw3NSBAQCBKU0dsb2JhbERhdGEqJiBKU0dsb2JhbERhdGE6
OnNoYXJlZEluc3RhCiAgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOwogfQogCitjbGFzcyBTbWFs
bFN0cmluZ3NTdG9yYWdlIHsKK3B1YmxpYzoKKyAgICBTbWFsbFN0cmluZ3NTdG9yYWdlKCk7Cisg
ICAgflNtYWxsU3RyaW5nc1N0b3JhZ2UoKTsKKworICAgIFVTdHJpbmc6OlJlcCogcmVwKHVuc2ln
bmVkIGNoYXIgY2hhcmFjdGVyKSB7IHJldHVybiAmcmVwc1tjaGFyYWN0ZXJdOyB9CisKK3ByaXZh
dGU6CisgICAgVUNoYXIgY2hhcmFjdGVyc1sweDEwMF07CisgICAgVVN0cmluZzo6UmVwKiByZXBz
OworfTsKKworU21hbGxTdHJpbmdzU3RvcmFnZTo6U21hbGxTdHJpbmdzU3RvcmFnZSgpCisgICAg
OiByZXBzKHN0YXRpY19jYXN0PFVTdHJpbmc6OlJlcCo+KGZhc3RaZXJvZWRNYWxsb2Moc2l6ZW9m
KFVTdHJpbmc6OlJlcCkgKiAweDEwMCkpKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCAweDEwMDsgKytpKSB7CisgICAgICAgIGNoYXJhY3RlcnNbaV0gPSBpOworICAgICAgICByZXBz
W2ldLm9mZnNldCA9IGk7CisgICAgICAgIHJlcHNbaV0ubGVuID0gMTsKKyAgICAgICAgcmVwc1tp
XS5yYyA9IDE7CisgICAgICAgIHJlcHNbaV0uYmFzZVN0cmluZyA9ICZyZXBzWzBdOworICAgIH0K
KyAgICByZXBzWzBdLnJjID0gMHgxMDE7CisgICAgcmVwc1swXS5idWYgPSBjaGFyYWN0ZXJzOwor
CisgICAgLy8gbWFrZSBzdXJlIFVTdHJpbmcgZG9lc24ndCB0cnkgdG8gcmV1c2UgdGhlIGJ1ZmZl
ciBieSBwcmV0ZW5kaW5nIHdlIGhhdmUgb25lIG1vcmUgY2hhcmFjdGVyIGluIGl0CisgICAgcmVw
c1swXS51c2VkQ2FwYWNpdHkgPSAweDEwMTsKKyAgICByZXBzWzBdLmNhcGFjaXR5ID0gMHgxMDE7
Cit9CisKK1NtYWxsU3RyaW5nc1N0b3JhZ2U6On5TbWFsbFN0cmluZ3NTdG9yYWdlKCkKK3sKKyAg
ICBmYXN0RnJlZShyZXBzKTsKK30KKworU21hbGxTdHJpbmdzOjpTbWFsbFN0cmluZ3MoKQorICAg
IDogbV9lbXB0eVN0cmluZygwKQorICAgICwgbV9zdG9yYWdlKDApCit7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDB4MTAwOyArK2kpCisgICAgICAgIG1fc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nc1tpXSA9IDA7Cit9CisKK1NtYWxsU3RyaW5nczo6flNtYWxsU3RyaW5ncygpCit7Cit9CisK
K3ZvaWQgU21hbGxTdHJpbmdzOjptYXJrKCkKK3sKKyAgICBpZiAobV9lbXB0eVN0cmluZyAmJiAh
bV9lbXB0eVN0cmluZy0+bWFya2VkKCkpCisgICAgICAgIG1fZW1wdHlTdHJpbmctPm1hcmsoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMHgxMDA7ICsraSkgeworICAgICAgICBpZiAo
bV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2ldICYmICFtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3Nb
aV0tPm1hcmtlZCgpKQorICAgICAgICAgICAgbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2ldLT5t
YXJrKCk7CisgICAgfQorfQorICAgIAordm9pZCBTbWFsbFN0cmluZ3M6OmNyZWF0ZUVtcHR5U3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBU1NFUlQoIW1fZW1wdHlTdHJpbmcpOworICAg
IG1fZW1wdHlTdHJpbmcgPSBuZXcgKGV4ZWMpIEpTU3RyaW5nKCIiLCBKU1N0cmluZzo6SGFzT3Ro
ZXJPd25lcik7Cit9CisKK3ZvaWQgU21hbGxTdHJpbmdzOjpjcmVhdGVTaW5nbGVDaGFyYWN0ZXJT
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBjaGFyIGNoYXJhY3RlcikKK3sKKyAgICBp
ZiAoIW1fc3RvcmFnZSkKKyAgICAgICAgbV9zdG9yYWdlLnNldChuZXcgU21hbGxTdHJpbmdzU3Rv
cmFnZSk7CisgICAgQVNTRVJUKCFtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXSk7
CisgICAgbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl0gPSBuZXcgKGV4ZWMpIEpT
U3RyaW5nKG1fc3RvcmFnZS0+cmVwKGNoYXJhY3RlciksIEpTU3RyaW5nOjpIYXNPdGhlck93bmVy
KTsKK30KKwogfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMzYw
MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIHN0cnVjdCBPcGFx
dWVKU0NsYXNzOwpAQCAtNDIsMTYgKzQzLDUwIEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgY2xh
c3MgQXJnTGlzdDsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKKyAgICBjbGFzcyBFeGVj
U3RhdGU7CiAgICAgY2xhc3MgSGVhcDsKICAgICBjbGFzcyBJZGVudGlmaWVyVGFibGU7CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgSlNTdHJpbmc7CiAgICAgY2xhc3MgTGV4
ZXI7CiAgICAgY2xhc3MgTWFjaGluZTsKICAgICBjbGFzcyBQYXJzZXI7CiAgICAgY2xhc3MgUGFy
c2VyUmVmQ291bnRlZDsKKyAgICBjbGFzcyBTbWFsbFN0cmluZ3M7CiAgICAgY2xhc3MgVVN0cmlu
ZzsKICAgICBzdHJ1Y3QgSGFzaFRhYmxlOwogCisgICAgLy8gRklYTUU6IEdpdmUgU21hbGxTdHJp
bmdzIGl0cyBvd24gaGVhZGVyPworICAgIGNsYXNzIFNtYWxsU3RyaW5nc1N0b3JhZ2U7CisgICAg
Y2xhc3MgU21hbGxTdHJpbmdzIDogTm9uY29weWFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAg
U21hbGxTdHJpbmdzKCk7CisgICAgICAgIH5TbWFsbFN0cmluZ3MoKTsKKworICAgICAgICBKU1N0
cmluZyogZW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIW1fZW1wdHlTdHJpbmcpCisgICAgICAgICAgICAgICAgY3JlYXRlRW1wdHlTdHJpbmco
ZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gbV9lbXB0eVN0cmluZzsKKyAgICAgICAgfQorICAg
ICAgICBKU1N0cmluZyogc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgY2hhciBjaGFyYWN0ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9zaW5n
bGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl0pCisgICAgICAgICAgICAgICAgY3JlYXRlU2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nKGV4ZWMsIGNoYXJhY3Rlcik7CisgICAgICAgICAgICByZXR1cm4g
bV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl07CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHZvaWQgbWFyaygpOworICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICB2
b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEV4ZWNTdGF0ZSopOworICAgICAgICB2b2lkIGNyZWF0ZVNp
bmdsZUNoYXJhY3RlclN0cmluZyhFeGVjU3RhdGUqLCB1bnNpZ25lZCBjaGFyKTsKKworICAgICAg
ICBKU1N0cmluZyogbV9lbXB0eVN0cmluZzsKKyAgICAgICAgSlNTdHJpbmcqIG1fc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nc1sweDEwMF07CisgICAgICAgIE93blB0cjxTbWFsbFN0cmluZ3NTdG9yYWdl
PiBtX3N0b3JhZ2U7CisgICAgfTsKKyAgICAKICAgICBjbGFzcyBKU0dsb2JhbERhdGEgOiBwdWJs
aWMgUmVmQ291bnRlZDxKU0dsb2JhbERhdGE+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBib29sIHNoYXJlZEluc3RhbmNlRXhpc3RzKCk7CkBAIC03NSw2ICsxMTAsOCBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7CiAgICAg
ICAgIGNvbnN0IEFyZ0xpc3QqIGVtcHR5TGlzdDsgLy8gTGlzdHMgYXJlIHN1cHBvc2VkIHRvIGJl
IGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgdG8gaGF2ZSB0aGVpciBlbGVtZW50cyBwcm9wZXJseSBt
YXJrZWQsIHdoaWNoIGlzIG5vdCB0aGUgY2FzZSBoZXJlIC0gYnV0IHRoaXMgbGlzdCBoYXMgbm90
aGluZyB0byBtYXJrLgogCisgICAgICAgIFNtYWxsU3RyaW5ncyBzbWFsbFN0cmluZ3M7CisgICAg
ICAgIAogICAgICAgICBIYXNoTWFwPE9wYXF1ZUpTQ2xhc3MqLCBPcGFxdWVKU0NsYXNzQ29udGV4
dERhdGEqPiogb3BhcXVlSlNDbGFzc0RhdGE7CiAKICAgICAgICAgSGFzaFNldDxQYXJzZXJSZWZD
b3VudGVkKj4qIG5ld1BhcnNlck9iamVjdHM7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNT
dHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU1N0cmluZy5jcHAJ
KHJldmlzaW9uIDM2MDA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTU3RyaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE1LDE5ICsxMTUsNDUgQEAgYm9vbCBKU1N0cmluZzo6aXNTdHJpbmco
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1KU1N0cmluZyoganNTdHJpbmcoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKQorSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgVVN0cmluZyYgcykKIHsKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU1N0cmlu
ZyhzID8gcyA6ICIiKTsKKyAgICBpbnQgc2l6ZSA9IHMuc2l6ZSgpOworICAgIGlmICghc2l6ZSkK
KyAgICAgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJp
bmcoZXhlYyk7CisgICAgaWYgKHNpemUgPT0gMSkgeworICAgICAgICBVQ2hhciBjID0gcy5kYXRh
KClbMF07CisgICAgICAgIGlmIChjIDw9IDB4RkYpCisgICAgICAgICAgICByZXR1cm4gZXhlYy0+
Z2xvYmFsRGF0YSgpLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZXhlYywgYyk7
CisgICAgfQorICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTU3RyaW5nKHMpOwogfQotCi1KU1N0cmlu
ZyoganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzKQorICAgIAorSlNT
dHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcywgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIHMuaXNOdWxsKCkg
PyBuZXcgKGV4ZWMpIEpTU3RyaW5nKCIiKSA6IG5ldyAoZXhlYykgSlNTdHJpbmcocyk7CisgICAg
QVNTRVJUKG9mZnNldCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5zaXplKCkpKTsKKyAgICBB
U1NFUlQobGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLnNpemUoKSkpOworICAgIEFT
U0VSVChvZmZzZXQgKyBsZW5ndGggPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMuc2l6ZSgpKSk7
CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuc21h
bGxTdHJpbmdzLmVtcHR5U3RyaW5nKGV4ZWMpOworICAgIGlmIChsZW5ndGggPT0gMSkgeworICAg
ICAgICBVQ2hhciBjID0gcy5kYXRhKClbb2Zmc2V0XTsKKyAgICAgICAgaWYgKGMgPD0gMHhGRikK
KyAgICAgICAgICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuc21hbGxTdHJpbmdzLnNpbmds
ZUNoYXJhY3RlclN0cmluZyhleGVjLCBjKTsKKyAgICB9CisgICAgcmV0dXJuIG5ldyAoZXhlYykg
SlNTdHJpbmcoVVN0cmluZzo6UmVwOjpjcmVhdGUocy5yZXAoKSwgb2Zmc2V0LCBsZW5ndGgpKTsK
IH0KIAogSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3Ry
aW5nJiBzKQogewotICAgIHJldHVybiBzLmlzTnVsbCgpID8gbmV3IChleGVjKSBKU1N0cmluZygi
IiwgSlNTdHJpbmc6Okhhc090aGVyT3duZXIpIDogbmV3IChleGVjKSBKU1N0cmluZyhzLCBKU1N0
cmluZzo6SGFzT3RoZXJPd25lcik7CisgICAgaW50IHNpemUgPSBzLnNpemUoKTsKKyAgICBpZiAo
IXNpemUpCisgICAgICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuc21hbGxTdHJpbmdzLmVt
cHR5U3RyaW5nKGV4ZWMpOworICAgIGlmIChzaXplID09IDEpIHsKKyAgICAgICAgVUNoYXIgYyA9
IHMuZGF0YSgpWzBdOworICAgICAgICBpZiAoYyA8PSAweEZGKQorICAgICAgICAgICAgcmV0dXJu
IGV4ZWMtPmdsb2JhbERhdGEoKS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV4
ZWMsIGMpOworICAgIH0KKyAgICByZXR1cm4gbmV3IChleGVjKSBKU1N0cmluZyhzLCBKU1N0cmlu
Zzo6SGFzT3RoZXJPd25lcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEtKUwpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L0pTU3RyaW5nLmgJKHJldmlzaW9uIDM2MDA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTU3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE0ICsyNSwzMSBAQAogCiAjaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFeGVjU3RhdGUuaCIKLSNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJKU051bWJlckNlbGwuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3Qu
aCIKICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAidXN0cmluZy5oIgogCiBuYW1l
c3BhY2UgS0pTIHsKIAorICAgIGNsYXNzIEpTU3RyaW5nOworCisgICAgSlNTdHJpbmcqIGpzRW1w
dHlTdHJpbmcoRXhlY1N0YXRlKik7CisgICAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSos
IGNvbnN0IFVTdHJpbmcmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwg
c3RyaW5nCisKKyAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoRXhlY1N0YXRl
KiwgVUNoYXIpOworICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyhFeGVj
U3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAgICBKU1N0cmluZyog
anNTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIE5vbi10cml2aWFsIHN0cmluZ3MgYXJlIHR3byBv
ciBtb3JlIGNoYXJhY3RlcnMgbG9uZy4KKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGZhc3Rl
ciB0aGFuIGp1c3QgY2FsbGluZyBqc1N0cmluZy4KKyAgICBKU1N0cmluZyoganNOb250cml2aWFs
U3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU1N0cmluZyoganNOb250
cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKKworICAgIC8vIFNob3VsZCBi
ZSB1c2VkIGZvciBzdHJpbmdzIHRoYXQgYXJlIG93bmVkIGJ5IGFuIG9iamVjdCB0aGF0IHdpbGwK
KyAgICAvLyBsaWtlbHkgb3V0bGl2ZSB0aGUgSlNWYWx1ZSB0aGlzIG1ha2VzLCBzdWNoIGFzIHRo
ZSBwYXJzZSB0cmVlIG9yIGEKKyAgICAvLyBET00gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBVU3Ry
aW5nCisgICAgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmlu
ZyYpOyAKKwogICAgIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGlj
OgogICAgICAgICBKU1N0cmluZyhjb25zdCBVU3RyaW5nJiB2YWx1ZSkKQEAgLTQ2LDE4ICs2Mywx
OCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAg
ICAgewogICAgICAgICB9Ci0KKyAgICAgICAgSlNTdHJpbmcoUGFzc1JlZlB0cjxVU3RyaW5nOjpS
ZXA+IHZhbHVlLCBIYXNPdGhlck93bmVyVHlwZSkKKyAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1
ZSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBjb25zdCBVU3RyaW5n
JiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgICAgICBib29sIGdldFN0
cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAg
ICAgIGJvb2wgY2FuR2V0SW5kZXgodW5zaWduZWQgaSkgeyByZXR1cm4gaSA8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3ZhbHVlLnNpemUoKSk7IH0KLSAgICAgICAgSlNWYWx1ZSogZ2V0SW5kZXgo
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQoY2FuR2V0SW5kZXgoaSkpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNTdHJp
bmcobV92YWx1ZS5zdWJzdHIoaSwgMSkpOwotICAgICAgICB9CisgICAgICAgIEpTU3RyaW5nKiBn
ZXRJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKQEAgLTgwLDI1ICs5Nyw1OCBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgICAgVVN0cmluZyBtX3ZhbHVlOwogICAgIH07CiAKLSAgICBKU1N0cmlu
ZyoganNTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5
IHN0cmluZyBpZiBwYXNzZWQgbnVsbCBzdHJpbmcKLSAgICBKU1N0cmluZyoganNTdHJpbmcoRXhl
Y1N0YXRlKiwgY29uc3QgY2hhciogPSAiIik7IC8vIHJldHVybnMgZW1wdHkgc3RyaW5nIGlmIHBh
c3NlZCAwCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKKyAgICB7CisgICAgICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuc21hbGxTdHJpbmdz
LmVtcHR5U3RyaW5nKGV4ZWMpOworICAgIH0KIAotICAgIC8vIFNob3VsZCBiZSB1c2VkIGZvciBz
dHJpbmdzIHRoYXQgYXJlIG93bmVkIGJ5IGFuIG9iamVjdCB0aGF0IHdpbGwKLSAgICAvLyBsaWtl
bHkgb3V0bGl2ZSB0aGUgSlNWYWx1ZSB0aGlzIG1ha2VzLCBzdWNoIGFzIHRoZSBwYXJzZSB0cmVl
IG9yIGEKLSAgICAvLyBET00gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBVU3RyaW5nCi0gICAgSlNT
dHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOyAKKyAgICBp
bmxpbmUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywg
VUNoYXIgYykKKyAgICB7CisgICAgICAgIGlmIChjIDw9IDB4RkYpCisgICAgICAgICAgICByZXR1
cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmco
ZXhlYywgYyk7CisgICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTU3RyaW5nKFVTdHJpbmcoJmMs
IDEpKTsKKyAgICB9CisKKyAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Vi
c3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
LnNpemUoKSkpOworICAgICAgICBVQ2hhciBjID0gcy5kYXRhKClbb2Zmc2V0XTsKKyAgICAgICAg
aWYgKGMgPD0gMHhGRikKKyAgICAgICAgICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuc21h
bGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhleGVjLCBjKTsKKyAgICAgICAgcmV0dXJu
IG5ldyAoZXhlYykgSlNTdHJpbmcoVVN0cmluZzo6UmVwOjpjcmVhdGUocy5yZXAoKSwgb2Zmc2V0
LCAxKSk7CisgICAgfQorCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHMp
OworICAgICAgICBBU1NFUlQoc1swXSk7CisgICAgICAgIEFTU0VSVChzWzFdKTsKKyAgICAgICAg
cmV0dXJuIG5ldyAoZXhlYykgSlNTdHJpbmcocyk7CisgICAgfQorCisgICAgaW5saW5lIEpTU3Ry
aW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBz
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHMuc2l6ZSgpID4gMSk7CisgICAgICAgIHJldHVybiBu
ZXcgKGV4ZWMpIEpTU3RyaW5nKHMpOworICAgIH0KKworICAgIGlubGluZSBKU1N0cmluZyogSlNT
dHJpbmc6OmdldEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChjYW5HZXRJbmRleChpKSk7CisgICAgICAgIHJldHVybiBqc1NpbmdsZUNoYXJh
Y3RlclN1YnN0cmluZyhleGVjLCBtX3ZhbHVlLCBpKTsKKyAgICB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAg
IHsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKGpzTnVtYmVyKGV4ZWMsIHZhbHVlKCku
c2l6ZSgpKSk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKGpzTnVtYmVyKGV4ZWMsIG1fdmFs
dWUuc2l6ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAg
ICAgIGJvb2wgaXNTdHJpY3RVSW50MzI7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5h
bWUudG9TdHJpY3RVSW50MzIoJmlzU3RyaWN0VUludDMyKTsKICAgICAgICAgaWYgKGlzU3RyaWN0
VUludDMyICYmIGkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV92YWx1ZS5zaXplKCkpKSB7Ci0g
ICAgICAgICAgICBzbG90LnNldFZhbHVlKGpzU3RyaW5nKGV4ZWMsIHZhbHVlKCkuc3Vic3RyKGks
IDEpKSk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3Ry
aW5nKGV4ZWMsIG1fdmFsdWUsIGkpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKQEAgLTEwOCw3ICsxNTgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAg
ICAgaWYgKHByb3BlcnR5TmFtZSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3ZhbHVlLnNpemUo
KSkpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUoanNTdHJpbmcoZXhlYywgdmFsdWUoKS5z
dWJzdHIocHJvcGVydHlOYW1lLCAxKSkpOworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShqc1Np
bmdsZUNoYXJhY3RlclN1YnN0cmluZyhleGVjLCBtX3ZhbHVlLCBwcm9wZXJ0eU5hbWUpKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9OdW1iZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tq
cy9OdW1iZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAzNjAwNSkKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9OdW1iZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNyArMjMzLDcg
QEAgSlNWYWx1ZSogbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVjU3RhdAogCiAgICAgZG91Ymxl
IHggPSB2LT51bmNoZWNrZWRHZXROdW1iZXIoKTsKICAgICBpZiAoaXNuYW4oeCkpCi0gICAgICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCAiTmFOIik7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgIk5hTiIpOwogCiAgICAgVVN0cmluZyBzOwogICAgIGlmICh4IDwgMCkg
ewpAQCAtMzM5LDcgKzMzOSw3IEBAIEpTVmFsdWUqIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRp
YWwoRXgKICAgICB9CiAKICAgICBpZiAoaXNuYW4oeCkpCi0gICAgICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjLCAiTmFOIik7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
Ik5hTiIpOwogCiAgICAgaWYgKHggPT0gLTAuMCkgLy8gKC0wLjApLnRvRXhwb25lbnRpYWwoKSBz
aG91bGQgcHJpbnQgYXMgMCBpbnN0ZWFkIG9mIC0wCiAgICAgICAgIHggPSAwOwpAQCAtNDIyLDgg
KzQyMiw4IEBAIEpTVmFsdWUqIG51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKEV4ZWMKICAgICAg
ICAgICAgIGlmIChtLnNpemUoKSA+IDEpCiAgICAgICAgICAgICAgICAgbSA9IG0uc3Vic3RyKDAs
IDEpICsgIi4iICsgbS5zdWJzdHIoMSk7CiAgICAgICAgICAgICBpZiAoZSA+PSAwKQotICAgICAg
ICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzICsgbSArICJlKyIgKyBVU3RyaW5nOjpm
cm9tKGUpKTsKLSAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzICsgbSArICJlLSIg
KyBVU3RyaW5nOjpmcm9tKC1lKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZyhleGVjLCBzICsgbSArICJlKyIgKyBVU3RyaW5nOjpmcm9tKGUpKTsKKyAgICAgICAg
ICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgcyArIG0gKyAiZS0iICsgVVN0cmlu
Zzo6ZnJvbSgtZSkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgbSA9IGNoYXJT
ZXF1ZW5jZSgnMCcsIHByZWNpc2lvbik7CkBAIC00MzcsNyArNDM3LDcgQEAgSlNWYWx1ZSogbnVt
YmVyUHJvdG9GdW5jVG9QcmVjaXNpb24oRXhlYwogICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsIHMgKyBtLnN1YnN0cigwLCBlICsgMSkgKyAiLiIgKyBtLnN1YnN0cihlICsgMSkpOwog
ICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgcyArIG0pOwogICAgIH0KLSAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgcyArICIwLiIgKyBjaGFyU2VxdWVuY2UoJzAnLCAtKGUgKyAxKSkgKyBt
KTsKKyAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIHMgKyAiMC4iICsgY2hhclNl
cXVlbmNlKCcwJywgLShlICsgMSkpICsgbSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEtKUwpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDM2MDA1KQor
KysgSmF2YVNjcmlwdENvcmUva2pzL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNSwxMiArMTI1LDEyIEBAIEpTVmFsdWUqIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNF
bnVtZXIKIAogSlNWYWx1ZSogb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpCiB7
Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZS0+dG9UaGlzT2JqZWN0KGV4ZWMp
LT50b1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIHRoaXNWYWx1ZS0+dG9UaGlzSlNTdHJpbmco
ZXhlYyk7CiB9CiAKIEpTVmFsdWUqIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKQogewot
ICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiW29iamVjdCAiICsgdGhpc1ZhbHVlLT50b1RoaXNP
YmplY3QoZXhlYyktPmNsYXNzTmFtZSgpICsgIl0iKTsKKyAgICByZXR1cm4ganNOb250cml2aWFs
U3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIgKyB0aGlzVmFsdWUtPnRvVGhpc09iamVjdChleGVjKS0+
Y2xhc3NOYW1lKCkgKyAiXSIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBLSlMKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzYwMDUpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MSw2ICs3MSw3IEBAIHN0cnVjdCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUgewogICAgIHsK
ICAgICB9CiAKKyAgICBVU3RyaW5nIGlucHV0OwogICAgIFVTdHJpbmcgbGFzdElucHV0OwogICAg
IE93bkFycmF5UHRyPGludD4gbGFzdE92ZWN0b3I7CiAgICAgdW5zaWduZWQgbGFzdE51bVN1YlBh
dHRlcm5zIDogMzE7CkBAIC0xMDYsNiArMTA3LDcgQEAgdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6
cGVyZm9ybU1hdGNoKFJlZwogCiAgICAgICAgIGxlbmd0aCA9IHRtcE92ZWN0b3JbMV0gLSB0bXBP
dmVjdG9yWzBdOwogCisgICAgICAgIGQtPmlucHV0ID0gczsKICAgICAgICAgZC0+bGFzdElucHV0
ID0gczsKICAgICAgICAgZC0+bGFzdE92ZWN0b3Iuc2V0KHRtcE92ZWN0b3IucmVsZWFzZSgpKTsK
ICAgICAgICAgZC0+bGFzdE51bVN1YlBhdHRlcm5zID0gci0+bnVtU3VicGF0dGVybnMoKTsKQEAg
LTEzMyw2ICsxMzUsNyBAQCBSZWdFeHBNYXRjaGVzQXJyYXk6OlJlZ0V4cE1hdGNoZXNBcnJheShF
CiAgICAgOiBKU0FycmF5KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlQcm90b3R5
cGUoKSwgZGF0YS0+bGFzdE51bVN1YlBhdHRlcm5zICsgMSkKIHsKICAgICBSZWdFeHBDb25zdHJ1
Y3RvclByaXZhdGUqIGQgPSBuZXcgUmVnRXhwQ29uc3RydWN0b3JQcml2YXRlOworICAgIGQtPmlu
cHV0ID0gZGF0YS0+bGFzdElucHV0OwogICAgIGQtPmxhc3RJbnB1dCA9IGRhdGEtPmxhc3RJbnB1
dDsKICAgICBkLT5sYXN0TnVtU3ViUGF0dGVybnMgPSBkYXRhLT5sYXN0TnVtU3ViUGF0dGVybnM7
CiAgICAgdW5zaWduZWQgb2Zmc2V0VmVjdG9yU2l6ZSA9IChkYXRhLT5sYXN0TnVtU3ViUGF0dGVy
bnMgKyAxKSAqIDI7IC8vIG9ubHkgY29weWluZyB0aGUgcmVzdWx0IHBhcnQgb2YgdGhlIHZlY3Rv
cgpAQCAtMTU4LDEwICsxNjEsMTAgQEAgdm9pZCBSZWdFeHBNYXRjaGVzQXJyYXk6OmZpbGxBcnJh
eUluc3RhbgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPD0gbGFzdE51bVN1YnBhdHRlcm5z
OyArK2kpIHsKICAgICAgICAgaW50IHN0YXJ0ID0gZC0+bGFzdE92ZWN0b3JbMiAqIGldOwogICAg
ICAgICBpZiAoc3RhcnQgPj0gMCkKLSAgICAgICAgICAgIEpTQXJyYXk6OnB1dChleGVjLCBpLCBq
c1N0cmluZyhleGVjLCBkLT5sYXN0SW5wdXQuc3Vic3RyKHN0YXJ0LCBkLT5sYXN0T3ZlY3Rvclsy
ICogaSArIDFdIC0gc3RhcnQpKSk7CisgICAgICAgICAgICBKU0FycmF5OjpwdXQoZXhlYywgaSwg
anNTdWJzdHJpbmcoZXhlYywgZC0+bGFzdElucHV0LCBzdGFydCwgZC0+bGFzdE92ZWN0b3JbMiAq
IGkgKyAxXSAtIHN0YXJ0KSk7CiAgICAgfQogICAgIEpTQXJyYXk6OnB1dChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuaW5kZXgsIGpzTnVtYmVyKGV4ZWMsIGQtPmxhc3RPdmVjdG9yWzBdKSk7
Ci0gICAgSlNBcnJheTo6cHV0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pbnB1dCwganNT
dHJpbmcoZXhlYywgZC0+bGFzdElucHV0KSk7CisgICAgSlNBcnJheTo6cHV0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5pbnB1dCwganNTdHJpbmcoZXhlYywgZC0+aW5wdXQpKTsKIAogICAg
IGRlbGV0ZSBkOwogICAgIHNldExhenlDcmVhdGlvbkRhdGEoMCk7CkBAIC0xNzQsOSArMTc3LDEy
IEBAIEpTT2JqZWN0KiBSZWdFeHBDb25zdHJ1Y3Rvcjo6YXJyYXlPZk1hdGMKIAogSlNWYWx1ZSog
UmVnRXhwQ29uc3RydWN0b3I6OmdldEJhY2tyZWYoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBp
KSBjb25zdAogewotICAgIGlmIChkLT5sYXN0T3ZlY3RvciAmJiBpIDw9IGQtPmxhc3ROdW1TdWJQ
YXR0ZXJucykKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGQtPmxhc3RJbnB1dC5zdWJz
dHIoZC0+bGFzdE92ZWN0b3JbMiAqIGldLCBkLT5sYXN0T3ZlY3RvclsyICogaSArIDFdIC0gZC0+
bGFzdE92ZWN0b3JbMiAqIGldKSk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICIiKTsKKyAg
ICBpZiAoZC0+bGFzdE92ZWN0b3IgJiYgaSA8PSBkLT5sYXN0TnVtU3ViUGF0dGVybnMpIHsKKyAg
ICAgICAgaW50IHN0YXJ0ID0gZC0+bGFzdE92ZWN0b3JbMiAqIGldOworICAgICAgICBpZiAoc3Rh
cnQgPj0gMCkKKyAgICAgICAgICAgIHJldHVybiBqc1N1YnN0cmluZyhleGVjLCBkLT5sYXN0SW5w
dXQsIHN0YXJ0LCBkLT5sYXN0T3ZlY3RvclsyICogaSArIDFdIC0gc3RhcnQpOworICAgIH0KKyAg
ICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKIH0KIAogSlNWYWx1ZSogUmVnRXhwQ29uc3Ry
dWN0b3I6OmdldExhc3RQYXJlbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CkBAIC0xODQsMjUgKzE5
MCwyNSBAQCBKU1ZhbHVlKiBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0TGFzdFBhcmVuCiAgICAgdW5z
aWduZWQgaSA9IGQtPmxhc3ROdW1TdWJQYXR0ZXJuczsKICAgICBpZiAoaSA+IDApIHsKICAgICAg
ICAgQVNTRVJUKGQtPmxhc3RPdmVjdG9yKTsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
IGQtPmxhc3RJbnB1dC5zdWJzdHIoZC0+bGFzdE92ZWN0b3JbMiAqIGldLCBkLT5sYXN0T3ZlY3Rv
clsyICogaSArIDFdIC0gZC0+bGFzdE92ZWN0b3JbMiAqIGldKSk7CisgICAgICAgIGludCBzdGFy
dCA9IGQtPmxhc3RPdmVjdG9yWzIgKiBpXTsKKyAgICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAg
ICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgZC0+bGFzdElucHV0LCBzdGFydCwgZC0+
bGFzdE92ZWN0b3JbMiAqIGkgKyAxXSAtIHN0YXJ0KTsKICAgICB9Ci0gICAgcmV0dXJuIGpzU3Ry
aW5nKGV4ZWMsICIiKTsKKyAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKIH0KIAogSlNW
YWx1ZSogUmVnRXhwQ29uc3RydWN0b3I6OmdldExlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKIHsKICAgICBpZiAoZC0+bGFzdE92ZWN0b3IpCi0gICAgICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjLCBkLT5sYXN0SW5wdXQuc3Vic3RyKDAsIGQtPmxhc3RPdmVjdG9yWzBdKSk7Ci0gICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsICIiKTsKKyAgICAgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4
ZWMsIGQtPmxhc3RJbnB1dCwgMCwgZC0+bGFzdE92ZWN0b3JbMF0pOworICAgIHJldHVybiBqc0Vt
cHR5U3RyaW5nKGV4ZWMpOwogfQogCiBKU1ZhbHVlKiBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0Umln
aHRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICBpZiAoZC0+bGFzdE92ZWN0
b3IpIHsKLSAgICAgICAgVVN0cmluZyBzID0gZC0+bGFzdElucHV0OwotICAgICAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgcy5zdWJzdHIoZC0+bGFzdE92ZWN0b3JbMV0sIHMuc2l6ZSgpIC0gZC0+
bGFzdE92ZWN0b3JbMV0pKTsKLSAgICB9Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICIiKTsK
KyAgICBpZiAoZC0+bGFzdE92ZWN0b3IpCisgICAgICAgIHJldHVybiBqc1N1YnN0cmluZyhleGVj
LCBkLT5sYXN0SW5wdXQsIGQtPmxhc3RPdmVjdG9yWzFdLCBkLT5sYXN0SW5wdXQuc2l6ZSgpIC0g
ZC0+bGFzdE92ZWN0b3JbMV0pOworICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOwogfQog
ICAgIAogYm9vbCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCkBAIC0yMzIsNyArMjM4LDcgQEAgSlNWYWx1ZSogUmVnRXhwQ29uc3RydWN0b3I6OmdldFZh
bHVlUHJvcAogICAgICAgICBjYXNlIERvbGxhcjk6CiAgICAgICAgICAgICByZXR1cm4gZ2V0QmFj
a3JlZihleGVjLCA5KTsKICAgICAgICAgY2FzZSBJbnB1dDoKLSAgICAgICAgICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCBkLT5sYXN0SW5wdXQpOworICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsIGQtPmlucHV0KTsKICAgICAgICAgY2FzZSBNdWx0aWxpbmU6CiAgICAgICAgICAgICBy
ZXR1cm4ganNCb29sZWFuKGQtPm11bHRpbGluZSk7CiAgICAgICAgIGNhc2UgTGFzdE1hdGNoOgpA
QCAtMjQ3LDcgKzI1Myw3IEBAIEpTVmFsdWUqIFJlZ0V4cENvbnN0cnVjdG9yOjpnZXRWYWx1ZVBy
b3AKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHJldHVy
biBqc1N0cmluZyhleGVjLCAiIik7CisgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CiB9
CiAKIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSogdmFsdWUpCkBAIC0yNTksNyArMjY1LDcg
QEAgdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0VmFsdWVQcm9wZXJ0eQogewogICAgIHN3aXRj
aCAodG9rZW4pIHsKICAgICAgICAgY2FzZSBJbnB1dDoKLSAgICAgICAgICAgIGQtPmxhc3RJbnB1
dCA9IHZhbHVlLT50b1N0cmluZyhleGVjKTsKKyAgICAgICAgICAgIGQtPmlucHV0ID0gdmFsdWUt
PnRvU3RyaW5nKGV4ZWMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTXVsdGls
aW5lOgogICAgICAgICAgICAgZC0+bXVsdGlsaW5lID0gdmFsdWUtPnRvQm9vbGVhbihleGVjKTsK
QEAgLTMxNyw3ICszMjMsNyBAQCBjb25zdCBVU3RyaW5nJiBSZWdFeHBDb25zdHJ1Y3Rvcjo6aW5w
dXQoCiB7CiAgICAgLy8gQ2FuIGRldGVjdCBhIGRpc3RpbmN0IGluaXRpYWwgc3RhdGUgdGhhdCBp
cyBpbnZpc2libGUgdG8gSmF2YVNjcmlwdCwgYnkgY2hlY2tpbmcgZm9yIG51bGwKICAgICAvLyBz
dGF0ZSAoc2luY2UganNTdHJpbmcgdHVybnMgbnVsbCBzdHJpbmdzIHRvIGVtcHR5IHN0cmluZ3Mp
LgotICAgIHJldHVybiBkLT5sYXN0SW5wdXQ7CisgICAgcmV0dXJuIGQtPmlucHV0OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBLSlMKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAzNjAwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTggKzEwMSwxOSBAQCBKU1ZhbHVlKiByZWdF
eHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhCiB7CiAgICAgaWYgKCF0aGlzVmFsdWUtPmlzT2Jq
ZWN0KCZSZWdFeHBPYmplY3Q6OmluZm8pKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUtPmlzT2Jq
ZWN0KCZSZWdFeHBQcm90b3R5cGU6OmluZm8pKQotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsICIvLyIpOworICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVj
LCAiLy8iKTsKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKICAg
ICB9CiAKLSAgICBVU3RyaW5nIHJlc3VsdCA9ICIvIiArIHN0YXRpY19jYXN0PFJlZ0V4cE9iamVj
dCo+KHRoaXNWYWx1ZSktPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuc291cmNlKS0+
dG9TdHJpbmcoZXhlYykgKyAiLyI7CisgICAgVVN0cmluZyByZXN1bHQgPSAiLyIgKyBzdGF0aWNf
Y2FzdDxSZWdFeHBPYmplY3QqPih0aGlzVmFsdWUpLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnNvdXJjZSktPnRvU3RyaW5nKGV4ZWMpOworICAgIHJlc3VsdC5hcHBlbmQoJy8nKTsK
ICAgICBpZiAoc3RhdGljX2Nhc3Q8UmVnRXhwT2JqZWN0Kj4odGhpc1ZhbHVlKS0+Z2V0KGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nbG9iYWwpLT50b0Jvb2xlYW4oZXhlYykpCi0gICAgICAg
IHJlc3VsdCArPSAiZyI7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ2cnKTsKICAgICBpZiAoc3Rh
dGljX2Nhc3Q8UmVnRXhwT2JqZWN0Kj4odGhpc1ZhbHVlKS0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5pZ25vcmVDYXNlKS0+dG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICByZXN1bHQg
Kz0gImkiOworICAgICAgICByZXN1bHQuYXBwZW5kKCdpJyk7CiAgICAgaWYgKHN0YXRpY19jYXN0
PFJlZ0V4cE9iamVjdCo+KHRoaXNWYWx1ZSktPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubXVsdGlsaW5lKS0+dG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICByZXN1bHQgKz0gIm0iOwot
ICAgIHJldHVybiBqc1N0cmluZyhleGVjLCByZXN1bHQpOworICAgICAgICByZXN1bHQuYXBwZW5k
KCdtJyk7CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCByZXN1bHQpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBLSlMKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9TdHJpbmdDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1N0cmluZ0NvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMzYwMDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyMCArMjgsMjEgQEAKIAogbmFt
ZXNwYWNlIEtKUyB7CiAKLXN0YXRpYyBKU1ZhbHVlKiBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorc3Rh
dGljIE5FVkVSX0lOTElORSBKU1ZhbHVlKiBzdHJpbmdGcm9tQ2hhckNvZGVTbG93Q2FzZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0gICAgVVN0cmluZyBzOwotICAg
IGlmIChhcmdzLnNpemUoKSkgewotICAgICAgICBVQ2hhciogYnVmID0gc3RhdGljX2Nhc3Q8VUNo
YXIqPihmYXN0TWFsbG9jKGFyZ3Muc2l6ZSgpICogc2l6ZW9mKFVDaGFyKSkpOwotICAgICAgICBV
Q2hhciogcCA9IGJ1ZjsKLSAgICAgICAgQXJnTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYXJn
cy5lbmQoKTsKLSAgICAgICAgZm9yIChBcmdMaXN0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGFyZ3Mu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgKnArKyA9IHN0YXRpY19jYXN0
PFVDaGFyPigoKml0KS5qc1ZhbHVlKGV4ZWMpLT50b1VJbnQzMihleGVjKSk7Ci0gICAgICAgIHMg
PSBVU3RyaW5nKGJ1ZiwgYXJncy5zaXplKCksIGZhbHNlKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
cyA9ICIiOworICAgIFVDaGFyKiBidWYgPSBzdGF0aWNfY2FzdDxVQ2hhcio+KGZhc3RNYWxsb2Mo
YXJncy5zaXplKCkgKiBzaXplb2YoVUNoYXIpKSk7CisgICAgVUNoYXIqIHAgPSBidWY7CisgICAg
QXJnTGlzdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYXJncy5lbmQoKTsKKyAgICBmb3IgKEFyZ0xp
c3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYXJncy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisg
ICAgICAgICpwKysgPSBzdGF0aWNfY2FzdDxVQ2hhcj4oKCppdCkuanNWYWx1ZShleGVjKS0+dG9V
SW50MzIoZXhlYykpOworICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBVU3RyaW5nKGJ1ZiwgcCAt
IGJ1ZiwgZmFsc2UpKTsKK30KIAotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzKTsKK3N0YXRp
YyBKU1ZhbHVlKiBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCos
IEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChMSUtFTFkoYXJncy5z
aXplKCkgPT0gMSkpCisgICAgICAgIHJldHVybiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhleGVj
LCBhcmdzLmF0KGV4ZWMsIDApLT50b1VJbnQzMihleGVjKSk7CisgICAgcmV0dXJuIHN0cmluZ0Zy
b21DaGFyQ29kZVNsb3dDYXNlKGV4ZWMsIGFyZ3MpOwogfQogCiBBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKFN0cmluZ0NvbnN0cnVjdG9yKTsKQEAgLTc4LDcgKzc5LDcgQEAgQ29uc3RydWN0VHlw
ZSBTdHJpbmdDb25zdHJ1Y3Rvcjo6Z2V0Q29ucwogc3RhdGljIEpTVmFsdWUqIGNhbGxTdHJpbmdD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgIiIpOworICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsK
ICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgYXJncy5hdChleGVjLCAwKS0+dG9TdHJpbmcoZXhl
YykpOwogfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nT2JqZWN0LmNwcAkocmV2aXNpb24g
MzYwMDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQCBjb25zdCBDbGFzc0luZm8gU3RyaW5nT2JqZWN0OjppbmZv
ID0geyAiCiBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBwcm90b3R5cGUpCiAgICAgOiBKU1dyYXBwZXJPYmplY3QocHJvdG90eXBlKQogewotICAg
IHNldEludGVybmFsVmFsdWUoanNTdHJpbmcoZXhlYywgIiIpKTsKKyAgICBzZXRJbnRlcm5hbFZh
bHVlKGpzRW1wdHlTdHJpbmcoZXhlYykpOwogfQogCiBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVj
dChKU09iamVjdCogcHJvdG90eXBlLCBKU1N0cmluZyogc3RyaW5nKQpJbmRleDogSmF2YVNjcmlw
dENvcmUva2pzL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDM2MDA1KQorKysgSmF2YVNjcmlw
dENvcmUva2pzL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MCw3ICsy
NTAsNyBAQCBKU1ZhbHVlKiBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlKEV4ZWNTdGF0CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChtYXRjaFN0YXJ0IDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ3MuYXBwZW5kKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBzb3VyY2Uu
c3Vic3RyKG1hdGNoU3RhcnQsIG1hdGNoTGVuKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
YXJncy5hcHBlbmQoanNTdWJzdHJpbmcoZXhlYywgc291cmNlLCBtYXRjaFN0YXJ0LCBtYXRjaExl
bikpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGpz
TnVtYmVyKGV4ZWMsIGNvbXBsZXRlTWF0Y2hTdGFydCkpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIEpT
VmFsdWUqIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2UoRXhlY1N0YXQKIAogICAgIGlmIChjYWxsVHlw
ZSAhPSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgQXJnTGlzdCBhcmdzOwotICAgICAgICBhcmdz
LmFwcGVuZChqc1N0cmluZyhleGVjLCBzb3VyY2Uuc3Vic3RyKG1hdGNoUG9zLCBtYXRjaExlbikp
KTsKKyAgICAgICAgYXJncy5hcHBlbmQoanNTdWJzdHJpbmcoZXhlYywgc291cmNlLCBtYXRjaFBv
cywgbWF0Y2hMZW4pKTsKICAgICAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIoZXhlYywgbWF0Y2hQ
b3MpKTsKICAgICAgICAgYXJncy5hcHBlbmQoc291cmNlVmFsKTsKIApAQCAtMzE4LDMyICszMTgs
MzUgQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YQogSlNWYWx1ZSog
c3RyaW5nUHJvdG9GdW5jQ2hhckF0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVl
KiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVVN0cmluZyBzID0gdGhp
c1ZhbHVlLT50b1RoaXNTdHJpbmcoZXhlYyk7Ci0gICAgaW50IGxlbiA9IHMuc2l6ZSgpOwotCi0g
ICAgVVN0cmluZyB1OworICAgIHVuc2lnbmVkIGxlbiA9IHMuc2l6ZSgpOwogICAgIEpTVmFsdWUq
IGEwID0gYXJncy5hdChleGVjLCAwKTsKKyAgICBpZiAoSlNJbW1lZGlhdGU6OmlzTnVtYmVyKGEw
KSkgeworICAgICAgICB1aW50MzJfdCBpOworICAgICAgICBpZiAoSlNJbW1lZGlhdGU6OmdldFVJ
bnQzMihhMCwgaSkgJiYgaSA8IGxlbikKKyAgICAgICAgICAgIHJldHVybiBqc1NpbmdsZUNoYXJh
Y3RlclN1YnN0cmluZyhleGVjLCBzLCBpKTsKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmco
ZXhlYyk7CisgICAgfQogICAgIGRvdWJsZSBkcG9zID0gYTAtPnRvSW50ZWdlcihleGVjKTsKICAg
ICBpZiAoZHBvcyA+PSAwICYmIGRwb3MgPCBsZW4pCi0gICAgICAgIHUgPSBzLnN1YnN0cihzdGF0
aWNfY2FzdDxpbnQ+KGRwb3MpLCAxKTsKLSAgICBlbHNlCi0gICAgICAgIHUgPSAiIjsKLSAgICBy
ZXR1cm4ganNTdHJpbmcoZXhlYywgdSk7CisgICAgICAgIHJldHVybiBqc1NpbmdsZUNoYXJhY3Rl
clN1YnN0cmluZyhleGVjLCBzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZHBvcykpOworICAgIHJl
dHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOwogfQogCiBKU1ZhbHVlKiBzdHJpbmdQcm90b0Z1bmND
aGFyQ29kZUF0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLT50b1Ro
aXNTdHJpbmcoZXhlYyk7Ci0gICAgaW50IGxlbiA9IHMuc2l6ZSgpOwotCi0gICAgSlNWYWx1ZSog
cmVzdWx0ID0gMDsKLQorICAgIHVuc2lnbmVkIGxlbiA9IHMuc2l6ZSgpOwogICAgIEpTVmFsdWUq
IGEwID0gYXJncy5hdChleGVjLCAwKTsKKyAgICBpZiAoSlNJbW1lZGlhdGU6OmlzTnVtYmVyKGEw
KSkgeworICAgICAgICB1aW50MzJfdCBpOworICAgICAgICBpZiAoSlNJbW1lZGlhdGU6OmdldFVJ
bnQzMihhMCwgaSkgJiYgaSA8IGxlbikKKyAgICAgICAgICAgIHJldHVybiBqc051bWJlcihleGVj
LCBzLmRhdGEoKVtpXSk7CisgICAgICAgIHJldHVybiBqc05hTihleGVjKTsKKyAgICB9CiAgICAg
ZG91YmxlIGRwb3MgPSBhMC0+dG9JbnRlZ2VyKGV4ZWMpOwogICAgIGlmIChkcG9zID49IDAgJiYg
ZHBvcyA8IGxlbikKLSAgICAgICAgcmVzdWx0ID0ganNOdW1iZXIoZXhlYywgc1tzdGF0aWNfY2Fz
dDxpbnQ+KGRwb3MpXSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBqc05hTihleGVjKTsK
LSAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgc1tzdGF0
aWNfY2FzdDxpbnQ+KGRwb3MpXSk7CisgICAgcmV0dXJuIGpzTmFOKGV4ZWMpOwogfQogCiBKU1Zh
bHVlKiBzdHJpbmdQcm90b0Z1bmNDb25jYXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpT
VmFsdWUqIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKQEAgLTQyMyw3ICs0MjYsNyBA
QCBKU1ZhbHVlKiBzdHJpbmdQcm90b0Z1bmNNYXRjaChFeGVjU3RhdGUqCiAgICAgQXJnTGlzdCBs
aXN0OwogICAgIGludCBsYXN0SW5kZXggPSAwOwogICAgIHdoaWxlIChwb3MgPj0gMCkgewotICAg
ICAgICBsaXN0LmFwcGVuZChqc1N0cmluZyhleGVjLCB1LnN1YnN0cihwb3MsIG1hdGNoTGVuZ3Ro
KSkpOworICAgICAgICBsaXN0LmFwcGVuZChqc1N1YnN0cmluZyhleGVjLCB1LCBwb3MsIG1hdGNo
TGVuZ3RoKSk7CiAgICAgICAgIGxhc3RJbmRleCA9IHBvczsKICAgICAgICAgcG9zICs9IG1hdGNo
TGVuZ3RoID09IDAgPyAxIDogbWF0Y2hMZW5ndGg7CiAgICAgICAgIHJlZ0V4cE9iai0+cGVyZm9y
bU1hdGNoKHJlZy5nZXQoKSwgdSwgcG9zLCBwb3MsIG1hdGNoTGVuZ3RoKTsKQEAgLTQ4MywxMCAr
NDg2LDEwIEBAIEpTVmFsdWUqIHN0cmluZ1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSoKICAgICAg
ICAgICAgIGZyb20gPSAwOwogICAgICAgICBpZiAodG8gPiBsZW4pCiAgICAgICAgICAgICB0byA9
IGxlbjsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHMuc3Vic3RyKHN0YXRpY19jYXN0
PGludD4oZnJvbSksIHN0YXRpY19jYXN0PGludD4odG8gLSBmcm9tKSkpOworICAgICAgICByZXR1
cm4ganNTdWJzdHJpbmcoZXhlYywgcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb20pLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odG8pIC0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb20pKTsKICAg
ICB9CiAKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIiIpOworICAgIHJldHVybiBqc0VtcHR5
U3RyaW5nKGV4ZWMpOwogfQogCiBKU1ZhbHVlKiBzdHJpbmdQcm90b0Z1bmNTcGxpdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSogdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQpAQCAtNDk2LDY1ICs0OTksNTggQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jU3BsaXQo
RXhlY1N0YXRlKgogICAgIEpTVmFsdWUqIGEwID0gYXJncy5hdChleGVjLCAwKTsKICAgICBKU1Zh
bHVlKiBhMSA9IGFyZ3MuYXQoZXhlYywgMSk7CiAKLSAgICBKU09iamVjdCogcmVzID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjKTsKLSAgICBKU1ZhbHVlKiByZXN1bHQgPSByZXM7Ci0gICAgVVN0
cmluZyB1ID0gczsKLSAgICBpbnQgcG9zOwotICAgIGludCBpID0gMDsKKyAgICBKU0FycmF5KiBy
ZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMpOworICAgIHVuc2lnbmVkIGkgPSAwOwog
ICAgIGludCBwMCA9IDA7Ci0gICAgdWludDMyX3QgbGltaXQgPSBhMS0+aXNVbmRlZmluZWQoKSA/
IDB4RkZGRkZGRkZVIDogYTEtPnRvVUludDMyKGV4ZWMpOworICAgIHVuc2lnbmVkIGxpbWl0ID0g
YTEtPmlzVW5kZWZpbmVkKCkgPyAweEZGRkZGRkZGVSA6IGExLT50b1VJbnQzMihleGVjKTsKICAg
ICBpZiAoYTAtPmlzT2JqZWN0KCkgJiYgc3RhdGljX2Nhc3Q8SlNPYmplY3QgKj4oYTApLT5pbmhl
cml0cygmUmVnRXhwT2JqZWN0OjppbmZvKSkgewogICAgICAgICBSZWdFeHAgKnJlZyA9IHN0YXRp
Y19jYXN0PFJlZ0V4cE9iamVjdCAqPihhMCktPnJlZ0V4cCgpOwotICAgICAgICBpZiAodS5pc0Vt
cHR5KCkgJiYgcmVnLT5tYXRjaCh1LCAwKSA+PSAwKSB7CisgICAgICAgIGlmIChzLmlzRW1wdHko
KSAmJiByZWctPm1hdGNoKHMsIDApID49IDApIHsKICAgICAgICAgICAgIC8vIGVtcHR5IHN0cmlu
ZyBtYXRjaGVkIGJ5IHJlZ2V4cCAtPiBlbXB0eSBhcnJheQotICAgICAgICAgICAgcmVzLT5wdXQo
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgMCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQotICAgICAgICBwb3MgPSAwOwot
ICAgICAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpICE9IGxpbWl0ICYmIHBvcyA8
IHUuc2l6ZSgpKSB7CisgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICB3aGlsZSAoaSAhPSBs
aW1pdCAmJiBwb3MgPCBzLnNpemUoKSkgewogICAgICAgICAgICAgT3duQXJyYXlQdHI8aW50PiBv
dmVjdG9yOwotICAgICAgICAgICAgaW50IG1wb3MgPSByZWctPm1hdGNoKHUsIHBvcywgJm92ZWN0
b3IpOworICAgICAgICAgICAgaW50IG1wb3MgPSByZWctPm1hdGNoKHMsIHBvcywgJm92ZWN0b3Ip
OwogICAgICAgICAgICAgaWYgKG1wb3MgPCAwKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgaW50IG1sZW4gPSBvdmVjdG9yWzFdIC0gb3ZlY3RvclswXTsKICAgICAgICAgICAg
IHBvcyA9IG1wb3MgKyAobWxlbiA9PSAwID8gMSA6IG1sZW4pOwogICAgICAgICAgICAgaWYgKG1w
b3MgIT0gcDAgfHwgbWxlbikgewotICAgICAgICAgICAgICAgIHJlcy0+cHV0KGV4ZWMsaSwganNT
dHJpbmcoZXhlYywgdS5zdWJzdHIocDAsIG1wb3MgLSBwMCkpKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQtPnB1dChleGVjLCBpKyssIGpzU3Vic3RyaW5nKGV4ZWMsIHMsIHAwLCBtcG9zIC0gcDAp
KTsKICAgICAgICAgICAgICAgICBwMCA9IG1wb3MgKyBtbGVuOwotICAgICAgICAgICAgICAgIGkr
KzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgc2kgPSAxOyBzaSA8
PSByZWctPm51bVN1YnBhdHRlcm5zKCk7ICsrc2kpIHsKICAgICAgICAgICAgICAgICBpbnQgc3Bv
cyA9IG92ZWN0b3Jbc2kgKiAyXTsKICAgICAgICAgICAgICAgICBpZiAoc3BvcyA8IDApCi0gICAg
ICAgICAgICAgICAgICAgIHJlcy0+cHV0KGV4ZWMsIGkrKywganNVbmRlZmluZWQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC0+cHV0KGV4ZWMsIGkrKywganNVbmRlZmluZWQoKSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXMtPnB1dChleGVjLCBp
KyssIGpzU3RyaW5nKGV4ZWMsIHUuc3Vic3RyKHNwb3MsIG92ZWN0b3Jbc2kgKiAyICsgMV0gLSBz
cG9zKSkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQtPnB1dChleGVjLCBpKyssIGpzU3Vi
c3RyaW5nKGV4ZWMsIHMsIHNwb3MsIG92ZWN0b3Jbc2kgKiAyICsgMV0gLSBzcG9zKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBVU3RyaW5nIHUyID0g
YTAtPnRvU3RyaW5nKGV4ZWMpOwogICAgICAgICBpZiAodTIuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBpZiAodS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmIChzLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgICAgIC8vIGVtcHR5IHNlcGFyYXRvciBtYXRjaGVzIGVtcHR5IHN0cmluZyAt
PiBlbXB0eSBhcnJheQotICAgICAgICAgICAgICAgIHJlcy0+cHV0KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDApKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB3aGls
ZSAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpICE9IGxpbWl0ICYmIGkgPCB1LnNpemUoKSAtIDEp
Ci0gICAgICAgICAgICAgICAgICAgIHJlcy0+cHV0KGV4ZWMsIGkrKywganNTdHJpbmcoZXhlYywg
dS5zdWJzdHIocDArKywgMSkpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdoaWxlIChp
ICE9IGxpbWl0ICYmIHAwIDwgcy5zaXplKCkgLSAxKQorICAgICAgICAgICAgICAgIHJlc3VsdC0+
cHV0KGV4ZWMsIGkrKywganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoZXhlYywgcywgcDArKykp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgd2hpbGUgKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihpKSAhPSBsaW1pdCAmJiAocG9zID0gdS5maW5kKHUyLCBwMCkpID49IDApIHsKLSAgICAg
ICAgICAgICAgICByZXMtPnB1dChleGVjLCBpLCBqc1N0cmluZyhleGVjLCB1LnN1YnN0cihwMCwg
cG9zIC0gcDApKSk7CisgICAgICAgICAgICBpbnQgcG9zOworICAgICAgICAgICAgd2hpbGUgKGkg
IT0gbGltaXQgJiYgKHBvcyA9IHMuZmluZCh1MiwgcDApKSA+PSAwKSB7CisgICAgICAgICAgICAg
ICAgcmVzdWx0LT5wdXQoZXhlYywgaSsrLCBqc1N1YnN0cmluZyhleGVjLCBzLCBwMCwgcG9zIC0g
cDApKTsKICAgICAgICAgICAgICAgICBwMCA9IHBvcyArIHUyLnNpemUoKTsKLSAgICAgICAgICAg
ICAgICBpKys7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBhZGQg
cmVtYWluaW5nIHN0cmluZywgaWYgYW55Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90Pihp
KSAhPSBsaW1pdCkKLSAgICAgICAgcmVzLT5wdXQoZXhlYywgaSsrLCBqc1N0cmluZyhleGVjLCB1
LnN1YnN0cihwMCkpKTsKLSAgICByZXMtPnB1dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcihleGVjLCBpKSk7CisgICAgLy8gYWRkIHJlbWFpbmluZyBzdHJpbmcK
KyAgICBpZiAoaSAhPSBsaW1pdCkKKyAgICAgICAgcmVzdWx0LT5wdXQoZXhlYywgaSsrLCBqc1N1
YnN0cmluZyhleGVjLCBzLCBwMCwgcy5zaXplKCkgLSBwMCkpOworCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtNTY5LDkgKzU2NSw5IEBAIEpTVmFsdWUqIHN0cmluZ1Byb3RvRnVuY1N1YnN0
cihFeGVjU3RhdGUKICAgICBkb3VibGUgc3RhcnQgPSBhMC0+dG9JbnRlZ2VyKGV4ZWMpOwogICAg
IGRvdWJsZSBsZW5ndGggPSBhMS0+aXNVbmRlZmluZWQoKSA/IGxlbiA6IGExLT50b0ludGVnZXIo
ZXhlYyk7CiAgICAgaWYgKHN0YXJ0ID49IGxlbikKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsICIiKTsKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGxl
bmd0aCA8IDApCi0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiIik7CisgICAgICAgIHJl
dHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOwogICAgIGlmIChzdGFydCA8IDApIHsKICAgICAgICAg
c3RhcnQgKz0gbGVuOwogICAgICAgICBpZiAoc3RhcnQgPCAwKQpAQCAtNTc5LDcgKzU3NSw3IEBA
IEpTVmFsdWUqIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUKICAgICB9CiAgICAgaWYg
KGxlbmd0aCA+IGxlbikKICAgICAgICAgbGVuZ3RoID0gbGVuOwotICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjLCBzLnN1YnN0cihzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSwgc3RhdGljX2Nhc3Q8aW50
PihsZW5ndGgpKSk7CisgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIHMsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGFydCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpKTsKIH0KIAog
SlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCkBAIC02MTEsNyAr
NjA3LDcgQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4ZWNTdAogICAgICAg
ICBlbmQgPSBzdGFydDsKICAgICAgICAgc3RhcnQgPSB0ZW1wOwogICAgIH0KLSAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgcy5zdWJzdHIoc3RhdGljX2Nhc3Q8aW50PihzdGFydCksIChzdGF0aWNf
Y2FzdDxpbnQ+KGVuZCkgLSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXJ0KSkpKTsKKyAgICByZXR1cm4g
anNTdWJzdHJpbmcoZXhlYywgcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0KSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGVuZCkgLSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpKTsKIH0K
IAogSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCosIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvY29sbGVjdG9yLmNwcAkocmV2aXNpb24gMzYwMDUpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvY29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTY5LDYgKzk2OSw3IEBAIGJvb2wg
SGVhcDo6Y29sbGVjdCgpCiAgICAgaWYgKG1fbWFya0xpc3RTZXQgJiYgbV9tYXJrTGlzdFNldC0+
c2l6ZSgpKQogICAgICAgICBBcmdMaXN0OjptYXJrTGlzdHMoKm1fbWFya0xpc3RTZXQpOwogICAg
IG1fZ2xvYmFsRGF0YS0+bWFjaGluZS0+cmVnaXN0ZXJGaWxlKCkubWFya0NhbGxGcmFtZXModGhp
cyk7CisgICAgbV9nbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MubWFyaygpOwogCiAgICAgSkFWQVND
UklQVENPUkVfR0NfTUFSS0VEKCk7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5jcHAJKHJldmlz
aW9uIDM2MDA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBVU3RyaW5nOjpSZXA6OmNoZWNrQ29uc2lzdGVu
Y3koKSBjbwogI2VuZGlmCiAKIC8vIHB1dCB0aGVzZSBlYXJseSBzbyB0aGV5IGNhbiBiZSBpbmxp
bmVkCi1pbmxpbmUgc2l6ZV90IFVTdHJpbmc6OmV4cGFuZGVkU2l6ZShzaXplX3Qgc2l6ZSwgc2l6
ZV90IG90aGVyU2l6ZSkgY29uc3QKK2lubGluZSBzaXplX3QgVVN0cmluZzo6ZXhwYW5kZWRTaXpl
KHNpemVfdCBzaXplLCBzaXplX3Qgb3RoZXJTaXplKQogewogICAgIC8vIERvIHRoZSBzaXplIGNh
bGN1bGF0aW9uIGluIHR3byBwYXJ0cywgcmV0dXJuaW5nIG92ZXJmbG93SW5kaWNhdG9yIGlmCiAg
ICAgLy8gd2Ugb3ZlcmZsb3cgdGhlIG1heGltdW0gdmFsdWUgdGhhdCB3ZSBjYW4gaGFuZGxlLgpA
QCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgVVN0cmluZzo6ZXhwYW5kQ2FwYWNpdHkoaW50IHJlcXVp
cmUKICAgICAgICAgci0+YnVmID0gcmVhbGxvY0NoYXJzKHItPmJ1ZiwgbmV3Q2FwYWNpdHkpOwog
ICAgICAgICBpZiAoIXItPmJ1ZikgewogICAgICAgICAgICAgci0+YnVmID0gb2xkQnVmOwotICAg
ICAgICAgICAgbV9yZXAgPSAmUmVwOjpudWxsOworICAgICAgICAgICAgbWFrZU51bGwoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICByLT5jYXBhY2l0eSA9IG5ld0Nh
cGFjaXR5IC0gci0+cHJlQ2FwYWNpdHk7CkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBVU3RyaW5n
OjpleHBhbmRQcmVDYXBhY2l0eShpbnQgcmVxdQogCiAgICAgICAgIFVDaGFyKiBuZXdCdWYgPSBh
bGxvY0NoYXJzKG5ld0NhcGFjaXR5KTsKICAgICAgICAgaWYgKCFuZXdCdWYpIHsKLSAgICAgICAg
ICAgIG1fcmVwID0gJlJlcDo6bnVsbDsKKyAgICAgICAgICAgIG1ha2VOdWxsKCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbWVtY3B5KG5ld0J1ZiArIGRlbHRhLCBy
LT5idWYsIChyLT5jYXBhY2l0eSArIHItPnByZUNhcGFjaXR5KSAqIHNpemVvZihVQ2hhcikpOwpA
QCAtNDg0LDcgKzQ4NCw3IEBAIFVTdHJpbmc6OlVTdHJpbmcoY29uc3QgY2hhciogYykKICAgICBz
aXplX3QgbGVuZ3RoID0gc3RybGVuKGMpOwogICAgIFVDaGFyKiBkID0gYWxsb2NDaGFycyhsZW5n
dGgpOwogICAgIGlmICghZCkKLSAgICAgICAgbV9yZXAgPSAmUmVwOjpudWxsOworICAgICAgICBt
YWtlTnVsbCgpOwogICAgIGVsc2UgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKQogICAgICAgICAgICAgZFtpXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGNbaV0pOyAvLyB1c2UgdW5zaWduZWQgY2hhciB0byB6ZXJvLWV4dGVuZCBpbnN0ZWFkIG9mIHNp
Z24tZXh0ZW5kCkBAIC01MTgsNjYgKzUxOCw4NiBAQCBVU3RyaW5nOjpVU3RyaW5nKGNvbnN0IFZl
Y3RvcjxVQ2hhcj4mIGJ1CiAgICAgICAgIG1fcmVwID0gUmVwOjpjcmVhdGVDb3B5aW5nKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCi0KLVVTdHJpbmc6OlVTdHJpbmcoY29uc3Qg
VVN0cmluZyYgYSwgY29uc3QgVVN0cmluZyYgYikKK1Bhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBj
b25jYXRlbmF0ZShVU3RyaW5nOjpSZXAqIGEsIFVTdHJpbmc6OlJlcCogYikKIHsKLSAgICBhLnJl
cCgpLT5jaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAgYi5yZXAoKS0+Y2hlY2tDb25zaXN0ZW5jeSgp
OworICAgIGEtPmNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICBiLT5jaGVja0NvbnNpc3RlbmN5KCk7
CiAKLSAgICBpbnQgYVNpemUgPSBhLnNpemUoKTsKLSAgICBpbnQgYU9mZnNldCA9IGEubV9yZXAt
Pm9mZnNldDsKLSAgICBpbnQgYlNpemUgPSBiLnNpemUoKTsKLSAgICBpbnQgYk9mZnNldCA9IGIu
bV9yZXAtPm9mZnNldDsKKyAgICBpbnQgYVNpemUgPSBhLT5zaXplKCk7CisgICAgaW50IGFPZmZz
ZXQgPSBhLT5vZmZzZXQ7CisgICAgaW50IGJTaXplID0gYi0+c2l6ZSgpOworICAgIGludCBiT2Zm
c2V0ID0gYi0+b2Zmc2V0OwogICAgIGludCBsZW5ndGggPSBhU2l6ZSArIGJTaXplOwogCiAgICAg
Ly8gcG9zc2libGUgY2FzZXM6CiAKLSAgICBpZiAoYVNpemUgPT0gMCkgewotICAgICAgICAvLyBh
IGlzIGVtcHR5Ci0gICAgICAgIG1fcmVwID0gYi5tX3JlcDsKLSAgICB9IGVsc2UgaWYgKGJTaXpl
ID09IDApIHsKLSAgICAgICAgLy8gYiBpcyBlbXB0eQotICAgICAgICBtX3JlcCA9IGEubV9yZXA7
Ci0gICAgfSBlbHNlIGlmIChhT2Zmc2V0ICsgYVNpemUgPT0gYS51c2VkQ2FwYWNpdHkoKSAmJiBh
U2l6ZSA+PSBtaW5TaGFyZVNpemUgJiYgNCAqIGFTaXplID49IGJTaXplICYmCi0gICAgICAgICAg
ICAgICAoLWJPZmZzZXQgIT0gYi51c2VkUHJlQ2FwYWNpdHkoKSB8fCBhU2l6ZSA+PSBiU2l6ZSkp
IHsKKyAgICAvLyBhIGlzIGVtcHR5CisgICAgaWYgKGFTaXplID09IDApCisgICAgICAgIHJldHVy
biBiOworICAgIC8vIGIgaXMgZW1wdHkKKyAgICBpZiAoYlNpemUgPT0gMCkKKyAgICAgICAgcmV0
dXJuIGE7CisKKyAgICBpZiAoYlNpemUgPT0gMSAmJiBhT2Zmc2V0ICsgYVNpemUgPT0gYS0+YmFz
ZVN0cmluZy0+dXNlZENhcGFjaXR5ICYmIGFPZmZzZXQgKyBsZW5ndGggPD0gYS0+YmFzZVN0cmlu
Zy0+Y2FwYWNpdHkpIHsKKyAgICAgICAgLy8gYiBpcyBhIHNpbmdsZSBjaGFyYWN0ZXIgKGNvbW1v
biBmYXN0IGNhc2UpCisgICAgICAgIGEtPmJhc2VTdHJpbmctPnVzZWRDYXBhY2l0eSA9IGFPZmZz
ZXQgKyBsZW5ndGg7CisgICAgICAgIGEtPmRhdGEoKVthU2l6ZV0gPSBiLT5kYXRhKClbMF07Cisg
ICAgICAgIHJldHVybiBVU3RyaW5nOjpSZXA6OmNyZWF0ZShhLCAwLCBsZW5ndGgpOworICAgIH0K
KworICAgIGlmIChhT2Zmc2V0ICsgYVNpemUgPT0gYS0+YmFzZVN0cmluZy0+dXNlZENhcGFjaXR5
ICYmIGFTaXplID49IG1pblNoYXJlU2l6ZSAmJiA0ICogYVNpemUgPj0gYlNpemUgJiYKKyAgICAg
ICAgICAgICAgICgtYk9mZnNldCAhPSBiLT5iYXNlU3RyaW5nLT51c2VkUHJlQ2FwYWNpdHkgfHwg
YVNpemUgPj0gYlNpemUpKSB7CiAgICAgICAgIC8vIC0gYSByZWFjaGVzIHRoZSBlbmQgb2YgaXRz
IGJ1ZmZlciBzbyBpdCBxdWFsaWZpZXMgZm9yIHNoYXJlZCBhcHBlbmQKICAgICAgICAgLy8gLSBh
bHNvLCBpdCdzIGF0IGxlYXN0IGEgcXVhcnRlciB0aGUgbGVuZ3RoIG9mIGIgLSBhcHBlbmRpbmcg
dG8gYSBtdWNoIHNob3J0ZXIKICAgICAgICAgLy8gICBzdHJpbmcgZG9lcyBtb3JlIGhhcm0gdGhh
biBnb29kCiAgICAgICAgIC8vIC0gaG93ZXZlciwgaWYgYiBxdWFsaWZpZXMgZm9yIHByZXBlbmQg
YW5kIGlzIGxvbmdlciB0aGFuIGEsIHdlJ2QgcmF0aGVyIHByZXBlbmQKICAgICAgICAgVVN0cmlu
ZyB4KGEpOwogICAgICAgICB4LmV4cGFuZENhcGFjaXR5KGFPZmZzZXQgKyBsZW5ndGgpOwotICAg
ICAgICBpZiAoYS5kYXRhKCkgJiYgeC5kYXRhKCkpIHsKLSAgICAgICAgICAgIG1lbWNweShjb25z
dF9jYXN0PFVDaGFyKj4oYS5kYXRhKCkgKyBhU2l6ZSksIGIuZGF0YSgpLCBiU2l6ZSAqIHNpemVv
ZihVQ2hhcikpOwotICAgICAgICAgICAgbV9yZXAgPSBSZXA6OmNyZWF0ZShhLm1fcmVwLCAwLCBs
ZW5ndGgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fcmVwID0gJlJlcDo6bnVsbDsK
LSAgICB9IGVsc2UgaWYgKC1iT2Zmc2V0ID09IGIudXNlZFByZUNhcGFjaXR5KCkgJiYgYlNpemUg
Pj0gbWluU2hhcmVTaXplICAmJiA0ICogYlNpemUgPj0gYVNpemUpIHsKKyAgICAgICAgaWYgKCFh
LT5kYXRhKCkgfHwgIXguZGF0YSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIG1l
bWNweShhLT5kYXRhKCkgKyBhU2l6ZSwgYi0+ZGF0YSgpLCBiU2l6ZSAqIHNpemVvZihVQ2hhcikp
OworICAgICAgICBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gcmVzdWx0ID0gVVN0cmluZzo6UmVw
OjpjcmVhdGUoYSwgMCwgbGVuZ3RoKTsKKworICAgICAgICBhLT5jaGVja0NvbnNpc3RlbmN5KCk7
CisgICAgICAgIGItPmNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICAgICAgcmVzdWx0LT5jaGVja0Nv
bnNpc3RlbmN5KCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAo
LWJPZmZzZXQgPT0gYi0+YmFzZVN0cmluZy0+dXNlZFByZUNhcGFjaXR5ICYmIGJTaXplID49IG1p
blNoYXJlU2l6ZSAgJiYgNCAqIGJTaXplID49IGFTaXplKSB7CiAgICAgICAgIC8vIC0gYiByZWFj
aGVzIHRoZSBiZWdpbm5pbmcgb2YgaXRzIGJ1ZmZlciBzbyBpdCBxdWFsaWZpZXMgZm9yIHNoYXJl
ZCBwcmVwZW5kCiAgICAgICAgIC8vIC0gYWxzbywgaXQncyBhdCBsZWFzdCBhIHF1YXJ0ZXIgdGhl
IGxlbmd0aCBvZiBhIC0gcHJlcGVuZGluZyB0byBhIG11Y2ggc2hvcnRlcgogICAgICAgICAvLyAg
IHN0cmluZyBkb2VzIG1vcmUgaGFybSB0aGFuIGdvb2QKICAgICAgICAgVVN0cmluZyB5KGIpOwog
ICAgICAgICB5LmV4cGFuZFByZUNhcGFjaXR5KC1iT2Zmc2V0ICsgYVNpemUpOwotICAgICAgICBp
ZiAoYi5kYXRhKCkgJiYgeS5kYXRhKCkpIHsKLSAgICAgICAgICAgIG1lbWNweShjb25zdF9jYXN0
PFVDaGFyICo+KGIuZGF0YSgpIC0gYVNpemUpLCBhLmRhdGEoKSwgYVNpemUgKiBzaXplb2YoVUNo
YXIpKTsKLSAgICAgICAgICAgIG1fcmVwID0gUmVwOjpjcmVhdGUoYi5tX3JlcCwgLWFTaXplLCBs
ZW5ndGgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fcmVwID0gJlJlcDo6bnVsbDsK
LSAgICB9IGVsc2UgewotICAgICAgICAvLyBhIGRvZXMgbm90IHF1YWxpZnkgZm9yIGFwcGVuZCwg
YW5kIGIgZG9lcyBub3QgcXVhbGlmeSBmb3IgcHJlcGVuZCwgZ290dGEgbWFrZSBhIHdob2xlIG5l
dyBzdHJpbmcKLSAgICAgICAgc2l6ZV90IG5ld0NhcGFjaXR5ID0gZXhwYW5kZWRTaXplKGxlbmd0
aCwgMCk7Ci0gICAgICAgIFVDaGFyKiBkID0gYWxsb2NDaGFycyhuZXdDYXBhY2l0eSk7Ci0gICAg
ICAgIGlmICghZCkKLSAgICAgICAgICAgIG1fcmVwID0gJlJlcDo6bnVsbDsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBtZW1jcHkoZCwgYS5kYXRhKCksIGFTaXplICogc2l6ZW9mKFVDaGFy
KSk7Ci0gICAgICAgICAgICBtZW1jcHkoZCArIGFTaXplLCBiLmRhdGEoKSwgYlNpemUgKiBzaXpl
b2YoVUNoYXIpKTsKLSAgICAgICAgICAgIG1fcmVwID0gUmVwOjpjcmVhdGUoZCwgbGVuZ3RoKTsK
LSAgICAgICAgICAgIG1fcmVwLT5jYXBhY2l0eSA9IG5ld0NhcGFjaXR5OwotICAgICAgICB9Cisg
ICAgICAgIGlmICghYi0+ZGF0YSgpIHx8ICF5LmRhdGEoKSkKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICBtZW1jcHkoYi0+ZGF0YSgpIC0gYVNpemUsIGEtPmRhdGEoKSwgYVNpemUgKiBz
aXplb2YoVUNoYXIpKTsKKyAgICAgICAgUGFzc1JlZlB0cjxVU3RyaW5nOjpSZXA+IHJlc3VsdCA9
IFVTdHJpbmc6OlJlcDo6Y3JlYXRlKGIsIC1hU2l6ZSwgbGVuZ3RoKTsKKworICAgICAgICBhLT5j
aGVja0NvbnNpc3RlbmN5KCk7CisgICAgICAgIGItPmNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICAg
ICAgcmVzdWx0LT5jaGVja0NvbnNpc3RlbmN5KCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9Ci0gICAgYS5yZXAoKS0+Y2hlY2tDb25zaXN0ZW5jeSgpOwotICAgIGIucmVwKCktPmNo
ZWNrQ29uc2lzdGVuY3koKTsKLSAgICBtX3JlcC0+Y2hlY2tDb25zaXN0ZW5jeSgpOworCisgICAg
Ly8gYSBkb2VzIG5vdCBxdWFsaWZ5IGZvciBhcHBlbmQsIGFuZCBiIGRvZXMgbm90IHF1YWxpZnkg
Zm9yIHByZXBlbmQsIGdvdHRhIG1ha2UgYSB3aG9sZSBuZXcgc3RyaW5nCisgICAgc2l6ZV90IG5l
d0NhcGFjaXR5ID0gVVN0cmluZzo6ZXhwYW5kZWRTaXplKGxlbmd0aCwgMCk7CisgICAgVUNoYXIq
IGQgPSBhbGxvY0NoYXJzKG5ld0NhcGFjaXR5KTsKKyAgICBpZiAoIWQpCisgICAgICAgIHJldHVy
biAwOworICAgIG1lbWNweShkLCBhLT5kYXRhKCksIGFTaXplICogc2l6ZW9mKFVDaGFyKSk7Cisg
ICAgbWVtY3B5KGQgKyBhU2l6ZSwgYi0+ZGF0YSgpLCBiU2l6ZSAqIHNpemVvZihVQ2hhcikpOwor
ICAgIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiByZXN1bHQgPSBVU3RyaW5nOjpSZXA6OmNyZWF0
ZShkLCBsZW5ndGgpOworICAgIHJlc3VsdC0+Y2FwYWNpdHkgPSBuZXdDYXBhY2l0eTsKKworICAg
IGEtPmNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICBiLT5jaGVja0NvbnNpc3RlbmN5KCk7CisgICAg
cmVzdWx0LT5jaGVja0NvbnNpc3RlbmN5KCk7CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBj
b25zdCBVU3RyaW5nJiBVU3RyaW5nOjpudWxsKCkKQEAgLTgwNiw3ICs4MjYsNyBAQCBVU3RyaW5n
JiBVU3RyaW5nOjphcHBlbmQoY29uc3QgVVN0cmluZyAmCiAgICAgICAgIHNpemVfdCBuZXdDYXBh
Y2l0eSA9IGV4cGFuZGVkU2l6ZShsZW5ndGgsIDApOwogICAgICAgICBVQ2hhciogZCA9IGFsbG9j
Q2hhcnMobmV3Q2FwYWNpdHkpOwogICAgICAgICBpZiAoIWQpCi0gICAgICAgICAgICBtX3JlcCA9
ICZSZXA6Om51bGw7CisgICAgICAgICAgICBtYWtlTnVsbCgpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIG1lbWNweShkLCBkYXRhKCksIHRoaXNTaXplICogc2l6ZW9mKFVDaGFyKSk7CiAg
ICAgICAgICAgICBtZW1jcHkoY29uc3RfY2FzdDxVQ2hhcio+KGQgKyB0aGlzU2l6ZSksIHQuZGF0
YSgpLCB0U2l6ZSAqIHNpemVvZihVQ2hhcikpOwpAQCAtODU1LDcgKzg3NSw3IEBAIFVTdHJpbmcm
IFVTdHJpbmc6OmFwcGVuZChjb25zdCBVQ2hhciogdEQKICAgICAgICAgc2l6ZV90IG5ld0NhcGFj
aXR5ID0gZXhwYW5kZWRTaXplKGxlbmd0aCwgMCk7CiAgICAgICAgIFVDaGFyKiBkID0gYWxsb2ND
aGFycyhuZXdDYXBhY2l0eSk7CiAgICAgICAgIGlmICghZCkKLSAgICAgICAgICAgIG1fcmVwID0g
JlJlcDo6bnVsbDsKKyAgICAgICAgICAgIG1ha2VOdWxsKCk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbWVtY3B5KGQsIGRhdGEoKSwgdGhpc1NpemUgKiBzaXplb2YoVUNoYXIpKTsKICAg
ICAgICAgICAgIG1lbWNweShjb25zdF9jYXN0PFVDaGFyKj4oZCArIHRoaXNTaXplKSwgdERhdGEs
IHRTaXplICogc2l6ZW9mKFVDaGFyKSk7CkBAIC05MDgsNyArOTI4LDcgQEAgVVN0cmluZyYgVVN0
cmluZzo6YXBwZW5kKGNvbnN0IGNoYXIqIHQpCiAgICAgICAgIHNpemVfdCBuZXdDYXBhY2l0eSA9
IGV4cGFuZGVkU2l6ZShsZW5ndGgsIDApOwogICAgICAgICBVQ2hhciogZCA9IGFsbG9jQ2hhcnMo
bmV3Q2FwYWNpdHkpOwogICAgICAgICBpZiAoIWQpCi0gICAgICAgICAgICBtX3JlcCA9ICZSZXA6
Om51bGw7CisgICAgICAgICAgICBtYWtlTnVsbCgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIG1lbWNweShkLCBkYXRhKCksIHRoaXNTaXplICogc2l6ZW9mKFVDaGFyKSk7CiAgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRTaXplOyArK2kpCkBAIC05MzYsNyArOTU2LDcgQEAg
VVN0cmluZyYgVVN0cmluZzo6YXBwZW5kKFVDaGFyIGMpCiAgICAgICAgIHNpemVfdCBuZXdDYXBh
Y2l0eSA9IGV4cGFuZGVkU2l6ZSgxLCAwKTsKICAgICAgICAgVUNoYXIqIGQgPSBhbGxvY0NoYXJz
KG5ld0NhcGFjaXR5KTsKICAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgbV9yZXAgPSAmUmVw
OjpudWxsOworICAgICAgICAgICAgbWFrZU51bGwoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBkWzBdID0gYzsKICAgICAgICAgICAgIG1fcmVwID0gUmVwOjpjcmVhdGUoZCwgMSk7CkBA
IC05NjQsNyArOTg0LDcgQEAgVVN0cmluZyYgVVN0cmluZzo6YXBwZW5kKFVDaGFyIGMpCiAgICAg
ICAgIHNpemVfdCBuZXdDYXBhY2l0eSA9IGV4cGFuZGVkU2l6ZShsZW5ndGggKyAxLCAwKTsKICAg
ICAgICAgVUNoYXIqIGQgPSBhbGxvY0NoYXJzKG5ld0NhcGFjaXR5KTsKICAgICAgICAgaWYgKCFk
KQotICAgICAgICAgICAgbV9yZXAgPSAmUmVwOjpudWxsOworICAgICAgICAgICAgbWFrZU51bGwo
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtZW1jcHkoZCwgZGF0YSgpLCBsZW5ndGgg
KiBzaXplb2YoVUNoYXIpKTsKICAgICAgICAgICAgIGRbbGVuZ3RoXSA9IGM7CkBAIC0xMDQyLDcg
KzEwNjIsNyBAQCBVU3RyaW5nJiBVU3RyaW5nOjpvcGVyYXRvcj0oY29uc3QgY2hhciogCiAgICAg
fSBlbHNlIHsKICAgICAgICAgZCA9IGFsbG9jQ2hhcnMobCk7CiAgICAgICAgIGlmICghZCkgewot
ICAgICAgICAgICAgbV9yZXAgPSAmUmVwOjpudWxsOworICAgICAgICAgICAgbWFrZU51bGwoKTsK
ICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgfQogICAgICAgICBtX3JlcCA9IFJl
cDo6Y3JlYXRlKGQsIGwpOwpAQCAtMTA3NSw3ICsxMDk1LDE0IEBAIFVDaGFyIFVTdHJpbmc6Om9w
ZXJhdG9yW10oaW50IHBvcykgY29uc3QKIAogZG91YmxlIFVTdHJpbmc6OnRvRG91YmxlKGJvb2wg
dG9sZXJhdGVUcmFpbGluZ0p1bmssIGJvb2wgdG9sZXJhdGVFbXB0eVN0cmluZykgY29uc3QKIHsK
LSAgICBkb3VibGUgZDsKKyAgICBpZiAoc2l6ZSgpID09IDEpIHsKKyAgICAgICAgVUNoYXIgYyA9
IGRhdGEoKVswXTsKKyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChjKSkKKyAgICAgICAgICAgIHJl
dHVybiBjIC0gJzAnOworICAgICAgICBpZiAoaXNBU0NJSVNwYWNlKGMpICYmIHRvbGVyYXRlRW1w
dHlTdHJpbmcpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE5hTjsKKyAg
ICB9CiAKICAgICAvLyBGSVhNRTogSWYgdG9sZXJhdGVUcmFpbGluZ0p1bmsgaXMgdHJ1ZSwgdGhl
biB3ZSB3YW50IHRvIHRvbGVyYXRlIG5vbi04LWJpdCBqdW5rCiAgICAgLy8gYWZ0ZXIgdGhlIG51
bWJlciwgc28gdGhpcyBpcyB0b28gc3RyaWN0IGEgY2hlY2suCkBAIC0xMDkyLDYgKzExMTksOCBA
QCBkb3VibGUgVVN0cmluZzo6dG9Eb3VibGUoYm9vbCB0b2xlcmF0ZVRyCiAgICAgaWYgKCpjID09
ICdcMCcpCiAgICAgICAgIHJldHVybiB0b2xlcmF0ZUVtcHR5U3RyaW5nID8gMC4wIDogTmFOOwog
CisgICAgZG91YmxlIGQ7CisKICAgICAvLyBoZXggbnVtYmVyID8KICAgICBpZiAoKmMgPT0gJzAn
ICYmICgqKGMgKyAxKSA9PSAneCcgfHwgKihjICsgMSkgPT0gJ1gnKSkgewogICAgICAgICBjb25z
dCBjaGFyKiBmaXJzdERpZ2l0UG9zaXRpb24gPSBjICsgMjsKQEAgLTEzMzQsMTAgKzEzNjMsMTUg
QEAgVVN0cmluZyBVU3RyaW5nOjpzdWJzdHIoaW50IHBvcywgaW50IGxlbgogCiBib29sIG9wZXJh
dG9yPT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQogewotICAgIGlmIChz
MS5tX3JlcC0+bGVuICE9IHMyLm1fcmVwLT5sZW4pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJldHVybiAobWVtY21wKHMxLm1fcmVwLT5kYXRhKCksIHMyLm1fcmVwLT5kYXRhKCksIHMx
Lm1fcmVwLT5sZW4gKiBzaXplb2YoVUNoYXIpKSA9PSAwKTsKKyAgICBpbnQgc2l6ZSA9IHMxLnNp
emUoKTsKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAg
cmV0dXJuICFzMi5zaXplKCk7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHJldHVybiBz
Mi5zaXplKCkgPT0gMSAmJiBzMS5kYXRhKClbMF0gPT0gczIuZGF0YSgpWzBdOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHMyLnNpemUoKSA9PSBzaXplICYmIG1lbWNtcChz
MS5kYXRhKCksIHMyLmRhdGEoKSwgc2l6ZSAqIHNpemVvZihVQ2hhcikpID09IDA7CisgICAgfQog
fQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IGNoYXIgKnMyKQpA
QCAtMTQ0OCw0ICsxNDgyLDE2IEBAIENTdHJpbmcgVVN0cmluZzo6VVRGOFN0cmluZyhib29sIHN0
cmljdCkKICAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIuZGF0YSgpLCBwIC0gYnVmZmVyLmRhdGEo
KSk7CiB9CiAKKy8vIEZvciB1c2UgaW4gZXJyb3IgaGFuZGxpbmcgY29kZSBwYXRocyAtLSBoYXZp
bmcgdGhpcyBub3QgYmUgaW5saW5lZCBoZWxwcyBhdm9pZCBQSUMgYnJhbmNoZXMgdG8gZmV0Y2gg
dGhlIGdsb2JhbCBvbiBNYWMgT1MgWC4KK05FVkVSX0lOTElORSB2b2lkIFVTdHJpbmc6Om1ha2VO
dWxsKCkKK3sKKyAgICBtX3JlcCA9ICZSZXA6Om51bGw7Cit9CisKKy8vIEZvciB1c2UgaW4gZXJy
b3IgaGFuZGxpbmcgY29kZSBwYXRocyAtLSBoYXZpbmcgdGhpcyBub3QgYmUgaW5saW5lZCBoZWxw
cyBhdm9pZCBQSUMgYnJhbmNoZXMgdG8gZmV0Y2ggdGhlIGdsb2JhbCBvbiBNYWMgT1MgWC4KK05F
VkVSX0lOTElORSBVU3RyaW5nOjpSZXAqIFVTdHJpbmc6Om51bGxSZXAoKQoreworICAgIHJldHVy
biAmUmVwOjpudWxsOworfQorCiB9IC8vIG5hbWVzcGFjZSBLSlMKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2tqcy91c3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3VzdHJp
bmcuaAkocmV2aXNpb24gMzYwMDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3MSw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHR5cGVk
ZWYgVmVjdG9yPGNoYXIsIDMyPiBDU3RyaW5nQnVmZmVyOwogCiAgICAgY2xhc3MgVVN0cmluZyB7
Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVU3RyaW5nJiwgY29uc3QgVVN0cmlu
ZyYpOwotCiAgICAgcHVibGljOgogICAgICAgICBzdHJ1Y3QgUmVwIHsKICAgICAgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFJlcD4gY3JlYXRlKFVDaGFyKiwgaW50KTsKQEAgLTE0MCw5ICsxMzgs
NiBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgICAgICBVU3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hh
cj4mIGJ1ZmZlcik7CiAKLSAgICAgICAgLy8gQ29uY2F0ZW5hdGlvbiBjb25zdHJ1Y3Rvci4gTWFr
ZXMgb3BlcmF0b3IrIG1vcmUgZWZmaWNpZW50LgotICAgICAgICBVU3RyaW5nKGNvbnN0IFVTdHJp
bmcmLCBjb25zdCBVU3RyaW5nJik7Ci0KICAgICAgICAgflVTdHJpbmcoKQogICAgICAgICB7CiAg
ICAgICAgIH0KQEAgLTIzNCw2ICsyMjksNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IFVTdHJpbmcmIG51bGwoKTsKIAogICAgICAgICBSZXAqIHJlcCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVwLmdldCgpOyB9CisgICAgICAgIHN0YXRpYyBSZXAqIG51bGxSZXAoKTsKIAog
ICAgICAgICBVU3RyaW5nKFBhc3NSZWZQdHI8UmVwPiByKQogICAgICAgICAgICAgOiBtX3JlcChy
KQpAQCAtMjQ0LDE2ICsyNDAsMTggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHNpemVfdCBj
b3N0KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzaXplX3QgZXhwYW5kZWRTaXpl
KHNpemVfdCBzaXplLCBzaXplX3Qgb3RoZXJTaXplKSBjb25zdDsKKyAgICAgICAgc3RhdGljIHNp
emVfdCBleHBhbmRlZFNpemUoc2l6ZV90IHNpemUsIHNpemVfdCBvdGhlclNpemUpOwogICAgICAg
ICBpbnQgdXNlZENhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIGludCB1c2VkUHJlQ2FwYWNpdHko
KSBjb25zdDsKICAgICAgICAgdm9pZCBleHBhbmRDYXBhY2l0eShpbnQgcmVxdWlyZWRMZW5ndGgp
OwogICAgICAgICB2b2lkIGV4cGFuZFByZUNhcGFjaXR5KGludCByZXF1aXJlZFByZUNhcCk7Cisg
ICAgICAgIHZvaWQgbWFrZU51bGwoKTsKIAogICAgICAgICBSZWZQdHI8UmVwPiBtX3JlcDsKLSAg
ICB9OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3Ry
aW5nJiBzMik7CisgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYs
IGNvbnN0IFVTdHJpbmcmKTsKKyAgICAgICAgZnJpZW5kIFBhc3NSZWZQdHI8UmVwPiBjb25jYXRl
bmF0ZShSZXAqLCBSZXAqKTsgLy8gcmV0dXJucyAwIGlmIG91dCBvZiBtZW1vcnkKKyAgICB9Owog
CiAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0
cmluZyYgczIpCiAgICAgewpAQCAtMjgwLDExICsyNzgsMTIgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgICAgIHJldHVybiAhS0pTOjpvcGVyYXRvcj09KHMxLCBzMik7CiAgICAgfQogCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIHMxLCBjb25zdCBDU3RyaW5nJiBzMik7CisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmLCBjb25zdCBDU3RyaW5nJik7CiAKICAgICBp
bmxpbmUgVVN0cmluZyBvcGVyYXRvcisoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcm
IHMyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFVTdHJpbmcoczEsIHMyKTsKKyAgICAgICAgUmVm
UHRyPFVTdHJpbmc6OlJlcD4gcmVzdWx0ID0gY29uY2F0ZW5hdGUoczEucmVwKCksIHMyLnJlcCgp
KTsKKyAgICAgICAgcmV0dXJuIFVTdHJpbmcocmVzdWx0ID8gcmVzdWx0LnJlbGVhc2UoKSA6IFVT
dHJpbmc6Om51bGxSZXAoKSk7CiAgICAgfQogCiAgICAgaW50IGNvbXBhcmUoY29uc3QgVVN0cmlu
ZyYsIGNvbnN0IFVTdHJpbmcmKTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNjAwNSkKKysrIFdlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDgtMDgtMzAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gYWRvcHQgc29tZSBuZXcgSmF2YVNjcmlwdENvcmUgZnVuY3Rpb25z
IHdoZXJlIGFwcHJvcHJpYXRlCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93UHJvdG9GdW5jQVRvQik6IEFkb3B0ZWQg
anNFbXB0eVN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd1Byb3RvRnVuY0JUb0EpOiBE
aXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6ZXZlbnRQYXJhbWV0ZXJOYW1lKTogQWRv
cHRlZAorICAgICAgICBqc05vbnRyaXZpYWxTdHJpbmcuCisgICAgICAgICogYmluZGluZ3MvanMv
SlNTVkdMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0xhenlF
dmVudExpc3RlbmVyOjpldmVudFBhcmFtZXRlck5hbWUpOiBEaXR0by4KKwogMjAwOC0wOC0yOSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kZXJzJyBydWJiZXJzdGFtcApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcAkocmV2aXNpb24gMzYwMDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzOCw3ICs5MzgsNyBAQCBKU1ZhbHVlKiB3
aW5kb3dQcm90b0Z1bmNBVG9CKEV4ZWNTdGF0ZSogCiAKICAgICBKU1ZhbHVlKiB2ID0gYXJncy5h
dChleGVjLCAwKTsKICAgICBpZiAodi0+aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CiAKICAgICBVU3Ry
aW5nIHMgPSB2LT50b1N0cmluZyhleGVjKTsKICAgICBpZiAoIXMuaXM4Qml0KCkpIHsKQEAgLTk3
MCw3ICs5NzAsNyBAQCBKU1ZhbHVlKiB3aW5kb3dQcm90b0Z1bmNCVG9BKEV4ZWNTdGF0ZSogCiAK
ICAgICBKU1ZhbHVlKiB2ID0gYXJncy5hdChleGVjLCAwKTsKICAgICBpZiAodi0+aXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjKTsKKyAgICAgICAgcmV0dXJuIGpzRW1wdHlT
dHJpbmcoZXhlYyk7CiAKICAgICBVU3RyaW5nIHMgPSB2LT50b1N0cmluZyhleGVjKTsKICAgICBp
ZiAoIXMuaXM4Qml0KCkpIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5l
ci5jcHAJKHJldmlzaW9uIDM2MDA1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNyArMjQ0LDcgQEAgSlNPYmplY3QqIEpT
TGF6eUV2ZW50TGlzdGVuZXI6Omxpc3RlbmVyTwogCiBKU1ZhbHVlKiBKU0xhenlFdmVudExpc3Rl
bmVyOjpldmVudFBhcmFtZXRlck5hbWUoKSBjb25zdAogewotICAgIHN0YXRpYyBQcm90ZWN0ZWRQ
dHI8SlNWYWx1ZT4gZXZlbnRTdHJpbmcgPSBqc1N0cmluZyh3aW5kb3coKS0+Z2xvYmFsRXhlYygp
LCAiZXZlbnQiKTsKKyAgICBzdGF0aWMgUHJvdGVjdGVkUHRyPEpTVmFsdWU+IGV2ZW50U3RyaW5n
ID0ganNOb250cml2aWFsU3RyaW5nKHdpbmRvdygpLT5nbG9iYWxFeGVjKCksICJldmVudCIpOwog
ICAgIHJldHVybiBldmVudFN0cmluZy5nZXQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NWR0xhenlFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU1ZHTGF6eUV2ZW50TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAzNjAwNSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMYXp5RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgSlNTVkdMYXp5RXZlbnRMaXN0ZW5lcjo6SlNTVkdMYXp5
RXZlbnRMaQogCiBKU1ZhbHVlKiBKU1NWR0xhenlFdmVudExpc3RlbmVyOjpldmVudFBhcmFtZXRl
ck5hbWUoKSBjb25zdAogewotICAgIHN0YXRpYyBQcm90ZWN0ZWRQdHI8SlNWYWx1ZT4gZXZlbnRT
dHJpbmcgPSBqc1N0cmluZyh3aW5kb3coKS0+Z2xvYmFsRXhlYygpLCAiZXZ0Iik7CisgICAgc3Rh
dGljIFByb3RlY3RlZFB0cjxKU1ZhbHVlPiBldmVudFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmlu
Zyh3aW5kb3coKS0+Z2xvYmFsRXhlYygpLCAiZXZ0Iik7CiAgICAgcmV0dXJuIGV2ZW50U3RyaW5n
LmdldCgpOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNjAwNSkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA4LTA4LTMwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIHVwZGF0ZWQgaW5jb3JyZWN0IHJlc3VsdHMgdGhhdCByZWZs
ZWN0ZWQgYSBidWcKKyAgICAgICAgICBpbiB0aGUgUmVnRXhwIG9iamVjdAorCisgICAgICAgICog
ZmFzdC9qcy9yZWdleHAtY2FjaGluZy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgcmVzdWx0cyB0bwor
ICAgICAgICBjb3JyZWN0bHkgc2hvdyB0aGF0ICQxIHRocm91Z2ggJDksIGxhc3RNYXRjaCwgbGFz
dFBhcmVuLAorICAgICAgICBsZWZ0Q29udGV4dCwgYW5kIHJpZ2h0Q29udGV4dCBhcmUgbGVmdCBh
bG9uZSBib3RoIHdoZW4KKyAgICAgICAgYSBwcm9ncmFtIGNoYW5nZXMgdGhlIHZhbHVlIG9mIFJl
Z0V4cC5pbnB1dCBhbmQgd2hlbiBpdAorICAgICAgICBwZXJmb3JtcyBhbiB1bnN1Y2Nlc3NmdWwg
bWF0Y2guIFRoZSBuZXcgcmVzdWx0cyBtYXRjaAorICAgICAgICBHZWNrbyBiZWhhdmlvciAoSSB0
ZXN0ZWQgYm90aCBGaXJlZm94IDIgYW5kIDMpLgorCiAyMDA4LTA4LTI5ICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdleHAtY2FjaGluZy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdleHAtY2FjaGluZy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDM2MDA1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdleHAtY2FjaGlu
Zy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQxLDIxICs0MSwyMSBAQCBSZWdFeHAu
bXVsdGlsaW5lIGNvZXJjZXMgdmFsdWVzIHRvIGJvb2xlCiBSZWdFeHAuaW5wdXQgY29lcmNlcyB2
YWx1ZXMgdG8gc3RyaW5ncwogCiBQcm9wZXJ0aWVzIG9mIFJlZ0V4cCBhZnRlciAvKDEpKDIpKDMp
KDQpKDUpKDYpKDcpKDgpKDkpKDApLy5leGVjKFhYWCk6Ci0kMToge30KLSQyOiB7fQotJDM6IHt9
Ci0kNDoge30KLSQ1OiB7fQotJDY6IHt9Ci0kNzoge30KLSQ4OiB7fQotJDk6IHt9CiskMTogezF9
CiskMjogezJ9CiskMzogezN9CiskNDogezR9CiskNTogezV9CiskNjogezZ9CiskNzogezd9Cisk
ODogezh9CiskOTogezl9CiBpbnB1dDogezB9Ci1sYXN0TWF0Y2g6IHt9Ci1sYXN0UGFyZW46IHt9
Ci1sZWZ0Q29udGV4dDogezB9CitsYXN0TWF0Y2g6IHsxMjM0NTY3ODkwfQorbGFzdFBhcmVuOiB7
MH0KK2xlZnRDb250ZXh0OiB7PH0KIG11bHRpbGluZToge3RydWV9Ci1yaWdodENvbnRleHQ6IHt9
CityaWdodENvbnRleHQ6IHs+fQogCiAtLS0tLS0tLS0tIFtDbGVhcmVkIFJlZ0V4cCB2YWx1ZXNd
IC0tLS0tLS0tLS0KIFByb3BlcnRpZXMgb2YgUmVnRXhwIGFmdGVyIDwxMjM0NTY3ODkwPi5zZWFy
Y2goLygxKSgyKSgzKSg0KSg1KSg2KSg3KSg4KSg5KSgwKS8pOgo=
</data>
<flag name="review"
          id="10275"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>