<?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>134873</bug_id>
          
          <creation_ts>2014-07-13 14:47:17 -0700</creation_ts>
          <short_desc>Allow for Int52Rep to see things other than Int32, and make this testable</short_desc>
          <delta_ts>2014-07-14 17:42:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1022136</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-13 14:47:17 -0700</bug_when>
    <thetext>This would only occur if prediction propagation messes up.  But, currently, prediction propagation *is* allowed to mess up - in all cases except for Int52Rep.  We should just make it so that the cases that lead to Int52Rep can also involve messed up prediction propagation.

&lt;rdar://problem/17641915&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022137</commentid>
    <comment_count>1</comment_count>
      <attachid>234832</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-13 14:48:39 -0700</bug_when>
    <thetext>Created attachment 234832
work in progress

Still have to write the FTL lowering for MachineIntUse and DoubleRepMachineIntUse, and then I have to write tests that use FiatInt52.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022142</commentid>
    <comment_count>2</comment_count>
      <attachid>234834</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-13 16:48:37 -0700</bug_when>
    <thetext>Created attachment 234834
more

Still have a bunch of tests to write.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022297</commentid>
    <comment_count>3</comment_count>
      <attachid>234875</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-14 13:25:35 -0700</bug_when>
    <thetext>Created attachment 234875
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022300</commentid>
    <comment_count>4</comment_count>
      <attachid>234875</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-07-14 13:50:11 -0700</bug_when>
    <thetext>Comment on attachment 234875
the patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        wants and we&apos;ll still valid valid IR after Fixup. This previously didn&apos;t work with Int52s.

valid valid =&gt; produce valid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022307</commentid>
    <comment_count>5</comment_count>
      <attachid>234875</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-07-14 14:03:09 -0700</bug_when>
    <thetext>Comment on attachment 234875
the patch

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

r=me too

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        wants and we&apos;ll still valid valid IR after Fixup. This previously didn&apos;t work with Int52s.
&gt; 
&gt; valid valid =&gt; produce valid

have valid IR?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022376</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-14 17:42:26 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/171096</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234832</attachid>
            <date>2014-07-13 14:48:39 -0700</date>
            <delta_ts>2014-07-13 16:48:37 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>17051</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0OSw2ICsxNzQ5LDE0IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyhpbnQKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIEZpYXRJbnQ1MkludHJpbnNpYzogeworICAg
ICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCk7CisgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0T3BlcmFuZCwgYWRkVG9HcmFwaChGaWF0SW50NTIsIGdldChvcGVyYW5k
KSkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgICAgICAKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw2ICs0NywxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAg
ICAgaWYgKGNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbkNvdW50KCkgPT0gMTQ0KSB7CisgICAgICAg
ICAgICBkYXRhTG9nKCJEdW1wIGJlZm9yZSBmaXh1cDpcbiIpOworICAgICAgICAgICAgbV9ncmFw
aC5kdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1f
Zml4cG9pbnRTdGF0ZSA9PSBCZWZvcmVGaXhwb2ludCk7CiAgICAgICAgIEFTU0VSVChtX2dyYXBo
Lm1fZm9ybSA9PSBUaHJlYWRlZENQUyk7CiAgICAgICAgIApAQCAtOTkyLDYgKzk5NywxMyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEZp
YXRJbnQ1MjogeworICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIFBo
aToKICAgICAgICAgY2FzZSBVcHNpbG9uOgpAQCAtMTAxMSw3ICsxMDIzLDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2UgSGFyZFBoYW50b206IC8v
IEhhcmRQaGFudG9tIHdvdWxkIGJlIHRyaXZpYWwgdG8gaGFuZGxlIGJ1dCBhbnl3YXkgd2UgYXNz
ZXJ0IHRoYXQgd2Ugd29uJ3Qgc2VlIGl0IGhlcmUgeWV0LgogICAgICAgICBjYXNlIERvdWJsZVJl
cDoKLSAgICAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICAg
ICAgY2FzZSBEb3VibGVDb25zdGFudDoKICAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgpAQCAt
MTkwOSw3ICsxOTIwLDggQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAoZWRn
ZS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgICAgIGNhc2Ug
RG91YmxlUmVwUmVhbFVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAg
ICAgIGNhc2UgRG91YmxlUmVwTWFjaGluZUludFVzZTogewogICAgICAgICAgICAgaWYgKGVkZ2Ut
Pmhhc0RvdWJsZVJlc3VsdCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
CkBAIC0xOTE5LDYgKzE5MzEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXN1bHQg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgU3BlY0ludDUyQXNEb3VibGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLAogICAg
ICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBJbnQ1MlJlcFVzZSkpOworICAgICAg
ICAgICAgfSBlbHNlIGlmIChlZGdlLT5vcCgpID09IEpTQ29uc3RhbnQpIHsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0J5dGVjb2RlRG91YmxlLCBEb3VibGVDb25zdGFudCwg
bm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oZWRnZS0+Y29uc3RhbnRO
dW1iZXIoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByZXN1bHQg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgU3BlY0J5dGVjb2RlRG91YmxlLCBEb3VibGVSZXAsIG5vZGUtPm9yaWdpbiwKQEAg
LTE5MzYsMjYgKzE5NTIsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhh
bnRvbShlZGdlLm5vZGUoKSk7CiAKICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1
bHQoKSkgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBuZXZlciBoYXBwZW4uCi0gICAg
ICAgICAgICAgICAgc3RhcnRDcmFzaGluZygpOwotICAgICAgICAgICAgICAgIGRhdGFMb2coIkZv
dW5kIGFuIEludDUyUmVwVXNlIHRvIGEgZG91YmxlIHJlc3VsdDogIiwgbm9kZSwgIiAtPiAiLCBl
ZGdlLCAiXG4iKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKLSAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrLCBTcGVjTWFjaGluZUludCwgSW50NTJSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgRG91YmxlUmVwTWFjaGluZUludFVzZSkp
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChlZGdlLT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFy
aXRobWV0aWMoKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIs
IEludDUyUmVwLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5u
b2RlKCksIEludDMyVXNlKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IC8vIFRoaXMgaXMgb25seSBoZXJlIGZvciBkZWFsaW5nIHdpdGggY29uc3RhbnRzLgotICAgICAg
ICAgICAgICAgIGlmIChlZGdlLT5vcCgpICE9IEpTQ29uc3RhbnQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgc3RhcnRDcmFzaGluZygpOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJGb3Vu
ZCBhbiBJbnQ1MlJlcFVzZSBvbiBzb21ldGhpbmcgdGhhdCBpcyBuZWl0aGVyIEludDMyIG5vciBh
IGNvbnN0YW50OiAiLCBub2RlLCAiIC0+ICIsIGVkZ2UsICJcbiIpOwotICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmR1bXAoKTsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGVkZ2UtPm9wKCkgPT0gSlNDb25zdGFudCkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjTWFjaGluZUludCwgSW50NTJDb25zdGFudCwgbm9kZS0+b3JpZ2luLAogICAgICAg
ICAgICAgICAgICAgICBPcEluZm8oZWRnZS0+Y29uc3RhbnROdW1iZXIoKSkpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY01hY2hpbmVJ
bnQsIEludDUyUmVwLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRn
ZS5ub2RlKCksIE1hY2hpbmVJbnRVc2UpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ZWRnZS5zZXROb2RlKHJlc3VsdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2ICsxMjAsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSW50NTJSZXAsIE5vZGVSZXN1bHRJ
bnQ1MikgXAogICAgIG1hY3JvKFZhbHVlUmVwLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCisgICAg
LyogQm9ndXMgdHlwZSBhc3NlcnRpbmcgbm9kZS4gVXNlZnVsIGZvciB0ZXN0aW5nLCBkaXNhcHBl
YXJzIGR1cmluZyBGaXh1cC4gKi9cCisgICAgbWFjcm8oRmlhdEludDUyLCBOb2RlUmVzdWx0SlMp
IFwKKyAgICBcCiAgICAgLyogTm9kZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAg
ICAgbWFjcm8oQXJpdGhBZGQsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhBcml0aFN1
YiwgTm9kZVJlc3VsdE51bWJlcikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCwxMSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAgICAgaWYgKGNvZGVCbG9jaygp
LT5pbnN0cnVjdGlvbkNvdW50KCkgPT0gMTQ0KSB7CisgICAgICAgICAgICBkYXRhTG9nKCJEdW1w
IGJlZm9yZSBwcmVkaWN0aW9uIHByb3BhZ2F0aW9uOlxuIik7CisgICAgICAgICAgICBtX2dyYXBo
LmR1bXAoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9m
b3JtID09IFRocmVhZGVkQ1BTKTsKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV91bmlmaWNhdGlv
blN0YXRlID09IEdsb2JhbGx5VW5pZmllZCk7CiAKQEAgLTUxNiw2ICs1MjEsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBGaWF0SW50NTI6IHsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihT
cGVjTWFjaGluZUludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAg
IGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKQEAgLTUzNiw4ICs1NDYsOCBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAgY2FzZSBIYXJkUGhhbnRv
bToKICAgICAgICAgY2FzZSBEb3VibGVSZXA6Ci0gICAgICAgIGNhc2UgSW50NTJSZXA6CiAgICAg
ICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIGNhc2Ug
RG91YmxlQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgY2Fz
ZSBJZGVudGl0eToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAz
NSwxMiArMjAzNSw0OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEludDUyUmVwOiB7Ci0gICAgICAgIFNwZWN1bGF0
ZUludDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7Ci0gICAgICAgIAotICAgICAg
ICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihvcGVyYW5kLmdwcigpLCByZXN1bHQuZ3ByKCkpOwot
ICAgICAgICAKLSAgICAgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsK
KyAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2Fz
ZSBJbnQzMlVzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wZXJhbmQo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBSZXVzZSwgb3BlcmFuZCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faml0LnNp
Z25FeHRlbmQzMlRvUHRyKG9wZXJhbmQuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
TWFjaGluZUludFVzZTogeworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCh0aGlzKTsKKyAgICAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNvbnZlcnRNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLCByZXN1bHRHUFIpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBzdHJpY3RJbnQ1MlJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIERvdWJsZVJlcE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQgdmFsdWUodGhpcywgZWRnZSk7CisgICAgICAgICAgICBGUFJSZWcgdmFsdWVG
UFIgPSB2YWx1ZS5mcHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgR1BSUmVzdWx0IHJl
c3VsdCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29udmVydERvdWJsZVRvSW50
NTIsIHJlc3VsdEdQUiwgdmFsdWVGUFIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBERkdf
VFlQRV9DSEVDSygKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjSW50
NTJBc0RvdWJsZSwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoCisgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCBudW1iZXJPZkludDUyQml0cykpKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCkBAIC00ODA1LDYgKzQ4NDEsNjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ymxlc3NCb29s
ZWFuKEdQUlJlZwogICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCBncHIp
OwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0TWFjaGluZUludChFZGdlIHZhbHVl
RWRnZSwgR1BSUmVnIHJlc3VsdEdQUikKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCB2YWx1ZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgR1BSUmVnIHZhbHVl
R1BSID0gdmFsdWUuZ3ByKCk7CisgICAgCisgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SW50MzIg
PQorICAgICAgICBtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6YmVsb3csIHZhbHVlR1BSLCBH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIAorICAgIG1faml0LnNpZ25FeHRl
bmQzMlRvUHRyKHZhbHVlR1BSLCByZXN1bHRHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRv
bmUgPSBtX2ppdC5qdW1wKCk7CisgICAgCisgICAgbm90SW50MzIubGluaygmbV9qaXQpOworICAg
IHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Db252ZXJ0Qm94ZWREb3VibGVUb0ludDUyLCByZXN1bHRHUFIsIHZhbHVlR1BSKTsK
KyAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisKKyAgICBERkdfVFlQRV9D
SEVDSygKKyAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBlZGdlLCBTcGVjSW50MzIgfCBT
cGVjSW50NTJBc0RvdWJsZSwKKyAgICAgICAgbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICBK
SVRDb21waWxlcjo6RXF1YWwsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpU
cnVzdGVkSW1tNjQoc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgbnVtYmVyT2ZJbnQ1MkJpdHMp
KSk7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2so
ZWRnZSwgU3BlY0ludDMyIHwgU3BlY0ludDUyQXNEb3VibGUpKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgY29udmVydE1hY2hpbmVJbnQo
ZWRnZSwgdGVtcC5ncHIoKSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURv
dWJsZVJlcE1hY2hpbmVJbnQoRWRnZSBlZGdlKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2so
ZWRnZSwgU3BlY0ludDUyQXNEb3VibGUpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgU3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdlKTsKKyAgICBGUFJSZWcgdmFsdWVG
UFIgPSB2YWx1ZS5mcHIoKTsKKyAgICAKKyAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgCisgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKKyAgICAKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnREb3VibGVUb0lu
dDUyLCByZXN1bHRHUFIsIHZhbHVlRlBSKTsKKyAgICAKKyAgICBERkdfVFlQRV9DSEVDSygKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0ludDUyQXNEb3VibGUsCisgICAgICAgIG1f
aml0LmJyYW5jaDY0KAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCByZXN1bHRHUFIs
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTY0KHN0YXRpY19jYXN0PGludDY0
X3Q+KDEpIDw8IG51bWJlck9mSW50NTJCaXRzKSkpOworfQorCiAjZW5kaWYKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjI5LDE0ICsy
MjI5LDE4IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBDYWxsZWQgd2hlbiB3ZSBzdGF0aWNhbGx5
IGRldGVybWluZSB0aGF0IGEgc3BlY3VsYXRpb24gd2lsbCBmYWlsLgogICAgIHZvaWQgdGVybWlu
YXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oRXhpdEtpbmQsIEpTVmFsdWVSZWdzLCBOb2RlKik7Ci0g
ICAgdm9pZCB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihFeGl0S2luZCwgSlNWYWx1ZVJl
Z3MsIEVkZ2UpOworICAgIHZvaWQgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oRXhpdEtp
bmQsIEpTVmFsZHN1ZVJlZ3MsIEVkZ2UpOwogICAgIAogICAgIC8vIEhlbHBlcnMgZm9yIHBlcmZv
cm1pbmcgdHlwZSBjaGVja3Mgb24gYW4gZWRnZSBzdG9yZWQgaW4gdGhlIGdpdmVuIHJlZ2lzdGVy
cy4KICAgICBib29sIG5lZWRzVHlwZUNoZWNrKEVkZ2UgZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlw
ZXNQYXNzZWRUaHJvdWdoKSB7IHJldHVybiBtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVk
Z2UsIHR5cGVzUGFzc2VkVGhyb3VnaCk7IH0KICAgICB2b2lkIHR5cGVDaGVjayhKU1ZhbHVlU291
cmNlLCBFZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gsIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGp1bXBUb0ZhaWwpOwotCisgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVJbnQzMihF
ZGdlKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHZvaWQgY29udmVydE1hY2hpbmVJbnQoRWRn
ZSwgR1BSUmVnIHJlc3VsdEdQUik7CiAgICAgdm9pZCBzcGVjdWxhdGVNYWNoaW5lSW50KEVkZ2Up
OworICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVwTWFjaGluZUludChFZGdlKTsKKyNlbmRpZiAv
LyBVU0UoSlNWQUxVRTY0KQogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2UpOwogICAgIHZv
aWQgc3BlY3VsYXRlRG91YmxlUmVhbChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZUJvb2xlYW4o
RWRnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NCw3ICsxODQsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gYXMgYW4g
ZXhjdXNlIG5vdCB0byBmb2xkLiBUaGUgb25seSB0aGluZyB3ZSB3b3VsZCBuZWVkIGlzIGEgSW50
NTJSZXBJbnQzMlVzZSBraW5kLgogICAgICAgICAgICAgYm9vbCBoYWRJbnQzMkNoZWNrID0gZmFs
c2U7CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IEludDUyUmVwKSB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEludDMyVXNlKTsK
KyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgIT0gSW50MzJV
c2UpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGhhZEludDMy
Q2hlY2sgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChOb2RlKiBub2Rl
ID0gbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCk7IDsgbm9kZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSkgewpAQCAtMjExLDcgKzIxMiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBJ
bnQ1MlJlcDoKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBJbnQzMlVzZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgIT0gSW50MzJVc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgaGFkSW50MzJDaGVjayA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlCiAgICAg
Y2FzZSBJbnQ1MlJlcFVzZToKICAgICAgICAgb3V0LnByaW50KCJJbnQ1MlJlcCIpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiTWFj
aGluZUludCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAg
b3V0LnByaW50KCJOdW1iZXIiKTsKICAgICAgICAgYnJlYWs7CkBAIC01OCw2ICs2MSw5IEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVc2UKICAgICBjYXNlIERvdWJsZVJl
cFJlYWxVc2U6CiAgICAgICAgIG91dC5wcmludCgiRG91YmxlUmVwUmVhbCIpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIERvdWJsZVJlcE1hY2hpbmVJbnRVc2U6CisgICAgICAgIG91dC5wcmlu
dCgiRG91YmxlUmVwTWFjaGluZUludCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEJvb2xl
YW5Vc2U6CiAgICAgICAgIG91dC5wcmludCgiQm9vbGVhbiIpOwogICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAxNzEwMDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksOSArMzksMTEgQEAgZW51bSBVc2VLaW5kIHsKICAgICBJbnQzMlVzZSwKICAgICBL
bm93bkludDMyVXNlLAogICAgIEludDUyUmVwVXNlLAorICAgIE1hY2hpbmVJbnRVc2UsCiAgICAg
TnVtYmVyVXNlLAogICAgIERvdWJsZVJlcFVzZSwKICAgICBEb3VibGVSZXBSZWFsVXNlLAorICAg
IERvdWJsZVJlcE1hY2hpbmVJbnRVc2UsCiAgICAgQm9vbGVhblVzZSwKICAgICBDZWxsVXNlLAog
ICAgIEtub3duQ2VsbFVzZSwKQEAgLTcwLDEyICs3MiwxNiBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5
cGUgdHlwZUZpbHRlckZvcihVc2VLCiAgICAgICAgIHJldHVybiBTcGVjSW50MzI7CiAgICAgY2Fz
ZSBJbnQ1MlJlcFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5lSW50OworICAgIGNhc2Ug
TWFjaGluZUludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91
YmxlOwogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICByZXR1cm4gU3BlY0J5dGVjb2RlTnVt
YmVyOwogICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICByZXR1cm4gU3BlY0Z1bGxEb3Vi
bGU7CiAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICByZXR1cm4gU3BlY0RvdWJs
ZVJlYWw7CisgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgorICAgICAgICByZXR1cm4g
U3BlY0ludDUyQXNEb3VibGU7CiAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICByZXR1cm4g
U3BlY0Jvb2xlYW47CiAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMTM5LDYgKzE0NSw4IEBAIGlubGlu
ZSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQga2luZCkKICAgICBjYXNlIEludDUyUmVwVXNlOgog
ICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICBj
YXNlIE1hY2hpbmVJbnRVc2U6CisgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xNTAsNiArMTU4LDcgQEAgaW5saW5lIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5kKQogICAg
IHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgIGNhc2UgRG91Ymxl
UmVwUmVhbFVzZToKKyAgICBjYXNlIERvdWJsZVJlcE1hY2hpbmVJbnRVc2U6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9u
IDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzc5LDYgKzM3OSw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIE1pc2NVc2U6CiAgICAg
ICAgICAgICAgICAgY2FzZSBTdHJpbmdJZGVudFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE5v
dFN0cmluZ1ZhclVzZToKKyAgICAgICAgICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAg
ICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgogICAgICAgICAgICAgICAg
ICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuaAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDExICs1NiwxMyBAQCBlbnVt
IEludHJpbnNpYyB7CiAgICAgQXJyYXlJdGVyYXRvck5leHRLZXlJbnRyaW5zaWMsCiAgICAgQXJy
YXlJdGVyYXRvck5leHRHZW5lcmljSW50cmluc2ljLAogICAgIAotICAgIC8vIERlYnVnZ2luZyBp
bnRyaW5zaWNzCisgICAgLy8gRGVidWdnaW5nIGludHJpbnNpY3MuIFRoZXNlIGFyZSBtZWFudCB0
byBiZSB1c2VkIGFzIHRlc3RpbmcgaGFja3Mgd2l0aGluCisgICAgLy8ganNjLmNwcCBhbmQgc2hv
dWxkIG5ldmVyIGJlIGV4cG9zZWQgdG8gdXNlcnMuCiAgICAgREZHVHJ1ZUludHJpbnNpYywKICAg
ICBPU1JFeGl0SW50cmluc2ljLAogICAgIElzRmluYWxUaWVySW50cmluc2ljLAotICAgIFNldElu
dDMySGVhcFByZWRpY3Rpb25JbnRyaW5zaWMKKyAgICBTZXRJbnQzMkhlYXBQcmVkaWN0aW9uSW50
cmluc2ljLAorICAgIEZpYXRJbnQ1MkludHJpbnNpYywKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnQ1Mi1mb3JjZS1v
c3ItZXhpdC1wYXRoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvaW50NTItZm9yY2Utb3NyLWV4aXQtcGF0aC5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvaW50NTItZm9yY2Utb3NyLWV4aXQtcGF0
aC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACitmdW5jdGlvbiBmb28oYSwgYiwg
cCwgbykgeworICAgIHZhciBjID0gYSArIGI7CisgICAgaWYgKHApCisgICAgICAgIGMgLT0gby5m
OworICAgIHJldHVybiBjICsgMTsKK30KKworbm9JbmxpbmUoZm9vKTsKKwordmFyIG8gPSB7Zjog
NDJ9OworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQg
PSBmb28oMjAwMDAwMDAwMCwgMjAwMDAwMDAwMCwgZmFsc2UsIG8pOworICAgIGlmIChyZXN1bHQg
IT0gNDAwMDAwMDAwMSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVz
dWx0OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234834</attachid>
            <date>2014-07-13 16:48:37 -0700</date>
            <delta_ts>2014-07-14 13:25:35 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>34138</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDYgKzMzOSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShFeGVjU3RhdGUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMihFeGVjU3Rh
dGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWZmZWN0
ZnVsNDIoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbklkZW50aXR5KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIoRXhlY1N0YXRlKik7CiAKICNpZiBFTkFC
TEUoU0FNUExJTkdfRkxBR1MpCkBAIC00NzksNiArNDgwLDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJPU1JF
eGl0IiksIDAsIGZ1bmN0aW9uVW5kZWZpbmVkMSwgT1NSRXhpdEludHJpbnNpYywgRG9udEVudW0g
fCBKU0M6OkZ1bmN0aW9uKTsKICAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRo
aXMsIElkZW50aWZpZXIoJnZtLCAiaXNGaW5hbFRpZXIiKSwgMCwgZnVuY3Rpb25GYWxzZTIsIElz
RmluYWxUaWVySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwogICAgICAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJwcmVkaWN0
SW50MzIiKSwgMCwgZnVuY3Rpb25VbmRlZmluZWQyLCBTZXRJbnQzMkhlYXBQcmVkaWN0aW9uSW50
cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJmaWF0SW50NTIiKSwgMCwgZnVu
Y3Rpb25JZGVudGl0eSwgRmlhdEludDUySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rp
b24pOwogICAgICAgICAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJlZmZlY3RmdWw0MiIsIGZ1
bmN0aW9uRWZmZWN0ZnVsNDIsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm1ha2VNYXNx
dWVyYWRlciIsIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyLCAwKTsKQEAgLTkwMiw2ICs5MDQsOCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmFsCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShFeGVjU3RhdGUqKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7IH0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25VbmRlZmluZWQyKEV4ZWNTdGF0ZSopIHsgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsgfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSWRlbnRpdHkoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZXhlYy0+YXJndW1lbnQoMCkpOyB9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25FZmZlY3RmdWw0MihFeGVjU3RhdGUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoNDIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE3MTAw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTkwNCw2ICsxOTA0LDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAg
Y2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBBcml0aElNdWw6CisgICAgY2FzZSBGaWF0SW50
NTI6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0OSw2ICsxNzQ5
LDE3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyhpbnQKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIEZpYXRJbnQ1MkludHJpbnNp
YzogeworICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCk7CisgICAgICAgIGlm
IChlbmFibGVJbnQ1MigpKQorICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRP
cGVyYW5kKSwgYWRkVG9HcmFwaChGaWF0SW50NTIsIGdldChvcGVyYW5kKSkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBnZXQo
b3BlcmFuZCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgICAgIAogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
Miw2ICsxMzIsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAg
ICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIEludDUyUmVwOgogICAgIGNhc2UgQm9vbGVhblRv
TnVtYmVyOgorICAgIGNhc2UgRmlhdEludDUyOgogICAgICAgICByZXR1cm47CiAgICAgICAgIAog
ICAgIGNhc2UgTW92SGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTkyLDYgKzk5MiwxNCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNl
IEZpYXRJbnQ1MjogeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW5hYmxlSW50NTIoKSk7
CisgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOworICAgICAgICAgICAgZml4
RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgUGhpOgogICAgICAg
ICBjYXNlIFVwc2lsb246CkBAIC0xMDExLDcgKzEwMTksNiBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAgY2FzZSBIYXJkUGhhbnRvbTogLy8gSGFyZFBoYW50
b20gd291bGQgYmUgdHJpdmlhbCB0byBoYW5kbGUgYnV0IGFueXdheSB3ZSBhc3NlcnQgdGhhdCB3
ZSB3b24ndCBzZWUgaXQgaGVyZSB5ZXQuCiAgICAgICAgIGNhc2UgRG91YmxlUmVwOgotICAgICAg
ICBjYXNlIEludDUyUmVwOgogICAgICAgICBjYXNlIFZhbHVlUmVwOgogICAgICAgICBjYXNlIERv
dWJsZUNvbnN0YW50OgogICAgICAgICBjYXNlIEludDUyQ29uc3RhbnQ6CkBAIC0xOTA5LDcgKzE5
MTYsOCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChlZGdlLnVzZUtpbmQo
KSkgewogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICAgICAgY2FzZSBEb3VibGVSZXBS
ZWFsVXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKKyAgICAgICAgY2FzZSBE
b3VibGVSZXBNYWNoaW5lSW50VXNlOiB7CiAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91Ymxl
UmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTE5MTks
NiArMTkyNywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjSW50NTJBc0RvdWJsZSwgRG91YmxlUmVwLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAg
ICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGVkZ2UtPm9wKCkgPT0gSlNDb25zdGFudCkgeworICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrLCBTcGVjQnl0ZWNvZGVEb3VibGUsIERvdWJsZUNvbnN0YW50LCBub2RlLT5vcmln
aW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhlZGdlLT5jb25zdGFudE51bWJlcigpKSk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBT
cGVjQnl0ZWNvZGVEb3VibGUsIERvdWJsZVJlcCwgbm9kZS0+b3JpZ2luLApAQCAtMTkzNiwyNiAr
MTk0OCwyMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYWRkUmVxdWlyZWRQaGFudG9tKGVkZ2Uu
bm9kZSgpKTsKIAogICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIG5ldmVyIGhhcHBlbi4KLSAgICAgICAgICAgICAg
ICBzdGFydENyYXNoaW5nKCk7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygiRm91bmQgYW4gSW50
NTJSZXBVc2UgdG8gYSBkb3VibGUgcmVzdWx0OiAiLCBub2RlLCAiIC0+ICIsIGVkZ2UsICJcbiIp
OwotICAgICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwotICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ss
IFNwZWNNYWNoaW5lSW50LCBJbnQ1MlJlcCwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBNYWNoaW5lSW50VXNlKSk7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGVkZ2UtPnNob3VsZFNwZWN1bGF0ZUludDMyRm9yQXJpdGhtZXRpYygp
KSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
ICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMiwgSW50NTJSZXAs
IG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50
MzJVc2UpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyBvbmx5IGhlcmUgZm9yIGRlYWxpbmcgd2l0aCBjb25zdGFudHMuCi0gICAgICAgICAgICAgICAg
aWYgKGVkZ2UtPm9wKCkgIT0gSlNDb25zdGFudCkgewotICAgICAgICAgICAgICAgICAgICBzdGFy
dENyYXNoaW5nKCk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvdW5kIGFuIEludDUy
UmVwVXNlIG9uIHNvbWV0aGluZyB0aGF0IGlzIG5laXRoZXIgSW50MzIgbm9yIGEgY29uc3RhbnQ6
ICIsIG5vZGUsICIgLT4gIiwgZWRnZSwgIlxuIik7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZHVtcCgpOwotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZWRnZS0+b3Ao
KSA9PSBKU0NvbnN0YW50KSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNN
YWNoaW5lSW50LCBJbnQ1MkNvbnN0YW50LCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAg
ICAgIE9wSW5mbyhlZGdlLT5jb25zdGFudE51bWJlcigpKSk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisg
ICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTWFjaGluZUludCwgSW50NTJS
ZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwg
TWFjaGluZUludFVzZSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlZGdlLnNldE5v
ZGUocmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJ
KHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhJbnQ1MlJlcCwgTm9kZVJlc3VsdEludDUyKSBcCiAg
ICAgbWFjcm8oVmFsdWVSZXAsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKKyAgICAvKiBCb2d1cyB0
eXBlIGFzc2VydGluZyBub2RlLiBVc2VmdWwgZm9yIHRlc3RpbmcsIGRpc2FwcGVhcnMgZHVyaW5n
IEZpeHVwLiAqL1wKKyAgICBtYWNybyhGaWF0SW50NTIsIE5vZGVSZXN1bHRKUykgXAorICAgIFwK
ICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhB
cml0aEFkZCwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRoU3ViLCBOb2RlUmVz
dWx0TnVtYmVyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDUsNiArMTA0NSwxOSBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nRnJvCiAgICAgcmV0dXJuIEpTQzo6
c3RyaW5nRnJvbUNoYXJDb2RlKGV4ZWMsIG9wMSk7CiB9CiAKK2ludDY0X3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db252ZXJ0Qm94ZWREb3VibGVUb0ludDUyKEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisgICAgaWYgKCF2YWx1ZS5pc0RvdWJsZSgpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6bm90SW50NTI7CisgICAgcmV0dXJuIHRyeUNvbnZlcnRUb0ludDUyKHZhbHVlLmFzRG91Ymxl
KCkpOworfQorCitpbnQ2NF90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydERvdWJsZVRv
SW50NTIoZG91YmxlIHZhbHVlKQoreworICAgIHJldHVybiB0cnlDb252ZXJ0VG9JbnQ1Mih2YWx1
ZSk7Cit9CisKIHNpemVfdCBKSVRfT1BFUkFUSU9OIGRmZ0NvbnZlcnRKU1ZhbHVlVG9JbnQzMihF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDkgQEAgY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25GaW5kU3dpdGNoSQogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25Td2l0Y2hTdHJpbmcoRXhlY1N0YXRlKiwgc2l6ZV90IHRhYmxlSW5kZXgsIEpTU3RyaW5nKik7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTm90aWZ5V3JpdGUoRXhlY1N0YXRlKiwgVmFy
aWFibGVXYXRjaHBvaW50U2V0KiwgRW5jb2RlZEpTVmFsdWUpOwogCitpbnQ2NF90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ29udmVydEJveGVkRG91YmxlVG9JbnQ1MihFbmNvZGVkSlNWYWx1ZSk7
CitpbnQ2NF90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydERvdWJsZVRvSW50NTIoZG91
YmxlKTsKKwogLy8gVGhlc2Ugb3BlcmF0aW9ucyBpbXBsZW1lbnQgdGhlIGltcGxpY2l0bHkgY2Fs
bGVkIFRvSW50MzIgYW5kIFRvQm9vbGVhbiBjb252ZXJzaW9ucyBmcm9tIEVTNS4KIC8vIFRoaXMg
Y29udmVyc2lvbiByZXR1cm5zIGFuIGludDMyX3Qgd2l0aGluIGEgc2l6ZV90IHN1Y2ggdGhhdCB0
aGUgdmFsdWUgaXMgemVybyBleHRlbmRlZCB0byBmaWxsIHRoZSByZWdpc3Rlci4KIHNpemVfdCBK
SVRfT1BFUkFUSU9OIGRmZ0NvbnZlcnRKU1ZhbHVlVG9JbnQzMihFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTYsNiArNTE2LDEyIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgRmlhdEludDUyOiB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmFibGVJ
bnQ1MigpKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjTWFjaGlu
ZUludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgUHV0
QnlWYWxBbGlhczoKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKQEAgLTUzNiw4ICs1NDIsOCBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAgY2FzZSBIYXJkUGhhbnRvbToKICAgICAg
ICAgY2FzZSBEb3VibGVSZXA6Ci0gICAgICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIGNhc2Ug
VmFsdWVSZXA6CisgICAgICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIGNhc2UgRG91YmxlQ29u
c3RhbnQ6CiAgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKICAgICAgICAgY2FzZSBJZGVudGl0
eToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgTm90Q2VsbFVzZToKICAgICAgICAgY2FzZSBPdGhlclVzZToKICAgICAgICAgY2Fz
ZSBNaXNjVXNlOgorICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgRG91
YmxlUmVwTWFjaGluZUludFVzZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6CkBAIC0yNTQsNiArMjU2LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgRG91YmxlUmVwOgogICAg
IGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBCb29sZWFuVG9OdW1iZXI6CisgICAgY2FzZSBGaWF0
SW50NTI6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFs
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMz
LDYgKzQ2MzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JF
bnRlcjoKICAgICBjYXNlIEludDUyUmVwOgorICAgIGNhc2UgRmlhdEludDUyOgogICAgIGNhc2Ug
SW50NTJDb25zdGFudDoKICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgY2FzZSBBcml0aElN
dWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMzUsMTIgKzIw
MzUsNTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBJbnQ1MlJlcDogewotICAgICAgICBTcGVjdWxhdGVJbnQzMk9w
ZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcywgUmV1c2UsIG9wZXJhbmQpOwotICAgICAgICAKLSAgICAgICAgbV9qaXQu
c2lnbkV4dGVuZDMyVG9QdHIob3BlcmFuZC5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAg
Ci0gICAgICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAg
IHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgSW50MzJV
c2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBvcGVyYW5kKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1
c2UsIG9wZXJhbmQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5k
MzJUb1B0cihvcGVyYW5kLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBzdHJpY3RJbnQ1MlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIE1hY2hpbmVJ
bnRVc2U6IHsKKyAgICAgICAgICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBjb252ZXJ0TWFjaGluZUludChub2RlLT5jaGlsZDEoKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEZQUlJlZyB2
YWx1ZUZQUiA9IHZhbHVlLmZwcigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBHUFJSZXN1
bHQgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91Ymxl
VG9JbnQ1MiwgcmVzdWx0R1BSLCB2YWx1ZUZQUik7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IERGR19UWVBFX0NIRUNLKAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKCksIG5vZGUtPmNo
aWxkMSgpLCBTcGVjSW50NTJBc0RvdWJsZSwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2g2
NCgKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCByZXN1bHRHUFIsCisg
ICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6bm90
SW50NTIpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0cmljdEludDUyUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC00
NzIxLDYgKzQ3NjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNh
c2UgTXVsdGlQdXRCeU9mZnNldDoKKyAgICBjYXNlIEZpYXRJbnQ1MjoKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDgwNSw2
ICs0ODQ1LDYxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJsZXNzQm9vbGVhbihHUFJSZWcKICAg
ICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgZ3ByKTsKIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29udmVydE1hY2hpbmVJbnQoRWRnZSB2YWx1ZUVkZ2UsIEdQUlJlZyBy
ZXN1bHRHUFIpCit7CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgdmFsdWVFZGdlLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdw
cigpOworICAgIAorICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEludDMyID0KKyAgICAgICAgbV9q
aXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkJlbG93LCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cih2YWx1
ZUdQUiwgcmVzdWx0R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVt
cCgpOworICAgIAorICAgIG5vdEludDMyLmxpbmsoJm1faml0KTsKKyAgICBzaWxlbnRTcGlsbEFs
bFJlZ2lzdGVycyhyZXN1bHRHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29udmVy
dEJveGVkRG91YmxlVG9JbnQ1MiwgcmVzdWx0R1BSLCB2YWx1ZUdQUik7CisgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworCisgICAgREZHX1RZUEVfQ0hFQ0soCisgICAgICAg
IEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgdmFsdWVFZGdlLCBTcGVjSW50MzIgfCBTcGVjSW50NTJB
c0RvdWJsZSwKKyAgICAgICAgbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICBKSVRDb21waWxl
cjo6RXF1YWwsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6bm90SW50NTIpKSk7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7Cit9CisKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBlZGdlKQoreworICAg
IGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyIHwgU3BlY0ludDUyQXNEb3VibGUp
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Cisg
ICAgY29udmVydE1hY2hpbmVJbnQoZWRnZSwgdGVtcC5ncHIoKSk7Cit9CisKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZURvdWJsZVJlcE1hY2hpbmVJbnQoRWRnZSBlZGdlKQoreworICAg
IGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDUyQXNEb3VibGUpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZSh0aGlzLCBlZGdl
KTsKKyAgICBGUFJSZWcgdmFsdWVGUFIgPSB2YWx1ZS5mcHIoKTsKKyAgICAKKyAgICBHUFJSZXN1
bHQgcmVzdWx0KHRoaXMpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Cisg
ICAgCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkNvbnZlcnREb3VibGVUb0ludDUyLCByZXN1bHRHUFIsIHZhbHVlRlBSKTsKKyAgICAKKyAg
ICBERkdfVFlQRV9DSEVDSygKKyAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0ludDUy
QXNEb3VibGUsCisgICAgICAgIG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkVxdWFsLCByZXN1bHRHUFIsCisgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZElt
bTY0KEpTVmFsdWU6Om5vdEludDUyKSkpOworfQorCiAjZW5kaWYKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMxLDYgKzEyMzEsMTYg
QEAgcHVibGljOgogICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cihHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUV9KSVRPcGVyYXRpb25fSiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFFfSklUT3BlcmF0aW9uX0Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgdmFs
dWUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyh2YWx1ZSk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSSBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHVpZCkpOwpAQCAt
MjIzNCw5ICsyMjQ0LDEzIEBAIHB1YmxpYzoKICAgICAvLyBIZWxwZXJzIGZvciBwZXJmb3JtaW5n
IHR5cGUgY2hlY2tzIG9uIGFuIGVkZ2Ugc3RvcmVkIGluIHRoZSBnaXZlbiByZWdpc3RlcnMuCiAg
ICAgYm9vbCBuZWVkc1R5cGVDaGVjayhFZGdlIGVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5cGVzUGFz
c2VkVGhyb3VnaCkgeyByZXR1cm4gbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCB0
eXBlc1Bhc3NlZFRocm91Z2gpOyB9CiAgICAgdm9pZCB0eXBlQ2hlY2soSlNWYWx1ZVNvdXJjZSwg
RWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoLCBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBqdW1wVG9GYWlsKTsKLQorICAgIAogICAgIHZvaWQgc3BlY3VsYXRlSW50MzIoRWRnZSk7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB2b2lkIGNvbnZlcnRNYWNoaW5lSW50KEVkZ2UsIEdQ
UlJlZyByZXN1bHRHUFIpOwogICAgIHZvaWQgc3BlY3VsYXRlTWFjaGluZUludChFZGdlKTsKKyAg
ICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJlcE1hY2hpbmVJbnQoRWRnZSk7CisjZW5kaWYgLy8gVVNF
KEpTVkFMVUU2NCkKICAgICB2b2lkIHNwZWN1bGF0ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNw
ZWN1bGF0ZURvdWJsZVJlYWwoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVCb29sZWFuKEVkZ2Up
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODQsNyArMTg0LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIGFzIGFuIGV4Y3Vz
ZSBub3QgdG8gZm9sZC4gVGhlIG9ubHkgdGhpbmcgd2Ugd291bGQgbmVlZCBpcyBhIEludDUyUmVw
SW50MzJVc2Uga2luZC4KICAgICAgICAgICAgIGJvb2wgaGFkSW50MzJDaGVjayA9IGZhbHNlOwog
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBJbnQ1MlJlcCkgewotICAgICAgICAgICAg
ICAgIEFTU0VSVChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBJbnQzMlVzZSk7CisgICAg
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpICE9IEludDMyVXNlKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBoYWRJbnQzMkNoZWNr
ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IG1f
bm9kZS0+Y2hpbGQxKCkubm9kZSgpOyA7IG5vZGUgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCkpIHsK
QEAgLTIxMSw3ICsyMTIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgSW50NTJS
ZXA6Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gSW50MzJVc2UpOworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpICE9IEludDMyVXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIGhhZEludDMyQ2hlY2sgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5
LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2Ug
SW50NTJSZXBVc2U6CiAgICAgICAgIG91dC5wcmludCgiSW50NTJSZXAiKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIk1hY2hpbmVJ
bnQiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAgICAgIG91dC5w
cmludCgiTnVtYmVyIik7CiAgICAgICAgIGJyZWFrOwpAQCAtNTgsNiArNjEsOSBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlCiAgICAgY2FzZSBEb3VibGVSZXBSZWFs
VXNlOgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZVJlcFJlYWwiKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIkRv
dWJsZVJlcE1hY2hpbmVJbnQiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCb29sZWFuVXNl
OgogICAgICAgICBvdXQucHJpbnQoIkJvb2xlYW4iKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24gMTcxMDAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDkgKzM5LDExIEBAIGVudW0gVXNlS2luZCB7CiAgICAgSW50MzJVc2UsCiAgICAgS25vd25J
bnQzMlVzZSwKICAgICBJbnQ1MlJlcFVzZSwKKyAgICBNYWNoaW5lSW50VXNlLAogICAgIE51bWJl
clVzZSwKICAgICBEb3VibGVSZXBVc2UsCiAgICAgRG91YmxlUmVwUmVhbFVzZSwKKyAgICBEb3Vi
bGVSZXBNYWNoaW5lSW50VXNlLAogICAgIEJvb2xlYW5Vc2UsCiAgICAgQ2VsbFVzZSwKICAgICBL
bm93bkNlbGxVc2UsCkBAIC03MCwxMiArNzIsMTYgQEAgaW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5
cGVGaWx0ZXJGb3IoVXNlSwogICAgICAgICByZXR1cm4gU3BlY0ludDMyOwogICAgIGNhc2UgSW50
NTJSZXBVc2U6CiAgICAgICAgIHJldHVybiBTcGVjTWFjaGluZUludDsKKyAgICBjYXNlIE1hY2hp
bmVJbnRVc2U6CisgICAgICAgIHJldHVybiBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0RvdWJsZTsK
ICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCeXRlY29kZU51bWJlcjsK
ICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNGdWxsRG91YmxlOwog
ICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVSZWFs
OworICAgIGNhc2UgRG91YmxlUmVwTWFjaGluZUludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNJ
bnQ1MkFzRG91YmxlOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgcmV0dXJuIFNwZWNC
b29sZWFuOwogICAgIGNhc2UgQ2VsbFVzZToKQEAgLTEzOSw2ICsxNDUsOCBAQCBpbmxpbmUgYm9v
bCBpc051bWVyaWNhbChVc2VLaW5kIGtpbmQpCiAgICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICBj
YXNlIERvdWJsZVJlcFVzZToKICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgY2FzZSBN
YWNoaW5lSW50VXNlOgorICAgIGNhc2UgRG91YmxlUmVwTWFjaGluZUludFVzZToKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTUw
LDYgKzE1OCw3IEBAIGlubGluZSBib29sIGlzRG91YmxlKFVzZUtpbmQga2luZCkKICAgICBzd2l0
Y2ggKGtpbmQpIHsKICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICBjYXNlIERvdWJsZVJlcFJl
YWxVc2U6CisgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNzEw
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3OSw2ICszNzksOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAgICAgY2FzZSBNaXNjVXNlOgogICAgICAgICAg
ICAgICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBOb3RTdHJp
bmdWYXJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICAg
ICAgICAgIGNhc2UgRG91YmxlUmVwTWFjaGluZUludFVzZToKICAgICAgICAgICAgICAgICAgICAg
Ly8gVGhlc2UgYXJlIE9LLgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5z
aWNSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExJbnRyaW5zaWNSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OSw2ICs3OSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNy
byhQX0pJVE9wZXJhdGlvbl9FU3RQUywgZnVuY3Rpb25UeXBlKGludFB0ciwgaW50UHRyLCBpbnRQ
dHIsIGludFB0ciwgaW50UHRyKSkgXAogICAgIG1hY3JvKFBfSklUT3BlcmF0aW9uX0VTdFNTLCBm
dW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyLCBpbnRQdHIpKSBcCiAg
ICAgbWFjcm8oUF9KSVRPcGVyYXRpb25fRVN0WiwgZnVuY3Rpb25UeXBlKGludFB0ciwgaW50UHRy
LCBpbnRQdHIsIGludDMyKSkgXAorICAgIG1hY3JvKFFfSklUT3BlcmF0aW9uX0QsIGZ1bmN0aW9u
VHlwZShpbnQ2NCwgZG91YmxlVHlwZSkpIFwKKyAgICBtYWNybyhRX0pJVE9wZXJhdGlvbl9KLCBm
dW5jdGlvblR5cGUoaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKFNfSklUT3BlcmF0aW9uX0VK
LCBmdW5jdGlvblR5cGUoaW50UHRyLCBpbnRQdHIsIGludDY0KSkgXAogICAgIG1hY3JvKFNfSklU
T3BlcmF0aW9uX0VKSiwgZnVuY3Rpb25UeXBlKGludFB0ciwgaW50UHRyLCBpbnQ2NCwgaW50NjQp
KSBcCiAgICAgbWFjcm8oU19KSVRPcGVyYXRpb25fSiwgZnVuY3Rpb25UeXBlKGludFB0ciwgaW50
NjQpKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3MCw3ICs3NzAsMjYg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVJbnQ1MlJlcCgpCiAgICAgewotICAg
ICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC5zaWduRXh0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQx
KCkpLCBtX291dC5pbnQ2NCkpOworICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CisgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgICAgICBzZXRTdHJpY3RJ
bnQ1MihtX291dC5zaWduRXh0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5pbnQ2
NCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTWFj
aGluZUludFVzZToKKyAgICAgICAgICAgIHNldFN0cmljdEludDUyKAorICAgICAgICAgICAgICAg
IGpzVmFsdWVUb1N0cmljdEludDUyKAorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxk
MSgpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bikpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERv
dWJsZVJlcE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBzZXRTdHJpY3RJbnQ1MigKKyAgICAg
ICAgICAgICAgICBkb3VibGVUb1N0cmljdEludDUyKAorICAgICAgICAgICAgICAgICAgICBtX25v
ZGUtPmNoaWxkMSgpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB2
b2lkIGNvbXBpbGVWYWx1ZVRvSW50MzIoKQpAQCAtNDY0MCw5ICs0NjU5LDYgQEAgcHJpdmF0ZToK
ICAgICAKICAgICBMVmFsdWUgZG91YmxlVG9JbnQzMihMVmFsdWUgZG91YmxlVmFsdWUsIGRvdWJs
ZSBsb3csIGRvdWJsZSBoaWdoLCBib29sIGlzU2lnbmVkID0gdHJ1ZSkKICAgICB7Ci0gICAgICAg
IC8vIEZJWE1FOiBPcHRpbWl6ZSBkb3VibGUtdG8taW50IGNvbnZlcnNpb25zLgotICAgICAgICAv
LyA8cmRhcjovL3Byb2JsZW0vMTQ5Mzg0NjU+Ci0gICAgICAgIAogICAgICAgICBMQmFzaWNCbG9j
ayBncmVhdEVub3VnaCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiZG91YmxlVG9JbnQzMiBncmVh
dEVub3VnaCIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgd2l0aGluUmFuZ2UgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoImRvdWJsZVRvSW50MzIgd2l0aGluUmFuZ2UiKSk7CiAgICAgICAgIExCYXNp
Y0Jsb2NrIHNsb3dQYXRoID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJkb3VibGVUb0ludDMyIHNs
b3dQYXRoIikpOwpAQCAtNTA5Niw5ICs1MTEyLDkgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgTFZh
bHVlIGpzVmFsdWVUb0RvdWJsZShFZGdlIGVkZ2UsIExWYWx1ZSBib3hlZFZhbHVlKQogICAgIHsK
LSAgICAgICAgTEJhc2ljQmxvY2sgaW50Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91
YmxlUmVwIHVuYm94aW5nIGludCBjYXNlIikpOwotICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVD
YXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJEb3VibGVSZXAgdW5ib3hpbmcgZG91YmxlIGNh
c2UiKSk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0so
bV9vdXQsICgiRG91YmxlUmVwIHVuYm94aW5nIGNvbnRpbnVhdGlvbiIpKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgaW50Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgianNWYWx1ZVRvRG91Ymxl
IHVuYm94aW5nIGludCBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBkb3VibGVDYXNlID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJqc1ZhbHVlVG9Eb3VibGUgdW5ib3hpbmcgZG91YmxlIGNh
c2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0so
bV9vdXQsICgianNWYWx1ZVRvRG91YmxlIHVuYm94aW5nIGNvbnRpbnVhdGlvbiIpKTsKICAgICAg
ICAgICAgIAogICAgICAgICBMVmFsdWUgaXNOb3RJbnQzMjsKICAgICAgICAgaWYgKCFtX2ludGVy
cHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNJbnQzMikpCkBAIC01MTI4LDYgKzUxNDQs
NTQgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5kb3VibGVUeXBl
LCBpbnRUb0RvdWJsZSwgdW5ib3hlZERvdWJsZSk7CiAgICAgfQogICAgIAorICAgIExWYWx1ZSBq
c1ZhbHVlVG9TdHJpY3RJbnQ1MihFZGdlIGVkZ2UsIExWYWx1ZSBib3hlZFZhbHVlKQorICAgIHsK
KyAgICAgICAgTEJhc2ljQmxvY2sgaW50Q2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgianNW
YWx1ZVRvSW50NTIgdW5ib3hpbmcgaW50IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGRv
dWJsZUNhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoImpzVmFsdWVUb0ludDUyIHVuYm94aW5n
IGRvdWJsZSBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExf
TkVXX0JMT0NLKG1fb3V0LCAoImpzVmFsdWVUb0ludDUyIHVuYm94aW5nIGNvbnRpbnVhdGlvbiIp
KTsKKyAgICAgICAgICAgIAorICAgICAgICBMVmFsdWUgaXNOb3RJbnQzMjsKKyAgICAgICAgaWYg
KCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNJbnQzMikpCisgICAgICAg
ICAgICBpc05vdEludDMyID0gbV9vdXQuYm9vbGVhbkZhbHNlOworICAgICAgICBlbHNlIGlmICgh
bV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCB+U3BlY0ludDMyKSkKKyAgICAgICAg
ICAgIGlzTm90SW50MzIgPSBtX291dC5ib29sZWFuVHJ1ZTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgaXNOb3RJbnQzMiA9IHRoaXMtPmlzTm90SW50MzIoYm94ZWRWYWx1ZSk7CisgICAgICAg
IG1fb3V0LmJyYW5jaChpc05vdEludDMyLCB1bnN1cmUoZG91YmxlQ2FzZSksIHVuc3VyZShpbnRD
YXNlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhpbnRDYXNlLCBkb3VibGVDYXNlKTsKKyAgICAgICAgICAgIAorICAgICAgICBW
YWx1ZUZyb21CbG9jayBpbnRUb0ludDUyID0gbV9vdXQuYW5jaG9yKAorICAgICAgICAgICAgbV9v
dXQuc2lnbkV4dCh1bmJveEludDMyKGJveGVkVmFsdWUpLCBtX291dC5pbnQ2NCkpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIExW
YWx1ZSBwb3NzaWJsZVJlc3VsdCA9IG1fb3V0LmNhbGwoCisgICAgICAgICAgICBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uQ29udmVydEJveGVkRG91YmxlVG9JbnQ1MiksIGJveGVkVmFsdWUpOwor
ICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFZh
bHVlKSwgZWRnZSwgU3BlY0ludDMyIHwgU3BlY0ludDUyQXNEb3VibGUsCisgICAgICAgICAgICBt
X291dC5lcXVhbChwb3NzaWJsZVJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpub3RJ
bnQ1MikpKTsKKyAgICAgICAgICAgIAorICAgICAgICBWYWx1ZUZyb21CbG9jayBkb3VibGVUb0lu
dDUyID0gbV9vdXQuYW5jaG9yKHBvc3NpYmxlUmVzdWx0KTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworICAgICAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICAgICAgCisgICAgICAgIHJldHVybiBtX291dC5w
aGkobV9vdXQuaW50NjQsIGludFRvSW50NTIsIGRvdWJsZVRvSW50NTIpOworICAgIH0KKyAgICAK
KyAgICBMVmFsdWUgZG91YmxlVG9TdHJpY3RJbnQ1MihFZGdlIGVkZ2UsIExWYWx1ZSB2YWx1ZSkK
KyAgICB7CisgICAgICAgIExWYWx1ZSBwb3NzaWJsZVJlc3VsdCA9IG1fb3V0LmNhbGwoCisgICAg
ICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ29udmVydERvdWJsZVRvSW50NTIpLCB2
YWx1ZSk7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKAorICAgICAgICAgICAgZG91YmxlVmFsdWUo
dmFsdWUpLCBlZGdlLCBTcGVjSW50NTJBc0RvdWJsZSwKKyAgICAgICAgICAgIG1fb3V0LmVxdWFs
KHBvc3NpYmxlUmVzdWx0LCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6Om5vdEludDUyKSkpOwor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIHBvc3NpYmxlUmVzdWx0OworICAgIH0KKyAgICAKICAg
ICBMVmFsdWUgaXNOdW1iZXIoTFZhbHVlIGpzVmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4g
aXNOb3RDZWxsT3JNaXNjKGpzVmFsdWUpOwpAQCAtNTIxMiw2ICs1Mjc2LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgICAgICBBU1NFUlQoIW1faW50ZXJw
cmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZU1hY2hpbmVJbnQoZWRn
ZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBPYmplY3RVc2U6CiAgICAgICAg
ICAgICBzcGVjdWxhdGVPYmplY3QoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUyMzks
NiArNTMwNiw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAg
ICAgICAgICAgIHNwZWN1bGF0ZURvdWJsZVJlYWwoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgc3BlY3Vs
YXRlRG91YmxlUmVwTWFjaGluZUludChlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVCb29sZWFuKGVkZ2UpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC01Mjc1LDYgKzUzNDUsMTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgbG93Q2VsbChlZGdlKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzcGVjdWxhdGVNYWNoaW5l
SW50KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5
cGVDaGVjayhlZGdlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGpz
VmFsdWVUb1N0cmljdEludDUyKGVkZ2UsIGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKSk7CisgICAgfQorICAgIAogICAgIExWYWx1ZSBpc09iamVjdChMVmFsdWUgY2Vs
bCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbCgKQEAgLTU1MTUsNiArNTU5
MywxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVub3Jk
ZXJlZCh2YWx1ZSwgdmFsdWUpKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzcGVjdWxhdGVEb3Vi
bGVSZXBNYWNoaW5lSW50KEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIGlmICghbV9pbnRlcnBy
ZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgICAgIGRvdWJsZVRvU3RyaWN0SW50NTIoZWRnZSwgbG93RG91YmxlKGVkZ2UpKTsKKyAg
ICB9CisgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVCb29sZWFuKEVkZ2UgZWRnZSkKICAgICB7CiAg
ICAgICAgIGxvd0Jvb2xlYW4oZWRnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAg
ZXh0ZXJuICJDIiB7CiAgICAgTzogSlNPYmplY3QqCiAgICAgUDogcG9pbnRlciAoY2hhciopCiAg
ICAgUGM6IEluc3RydWN0aW9uKiBpLmUuIGJ5dGVjb2RlIFBDCisgICAgUTogaW50NjRfdAogICAg
IFI6IFJlZ2lzdGVyCiAgICAgUzogc2l6ZV90CiAgICAgU3BydDogU2xvd1BhdGhSZXR1cm5UeXBl
CkBAIC0xMzIsNiArMTMzLDggQEAgdHlwZWRlZiBkb3VibGUgSklUX09QRVJBVElPTiAoKkRfSklU
T3BlcgogdHlwZWRlZiBkb3VibGUgSklUX09QRVJBVElPTiAoKkRfSklUT3BlcmF0aW9uX0REKShk
b3VibGUsIGRvdWJsZSk7CiB0eXBlZGVmIGRvdWJsZSBKSVRfT1BFUkFUSU9OICgqRF9KSVRPcGVy
YXRpb25fWlopKGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBkb3VibGUgSklUX09QRVJBVElP
TiAoKkRfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBl
ZGVmIGludDY0X3QgSklUX09QRVJBVElPTigqUV9KSVRPcGVyYXRpb25fSikoRW5jb2RlZEpTVmFs
dWUpOwordHlwZWRlZiBpbnQ2NF90IEpJVF9PUEVSQVRJT04oKlFfSklUT3BlcmF0aW9uX0QpKGRv
dWJsZSk7CiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0aW9uX0Qp
KGRvdWJsZSk7CiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0aW9u
X0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3Bl
cmF0aW9uX0VDQykoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAkocmV2aXNpb24gMTcxMDAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDExICs1NiwxMyBAQCBlbnVtIEludHJpbnNpYyB7CiAgICAgQXJyYXlJdGVyYXRvck5l
eHRLZXlJbnRyaW5zaWMsCiAgICAgQXJyYXlJdGVyYXRvck5leHRHZW5lcmljSW50cmluc2ljLAog
ICAgIAotICAgIC8vIERlYnVnZ2luZyBpbnRyaW5zaWNzCisgICAgLy8gRGVidWdnaW5nIGludHJp
bnNpY3MuIFRoZXNlIGFyZSBtZWFudCB0byBiZSB1c2VkIGFzIHRlc3RpbmcgaGFja3Mgd2l0aGlu
CisgICAgLy8ganNjLmNwcCBhbmQgc2hvdWxkIG5ldmVyIGJlIGV4cG9zZWQgdG8gdXNlcnMuCiAg
ICAgREZHVHJ1ZUludHJpbnNpYywKICAgICBPU1JFeGl0SW50cmluc2ljLAogICAgIElzRmluYWxU
aWVySW50cmluc2ljLAotICAgIFNldEludDMySGVhcFByZWRpY3Rpb25JbnRyaW5zaWMKKyAgICBT
ZXRJbnQzMkhlYXBQcmVkaWN0aW9uSW50cmluc2ljLAorICAgIEZpYXRJbnQ1MkludHJpbnNpYywK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5
LDkgQEAgaW5saW5lIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSBudW1iZXIpCiAgICAgcmV0dXJu
IHRvSW50MzIobnVtYmVyKTsKIH0KIAoraW50NjRfdCB0cnlDb252ZXJ0VG9JbnQ1Mihkb3VibGUp
OworYm9vbCBpc0ludDUyKGRvdWJsZSk7CisKIGNsYXNzIEpTVmFsdWUgewogICAgIGZyaWVuZCBz
dHJ1Y3QgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzOwogICAgIGZyaWVuZCBjbGFzcyBBc3NlbWJs
eUhlbHBlcnM7CkBAIC0yODcsNiArMjkwLDcgQEAgcHVibGljOgogICAgIC8vIENvbnN0YW50cyB1
c2VkIGZvciBJbnQ1Mi4gSW50NTIgaXNuJ3QgcGFydCBvZiBKU1ZhbHVlIHJpZ2h0IG5vdywgYnV0
IEpTVmFsdWVzIG1heSBiZQogICAgIC8vIGNvbnZlcnRlZCB0byBJbnQ1MnMgYW5kIGJhY2sgYWdh
aW4uCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mSW50NTJCaXRzID0gNTI7Cisg
ICAgc3RhdGljIGNvbnN0IGludDY0X3Qgbm90SW50NTIgPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pigx
KSA8PCBudW1iZXJPZkludDUyQml0czsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50NTJT
aGlmdEFtb3VudCA9IDEyOwogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQYXls
b2FkKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQp
OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5NywxNSArNDk3
LDEwIEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSAKIAogI2VuZGlm
IC8vIFVTRShKU1ZBTFVFNjQpCiAKLWlubGluZSBib29sIEpTVmFsdWU6OmlzTWFjaGluZUludCgp
IGNvbnN0CitpbmxpbmUgaW50NjRfdCB0cnlDb252ZXJ0VG9JbnQ1Mihkb3VibGUgbnVtYmVyKQog
ewotICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghaXNO
dW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRvdWJsZSBudW1iZXIgPSBhc0Rv
dWJsZSgpOwogICAgIGlmIChudW1iZXIgIT0gbnVtYmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpub3RJbnQ1MjsKICNpZiBPUyhXSU5ET1dTKSAmJiBD
UFUoWDg2KQogICAgIC8vIFRoZSBWUyBDb21waWxlciBmb3IgMzItYml0IGJ1aWxkcyBnZW5lcmF0
ZXMgYSBmbG9hdGluZyBwb2ludCBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gY2FzdAogICAgIC8v
IGZyb20gYW4gaW5maW5pdHkgdG8gYSA2NC1iaXQgaW50ZWdlci4gV2UgbGVhdmUgdGhpcyByb3V0
aW5lIHdpdGggdGhlIGZsb2F0aW5nIHBvaW50IGVycm9yCkBAIC01MTMsMTggKzUwOCwzMiBAQCBp
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc01hY2hpbmVJbnQoKSBjb25zCiAgICAgLy8KICAgICAvLyBU
byBhdm9pZCB0aGlzIGlzc3VlLCB3ZSBjaGVjayBmb3IgaW5maW5pdHkgaGVyZSwgYW5kIHJldHVy
biBmYWxzZSBpbiB0aGF0IGNhc2UuCiAgICAgaWYgKHN0ZDo6aXNpbmYobnVtYmVyKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6bm90SW50NTI7CiAjZW5k
aWYKICAgICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1iZXIpOwog
ICAgIGlmIChhc0ludDY0ICE9IG51bWJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6bm90SW50NTI7CiAgICAgaWYgKCFhc0ludDY0ICYmIHN0ZDo6c2ln
bmJpdChudW1iZXIpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6bm90SW50NTI7CisgICAgaWYg
KGFzSW50NjQgPj0gKHN0YXRpY19jYXN0PGludDY0X3Q+KDEpIDw8IChKU1ZhbHVlOjpudW1iZXJP
ZkludDUyQml0cyAtIDEpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6Om5vdEludDUyOworICAg
IGlmIChhc0ludDY0IDwgLShzdGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCAoSlNWYWx1ZTo6bnVt
YmVyT2ZJbnQ1MkJpdHMgLSAxKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpub3RJbnQ1MjsK
KyAgICByZXR1cm4gYXNJbnQ2NDsKK30KKworaW5saW5lIGJvb2wgaXNJbnQ1Mihkb3VibGUgbnVt
YmVyKQoreworICAgIHJldHVybiB0cnlDb252ZXJ0VG9JbnQ1MihudW1iZXIpICE9IEpTVmFsdWU6
Om5vdEludDUyOworfQorCitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc01hY2hpbmVJbnQoKSBjb25z
dAoreworICAgIGlmIChpc0ludDMyKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICgh
aXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhc0ludDY0ID49IChz
dGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCAobnVtYmVyT2ZJbnQ1MkJpdHMgLSAxKSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXNJbnQ2NCA8IC0oc3RhdGljX2Nhc3Q8aW50NjRf
dD4oMSkgPDwgKG51bWJlck9mSW50NTJCaXRzIC0gMSkpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzSW50NTIoYXNEb3VibGUoKSk7CiB9CiAK
IGlubGluZSBpbnQ2NF90IEpTVmFsdWU6OmFzTWFjaGluZUludCgpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ludDUyLWZvcmNlLW9zci1leGl0LXBhdGgu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnQ1
Mi1mb3JjZS1vc3ItZXhpdC1wYXRoLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnQ1Mi1mb3JjZS1vc3ItZXhpdC1wYXRoLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKK2Z1bmN0aW9uIGZvbyhhLCBiLCBwLCBvKSB7CisgICAg
dmFyIGMgPSBhICsgYjsKKyAgICBpZiAocCkKKyAgICAgICAgYyAtPSBvLmY7CisgICAgcmV0dXJu
IGMgKyAxOworfQorCitub0lubGluZShmb28pOworCit2YXIgbyA9IHtmOiA0Mn07Citmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygyMDAwMDAw
MDAwLCAyMDAwMDAwMDAwLCBmYWxzZSwgbyk7CisgICAgaWYgKHJlc3VsdCAhPSA0MDAwMDAwMDAx
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234875</attachid>
            <date>2014-07-14 13:25:35 -0700</date>
            <delta_ts>2014-07-14 14:03:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>57141</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxMDc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NSBA
QAorMjAxNC0wNy0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEFsbG93IGZvciBJbnQ1MlJlcCB0byBzZWUgdGhpbmdzIG90aGVyIHRoYW4gSW50MzIsIGFuZCBt
YWtlIHRoaXMgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNDg3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgQSBtYWpvciBwcmVtaXNlIG9mIG91ciB0eXBlIGluZmVyZW5jZSBp
cyB0aGF0IHByZWRpY3Rpb24gcHJvcGFnYXRpb24gY2FuIHNheSB3aGF0ZXZlciBpdAorICAgICAg
ICB3YW50cyBhbmQgd2UnbGwgc3RpbGwgdmFsaWQgdmFsaWQgSVIgYWZ0ZXIgRml4dXAuIFRoaXMg
cHJldmlvdXNseSBkaWRuJ3Qgd29yayB3aXRoIEludDUycy4KKyAgICAgICAgV2UgcmVxdWlyZWQg
c29tZSBraW5kIG9mIGFncmVlbWVudCBiZXR3ZWVuIHByZWRpY3Rpb24gcHJvcGFnYXRpb24gYW5k
IGZpeHVwIG92ZXIgd2hpY2gKKyAgICAgICAgZGF0YSBmbG93IHBhdGhzIHdlcmUgSW50NTIgYW5k
IHdoaWNoIHdlcmVuJ3QuCisgICAgICAgIAorICAgICAgICBJdCB0dXJucyBvdXQgdGhhdCB3ZSBi
YXNpY2FsbHkgaGFkIHN1Y2ggYW4gYWdyZWVtZW50LCB3aXRoIHRoZSBleGNlcHRpb24gb2YgY29k
ZSB0aGF0IHdhcworICAgICAgICB1bnJlYWNoYWJsZSBkdWUgdG8gRm9yY2VPU1JFeGl0LiBUaGVu
LCBmaXh1cCBhbmQgcHJlZGljdGlvbiBwcm9wYWdhdGlvbiB3b3VsZCBkaXNhZ3JlZS4gSXQKKyAg
ICAgICAgbWlnaHQgYmUgbmljZSB0byBmaXggdGhhdCBidWcgLSBidXQgaXQncyBvbmx5IGluIHRo
ZSBjYXNlIG9mIEludDUyIHRoYXQgc3VjaCBhIHRoaW5nIHdvdWxkCisgICAgICAgIGJlIGEgYnVn
ISBOb3JtYWxseSwgd2UgYWxsb3cgc2xvcHBpbmVzcyBpbiBwcmVkaWN0aW9uIHByb3BhZ2F0aW9u
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgdXMgdG8gYmUgc2xvcHB5IHdp
dGggSW50NTIgcHJlZGljdGlvbiBwcm9wYWdhdGlvbiBieSBnaXZpbmcgSW50NTJSZXAgdGhlCisg
ICAgICAgIGFiaWxpdHkgdG8gc2VlIGlucHV0cyBvdGhlciB0aGFuIEludDMyLiBUaGlzIGZpeGVz
IHRoZSBwYXJ0aWN1bGFyIEZvcmNlT1NSRXhpdCBidWcgKHNlZQorICAgICAgICBpbnQ1Mi1mb3Jj
ZS1vc3ItZXhpdC1wYXRoLmpzIGZvciB0aGUgcmVkdWNlZCB0ZXN0IGNhc2UpLiBUbyBtYWtlIHN1
cmUgdGhhdCB0aGUgbmV3bHkKKyAgICAgICAgZW1wb3dlcmVkIEludDUyUmVwIGlzIGFjdHVhbGx5
IGNvcnJlY3QgLSBpbiBjYXNlIHdlIGVuZCB1cCB1c2luZyBpdCBvbiBwYXRocyBvdGhlciB0aGFu
CisgICAgICAgIEZvcmNlT1NSRXhpdCAtIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhbiBpbnRlcm5h
bCBpbnRyaW5zaWMgY2FsbGVkIGZpYXRJbnQ1MigpIHRoYXQgZm9yY2VzCisgICAgICAgIHVzIHRv
IGF0dGVtcHQgSW50NTIgY29udmVyc2lvbiBvbiB0aGUgaW5wdXQuIFRoaXMgcGF0Y2ggYWRkcyBh
IGJ1bmNoIG9mIHRlc3RzIHRoYXQgc3RyZXNzCisgICAgICAgIHRoaXMgaW50cmluc2ljLiBUaGlz
IG1lYW5zIHRoYXQgd2UncmUgbm93IHN0cmVzc2luZyBJbnQ1MlJlcCBtb3JlIHNvIHRoYW4gZXZl
ciBiZWZvcmUhCisgICAgICAgIAorICAgICAgICBOb3RlIHRoYXQgaXQgd291bGQgc3RpbGwgYmUg
YSBidWcgZm9yIHByZWRpY3Rpb24gcHJvcGFnYXRpb24gdG8gZXZlciBjYXVzZSB1cyB0byBjcmVh
dGUgYW4KKyAgICAgICAgSW50NTJSZXAgbm9kZSBmb3IgYSBub24tSW50MzIgaW5wdXQuIEJ1dCwg
dGhpcyB3aWxsIG5vdyBiZSBhIHBlcmZvcm1hbmNlIGJ1ZywgcmF0aGVyIHRoYW4KKyAgICAgICAg
YSBjcmFzaCBidWcuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaXhUeXBlRm9yUmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyk6CisgICAgICAgICog
ZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAg
ICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQ
aGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjppbmplY3RU
eXBlQ29udmVyc2lvbnNGb3JFZGdlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6aXNNYWNoaW5lSW50Q29uc3RhbnQpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNNYWNoaW5lSW50Q29uc3Rh
bnQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6
b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb252ZXJ0TWFjaGluZUludCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVEb3VibGVSZXBNYWNo
aW5lSW50KToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR1VzZUtpbmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5cGVG
aWx0ZXJGb3IpOgorICAgICAgICAoSlNDOjpERkc6OmlzTnVtZXJpY2FsKToKKyAgICAgICAgKEpT
Qzo6REZHOjppc0RvdWJsZSk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAq
IGZ0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUlu
dDUyUmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6ZG91YmxlVG9JbnQz
Mik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmpzVmFsdWVUb0RvdWJsZSk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmpzVmFsdWVUb1N0cmljdEludDUy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6ZG91YmxlVG9TdHJpY3RJbnQ1
Mik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZU1hY2hpbmVJbnQpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVEb3VibGVSZXBNYWNoaW5l
SW50KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGpzYy5jcHA6
CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1bmN0
aW9uSWRlbnRpdHkpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjp0cnlDb252ZXJ0VG9JbnQ1Mik6CisgICAgICAgIChKU0M6Omlz
SW50NTIpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc01hY2hpbmVJbnQpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9kZWFkLWZpYXQtZG91YmxlLXRvLWludDUyLXRoZW4tZXhpdC1ub3QtaW50
NTIuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZGVh
ZC1maWF0LWRvdWJsZS10by1pbnQ1Mi5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9kZWFkLWZpYXQtaW50MzItdG8taW50NTIuanM6IEFkZGVkLgorICAg
ICAgICAoZm9vKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZGVhZC1maWF0LXZhbHVlLXRvLWlu
dDUyLWRvdWJsZS1wYXRoLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChiYXIp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9kZWFkLWZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1l
eGl0LW5vdC1kb3VibGUuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKGJhcik6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2RlYWQtZmlhdC12YWx1ZS10by1pbnQ1Mi10aGVuLWV4
aXQtbm90LWludDUyLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChiYXIpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9kZWFkLWZpYXQtdmFsdWUtdG8taW50NTIuanM6IEFkZGVk
LgorICAgICAgICAoZm9vKToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2ZpYXQtZG91YmxlLXRvLWludDUyLXRoZW4tZXhpdC1ub3QtaW50NTIuanM6IEFkZGVkLgorICAg
ICAgICAoZm9vKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZmlhdC1kb3VibGUtdG8taW50NTIt
dGhlbi1mYWlsLXRvLWZvbGQuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvZmlhdC1kb3VibGUtdG8taW50NTItdGhlbi1mb2xkLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2ZpYXQtZG91YmxlLXRvLWludDUy
LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2ZpYXQt
aW50MzItdG8taW50NTIuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvZmlhdC12YWx1ZS10by1pbnQ1Mi1kb3VibGUtcGF0aC5qczogQWRkZWQuCisgICAg
ICAgIChmb28pOgorICAgICAgICAoYmFyKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZmlhdC12
YWx1ZS10by1pbnQ1Mi10aGVuLWV4aXQtbm90LWRvdWJsZS5qczogQWRkZWQuCisgICAgICAgIChm
b28pOgorICAgICAgICAoYmFyKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZmlhdC12YWx1ZS10
by1pbnQ1Mi10aGVuLWV4aXQtbm90LWludDUyLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgIChiYXIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9maWF0LXZhbHVlLXRvLWludDUy
LXRoZW4tZmFpbC10by1mb2xkLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL2ZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1mb2xkLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2ZpYXQtdmFsdWUtdG8taW50NTIu
anM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2ludDUyLWZvcmNlLW9zci1leGl0LXBhdGguanM6IEFkZGVkLgorICAgICAgICAo
Zm9vKToKKwogMjAxNC0wNy0xNCAgQmVhciBUcmF2aXMgIDxiZXRyYXZpc0BhZG9iZS5jb20+CiAK
ICAgICAgICAgW0ZlYXR1cmUgUXVlcmllc10gRW5hYmxlIEZlYXR1cmUgUXVlcmllcyBvbiBNYWMK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDYgKzMzOSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShFeGVjU3RhdGUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMihFeGVjU3Rh
dGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWZmZWN0
ZnVsNDIoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbklkZW50aXR5KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIoRXhlY1N0YXRlKik7CiAKICNpZiBFTkFC
TEUoU0FNUExJTkdfRkxBR1MpCkBAIC00NzksNiArNDgwLDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJPU1JF
eGl0IiksIDAsIGZ1bmN0aW9uVW5kZWZpbmVkMSwgT1NSRXhpdEludHJpbnNpYywgRG9udEVudW0g
fCBKU0M6OkZ1bmN0aW9uKTsKICAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRo
aXMsIElkZW50aWZpZXIoJnZtLCAiaXNGaW5hbFRpZXIiKSwgMCwgZnVuY3Rpb25GYWxzZTIsIElz
RmluYWxUaWVySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOwogICAgICAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJwcmVkaWN0
SW50MzIiKSwgMCwgZnVuY3Rpb25VbmRlZmluZWQyLCBTZXRJbnQzMkhlYXBQcmVkaWN0aW9uSW50
cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rpb24pOworICAgICAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcigmdm0sICJmaWF0SW50NTIiKSwgMCwgZnVu
Y3Rpb25JZGVudGl0eSwgRmlhdEludDUySW50cmluc2ljLCBEb250RW51bSB8IEpTQzo6RnVuY3Rp
b24pOwogICAgICAgICAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJlZmZlY3RmdWw0MiIsIGZ1
bmN0aW9uRWZmZWN0ZnVsNDIsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm1ha2VNYXNx
dWVyYWRlciIsIGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyLCAwKTsKQEAgLTkwMiw2ICs5MDQsOCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRmFsCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVW5kZWZpbmVkMShFeGVjU3RhdGUqKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7IH0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25VbmRlZmluZWQyKEV4ZWNTdGF0ZSopIHsgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsgfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uSWRlbnRpdHkoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZXhlYy0+YXJndW1lbnQoMCkpOyB9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25FZmZlY3RmdWw0MihFeGVjU3RhdGUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoNDIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE3MTAw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDEwICszMzcsOCBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIElu
dDUyUmVwOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBJbnQzMlVzZSk7Ci0gICAgICAgIAogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlz
SW50MzIoKSkgeworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNNYWNoaW5lSW50KCkpIHsK
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC0xOTA0LDYgKzE5MDIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIExhc3RO
b2RlVHlwZToKICAgICBjYXNlIEFyaXRoSU11bDoKKyAgICBjYXNlIEZpYXRJbnQ1MjoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3Bw
CShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxOSArOTUsMzEgQEAgdm9pZCBBYnN0
cmFjdFZhbHVlOjpmaXhUeXBlRm9yUmVwcmVzZW50YQogICAgICAgICAgICAgbV90eXBlICY9IH5T
cGVjTWFjaGluZUludDsKICAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsK
ICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghKG1fdHlwZSAmIH5TcGVjRnVsbERv
dWJsZSkpOworICAgICAgICBpZiAobV90eXBlICYgflNwZWNGdWxsRG91YmxlKSB7CisgICAgICAg
ICAgICBzdGFydENyYXNoaW5nKCk7CisgICAgICAgICAgICBkYXRhTG9nKCJBYnN0cmFjdCB2YWx1
ZSAiLCAqdGhpcywgIiBmb3IgZG91YmxlIG5vZGUgaGFzIHR5cGUgb3V0c2lkZSBTcGVjRnVsbERv
dWJsZS5cbiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAocmVwcmVzZW50YXRpb24gPT0gTm9kZVJlc3VsdEludDUyKSB7CiAgICAgICAgIGlmIChtX3R5
cGUgJiBTcGVjSW50NTJBc0RvdWJsZSkgewogICAgICAgICAgICAgbV90eXBlICY9IH5TcGVjSW50
NTJBc0RvdWJsZTsKICAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTI7CiAgICAgICAgIH0K
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX3R5cGUgJiB+U3BlY01hY2hpbmVJbnQpKTsKKyAg
ICAgICAgaWYgKG1fdHlwZSAmIH5TcGVjTWFjaGluZUludCkgeworICAgICAgICAgICAgc3RhcnRD
cmFzaGluZygpOworICAgICAgICAgICAgZGF0YUxvZygiQWJzdHJhY3QgdmFsdWUgIiwgKnRoaXMs
ICIgZm9yIGludDUyIG5vZGUgaGFzIHR5cGUgb3V0c2lkZSBTcGVjTWFjaGluZUludC5cbiIpOwor
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
IChtX3R5cGUgJiBTcGVjSW50NTIpIHsKICAgICAgICAgICAgIG1fdHlwZSAmPSB+U3BlY0ludDUy
OwogICAgICAgICAgICAgbV90eXBlIHw9IFNwZWNJbnQ1MkFzRG91YmxlOwogICAgICAgICB9Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCEobV90eXBlICYgflNwZWNCeXRlY29kZVRvcCkpOworICAg
ICAgICBpZiAobV90eXBlICYgflNwZWNCeXRlY29kZVRvcCkgeworICAgICAgICAgICAgc3RhcnRD
cmFzaGluZygpOworICAgICAgICAgICAgZGF0YUxvZygiQWJzdHJhY3QgdmFsdWUgIiwgKnRoaXMs
ICIgZm9yIHZhbHVlIG5vZGUgaGFzIHR5cGUgb3V0c2lkZSBTcGVjQnl0ZWNvZGVUb3AuXG4iKTsK
KyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgY2hlY2tD
b25zaXN0ZW5jeSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQ5LDYg
KzE3NDksMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKGludAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgRmlhdEludDUySW50
cmluc2ljOiB7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KTsKKyAgICAg
ICAgaWYgKGVuYWJsZUludDUyKCkpCisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJl
c3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEZpYXRJbnQ1MiwgZ2V0KG9wZXJhbmQpKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCks
IGdldChvcGVyYW5kKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAgICAgCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNzEwMDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTMyLDYgKzEzMiw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBCb29s
ZWFuVG9OdW1iZXI6CisgICAgY2FzZSBGaWF0SW50NTI6CiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgY2FzZSBNb3ZIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTIsNiArOTky
LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAg
IGNhc2UgRmlhdEludDUyOiB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlbmFibGVJbnQ1
MigpKTsKKyAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CisgICAgICAgICAg
ICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2Rl
LT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBQaGk6CiAg
ICAgICAgIGNhc2UgVXBzaWxvbjoKQEAgLTEwMTEsNyArMTAxOSw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAgICBjYXNlIEhhcmRQaGFudG9tOiAvLyBIYXJk
UGhhbnRvbSB3b3VsZCBiZSB0cml2aWFsIHRvIGhhbmRsZSBidXQgYW55d2F5IHdlIGFzc2VydCB0
aGF0IHdlIHdvbid0IHNlZSBpdCBoZXJlIHlldC4KICAgICAgICAgY2FzZSBEb3VibGVSZXA6Ci0g
ICAgICAgIGNhc2UgSW50NTJSZXA6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgICAgIGNh
c2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKQEAgLTE5MDks
MTMgKzE5MTYsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAoZWRnZS51
c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgICAgIGNhc2UgRG91
YmxlUmVwUmVhbFVzZTogeworICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CisgICAgICAg
IGNhc2UgRG91YmxlUmVwTWFjaGluZUludFVzZTogewogICAgICAgICAgICAgaWYgKGVkZ2UtPmhh
c0RvdWJsZVJlc3VsdCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBhZGRSZXF1aXJlZFBoYW50b20oZWRnZS5ub2RlKCkpOwogCi0gICAgICAgICAg
ICBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkgeworICAgICAgICAgICAgaWYgKGVkZ2UtPm9w
KCkgPT0gSlNDb25zdGFudCAmJiBtX2dyYXBoLmlzTnVtYmVyQ29uc3RhbnQoZWRnZS5ub2RlKCkp
KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNCeXRlY29kZURvdWJsZSwg
RG91YmxlQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZv
KG1fZ3JhcGguY29uc3RhbnRSZWdpc3RlckZvckNvbnN0YW50KAorICAgICAgICAgICAgICAgICAg
ICAgICAganNEb3VibGVOdW1iZXIobV9ncmFwaC52YWx1ZU9mTnVtYmVyQ29uc3RhbnQoZWRnZS5u
b2RlKCkpKSkpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQo
KSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50NTJBc0RvdWJsZSwg
RG91YmxlUmVwLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5u
b2RlKCksIEludDUyUmVwVXNlKSk7CkBAIC0xOTM1LDI3ICsxOTQ4LDIyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGFkZFJlcXVpcmVkUGhhbnRvbShlZGdlLm5vZGUoKSk7
CiAKLSAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSkgewotICAgICAgICAg
ICAgICAgIC8vIFRoaXMgd2lsbCBuZXZlciBoYXBwZW4uCi0gICAgICAgICAgICAgICAgc3RhcnRD
cmFzaGluZygpOwotICAgICAgICAgICAgICAgIGRhdGFMb2coIkZvdW5kIGFuIEludDUyUmVwVXNl
IHRvIGEgZG91YmxlIHJlc3VsdDogIiwgbm9kZSwgIiAtPiAiLCBlZGdlLCAiXG4iKTsKLSAgICAg
ICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgaWYgKGVkZ2UtPm9wKCkgPT0gSlNDb25zdGFu
dCAmJiBtX2dyYXBoLmlzTWFjaGluZUludENvbnN0YW50KGVkZ2Uubm9kZSgpKSkgeworICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTWFjaGluZUludCwgSW50NTJDb25zdGFudCwg
bm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBPcEluZm8oZWRnZS0+Y29uc3RhbnRO
dW1iZXIoKSkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQo
KSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTWFjaGluZUludCwgSW50
NTJSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUo
KSwgRG91YmxlUmVwTWFjaGluZUludFVzZSkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChlZGdl
LT5zaG91bGRTcGVjdWxhdGVJbnQzMkZvckFyaXRobWV0aWMoKSkgewogICAgICAgICAgICAgICAg
IHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIsIEludDUyUmVwLCBub2RlLT5vcmlnaW4sCiAgICAg
ICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDMyVXNlKSk7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgb25seSBoZXJlIGZvciBkZWFs
aW5nIHdpdGggY29uc3RhbnRzLgotICAgICAgICAgICAgICAgIGlmIChlZGdlLT5vcCgpICE9IEpT
Q29uc3RhbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnRDcmFzaGluZygpOwotICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJGb3VuZCBhbiBJbnQ1MlJlcFVzZSBvbiBzb21ldGhpbmcg
dGhhdCBpcyBuZWl0aGVyIEludDMyIG5vciBhIGNvbnN0YW50OiAiLCBub2RlLCAiIC0+ICIsIGVk
Z2UsICJcbiIpOwotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKLSAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
LSAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNNYWNoaW5lSW50LCBJbnQ1
MkNvbnN0YW50LCBub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhlZGdl
LT5jb25zdGFudE51bWJlcigpKSk7CisgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjTWFjaGluZUludCwgSW50NTJSZXAsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAg
ICAgICAgRWRnZShlZGdlLm5vZGUoKSwgTWFjaGluZUludFVzZSkpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBlZGdlLnNldE5vZGUocmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiwxMCBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbm9kZS0+aXNOdW1iZXJDb25zdGFudChtX2Nv
ZGVCbG9jayk7CiAgICAgfQorICAgIGJvb2wgaXNNYWNoaW5lSW50Q29uc3RhbnQoTm9kZSogbm9k
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBub2RlLT5pc01hY2hpbmVJbnRDb25zdGFudChtX2Nv
ZGVCbG9jayk7CisgICAgfQogICAgIGJvb2wgaXNCb29sZWFuQ29uc3RhbnQoTm9kZSogbm9kZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBub2RlLT5pc0Jvb2xlYW5Db25zdGFudChtX2NvZGVCbG9j
ayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTcxMDAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU4Nyw2ICs1ODcsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICAgICAKKyAgICBib29sIGlzTWFjaGluZUludENvbnN0YW50KENvZGVCbG9jayog
Y29kZUJsb2NrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzQ29uc3RhbnQoKSAmJiB2YWx1ZU9m
SlNDb25zdGFudChjb2RlQmxvY2spLmlzTWFjaGluZUludCgpOworICAgIH0KKyAgICAKICAgICBi
b29sIGlzQm9vbGVhbkNvbnN0YW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGlzQ29uc3RhbnQoKSAmJiB2YWx1ZU9mSlNDb25zdGFudChjb2RlQmxvY2spLmlz
Qm9vbGVhbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
cmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKEludDUyUmVwLCBOb2RlUmVzdWx0SW50NTIpIFwKICAg
ICBtYWNybyhWYWx1ZVJlcCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAorICAgIC8qIEJvZ3VzIHR5
cGUgYXNzZXJ0aW5nIG5vZGUuIFVzZWZ1bCBmb3IgdGVzdGluZywgZGlzYXBwZWFycyBkdXJpbmcg
Rml4dXAuICovXAorICAgIG1hY3JvKEZpYXRJbnQ1MiwgTm9kZVJlc3VsdEpTKSBcCisgICAgXAog
ICAgIC8qIE5vZGVzIGZvciBhcml0aG1ldGljIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKEFy
aXRoQWRkLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgbWFjcm8oQXJpdGhTdWIsIE5vZGVSZXN1
bHROdW1iZXIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0NSw2ICsxMDQ1LDE5IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdGcm8KICAgICByZXR1cm4gSlNDOjpz
dHJpbmdGcm9tQ2hhckNvZGUoZXhlYywgb3AxKTsKIH0KIAoraW50NjRfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJsZVRvSW50NTIoRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKyAgICBpZiAoIXZhbHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
Ojpub3RJbnQ1MjsKKyAgICByZXR1cm4gdHJ5Q29udmVydFRvSW50NTIodmFsdWUuYXNEb3VibGUo
KSk7Cit9CisKK2ludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9J
bnQ1Mihkb3VibGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHRyeUNvbnZlcnRUb0ludDUyKHZhbHVl
KTsKK30KKwogc2l6ZV90IEpJVF9PUEVSQVRJT04gZGZnQ29udmVydEpTVmFsdWVUb0ludDMyKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsOSBAQCBjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkZpbmRTd2l0Y2hJCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blN3aXRjaFN0cmluZyhFeGVjU3RhdGUqLCBzaXplX3QgdGFibGVJbmRleCwgSlNTdHJpbmcqKTsK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlXcml0ZShFeGVjU3RhdGUqLCBWYXJp
YWJsZVdhdGNocG9pbnRTZXQqLCBFbmNvZGVkSlNWYWx1ZSk7CiAKK2ludDY0X3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Db252ZXJ0Qm94ZWREb3VibGVUb0ludDUyKEVuY29kZWRKU1ZhbHVlKTsK
K2ludDY0X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9JbnQ1Mihkb3Vi
bGUpOworCiAvLyBUaGVzZSBvcGVyYXRpb25zIGltcGxlbWVudCB0aGUgaW1wbGljaXRseSBjYWxs
ZWQgVG9JbnQzMiBhbmQgVG9Cb29sZWFuIGNvbnZlcnNpb25zIGZyb20gRVM1LgogLy8gVGhpcyBj
b252ZXJzaW9uIHJldHVybnMgYW4gaW50MzJfdCB3aXRoaW4gYSBzaXplX3Qgc3VjaCB0aGF0IHRo
ZSB2YWx1ZSBpcyB6ZXJvIGV4dGVuZGVkIHRvIGZpbGwgdGhlIHJlZ2lzdGVyLgogc2l6ZV90IEpJ
VF9PUEVSQVRJT04gZGZnQ29udmVydEpTVmFsdWVUb0ludDMyKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNiw2ICs1MTYsMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBGaWF0SW50NTI6IHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVuYWJsZUlu
dDUyKCkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNNYWNoaW5l
SW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBQdXRC
eVZhbEFsaWFzOgogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIEdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgpAQCAtNTM2LDggKzU0Miw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgICAgICBjYXNlIEhhcmRQaGFudG9tOgogICAgICAg
ICBjYXNlIERvdWJsZVJlcDoKLSAgICAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICAgICAgY2FzZSBW
YWx1ZVJlcDoKKyAgICAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICAgICAgY2FzZSBEb3VibGVDb25z
dGFudDoKICAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgogICAgICAgICBjYXNlIElkZW50aXR5
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJ
KHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBOb3RDZWxsVXNlOgogICAgICAgICBjYXNlIE90aGVyVXNlOgogICAgICAgICBjYXNl
IE1pc2NVc2U6CisgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAgICAgY2FzZSBEb3Vi
bGVSZXBNYWNoaW5lSW50VXNlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgS25vd25JbnQzMlVzZToKQEAgLTI1NCw2ICsyNTYsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAg
Y2FzZSBJbnQ1MlJlcDoKICAgICBjYXNlIEJvb2xlYW5Ub051bWJlcjoKKyAgICBjYXNlIEZpYXRJ
bnQ1MjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgIGNhc2UgR2V0QnlWYWw6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2MzMs
NiArNDYzMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVu
dGVyOgogICAgIGNhc2UgSW50NTJSZXA6CisgICAgY2FzZSBGaWF0SW50NTI6CiAgICAgY2FzZSBJ
bnQ1MkNvbnN0YW50OgogICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICBjYXNlIEFyaXRoSU11
bDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzNSwxMiArMjAz
NSw1MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgfQog
ICAgICAgICAKICAgICBjYXNlIEludDUyUmVwOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUludDMyT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgb3BlcmFuZCk7Ci0gICAgICAgIAotICAgICAgICBtX2ppdC5z
aWduRXh0ZW5kMzJUb1B0cihvcGVyYW5kLmdwcigpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAK
LSAgICAgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICAgICAg
c3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMlVz
ZTogeworICAgICAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVz
ZSwgb3BlcmFuZCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQz
MlRvUHRyKG9wZXJhbmQuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTWFjaGluZUlu
dFVzZTogeworICAgICAgICAgICAgR1BSUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGNvbnZlcnRNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLCByZXN1bHRHUFIpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBzdHJpY3RJbnQ1MlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IERvdWJsZVJlcE1hY2hpbmVJbnRVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgRlBSUmVnIHZh
bHVlRlBSID0gdmFsdWUuZnByKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEdQUlJlc3Vs
dCByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnREb3VibGVU
b0ludDUyLCByZXN1bHRHUFIsIHZhbHVlRlBSKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hp
bGQxKCksIFNwZWNJbnQ1MkFzRG91YmxlLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0
KAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHJlc3VsdEdQUiwKKyAg
ICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpub3RJ
bnQ1MikpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3RyaWN0SW50NTJSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTQ3
MjEsNiArNDc2MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2Fz
ZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgRmlhdEludDUyOgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00ODA1LDYg
KzQ4NDUsNjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Ymxlc3NCb29sZWFuKEdQUlJlZwogICAg
IG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCBncHIpOwogfQogCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb252ZXJ0TWFjaGluZUludChFZGdlIHZhbHVlRWRnZSwgR1BSUmVnIHJl
c3VsdEdQUikKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCB2YWx1ZUVkZ2UsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3By
KCk7CisgICAgCisgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SW50MzIgPQorICAgICAgICBtX2pp
dC5icmFuY2g2NChKSVRDb21waWxlcjo6QmVsb3csIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpOworICAgIAorICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHZhbHVl
R1BSLCByZXN1bHRHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CisgICAgCisgICAgbm90SW50MzIubGluaygmbV9qaXQpOworICAgIHNpbGVudFNwaWxsQWxs
UmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0
Qm94ZWREb3VibGVUb0ludDUyLCByZXN1bHRHUFIsIHZhbHVlR1BSKTsKKyAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisKKyAgICBERkdfVFlQRV9DSEVDSygKKyAgICAgICAg
SlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCB2YWx1ZUVkZ2UsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFz
RG91YmxlLAorICAgICAgICBtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpFcXVhbCwgcmVzdWx0R1BSLAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02
NChKU1ZhbHVlOjpub3RJbnQ1MikpKTsKKyAgICBkb25lLmxpbmsoJm1faml0KTsKK30KKwordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCit7CisgICAg
aWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIgfCBTcGVjSW50NTJBc0RvdWJsZSkp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAg
ICBjb252ZXJ0TWFjaGluZUludChlZGdlLCB0ZW1wLmdwcigpKTsKK30KKwordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlRG91YmxlUmVwTWFjaGluZUludChFZGdlIGVkZ2UpCit7CisgICAg
aWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50NTJBc0RvdWJsZSkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2Up
OworICAgIEZQUlJlZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOworICAgIAorICAgIEdQUlJlc3Vs
dCByZXN1bHQodGhpcyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICAKKyAgICBmbHVzaFJlZ2lzdGVycygpOworICAgIAorICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQ29udmVydERvdWJsZVRvSW50NTIsIHJlc3VsdEdQUiwgdmFsdWVGUFIpOworICAgIAorICAg
IERGR19UWVBFX0NIRUNLKAorICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjSW50NTJB
c0RvdWJsZSwKKyAgICAgICAgbV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICBKSVRDb21waWxl
cjo6RXF1YWwsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6bm90SW50NTIpKSk7Cit9CisKICNlbmRpZgogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MTQsOSArNDgx
NCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgY2Fz
ZSBOdW1iZXJVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU51bWJlcihlZGdlKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBzcGVjdWxhdGVNYWNoaW5lSW50
KGVkZ2UpOworICAgICAgICBicmVhazsKICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6CiAgICAg
ICAgIHNwZWN1bGF0ZURvdWJsZVJlYWwoZWRnZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RG91YmxlUmVwTWFjaGluZUludFVzZToKKyAgICAgICAgc3BlY3VsYXRlRG91YmxlUmVwTWFjaGlu
ZUludChlZGdlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAg
ICBzcGVjdWxhdGVCb29sZWFuKGVkZ2UpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE3MTAw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTIzMSw2ICsxMjMxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQu
emVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CiAgICAg
ICAgIHJldHVybiBjYWxsOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFFfSklUT3BlcmF0aW9uX0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgdmFs
dWUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyh2YWx1ZSk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9Cisg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihRX0pJVE9wZXJhdGlvbl9EIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHModmFsdWUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJp
bmdJbXBsKiB1aWQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cih1aWQpKTsKQEAgLTIyMzQsOSArMjI0NCwxMyBAQCBwdWJsaWM6
CiAgICAgLy8gSGVscGVycyBmb3IgcGVyZm9ybWluZyB0eXBlIGNoZWNrcyBvbiBhbiBlZGdlIHN0
b3JlZCBpbiB0aGUgZ2l2ZW4gcmVnaXN0ZXJzLgogICAgIGJvb2wgbmVlZHNUeXBlQ2hlY2soRWRn
ZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gpIHsgcmV0dXJuIG1faW50
ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSwgdHlwZXNQYXNzZWRUaHJvdWdoKTsgfQogICAg
IHZvaWQgdHlwZUNoZWNrKEpTVmFsdWVTb3VyY2UsIEVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5cGVz
UGFzc2VkVGhyb3VnaCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCk7Ci0KKyAgICAK
ICAgICB2b2lkIHNwZWN1bGF0ZUludDMyKEVkZ2UpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
dm9pZCBjb252ZXJ0TWFjaGluZUludChFZGdlLCBHUFJSZWcgcmVzdWx0R1BSKTsKICAgICB2b2lk
IHNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBN
YWNoaW5lSW50KEVkZ2UpOworI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCBzcGVj
dWxhdGVOdW1iZXIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZWFsKEVkZ2UpOwog
ICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAvLyBhcyBhbiBleGN1c2Ugbm90IHRvIGZvbGQuIFRoZSBvbmx5IHRo
aW5nIHdlIHdvdWxkIG5lZWQgaXMgYSBJbnQ1MlJlcEludDMyVXNlIGtpbmQuCiAgICAgICAgICAg
ICBib29sIGhhZEludDMyQ2hlY2sgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX25vZGUtPm9w
KCkgPT0gSW50NTJSZXApIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gSW50MzJVc2UpOworICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSAhPSBJbnQzMlVzZSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgaGFkSW50MzJDaGVjayA9IHRydWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKTsgOyBu
b2RlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpKSB7CkBAIC0yMTEsNyArMjEyLDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkp
IHsKICAgICAgICAgICAgICAgICBjYXNlIEludDUyUmVwOgotICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IEludDMyVXNlKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSAhPSBJbnQzMlVzZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBoYWRJbnQzMkNo
ZWNrID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCShy
ZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBVc2UKICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICBvdXQu
cHJpbnQoIkludDUyUmVwIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWFjaGluZUludFVz
ZToKKyAgICAgICAgb3V0LnByaW50KCJNYWNoaW5lSW50Iik7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTnVtYmVyVXNlOgogICAgICAgICBvdXQucHJpbnQoIk51bWJlciIpOwogICAgICAgICBi
cmVhazsKQEAgLTU4LDYgKzYxLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIFVzZQogICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgb3V0LnByaW50KCJE
b3VibGVSZXBSZWFsIik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRG91YmxlUmVwTWFjaGlu
ZUludFVzZToKKyAgICAgICAgb3V0LnByaW50KCJEb3VibGVSZXBNYWNoaW5lSW50Iik7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgb3V0LnByaW50KCJCb29s
ZWFuIik7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdVc2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
c2VLaW5kLmgJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSwxMSBAQCBlbnVtIFVzZUtp
bmQgewogICAgIEludDMyVXNlLAogICAgIEtub3duSW50MzJVc2UsCiAgICAgSW50NTJSZXBVc2Us
CisgICAgTWFjaGluZUludFVzZSwKICAgICBOdW1iZXJVc2UsCiAgICAgRG91YmxlUmVwVXNlLAog
ICAgIERvdWJsZVJlcFJlYWxVc2UsCisgICAgRG91YmxlUmVwTWFjaGluZUludFVzZSwKICAgICBC
b29sZWFuVXNlLAogICAgIENlbGxVc2UsCiAgICAgS25vd25DZWxsVXNlLApAQCAtNzAsMTIgKzcy
LDE2IEBAIGlubGluZSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRm9yKFVzZUsKICAgICAgICAg
cmV0dXJuIFNwZWNJbnQzMjsKICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgICAgICByZXR1cm4g
U3BlY01hY2hpbmVJbnQ7CisgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICByZXR1cm4g
U3BlY0ludDMyIHwgU3BlY0ludDUyQXNEb3VibGU7CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAgICAg
ICAgIHJldHVybiBTcGVjQnl0ZWNvZGVOdW1iZXI7CiAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAg
ICAgICAgIHJldHVybiBTcGVjRnVsbERvdWJsZTsKICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6
CiAgICAgICAgIHJldHVybiBTcGVjRG91YmxlUmVhbDsKKyAgICBjYXNlIERvdWJsZVJlcE1hY2hp
bmVJbnRVc2U6CisgICAgICAgIHJldHVybiBTcGVjSW50NTJBc0RvdWJsZTsKICAgICBjYXNlIEJv
b2xlYW5Vc2U6CiAgICAgICAgIHJldHVybiBTcGVjQm9vbGVhbjsKICAgICBjYXNlIENlbGxVc2U6
CkBAIC0xMzksNiArMTQ1LDggQEAgaW5saW5lIGJvb2wgaXNOdW1lcmljYWwoVXNlS2luZCBraW5k
KQogICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgY2Fz
ZSBEb3VibGVSZXBSZWFsVXNlOgorICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICBjYXNlIERv
dWJsZVJlcE1hY2hpbmVJbnRVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1MCw2ICsxNTgsNyBAQCBpbmxpbmUgYm9vbCBp
c0RvdWJsZShVc2VLaW5kIGtpbmQpCiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CiAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgorICAgIGNhc2UgRG91YmxlUmVw
TWFjaGluZUludFVzZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxp
ZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxp
ZGF0ZS5jcHAJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbV9teVJlZkNvdW50
cy5maW5kKGVkZ2Uubm9kZSgpKS0+dmFsdWUrKzsKICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlLCBlZGdlKSwgZWRnZS0+aGFzRG91YmxlUmVz
dWx0KCkgPT0gKGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSB8fCBlZGdlLnVzZUtpbmQo
KSA9PSBEb3VibGVSZXBSZWFsVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChu
b2RlLCBlZGdlKSwgZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkgPT0gKGVkZ2UudXNlS2luZCgpID09
IERvdWJsZVJlcFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBSZWFsVXNlIHx8IGVk
Z2UudXNlS2luZCgpID09IERvdWJsZVJlcE1hY2hpbmVJbnRVc2UpKTsKICAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpID09IChl
ZGdlLnVzZUtpbmQoKSA9PSBJbnQ1MlJlcFVzZSkpOwogICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24g
MTcxMDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNiArMzc5LDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgTWlzY1VzZToKICAgICAg
ICAgICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTm90
U3RyaW5nVmFyVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgTWFjaGluZUludFVzZToKKyAgICAg
ICAgICAgICAgICBjYXNlIERvdWJsZVJlcE1hY2hpbmVJbnRVc2U6CiAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50
cmluc2ljUmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5
KQpAQCAtNzksNiArNzksOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oUF9KSVRPcGVyYXRpb25fRVN0UFMsIGZ1bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwg
aW50UHRyLCBpbnRQdHIsIGludFB0cikpIFwKICAgICBtYWNybyhQX0pJVE9wZXJhdGlvbl9FU3RT
UywgZnVuY3Rpb25UeXBlKGludFB0ciwgaW50UHRyLCBpbnRQdHIsIGludFB0ciwgaW50UHRyKSkg
XAogICAgIG1hY3JvKFBfSklUT3BlcmF0aW9uX0VTdFosIGZ1bmN0aW9uVHlwZShpbnRQdHIsIGlu
dFB0ciwgaW50UHRyLCBpbnQzMikpIFwKKyAgICBtYWNybyhRX0pJVE9wZXJhdGlvbl9ELCBmdW5j
dGlvblR5cGUoaW50NjQsIGRvdWJsZVR5cGUpKSBcCisgICAgbWFjcm8oUV9KSVRPcGVyYXRpb25f
SiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnQ2NCkpIFwKICAgICBtYWNybyhTX0pJVE9wZXJhdGlv
bl9FSiwgZnVuY3Rpb25UeXBlKGludFB0ciwgaW50UHRyLCBpbnQ2NCkpIFwKICAgICBtYWNybyhT
X0pJVE9wZXJhdGlvbl9FSkosIGZ1bmN0aW9uVHlwZShpbnRQdHIsIGludFB0ciwgaW50NjQsIGlu
dDY0KSkgXAogICAgIG1hY3JvKFNfSklUT3BlcmF0aW9uX0osIGZ1bmN0aW9uVHlwZShpbnRQdHIs
IGludDY0KSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzAsNyArNzcw
LDI2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlSW50NTJSZXAoKQogICAgIHsK
LSAgICAgICAgc2V0U3RyaWN0SW50NTIobV9vdXQuc2lnbkV4dChsb3dJbnQzMihtX25vZGUtPmNo
aWxkMSgpKSwgbV9vdXQuaW50NjQpKTsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICAgICAgc2V0U3Ry
aWN0SW50NTIobV9vdXQuc2lnbkV4dChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQu
aW50NjQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBzZXRTdHJpY3RJbnQ1MigKKyAgICAgICAgICAg
ICAgICBqc1ZhbHVlVG9TdHJpY3RJbnQ1MigKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5j
aGlsZDEoKSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgc2V0U3RyaWN0SW50NTIoCisg
ICAgICAgICAgICAgICAgZG91YmxlVG9TdHJpY3RJbnQ1MigKKyAgICAgICAgICAgICAgICAgICAg
bV9ub2RlLT5jaGlsZDEoKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAg
ICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKCkKQEAgLTQ2NDAsOSArNDY1OSw2IEBAIHByaXZh
dGU6CiAgICAgCiAgICAgTFZhbHVlIGRvdWJsZVRvSW50MzIoTFZhbHVlIGRvdWJsZVZhbHVlLCBk
b3VibGUgbG93LCBkb3VibGUgaGlnaCwgYm9vbCBpc1NpZ25lZCA9IHRydWUpCiAgICAgewotICAg
ICAgICAvLyBGSVhNRTogT3B0aW1pemUgZG91YmxlLXRvLWludCBjb252ZXJzaW9ucy4KLSAgICAg
ICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzE0OTM4NDY1PgotICAgICAgICAKICAgICAgICAgTEJhc2lj
QmxvY2sgZ3JlYXRFbm91Z2ggPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoImRvdWJsZVRvSW50MzIg
Z3JlYXRFbm91Z2giKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIHdpdGhpblJhbmdlID0gRlRMX05F
V19CTE9DSyhtX291dCwgKCJkb3VibGVUb0ludDMyIHdpdGhpblJhbmdlIikpOwogICAgICAgICBM
QmFzaWNCbG9jayBzbG93UGF0aCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiZG91YmxlVG9JbnQz
MiBzbG93UGF0aCIpKTsKQEAgLTUwOTYsOSArNTExMiw5IEBAIHByaXZhdGU6CiAgICAgfQogICAg
IExWYWx1ZSBqc1ZhbHVlVG9Eb3VibGUoRWRnZSBlZGdlLCBMVmFsdWUgYm94ZWRWYWx1ZSkKICAg
ICB7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGludENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
IkRvdWJsZVJlcCB1bmJveGluZyBpbnQgY2FzZSIpKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgZG91
YmxlQ2FzZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiRG91YmxlUmVwIHVuYm94aW5nIGRvdWJs
ZSBjYXNlIikpOwotICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIkRvdWJsZVJlcCB1bmJveGluZyBjb250aW51YXRpb24iKSk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGludENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoImpzVmFsdWVUb0Rv
dWJsZSB1bmJveGluZyBpbnQgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2Fz
ZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgianNWYWx1ZVRvRG91YmxlIHVuYm94aW5nIGRvdWJs
ZSBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoImpzVmFsdWVUb0RvdWJsZSB1bmJveGluZyBjb250aW51YXRpb24iKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgTFZhbHVlIGlzTm90SW50MzI7CiAgICAgICAgIGlmICghbV9p
bnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIpKQpAQCAtNTEyOCw2ICs1
MTQ0LDU0IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX291dC5waGkobV9vdXQuZG91Ymxl
VHlwZSwgaW50VG9Eb3VibGUsIHVuYm94ZWREb3VibGUpOwogICAgIH0KICAgICAKKyAgICBMVmFs
dWUganNWYWx1ZVRvU3RyaWN0SW50NTIoRWRnZSBlZGdlLCBMVmFsdWUgYm94ZWRWYWx1ZSkKKyAg
ICB7CisgICAgICAgIExCYXNpY0Jsb2NrIGludENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
ImpzVmFsdWVUb0ludDUyIHVuYm94aW5nIGludCBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9j
ayBkb3VibGVDYXNlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJqc1ZhbHVlVG9JbnQ1MiB1bmJv
eGluZyBkb3VibGUgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJqc1ZhbHVlVG9JbnQ1MiB1bmJveGluZyBjb250aW51YXRp
b24iKSk7CisgICAgICAgICAgICAKKyAgICAgICAgTFZhbHVlIGlzTm90SW50MzI7CisgICAgICAg
IGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIpKQorICAg
ICAgICAgICAgaXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xlYW5GYWxzZTsKKyAgICAgICAgZWxzZSBp
ZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSwgflNwZWNJbnQzMikpCisgICAg
ICAgICAgICBpc05vdEludDMyID0gbV9vdXQuYm9vbGVhblRydWU7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGlzTm90SW50MzIgPSB0aGlzLT5pc05vdEludDMyKGJveGVkVmFsdWUpOworICAg
ICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMiwgdW5zdXJlKGRvdWJsZUNhc2UpLCB1bnN1cmUo
aW50Q2FzZSkpOworICAgICAgICAgICAgCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oaW50Q2FzZSwgZG91YmxlQ2FzZSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgaW50VG9JbnQ1MiA9IG1fb3V0LmFuY2hvcigKKyAgICAgICAgICAg
IG1fb3V0LnNpZ25FeHQodW5ib3hJbnQzMihib3hlZFZhbHVlKSwgbV9vdXQuaW50NjQpKTsKKyAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIAorICAgICAg
ICBMVmFsdWUgcG9zc2libGVSZXN1bHQgPSBtX291dC5jYWxsKAorICAgICAgICAgICAgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJsZVRvSW50NTIpLCBib3hlZFZhbHVl
KTsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCisgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoYm94
ZWRWYWx1ZSksIGVkZ2UsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlLAorICAgICAgICAg
ICAgbV9vdXQuZXF1YWwocG9zc2libGVSZXN1bHQsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
bm90SW50NTIpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZG91Ymxl
VG9JbnQ1MiA9IG1fb3V0LmFuY2hvcihwb3NzaWJsZVJlc3VsdCk7CisgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gbV9v
dXQucGhpKG1fb3V0LmludDY0LCBpbnRUb0ludDUyLCBkb3VibGVUb0ludDUyKTsKKyAgICB9Cisg
ICAgCisgICAgTFZhbHVlIGRvdWJsZVRvU3RyaWN0SW50NTIoRWRnZSBlZGdlLCBMVmFsdWUgdmFs
dWUpCisgICAgeworICAgICAgICBMVmFsdWUgcG9zc2libGVSZXN1bHQgPSBtX291dC5jYWxsKAor
ICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnREb3VibGVUb0ludDUy
KSwgdmFsdWUpOworICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgIGRvdWJsZVZh
bHVlKHZhbHVlKSwgZWRnZSwgU3BlY0ludDUyQXNEb3VibGUsCisgICAgICAgICAgICBtX291dC5l
cXVhbChwb3NzaWJsZVJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpub3RJbnQ1Mikp
KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBwb3NzaWJsZVJlc3VsdDsKKyAgICB9CisgICAg
CiAgICAgTFZhbHVlIGlzTnVtYmVyKExWYWx1ZSBqc1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGlzTm90Q2VsbE9yTWlzYyhqc1ZhbHVlKTsKQEAgLTUyMTIsNiArNTI3Niw5IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgS25vd25DZWxsVXNlOgogICAgICAgICAgICAgQVNTRVJUKCFtX2lu
dGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVNYWNoaW5lSW50
KGVkZ2UpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT2JqZWN0VXNlOgogICAg
ICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01
MjM5LDYgKzUzMDYsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxVc2U6
CiAgICAgICAgICAgICBzcGVjdWxhdGVEb3VibGVSZWFsKGVkZ2UpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRG91YmxlUmVwTWFjaGluZUludFVzZToKKyAgICAgICAgICAgIHNw
ZWN1bGF0ZURvdWJsZVJlcE1hY2hpbmVJbnQoZWRnZSk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdl
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTI3NSw2ICs1MzQ1LDE0IEBAIHByaXZhdGU6CiAg
ICAgICAgIGxvd0NlbGwoZWRnZSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc3BlY3VsYXRlTWFj
aGluZUludChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVl
ZHNUeXBlQ2hlY2soZWRnZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAg
ICBqc1ZhbHVlVG9TdHJpY3RJbnQ1MihlZGdlLCBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbikpOworICAgIH0KKyAgICAKICAgICBMVmFsdWUgaXNPYmplY3QoTFZhbHVl
IGNlbGwpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQubm90RXF1YWwoCkBAIC01NTE1LDYg
KzU1OTMsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JV
bm9yZGVyZWQodmFsdWUsIHZhbHVlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc3BlY3VsYXRl
RG91YmxlUmVwTWFjaGluZUludChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBpZiAoIW1faW50
ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIAorICAgICAgICBkb3VibGVUb1N0cmljdEludDUyKGVkZ2UsIGxvd0RvdWJsZShlZGdlKSk7
CisgICAgfQorICAgIAogICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihFZGdlIGVkZ2UpCiAgICAg
ewogICAgICAgICBsb3dCb29sZWFuKGVkZ2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3
IEBAIGV4dGVybiAiQyIgewogICAgIE86IEpTT2JqZWN0KgogICAgIFA6IHBvaW50ZXIgKGNoYXIq
KQogICAgIFBjOiBJbnN0cnVjdGlvbiogaS5lLiBieXRlY29kZSBQQworICAgIFE6IGludDY0X3QK
ICAgICBSOiBSZWdpc3RlcgogICAgIFM6IHNpemVfdAogICAgIFNwcnQ6IFNsb3dQYXRoUmV0dXJu
VHlwZQpAQCAtMTMyLDYgKzEzMyw4IEBAIHR5cGVkZWYgZG91YmxlIEpJVF9PUEVSQVRJT04gKCpE
X0pJVE9wZXIKIHR5cGVkZWYgZG91YmxlIEpJVF9PUEVSQVRJT04gKCpEX0pJVE9wZXJhdGlvbl9E
RCkoZG91YmxlLCBkb3VibGUpOwogdHlwZWRlZiBkb3VibGUgSklUX09QRVJBVElPTiAoKkRfSklU
T3BlcmF0aW9uX1paKShpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgZG91YmxlIEpJVF9PUEVS
QVRJT04gKCpEX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwor
dHlwZWRlZiBpbnQ2NF90IEpJVF9PUEVSQVRJT04oKlFfSklUT3BlcmF0aW9uX0opKEVuY29kZWRK
U1ZhbHVlKTsKK3R5cGVkZWYgaW50NjRfdCBKSVRfT1BFUkFUSU9OKCpRX0pJVE9wZXJhdGlvbl9E
KShkb3VibGUpOwogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJT04gKCpaX0pJVE9wZXJhdGlv
bl9EKShkb3VibGUpOwogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJT04gKCpaX0pJVE9wZXJh
dGlvbl9FKShFeGVjU3RhdGUqKTsKIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJ
VE9wZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHJldmlzaW9uIDE3MTAwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxMSArNTYsMTMgQEAgZW51bSBJbnRyaW5zaWMgewogICAgIEFycmF5SXRlcmF0
b3JOZXh0S2V5SW50cmluc2ljLAogICAgIEFycmF5SXRlcmF0b3JOZXh0R2VuZXJpY0ludHJpbnNp
YywKICAgICAKLSAgICAvLyBEZWJ1Z2dpbmcgaW50cmluc2ljcworICAgIC8vIERlYnVnZ2luZyBp
bnRyaW5zaWNzLiBUaGVzZSBhcmUgbWVhbnQgdG8gYmUgdXNlZCBhcyB0ZXN0aW5nIGhhY2tzIHdp
dGhpbgorICAgIC8vIGpzYy5jcHAgYW5kIHNob3VsZCBuZXZlciBiZSBleHBvc2VkIHRvIHVzZXJz
LgogICAgIERGR1RydWVJbnRyaW5zaWMsCiAgICAgT1NSRXhpdEludHJpbnNpYywKICAgICBJc0Zp
bmFsVGllckludHJpbnNpYywKLSAgICBTZXRJbnQzMkhlYXBQcmVkaWN0aW9uSW50cmluc2ljCisg
ICAgU2V0SW50MzJIZWFwUHJlZGljdGlvbkludHJpbnNpYywKKyAgICBGaWF0SW50NTJJbnRyaW5z
aWMsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE3MTAwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYg
KzExOSw5IEBAIGlubGluZSB1aW50MzJfdCB0b1VJbnQzMihkb3VibGUgbnVtYmVyKQogICAgIHJl
dHVybiB0b0ludDMyKG51bWJlcik7CiB9CiAKK2ludDY0X3QgdHJ5Q29udmVydFRvSW50NTIoZG91
YmxlKTsKK2Jvb2wgaXNJbnQ1Mihkb3VibGUpOworCiBjbGFzcyBKU1ZhbHVlIHsKICAgICBmcmll
bmQgc3RydWN0IEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0czsKICAgICBmcmllbmQgY2xhc3MgQXNz
ZW1ibHlIZWxwZXJzOwpAQCAtMjg3LDYgKzI5MCw3IEBAIHB1YmxpYzoKICAgICAvLyBDb25zdGFu
dHMgdXNlZCBmb3IgSW50NTIuIEludDUyIGlzbid0IHBhcnQgb2YgSlNWYWx1ZSByaWdodCBub3cs
IGJ1dCBKU1ZhbHVlcyBtYXkgYmUKICAgICAvLyBjb252ZXJ0ZWQgdG8gSW50NTJzIGFuZCBiYWNr
IGFnYWluLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkludDUyQml0cyA9IDUy
OworICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IG5vdEludDUyID0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4oMSkgPDwgbnVtYmVyT2ZJbnQ1MkJpdHM7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu
dDUyU2hpZnRBbW91bnQgPSAxMjsKICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
UGF5bG9hZCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXls
b2FkKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNzEwMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsMTUg
KzQ5NywxMCBAQCBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgCiAKICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc01hY2hpbmVJ
bnQoKSBjb25zdAoraW5saW5lIGludDY0X3QgdHJ5Q29udmVydFRvSW50NTIoZG91YmxlIG51bWJl
cikKIHsKLSAgICBpZiAoaXNJbnQzMigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
IWlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBkb3VibGUgbnVtYmVyID0g
YXNEb3VibGUoKTsKICAgICBpZiAobnVtYmVyICE9IG51bWJlcikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6bm90SW50NTI7CiAjaWYgT1MoV0lORE9XUykg
JiYgQ1BVKFg4NikKICAgICAvLyBUaGUgVlMgQ29tcGlsZXIgZm9yIDMyLWJpdCBidWlsZHMgZ2Vu
ZXJhdGVzIGEgZmxvYXRpbmcgcG9pbnQgZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGNhc3QKICAg
ICAvLyBmcm9tIGFuIGluZmluaXR5IHRvIGEgNjQtYml0IGludGVnZXIuIFdlIGxlYXZlIHRoaXMg
cm91dGluZSB3aXRoIHRoZSBmbG9hdGluZyBwb2ludCBlcnJvcgpAQCAtNTEzLDE4ICs1MDgsMzIg
QEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNNYWNoaW5lSW50KCkgY29ucwogICAgIC8vCiAgICAg
Ly8gVG8gYXZvaWQgdGhpcyBpc3N1ZSwgd2UgY2hlY2sgZm9yIGluZmluaXR5IGhlcmUsIGFuZCBy
ZXR1cm4gZmFsc2UgaW4gdGhhdCBjYXNlLgogICAgIGlmIChzdGQ6OmlzaW5mKG51bWJlcikpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6Om5vdEludDUyOwog
I2VuZGlmCiAgICAgaW50NjRfdCBhc0ludDY0ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obnVtYmVy
KTsKICAgICBpZiAoYXNJbnQ2NCAhPSBudW1iZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6Om5vdEludDUyOwogICAgIGlmICghYXNJbnQ2NCAmJiBzdGQ6
OnNpZ25iaXQobnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6Om5vdEludDUyOworICAg
IGlmIChhc0ludDY0ID49IChzdGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCAoSlNWYWx1ZTo6bnVt
YmVyT2ZJbnQ1MkJpdHMgLSAxKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpub3RJbnQ1MjsK
KyAgICBpZiAoYXNJbnQ2NCA8IC0oc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgKEpTVmFsdWU6
Om51bWJlck9mSW50NTJCaXRzIC0gMSkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6bm90SW50
NTI7CisgICAgcmV0dXJuIGFzSW50NjQ7Cit9CisKK2lubGluZSBib29sIGlzSW50NTIoZG91Ymxl
IG51bWJlcikKK3sKKyAgICByZXR1cm4gdHJ5Q29udmVydFRvSW50NTIobnVtYmVyKSAhPSBKU1Zh
bHVlOjpub3RJbnQ1MjsKK30KKworaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNNYWNoaW5lSW50KCkg
Y29uc3QKK3sKKyAgICBpZiAoaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAoIWlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXNJbnQ2NCA+
PSAoc3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgKG51bWJlck9mSW50NTJCaXRzIC0gMSkpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFzSW50NjQgPCAtKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KDEpIDw8IChudW1iZXJPZkludDUyQml0cyAtIDEpKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBpc0ludDUyKGFzRG91YmxlKCkpOwog
fQogCiBpbmxpbmUgaW50NjRfdCBKU1ZhbHVlOjphc01hY2hpbmVJbnQoKSBjb25zdApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kZWFkLWZpYXQtZG91YmxlLXRvLWlu
dDUyLXRoZW4tZXhpdC1ub3QtaW50NTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9kZWFkLWZpYXQtZG91YmxlLXRvLWludDUyLXRoZW4tZXhpdC1u
b3QtaW50NTIuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2RlYWQtZmlhdC1kb3VibGUtdG8taW50NTItdGhlbi1leGl0LW5vdC1pbnQ1Mi5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACit2YXIgYXJyYXkgPSBuZXcgRmxvYXQ2NEFy
cmF5KDEpOworYXJyYXlbMF0gPSA0MjsKKworZnVuY3Rpb24gZm9vKCkgeworICAgIGZpYXRJbnQ1
MihhcnJheVswXSk7CisgICAgZmlhdEludDUyKGFycmF5WzBdKTsKK30KKworbm9JbmxpbmUoZm9v
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgZm9vKCk7CisKK2Fy
cmF5WzBdID0gNS41OworZm9vKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2RlYWQtZmlhdC1kb3VibGUtdG8taW50NTIuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kZWFkLWZpYXQtZG91YmxlLXRvLWludDUyLmpz
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kZWFk
LWZpYXQtZG91YmxlLXRvLWludDUyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAK
K3ZhciBhcnJheSA9IG5ldyBGbG9hdDY0QXJyYXkoMSk7CithcnJheVswXSA9IDQyOworCitmdW5j
dGlvbiBmb28oKSB7CisgICAgZmlhdEludDUyKGFycmF5WzBdKTsKKyAgICBmaWF0SW50NTIoYXJy
YXlbMF0pOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
MDA7ICsraSkKKyAgICBmb28oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZGVhZC1maWF0LWludDMyLXRvLWludDUyLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGVhZC1maWF0LWludDMyLXRvLWludDUyLmpzCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kZWFkLWZp
YXQtaW50MzItdG8taW50NTIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorZnVu
Y3Rpb24gZm9vKG8pIHsKKyAgICBmaWF0SW50NTIoby5mKTsKKyAgICBmaWF0SW50NTIoby5mKTsK
K30KKworbm9JbmxpbmUoZm9vKTsKKwordmFyIG8gPSB7Zjo0Mn07CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDAwMDsgKytpKQorICAgIGZvbyhvKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZGVhZC1maWF0LXZhbHVlLXRvLWludDUyLWRvdWJsZS1wYXRoLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGVhZC1m
aWF0LXZhbHVlLXRvLWludDUyLWRvdWJsZS1wYXRoLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kZWFkLWZpYXQtdmFsdWUtdG8taW50NTItZG91
YmxlLXBhdGguanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAordmFyIGFycmF5ID0g
bmV3IEZsb2F0NjRBcnJheSgxKTsKK2FycmF5WzBdID0gNDI7CisKK2Z1bmN0aW9uIGZvbygpIHsK
KyAgICB2YXIgdmFsdWUgPSBiYXIoKTsKKyAgICBmaWF0SW50NTIodmFsdWUpOworICAgIGZpYXRJ
bnQ1Mih2YWx1ZSk7Cit9CisKK2Z1bmN0aW9uIGJhcigpIHsKKyAgICByZXR1cm4gYXJyYXlbMF07
Cit9CisKK25vSW5saW5lKGZvbyk7Citub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwMDA7ICsraSkKKyAgICBmb28oKTsKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9kZWFkLWZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1leGl0LW5vdC1k
b3VibGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9kZWFkLWZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1leGl0LW5vdC1kb3VibGUuanMJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2RlYWQtZmlhdC12
YWx1ZS10by1pbnQ1Mi10aGVuLWV4aXQtbm90LWRvdWJsZS5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDIxIEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgdmFyIHZhbHVlID0gYmFyKERGR1Ry
dWUoKSk7CisgICAgZmlhdEludDUyKHZhbHVlKTsKKyAgICBmaWF0SW50NTIodmFsdWUpOworfQor
Cit2YXIgdGhpbmd5ID0gZmFsc2U7CitmdW5jdGlvbiBiYXIocCkgeworICAgIGlmICh0aGluZ3kp
CisgICAgICAgIHJldHVybiAiaGVsbG8iOworICAgIHJldHVybiBwID8gNDIgOiA1LjU7Cit9CisK
K25vSW5saW5lKGZvbyk7Citub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwMDA7ICsraSkKKyAgICBmb28oKTsKKwordGhpbmd5ID0gdHJ1ZTsKK2ZvbygpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kZWFkLWZpYXQtdmFsdWUtdG8taW50
NTItdGhlbi1leGl0LW5vdC1pbnQ1Mi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2RlYWQtZmlhdC12YWx1ZS10by1pbnQ1Mi10aGVuLWV4aXQtbm90
LWludDUyLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9kZWFkLWZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1leGl0LW5vdC1pbnQ1Mi5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgdmFyIHZh
bHVlID0gYmFyKERGR1RydWUoKSk7CisgICAgZmlhdEludDUyKHZhbHVlKTsKKyAgICBmaWF0SW50
NTIodmFsdWUpOworfQorCit2YXIgdGhpbmd5ID0gZmFsc2U7CitmdW5jdGlvbiBiYXIocCkgewor
ICAgIGlmICh0aGluZ3kpCisgICAgICAgIHJldHVybiA1LjU7CisgICAgcmV0dXJuIHAgPyA0MiA6
IDUuNTsKK30KKworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKGJhcik7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgIGZvbygpOworCit0aGluZ3kgPSB0cnVlOworZm9v
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2RlYWQtZmlhdC12
YWx1ZS10by1pbnQ1Mi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2RlYWQtZmlhdC12YWx1ZS10by1pbnQ1Mi5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGVhZC1maWF0LXZhbHVlLXRvLWludDUy
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAg
ICB2YXIgdmFsdWUgPSBiYXIoREZHVHJ1ZSgpKTsKKyAgICBmaWF0SW50NTIodmFsdWUpOworICAg
IGZpYXRJbnQ1Mih2YWx1ZSk7Cit9CisKK2Z1bmN0aW9uIGJhcihwKSB7CisgICAgcmV0dXJuIHAg
PyA0MiA6IDUuNTsKK30KKworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKGJhcik7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKQorICAgIGZvbygpOworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZpYXQtZG91YmxlLXRvLWludDUyLXRoZW4tZXhp
dC1ub3QtaW50NTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9maWF0LWRvdWJsZS10by1pbnQ1Mi10aGVuLWV4aXQtbm90LWludDUyLmpzCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9maWF0LWRvdWJs
ZS10by1pbnQ1Mi10aGVuLWV4aXQtbm90LWludDUyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTkgQEAKK3ZhciBhcnJheSA9IG5ldyBGbG9hdDY0QXJyYXkoMSk7CithcnJheVswXSA9IDQy
OworCitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIGZpYXRJbnQ1MihhcnJheVswXSkgKyAx
OworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsr
aSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0ICE9IDQzKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CisKK2FycmF5WzBd
ID0gNS41OwordmFyIHJlc3VsdCA9IGZvbygpOworaWYgKHJlc3VsdCAhPSA2LjUpCisgICAgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmlhdC1kb3VibGUtdG8taW50NTItdGhlbi1mYWls
LXRvLWZvbGQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9maWF0LWRvdWJsZS10by1pbnQ1Mi10aGVuLWZhaWwtdG8tZm9sZC5qcwkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmlhdC1kb3VibGUtdG8t
aW50NTItdGhlbi1mYWlsLXRvLWZvbGQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBA
QAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiBmaWF0SW50NTIoTWF0aC5zcXJ0KDIpKSAr
IDE7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsg
KytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlmIChyZXN1bHQgIT0gTWF0aC5z
cXJ0KDIpICsgMSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9maWF0LWRvdWJs
ZS10by1pbnQ1Mi10aGVuLWZvbGQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9maWF0LWRvdWJsZS10by1pbnQ1Mi10aGVuLWZvbGQuanMJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZpYXQtZG91Ymxl
LXRvLWludDUyLXRoZW4tZm9sZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitm
dW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIGZpYXRJbnQ1MihNYXRoLmZyb3VuZCg0MikpICsg
MTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyAr
K2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPSA0MiArIDEp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmlhdC1kb3VibGUtdG8taW50NTIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9maWF0
LWRvdWJsZS10by1pbnQ1Mi5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZmlhdC1kb3VibGUtdG8taW50NTIuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNCBAQAordmFyIGFycmF5ID0gbmV3IEZsb2F0NjRBcnJheSgxKTsKK2FycmF5WzBd
ID0gNDI7CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gZmlhdEludDUyKGFycmF5WzBd
KSArIDE7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAw
MDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlmIChyZXN1bHQgIT0gNDMp
CisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmlhdC1pbnQzMi10by1pbnQ1Mi5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZpYXQt
aW50MzItdG8taW50NTIuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2ZpYXQtaW50MzItdG8taW50NTIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMyBAQAorZnVuY3Rpb24gZm9vKG8pIHsKKyAgICByZXR1cm4gZmlhdEludDUyKG8uZikg
KyAxOworfQorCitub0lubGluZShmb28pOworCit2YXIgbyA9IHtmOjQyfTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKG8pOworICAg
IGlmIChyZXN1bHQgIT0gNDMpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiAr
IHJlc3VsdDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmlh
dC12YWx1ZS10by1pbnQ1Mi1kb3VibGUtcGF0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZpYXQtdmFsdWUtdG8taW50NTItZG91YmxlLXBhdGgu
anMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Zp
YXQtdmFsdWUtdG8taW50NTItZG91YmxlLXBhdGguanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxOSBAQAordmFyIGFycmF5ID0gbmV3IEZsb2F0NjRBcnJheSgxKTsKK2FycmF5WzBdID0gNDI7
CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gZmlhdEludDUyKGJhcigpKSArIDE7Cit9
CisKK2Z1bmN0aW9uIGJhcigpIHsKKyAgICByZXR1cm4gYXJyYXlbMF07Cit9CisKK25vSW5saW5l
KGZvbyk7Citub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsr
aSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVzdWx0ICE9IDQzKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1l
eGl0LW5vdC1kb3VibGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9maWF0LXZhbHVlLXRvLWludDUyLXRoZW4tZXhpdC1ub3QtZG91YmxlLmpzCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9maWF0LXZh
bHVlLXRvLWludDUyLXRoZW4tZXhpdC1ub3QtZG91YmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjQgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1cm4gZmlhdEludDUyKGJhcihE
RkdUcnVlKCkpKSArIDE7Cit9CisKK3ZhciB0aGluZ3kgPSBmYWxzZTsKK2Z1bmN0aW9uIGJhcihw
KSB7CisgICAgaWYgKHRoaW5neSkKKyAgICAgICAgcmV0dXJuICJoZWxsbyI7CisgICAgcmV0dXJu
IHAgPyA0MiA6IDUuNTsKK30KKworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKGJhcik7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygp
OworICAgIGlmIChyZXN1bHQgIT0gNDMgJiYgcmVzdWx0ICE9IDYuNSkKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQorCit0aGluZ3kgPSB0cnVlOwordmFy
IHJlc3VsdCA9IGZvbygpOworaWYgKHJlc3VsdCAhPSAiaGVsbG8xIikKKyAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9maWF0LXZhbHVlLXRvLWludDUyLXRoZW4tZXhpdC1ub3QtaW50
NTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9m
aWF0LXZhbHVlLXRvLWludDUyLXRoZW4tZXhpdC1ub3QtaW50NTIuanMJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZpYXQtdmFsdWUtdG8taW50NTIt
dGhlbi1leGl0LW5vdC1pbnQ1Mi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACitm
dW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIGZpYXRJbnQ1MihiYXIoREZHVHJ1ZSgpKSkgKyAx
OworfQorCit2YXIgdGhpbmd5ID0gZmFsc2U7CitmdW5jdGlvbiBiYXIocCkgeworICAgIGlmICh0
aGluZ3kpCisgICAgICAgIHJldHVybiA1LjU7CisgICAgcmV0dXJuIHAgPyA0MiA6IDUuNTsKK30K
Kworbm9JbmxpbmUoZm9vKTsKK25vSW5saW5lKGJhcik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlmIChyZXN1bHQg
IT0gNDMgJiYgcmVzdWx0ICE9IDYuNSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworfQorCit0aGluZ3kgPSB0cnVlOwordmFyIHJlc3VsdCA9IGZvbygpOwor
aWYgKHJlc3VsdCAhPSA2LjUpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDog
IiArIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmlh
dC12YWx1ZS10by1pbnQ1Mi10aGVuLWZhaWwtdG8tZm9sZC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1m
YWlsLXRvLWZvbGQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2ZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1mYWlsLXRvLWZvbGQuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMSBAQAorZnVuY3Rpb24gZm9vKCkgeworICAgIHJldHVybiBm
aWF0SW50NTIoREZHVHJ1ZSgpID8gNS41IDogNDIpICsgMTsKK30KKworbm9JbmxpbmUoZm9vKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0g
Zm9vKCk7CisgICAgaWYgKHJlc3VsdCAhPSA0MyAmJiByZXN1bHQgIT0gNi41KQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1mb2xkLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmlhdC12
YWx1ZS10by1pbnQ1Mi10aGVuLWZvbGQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZpYXQtdmFsdWUtdG8taW50NTItdGhlbi1mb2xkLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICByZXR1
cm4gZmlhdEludDUyKERGR1RydWUoKSA/IDQyIDogNS41KSArIDE7Cit9CisKK25vSW5saW5lKGZv
byk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3Vs
dCA9IGZvbygpOworICAgIGlmIChyZXN1bHQgIT0gNDMgJiYgcmVzdWx0ICE9IDYuNSkKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9maWF0LXZhbHVlLXRvLWludDUyLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmlhdC12YWx1ZS10
by1pbnQ1Mi5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZmlhdC12YWx1ZS10by1pbnQ1Mi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2
IEBACitmdW5jdGlvbiBmb28oKSB7CisgICAgcmV0dXJuIGZpYXRJbnQ1MihiYXIoREZHVHJ1ZSgp
KSkgKyAxOworfQorCitmdW5jdGlvbiBiYXIocCkgeworICAgIHJldHVybiBwID8gNDIgOiA1LjU7
Cit9CisKK25vSW5saW5lKGZvbyk7Citub0lubGluZShiYXIpOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oKTsKKyAgICBpZiAocmVz
dWx0ICE9IDQzICYmIHJlc3VsdCAhPSA2LjUpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvaW50NTItZm9yY2Utb3NyLWV4aXQtcGF0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ludDUyLWZvcmNlLW9zci1leGl0LXBhdGguanMJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ludDUy
LWZvcmNlLW9zci1leGl0LXBhdGguanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAor
ZnVuY3Rpb24gZm9vKGEsIGIsIHAsIG8pIHsKKyAgICB2YXIgYyA9IGEgKyBiOworICAgIGlmIChw
KQorICAgICAgICBjIC09IG8uZjsKKyAgICByZXR1cm4gYyArIDE7Cit9CisKK25vSW5saW5lKGZv
byk7CisKK3ZhciBvID0ge2Y6IDQyfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kp
IHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKDIwMDAwMDAwMDAsIDIwMDAwMDAwMDAsIGZhbHNlLCBv
KTsKKyAgICBpZiAocmVzdWx0ICE9IDQwMDAwMDAwMDEpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30K
</data>
<flag name="review"
          id="259406"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>