<?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>124760</bug_id>
          
          <creation_ts>2013-11-21 21:29:11 -0800</creation_ts>
          <short_desc>Restructure global variable constant inference so that it could work for any kind of symbol table variable</short_desc>
          <delta_ts>2013-11-26 18:45:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>124761</dependson>
          <blocked>124630</blocked>
          <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>953438</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-21 21:29:11 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953818</commentid>
    <comment_count>1</comment_count>
      <attachid>217752</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-23 13:58:18 -0800</bug_when>
    <thetext>Created attachment 217752
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953819</commentid>
    <comment_count>2</comment_count>
      <attachid>217753</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-23 15:15:27 -0800</bug_when>
    <thetext>Created attachment 217753
more things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953820</commentid>
    <comment_count>3</comment_count>
      <attachid>217753</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-11-23 15:18:54 -0800</bug_when>
    <thetext>Comment on attachment 217753
more things

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3100
&gt; +                JSValue specificValue =
&gt; +                    watchpointSet ? watchpointSet-&gt;inferredValue() : JSValue();
&gt; +                if (!specificValue) {

JSValue specificValue;
if (watchpointSet)
   specificValue = watchPointSet-&gt;inferredValue(); (can inferredValue here ever be JSValue()?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953821</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-23 15:20:39 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 217753 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217753&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3100
&gt; &gt; +                JSValue specificValue =
&gt; &gt; +                    watchpointSet ? watchpointSet-&gt;inferredValue() : JSValue();
&gt; &gt; +                if (!specificValue) {
&gt; 
&gt; JSValue specificValue;
&gt; if (watchpointSet)
&gt;    specificValue = watchPointSet-&gt;inferredValue(); (can inferredValue here ever be JSValue()?)

That would be wrong, since watchpointSet-&gt;inferredValue() can be JSValue().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953825</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-23 16:17:19 -0800</bug_when>
    <thetext>Actually, this whole approach is wrong.  Consider this:

function foo() {
    var WIDTH;
    function bar() {
        ... use WIDTH ...
    }
    WIDTH = 42;
    ...
    use bar
}

1) Unless we do some static analysis we can&apos;t be sure that bar will be called after &quot;WIDTH = 42&quot;.

2) op_enter is technically an assignment to WIDTH.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953826</commentid>
    <comment_count>6</comment_count>
      <attachid>217755</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-23 16:26:48 -0800</bug_when>
    <thetext>Created attachment 217755
the wrong approach

This is the wrong approach but I wanted to set aside the code anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954210</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-25 21:27:06 -0800</bug_when>
    <thetext>Actually, I think we totally want this.  It&apos;ll work when combined with one-shot closure inference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954211</commentid>
    <comment_count>8</comment_count>
      <attachid>217861</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-25 21:27:51 -0800</bug_when>
    <thetext>Created attachment 217861
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954282</commentid>
    <comment_count>9</comment_count>
      <attachid>217883</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-26 09:40:07 -0800</bug_when>
    <thetext>Created attachment 217883
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954303</commentid>
    <comment_count>10</comment_count>
      <attachid>217889</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-26 10:56:39 -0800</bug_when>
    <thetext>Created attachment 217889
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954392</commentid>
    <comment_count>11</comment_count>
      <attachid>217912</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-26 17:21:51 -0800</bug_when>
    <thetext>Created attachment 217912
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954413</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-26 18:45:26 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/159798</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217752</attachid>
            <date>2013-11-23 13:58:18 -0800</date>
            <delta_ts>2013-11-23 15:15:27 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20878</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShy
ZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHN0cnVjdCBJbnN0cnVj
dGlvbiB7CiAgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlOwogICAgICAgICBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlKiBhcnJheUFsbG9jYXRpb25Qcm9maWxlOwogICAgICAgICBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZSogb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7Ci0gICAgICAgIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CisgICAgICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNl
dCogd2F0Y2hwb2ludFNldDsKICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgYm9vbCog
cHJlZGljYXRlUG9pbnRlcjsKICAgICB9IHU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFyaWFibGVXYXRjaHBvaW50U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNldC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBWYXJpYWJsZVdhdGNocG9p
bnRTZXRfaAorI2RlZmluZSBWYXJpYWJsZVdhdGNocG9pbnRTZXRfaAorCisjaW5jbHVkZSAiV2F0
Y2hwb2ludC5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgVmFyaWFibGVXYXRjaHBvaW50U2V0IDogcHVibGljIFdhdGNocG9pbnRTZXQgewor
cHVibGljOgorICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldChXYXRjaHBvaW50U3RhdGUgc3RhdGUp
CisgICAgICAgIDogV2F0Y2hwb2ludFNldChzdGF0ZSkKKyAgICB7CisgICAgfQorICAgIAorICAg
IH5WYXJpYWJsZVdhdGNocG9pbnRTZXQoKSB7IH0KKyAgICAKKyAgICBKU1ZhbHVlIGluZmVycmVk
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luZmVycmVkVmF1ZTsgfQorICAgIAorICAgIHZvaWQg
bm90aWZ5V3JpdGUoSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghIXZhbHVl
KTsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSgpKSB7CisgICAgICAgIGNhc2UgQ2xlYXJXYXRjaHBv
aW50OgorICAgICAgICAgICAgbV9pbmZlcnJlZFZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICBz
dGFydFdhdGNoaW5nKCk7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBJc1dh
dGNoZWQ6CisgICAgICAgICAgICBBU1NFUlQoISFtX2luZmVycmVkVmFsdWUpOworICAgICAgICAg
ICAgaWYgKHZhbHVlID09IG1faW5mZXJyZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICBmaXJlQWxsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBJc0ludmFsaWRhdGVkOgorICAgICAgICAgICAgQVNTRVJUKCFtX2lu
ZmVycmVkVmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSgpCisgICAgeworICAgICAgICBBU1NFUlQoISFtX2luZmVycmVk
VmFsdWUgPT0gKHN0YXRlKCkgPT0gSXNXYXRjaGVkKSk7CisgICAgICAgIGlmICghbV9pbmZlcnJl
ZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIW1faW5mZXJyZWRWYWx1
ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgSlNDZWxsKiBjZWxsID0g
bV9pbmZlcnJlZFZhbHVlLmFzQ2VsbCgpOworICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY2Vs
bCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZpcmVBbGwoKTsKKyAgICB9CisgICAg
CisgICAgSlNWYWx1ZSogYWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpIHsgcmV0dXJuICZtX2luZmVy
cmVkVmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBKU1ZhbHVlIG1faW5mZXJyZWRWYWx1ZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gVmFyaWFibGVXYXRjaHBvaW50U2V0
X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTExLDcgKzE1MTEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQ
dXRHbG9iYWxWYXI6Ci0gICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6CisgICAgY2FzZSBOb3Rp
ZnlXcml0ZToKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIENoZWNrSGFz
SW5zdGFuY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMjgsNyArMzEy
OCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
ICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVt
YmVyXTsKIAogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAwOwotICAgICAgICAg
ICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludHMgPSAwOworICAgICAgICAgICAgVmFyaWFibGVX
YXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IDA7CiAgICAgICAgICAgICB1aW50cHRyX3Qgb3Bl
cmFuZDsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CkBAIC0z
MTYwLDkgKzMxNjAsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAg
ICAgICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVjdC0+c3lt
Ym9sVGFibGUoKS0+Z2V0KHVpZCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHdhdGNocG9pbnRz
ID09IGVudHJ5LndhdGNocG9pbnRTZXQoKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQ
dXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgZ2V0KFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSkp
KTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIodmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEdsb2JhbFZhciwgT3BJbmZvKG9w
ZXJhbmQpLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHdhdGNocG9pbnRzLT5zdGF0ZSgp
ICE9IElzSW52YWxpZGF0ZWQpCi0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTm90aWZ5
UHV0R2xvYmFsVmFyLCBPcEluZm8ob3BlcmFuZCksIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSk7
CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTm90aWZ5V3JpdGUsIE9wSW5mbyh3YXRj
aHBvaW50cyksIHZhbHVlKTsKICAgICAgICAgICAgICAgICAvLyBLZWVwIHNjb3BlIGFsaXZlIHVu
dGlsIGFmdGVyIHB1dC4KICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChW
aXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTU5NzMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Myw4ICsxNDMsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlCiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCi0gICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6CisgICAgY2FzZSBOb3RpZnlXcml0
ZToKICAgICAgICAgd3JpdGUoV2F0Y2hwb2ludF9maXJlKTsKKyAgICAgICAgd3JpdGUoU2lkZVN0
YXRlKTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lv
biAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNyArOTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBHZXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2Fz
ZSBQdXRHbG9iYWxWYXI6Ci0gICAgICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFsVmFyOgorICAgICAg
ICBjYXNlIE5vdGlmeVdyaXRlOgogICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAg
ICAgICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBBbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1MCw3ICs3NTAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
CiAgICAgYm9vbCBoYXNJZGVudGlmaWVyTnVtYmVyRm9yQ2hlY2soKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG9wKCkgPT0gR2xvYmFsVmFyV2F0Y2hwb2ludCB8fCBvcCgpID09IE5vdGlmeVB1dEds
b2JhbFZhcjsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2xvYmFsVmFyV2F0Y2hwb2ludDsKICAg
ICB9CiAgICAgCiAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlckZvckNoZWNrKCkKQEAgLTc2
MSw3ICs3NjEsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAgYm9vbCBoYXNSZWdpc3RlclBv
aW50ZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2V0R2xvYmFsVmFyIHx8IG9w
KCkgPT0gUHV0R2xvYmFsVmFyIHx8IG9wKCkgPT0gR2xvYmFsVmFyV2F0Y2hwb2ludCB8fCBvcCgp
ID09IE5vdGlmeVB1dEdsb2JhbFZhcjsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2V0R2xvYmFs
VmFyIHx8IG9wKCkgPT0gUHV0R2xvYmFsVmFyIHx8IG9wKCkgPT0gR2xvYmFsVmFyV2F0Y2hwb2lu
dDsKICAgICB9CiAgICAgCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50
ZXIoKQpAQCAtOTczLDYgKzk3MywxNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBy
ZXR1cm4ganNDYXN0PEV4ZWN1dGFibGVCYXNlKj4ocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPiht
X29wSW5mbykpOwogICAgIH0KKyAgICAKKyAgICBib29sIGhhc1ZhcmlhYmxlV2F0Y2hwb2ludFNl
dCgpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBOb3RpZnlXcml0ZTsKKyAgICB9Cisg
ICAgCisgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB2YXJpYWJsZVdhdGNocG9pbnRTZXQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VmFyaWFibGVXYXRjaHBvaW50
U2V0Kj4obV9vcEluZm8pOworICAgIH0KIAogICAgIGJvb2wgaGFzU3RydWN0dXJlVHJhbnNpdGlv
bkRhdGEoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRDbG9zdXJlVmFyLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oR2V0R2xvYmFsVmFyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhQdXRHbG9iYWxWYXIsIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhOb3RpZnlQdXRH
bG9iYWxWYXIsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhOb3RpZnlXcml0ZSwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdsb2JhbFZhcldhdGNocG9pbnQsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhWYXJJbmplY3Rpb25XYXRjaHBvaW50LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tGdW5jdGlvbiwgTm9kZU11c3RHZW5lcmF0ZSkgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01ODIsNyArNTgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVj
a1dhdGNoZG9nVGltZXI6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2Ug
TG9vcEhpbnQ6Ci0gICAgICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFsVmFyOgorICAgICAgICBjYXNl
IE5vdGlmeVdyaXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAg
Ly8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBhbHJlYWR5IGhhcyBhIHByZWRpY3Rpb24u
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAko
cmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Miw3ICsyNDIsNyBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgogICAg
IGNhc2UgSW50NTJUb1ZhbHVlOgogICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6Ci0gICAgY2Fz
ZSBOb3RpZnlQdXRHbG9iYWxWYXI6CisgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIAogICAgIGNhc2UgR2V0QnlWYWw6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTU5
NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU2MDEsMTAgKzU2MDEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaChOb2RlKiBubwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3RpZnlQdXRHbG9iYWxWYXIoTm9k
ZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3RpZnlXcml0ZShOb2RlKiBu
b2RlKQogewotICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG1faml0Lmdsb2JhbE9iamVjdEZvcihu
b2RlLT5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS0+Z2V0KAotICAgICAgICBtX2ppdC5ncmFw
aCgpLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlckZvckNoZWNrKCldKS53YXRj
aHBvaW50U2V0KCk7CisgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQgPSBub2RlLT52YXJp
YWJsZVdhdGNocG9pbnRTZXQoKTsKKyAgICAKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHZhbHVlR1BSID0gdmFsdWUuZ3By
KCk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOwpAQCAtNTYyNyw2ICs1NjI5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOb3RpZnlQdXRHbG8KICAgICAgICAgaXNXYXRjaGVkLmxpbmsoJm1faml0KTsK
ICAgICB9CiAgICAgCisgICAgcmVhZHkuYXBwZW5kKG1faml0LmJyYW5jaDY0KAorICAgICAgICBK
SVRDb21waWxlcjo6RXF1YWwsIHZhbHVlR1BSLAorICAgICAgICBKSVRDb21waWxlcjo6QWJzb2x1
dGVBZGRyZXNzKHNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpKSkpOworICAgIAogICAgIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgIEpJ
VENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKHNldC0+YWRk
cmVzc09mU2V0SXNOb3RFbXB0eSgpKSk7CiAgICAgbV9qaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihJ
c0ludmFsaWRhdGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1OTczMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjA0NSw3ICsyMDQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU5l
d0Z1bmN0aW9uRXhwcmVzc2lvbihOb2RlKik7CiAgICAgYm9vbCBjb21waWxlUmVnRXhwRXhlYyhO
b2RlKik7CiAgICAgCi0gICAgdm9pZCBjb21waWxlTm90aWZ5UHV0R2xvYmFsVmFyKE5vZGUqKTsK
KyAgICB2b2lkIGNvbXBpbGVOb3RpZnlXcml0ZShOb2RlKik7CiAgICAgCiAgICAgLy8gc2l6ZSBj
YW4gYmUgYW4gaW1tZWRpYXRlIG9yIGEgcmVnaXN0ZXIsIGFuZCBtdXN0IGJlIGluIGJ5dGVzLiBJ
ZiBzaXplIGlzIGEgcmVnaXN0ZXIsCiAgICAgLy8gaXQgbXVzdCBiZSBhIGRpZmZlcmVudCByZWdp
c3RlciB0aGFuIHJlc3VsdEdQUi4gRW1pdHMgY29kZSB0aGF0IHBsYWNlIGEgcG9pbnRlciB0bwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzMsNiArNzczLDggQEAgdm9pZCBK
SVQ6OmVtaXRQdXRHbG9iYWxQcm9wZXJ0eSh1aW50cHRyXwogCiB2b2lkIEpJVDo6ZW1pdFB1dEds
b2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlLCBXYXRjaHBvaW50U2V0KiBzZXQp
CiB7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOworCiAgICAgaWYg
KHNldCAmJiBzZXQtPnN0YXRlKCkgIT0gSXNJbnZhbGlkYXRlZCkgewogICAgICAgICBsb2FkOChz
ZXQtPmFkZHJlc3NPZlN0YXRlKCksIHJlZ1QxKTsKICAgICAgICAgCkBAIC03ODksMTIgKzc5MSwx
MyBAQCB2b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlCiAgICAgICAgICAg
ICBpc1dhdGNoZWQubGluayh0aGlzKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgcmVh
ZHkuYXBwZW5kKGJyYW5jaDY0KEVxdWFsLCByZWdUMCwgQWJzb2x1dGVBZGRyZXNzKHNldC0+YWRk
cmVzc09mSW5mZXJyZWRWYWx1ZSgpKSkpOwogICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0
OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3Moc2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkp
KSk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpLCByZWdUMSk7Cisg
ICAgICAgIAogICAgICAgICByZWFkeS5saW5rKHRoaXMpOwogICAgIH0KICAgICAKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgc3RvcmVQdHIocmVnVDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJhbmQpKTsKICAgICAKICAgICBpZiAoc2V0ICYmIHNl
dC0+c3RhdGUoKSAhPSBJc0ludmFsaWRhdGVkKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24g
MTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5NTMsMjIgKzE5NTMsMjMgQEAgbWFjcm8gcHV0
UHJvcGVydHkoKQogZW5kCiAKIG1hY3JvIHB1dEdsb2JhbFZhcigpCisgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDMsIHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQxKQogICAg
IGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQyKQotICAgIGxvYWRiIFdhdGNocG9pbnRTZXQ6Om1f
c3RhdGVbdDJdLCB0MworICAgIGxvYWRiIFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bV9zdGF0ZVt0
Ml0sIHQzCiAgICAgYmllcSB0MywgSXNJbnZhbGlkYXRlZCwgLnJlYWR5Ci0gICAgYmluZXEgdDMs
IENsZWFyV2F0Y2hwb2ludCwgLm5lZWRUb0ludmFsaWRhdGUKKyAgICBiaW5lcSB0MywgQ2xlYXJX
YXRjaHBvaW50LCAub3ZlcndyaXRlCiAgICAgbW92ZSBJc1dhdGNoZWQsIHQzCiAgICAgam1wIC5y
ZWFkeQotLm5lZWRUb0ludmFsaWRhdGU6Ci0gICAgYnRibnogV2F0Y2hwb2ludFNldDo6bV9zZXRJ
c05vdEVtcHR5W3QyXSwgLnBEeW5hbWljCisub3ZlcndyaXRlOgorICAgIGJxZXEgdDEsIFZhcmlh
YmxlV2F0Y2hwb2ludFNldDo6bV9pbmZlcnJlZFZhbHVlW3QyXSwgLnJlYWR5CisgICAgYnRibnog
VmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3NldElzTm90RW1wdHlbdDJdLCAucER5bmFtaWMKICAg
ICBtb3ZlIElzSW52YWxpZGF0ZWQsIHQzCiAucmVhZHk6Ci0gICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDMsIHQwKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQxKQogICAgIGxvYWRw
RnJvbUluc3RydWN0aW9uKDYsIHQwKQogICAgIHN0b3JlcSB0MSwgW3QwXQogICAgIG1lbWZlbmNl
Ci0gICAgc3RvcmViIHQzLCBXYXRjaHBvaW50U2V0OjptX3N0YXRlW3QyXQorICAgIHN0b3JlYiB0
MywgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRlW3QyXQogZW5kCiAKIG1hY3JvIHB1dENs
b3N1cmVWYXIoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsNyAr
MjM0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24oRXhlY1N0YQogICAgIE5l
d0dsb2JhbFZhciB2YXIgPSBhZGRHbG9iYWxWYXIocHJvcGVydHlOYW1lLCBJc1ZhcmlhYmxlKTsK
ICAgICByZWdpc3RlckF0KHZhci5yZWdpc3Rlck51bWJlcikuc2V0KGV4ZWMtPnZtKCksIHRoaXMs
IHZhbHVlKTsKICAgICBpZiAodmFyLnNldCkKLSAgICAgICAgdmFyLnNldC0+bm90aWZ5V3JpdGUo
KTsKKyAgICAgICAgdmFyLnNldC0+bm90aWZ5V3JpdGUodmFsdWUpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEpTT2JqZWN0KiBsYXN0SW5Qcm90b3R5cGVDaGFpbihKU09iamVjdCogb2JqZWN0KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShy
ZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNyArMjkxLDcgQEAgcHJvdGVjdGVkOgog
ICAgIGVudW0gQ29uc3RhbnRNb2RlIHsgSXNDb25zdGFudCwgSXNWYXJpYWJsZSB9OwogICAgIHN0
cnVjdCBOZXdHbG9iYWxWYXIgewogICAgICAgICBpbnQgcmVnaXN0ZXJOdW1iZXI7Ci0gICAgICAg
IFdhdGNocG9pbnRTZXQqIHNldDsKKyAgICAgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQ7
CiAgICAgfTsKICAgICBOZXdHbG9iYWxWYXIgYWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXIm
LCBDb25zdGFudE1vZGUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAg
ICAvLyBsb2NrcyB3aGlsZSBHQydpbmcuCiAgICAgcmVnLT5zZXQodm0sIG9iamVjdCwgdmFsdWUp
OwogICAgIGlmIChzZXQpCi0gICAgICAgIHNldC0+bm90aWZ5V3JpdGUoKTsKKyAgICAgICAgc2V0
LT5ub3RpZnlXcml0ZSh2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE3Myw3ICsx
NzMsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzCiAgICAgfQog
ICAgIHJlZy0+c2V0KHZtLCBvYmplY3QsIHZhbHVlKTsKICAgICBpZiAoc2V0KQotICAgICAgICBz
ZXQtPm5vdGlmeVdyaXRlKCk7CisgICAgICAgIHNldC0+bm90aWZ5V3JpdGUodmFsdWUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEzICs4
MiwxMyBAQCB2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmFkZFdhdGNocG9pbnQoV2F0CiAgICAgZmF0
RW50cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkKHdhdGNocG9pbnQpOwogfQogCi12b2lkIFN5bWJv
bFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlU2xvdygpCit2b2lkIFN5bWJvbFRhYmxlRW50cnk6Om5v
dGlmeVdyaXRlU2xvdyhKU1ZhbHVlIHZhbHVlKQogewogICAgIFdhdGNocG9pbnRTZXQqIHdhdGNo
cG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKICAgICBpZiAoIXdhdGNo
cG9pbnRzKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgd2F0Y2hwb2ludHMtPm5vdGlmeVdy
aXRlKCk7CisgICAgd2F0Y2hwb2ludHMtPm5vdGlmeVdyaXRlKHZhbHVlKTsKIH0KIAogU3ltYm9s
VGFibGVFbnRyeTo6RmF0RW50cnkqIFN5bWJvbFRhYmxlRW50cnk6OmluZmxhdGVTbG93KCkKQEAg
LTEwOSw1ICsxMDksMzEgQEAgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlKFZNJiB2bSkKIAogU3lt
Ym9sVGFibGU6On5TeW1ib2xUYWJsZSgpIHsgfQogCit2b2lkIFN5bWJvbFRhYmxlOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogdGhpc0NlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFN5
bWJvbFRhYmxlKiB0aGlzU3ltYm9sVGFibGUgPSBqc0Nhc3Q8U3ltYm9sVGFibGUqPih0aGlzQ2Vs
bCk7CisgICAgaWYgKCF0aGlzU3ltYm9sVGFibGUtPm1fd2F0Y2hwb2ludENsZWFudXApCisgICAg
ICAgIHRoaXNTeW1ib2xUYWJsZS0+bV93YXRjaHBvaW50Q2xlYW51cCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2F0Y2hwb2ludENsZWFudXA+KCk7CisgICAgCisgICAgdmlzaXRvci5hZGRVbmNvbmRpdGlv
bmFsRmluYWxpemVyKHRoaXNTeW1ib2xUYWJsZS0+bV93YXRjaHBvaW50Q2xlYW51cC5nZXQoKSk7
Cit9CisKK1N5bWJvbFRhYmxlOjpXYXRjaHBvaW50Q2xlYW51cDo6V2F0Y2hwb2ludENsZWFudXAo
U3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIDogbV9zeW1ib2xUYWJsZShzeW1ib2xUYWJs
ZSkKK3sKK30KKworU3ltYm9sVGFibGU6OldhdGNocG9pbnRDbGVhbnVwOjp+V2F0Y2hwb2ludENs
ZWFudXAoKSB7IH0KKwordm9pZCBTeW1ib2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KCkKK3sKKyAgICBNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3N5bWJv
bFRhYmxlLT5tX21hcC5iZWdpbigpOworICAgIE1hcDo6aXRlcmF0b3IgZW5kID0gbV9zeW1ib2xU
YWJsZS0+bV9tYXAuZW5kKCk7CisgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAg
ICAgICAgaWYgKFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gaXRlci0+dmFsdWUud2F0Y2hw
b2ludFNldCgpKQorICAgICAgICAgICAgc2V0LT5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwor
ICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTYgKzMxLDEzIEBACiAKICNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5oIgogI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgIlZhcmlh
YmxlV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWNsYXNzIFdhdGNocG9pbnQ7Ci1jbGFzcyBXYXRjaHBvaW50U2V0OwotCiBzdHJ1Y3Qg
U2xvd0FyZ3VtZW50IHsKICAgICBlbnVtIFN0YXR1cyB7CiAgICAgICAgIE5vcm1hbCA9IDAsCkBA
IC03OSwxMSArNzYsMTEgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgaW50IG1pc3NpbmdTeW1ib2xN
YQogLy8gY291bnRlZCBwb2ludGVyIHRvIGEgc2hhcmVkIFdhdGNocG9pbnRTZXQuIFRodXMsIGlu
LXBsYWNlIGVkaXRzIG9mIHRoZQogLy8gV2F0Y2hwb2ludFNldCB3aWxsIG1hbmlmZXN0IGluIGFs
bCBjb3BpZXMuIEhlcmUncyBhIHBpY3R1cmU6CiAvLwotLy8gU3ltYm9sVGFibGVFbnRyeSAtLT4g
RmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKy8vIFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVu
dHJ5IC0tPiBWYXJpYWJsZVdhdGNocG9pbnRTZXQKIC8vCiAvLyBJZiB5b3UgbWFrZSBhIGNvcHkg
b2YgYSBTeW1ib2xUYWJsZUVudHJ5LCB5b3Ugd2lsbCBoYXZlOgogLy8KLS8vIG9yaWdpbmFsOiBT
eW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0Y2hwb2ludFNldAorLy8gb3JpZ2lu
YWw6IFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVudHJ5IC0tPiBWYXJpYWJsZVdhdGNocG9pbnRT
ZXQKIC8vIGNvcHk6ICAgICBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLS0tLV4KIAog
c3RydWN0IFN5bWJvbFRhYmxlRW50cnkgewpAQCAtMjI1LDE4ICsyMjIsMTggQEAgc3RydWN0IFN5
bWJvbFRhYmxlRW50cnkgewogICAgIAogICAgIHZvaWQgYWRkV2F0Y2hwb2ludChXYXRjaHBvaW50
Kik7CiAgICAgCi0gICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCgpCisgICAgVmFyaWFi
bGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KCkKICAgICB7CiAgICAgICAgIGlmICghaXNG
YXQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+
bV93YXRjaHBvaW50cy5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IG5vdGlmeVdyaXRlKCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5V3JpdGUoSlNWYWx1
ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBub3RpZnlXcml0ZVNsb3coKTsKKyAgICAgICAgbm90aWZ5V3Jp
dGVTbG93KHZhbHVlKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpAQCAtMjU2LDExICsyNTMsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGludHB0cl90IG1fYml0czsgLy8gYWx3YXlz
IGhhcyBGYXRGbGFnIHNldCBhbmQgZXhhY3RseSBtYXRjaGVzIHdoYXQgdGhlIGJpdHMgd291bGQg
aGF2ZSBiZWVuIGlmIHRoaXMgd2Fzbid0IGZhdC4KICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxX
YXRjaHBvaW50U2V0PiBtX3dhdGNocG9pbnRzOworICAgICAgICBSZWZQdHI8VmFyaWFibGVXYXRj
aHBvaW50U2V0PiBtX3dhdGNocG9pbnRzOwogICAgIH07CiAgICAgCiAgICAgU3ltYm9sVGFibGVF
bnRyeSYgY29weVNsb3coY29uc3QgU3ltYm9sVGFibGVFbnRyeSYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgbm90aWZ5V3JpdGVTbG93KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBub3RpZnlXcml0ZVNsb3coSlNWYWx1ZSk7CiAgICAgCiAgICAgYm9vbCBpc0ZhdCgpIGNvbnN0
CiAgICAgewpAQCAtNDY2LDkgKzQ2MywyMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU2xvd0FyZ3Vt
ZW50KiBzbG93QXJndW1lbnRzKCkgeyByZXR1cm4gbV9zbG93QXJndW1lbnRzLmdldCgpOyB9CiAg
ICAgdm9pZCBzZXRTbG93QXJndW1lbnRzKHN0ZDo6dW5pcXVlX3B0cjxTbG93QXJndW1lbnRbXT4g
c2xvd0FyZ3VtZW50cykgeyBtX3Nsb3dBcmd1bWVudHMgPSBzdGQ6Om1vdmUoc2xvd0FyZ3VtZW50
cyk7IH0KIAorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKKwogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKIHByaXZhdGU6CisgICAgY2xhc3Mg
V2F0Y2hwb2ludENsZWFudXAgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciB7CisgICAg
cHVibGljOgorICAgICAgICBXYXRjaHBvaW50Q2xlYW51cChTeW1ib2xUYWJsZSopOworICAgICAg
ICB2aXJ0dWFsIH5XYXRjaHBvaW50Q2xlYW51cCgpOworICAgICAgICAKKyAgICBwcm90ZWN0ZWQ6
CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIE9WRVJSSURF
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgU3ltYm9sVGFibGUqIG1fc3ltYm9sVGFibGU7Cisg
ICAgfTsKKyAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xUYWJsZShWTSYpOwogICAg
IH5TeW1ib2xUYWJsZSgpOwogCkBAIC00ODEsNiArNDkyLDggQEAgcHJpdmF0ZToKICAgICBpbnQg
bV9jYXB0dXJlRW5kOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dBcmd1bWVudFtdPiBtX3Ns
b3dBcmd1bWVudHM7CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRDbGVhbnVw
PiBtX3dhdGNocG9pbnRDbGVhbnVwOwogCiBwdWJsaWM6CiAgICAgbXV0YWJsZSBDb25jdXJyZW50
SklUTG9jayBtX2xvY2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217753</attachid>
            <date>2013-11-23 15:15:27 -0800</date>
            <delta_ts>2013-11-23 16:26:48 -0800</delta_ts>
            <desc>more things</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>41902</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTk3MzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCw3IEBACiAJCTBGOEY5NDQyMTY2NzYz
MzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjhGOTQzRjE2Njc2MzJEMDBENjE5NzEgLyogQ29kZVR5cGUuY3Bw
ICovOyB9OwogCQkwRjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEgLyogSklUQ29kZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGOTQ0MzE2Njc2MzUy
MDBENjE5NzEgLyogSklUQ29kZS5jcHAgKi87IH07CiAJCTBGOEY5NDQ2MTY2NzY0RjEwMEQ2MTk3
MSAvKiBDb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGOEY5NDQ1MTY2NzY0RUUwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLzsg
fTsKKwkJMEY5MTgxQzcxODQxNUNBNTAwNTdCNjY5IC8qIFZhcmlhYmxlV2F0Y2hwb2ludFNldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTgxQzYx
ODQxNUNBNTAwNTdCNjY5IC8qIFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTE5RDBDMTU3RUUwOUYwMDRB
NEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDA5MTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcCAqLzsgfTsKIAkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpT
U3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5
MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEUxNTdG
MzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwICovOyB9OwpAQCAt
MTU5Myw2ICsxNTk0LDcgQEAKIAkJMEY4Rjk0M0YxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVUeXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVUeXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4Rjk0NDMxNjY3NjM1MjAwRDYxOTcxIC8q
IEpJVENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQ29k
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOEY5NDQ1MTY2NzY0RUUwMEQ2
MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxODFD
NjE4NDE1Q0E1MDA1N0I2NjkgLyogVmFyaWFibGVXYXRjaHBvaW50U2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlE
MEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQxMzIsNiArNDEzNCw3IEBACiAJCQkJMEY5NjNCMzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZh
bHVlUHJvZmlsZS5oICovLAogCQkJCTBGMjRFNTU3MTdGNzRFREIwMEFCQjIxNyAvKiBWYWx1ZVJl
Y292ZXJ5LmNwcCAqLywKIAkJCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNv
dmVyeS5oICovLAorCQkJCTBGOTE4MUM2MTg0MTVDQTUwMDU3QjY2OSAvKiBWYXJpYWJsZVdhdGNo
cG9pbnRTZXQuaCAqLywKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJl
Z2lzdGVyLmggKi8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQu
Y3BwICovLAogCQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8s
CkBAIC00Mzc1LDYgKzQzNzgsNyBAQAogCQkJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBE
RkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0MCAv
KiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4
QTMyQTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE4MUM3MTg0MTVDQTUwMDU3QjY2OSAvKiBWYXJp
YWJsZVdhdGNocG9pbnRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzJDMTdENTFGNTcw
MENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQzRjE1Qzc1RjE5MDA2QTU5N0MgLyogREZHVHlw
ZUNoZWNrSG9pc3RpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRTBGNzcxNkMxREIx
MjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlzaW9u
IDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3Mg
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKIGNsYXNzIEFycmF5UHJvZmlsZTsKIGNsYXNzIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOworY2xhc3MgVmFyaWFibGVXYXRjaHBvaW50U2V0Owogc3RydWN0
IExMSW50Q2FsbExpbmtJbmZvOwogc3RydWN0IFZhbHVlUHJvZmlsZTsKIApAQCAtMTE1LDcgKzEx
Niw3IEBAIHN0cnVjdCBJbnN0cnVjdGlvbiB7CiAgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQ
cm9maWxlOwogICAgICAgICBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBhcnJheUFsbG9jYXRpb25Q
cm9maWxlOwogICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogb2JqZWN0QWxsb2NhdGlv
blByb2ZpbGU7Ci0gICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CisgICAgICAg
IFZhcmlhYmxlV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldDsKICAgICAgICAgdm9pZCogcG9p
bnRlcjsKICAgICAgICAgYm9vbCogcHJlZGljYXRlUG9pbnRlcjsKICAgICB9IHU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFyaWFibGVXYXRjaHBvaW50U2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV2F0Y2hw
b2ludFNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhcmlhYmxlV2F0Y2hwb2ludFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgVmFyaWFibGVXYXRjaHBvaW50U2V0X2gKKyNkZWZpbmUgVmFyaWFibGVXYXRjaHBvaW50
U2V0X2gKKworI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFZhcmlhYmxlV2F0Y2hwb2ludFNldCA6IHB1
YmxpYyBXYXRjaHBvaW50U2V0IHsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworcHVibGljOgorICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCgpCisgICAgICAgIDogV2F0
Y2hwb2ludFNldChDbGVhcldhdGNocG9pbnQpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+VmFy
aWFibGVXYXRjaHBvaW50U2V0KCkgeyB9CisgICAgCisgICAgLy8gRm9yIHRoZSBwdXJwb3NlIG9m
IGRlY2lkaW5nIHdoZXRoZXIgb3Igbm90IHRvIHdhdGNoIHRoaXMgdmFyaWFibGUsIHlvdSBvbmx5
IG5lZWQKKyAgICAvLyB0byBpbnNwZWN0IGluZmVycmVkVmFsdWUoKS4gSWYgdGhpcyByZXR1cm5z
IHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSBlbXB0eQorICAgIC8vIHZhbHVlLCB0aGVuIGl0IG1l
YW5zIHRoYXQgYXQgYWxsIGZ1dHVyZSBzYWZlcG9pbnRzLCB0aGlzIHdhdGNocG9pbnQgc2V0IHdp
bGwgYmUKKyAgICAvLyBpbiBvbmUgb2YgdGhlc2Ugc3RhdGVzOgorICAgIC8vCisgICAgLy8gICAg
SXNXYXRjaGVkOiBpbiB0aGlzIGNhc2UsIHRoZSB2YXJpYWJsZSdzIHZhbHVlIG11c3Qgc3RpbGwg
YmUgdGhlCisgICAgLy8gICAgICAgIGluZmVycmVkVmFsdWUuCisgICAgLy8KKyAgICAvLyAgICBJ
c0ludmFsaWRhdGVkOiBpbiB0aGlzIGNhc2UgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgbWF5IGJlIGFu
eXRoaW5nIGJ1dCB5b3UnbGwKKyAgICAvLyAgICAgICAgZWl0aGVyIG5vdGljZSB0aGF0IGl0J3Mg
aW52YWxpZGF0ZWQgYW5kIG5vdCBpbnN0YWxsIHRoZSB3YXRjaHBvaW50LCBvcgorICAgIC8vICAg
ICAgICB5b3Ugd2lsbCBoYXZlIGJlZW4gbm90aWZpZWQgdGhhdCB0aGUgd2F0Y2hwb2ludCB3YXMg
ZmlyZWQuCisgICAgSlNWYWx1ZSBpbmZlcnJlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbmZl
cnJlZFZhbHVlOyB9CisgICAgCisgICAgdm9pZCBub3RpZnlXcml0ZShKU1ZhbHVlIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCEhdmFsdWUpOworICAgICAgICBzd2l0Y2ggKHN0YXRlKCkp
IHsKKyAgICAgICAgY2FzZSBDbGVhcldhdGNocG9pbnQ6CisgICAgICAgICAgICBtX2luZmVycmVk
VmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIHN0YXJ0V2F0Y2hpbmcoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBjYXNlIElzV2F0Y2hlZDoKKyAgICAgICAgICAgIEFTU0VSVCgh
IW1faW5mZXJyZWRWYWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gbV9pbmZlcnJlZFZh
bHVlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGludmFsaWRhdGUoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIElzSW52YWxp
ZGF0ZWQ6CisgICAgICAgICAgICBBU1NFUlQoIW1faW5mZXJyZWRWYWx1ZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGludmFsaWRhdGUoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKCEhbV9pbmZlcnJlZFZhbHVlKTsKKyAgICAgICAgQVNTRVJUKHN0YXRlKCkgPT0gSXNX
YXRjaGVkKTsKKyAgICAgICAgbV9pbmZlcnJlZFZhbHVlID0gSlNWYWx1ZSgpOworICAgICAgICBm
aXJlQWxsKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhbV9pbmZlcnJlZFZhbHVlID09IChzdGF0ZSgpID09
IElzV2F0Y2hlZCkpOworICAgICAgICBpZiAoIW1faW5mZXJyZWRWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKCFtX2luZmVycmVkVmFsdWUuaXNDZWxsKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIEpTQ2VsbCogY2VsbCA9IG1faW5mZXJyZWRWYWx1ZS5hc0Nl
bGwoKTsKKyAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNlbGwpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBmaXJlQWxsKCk7CisgICAgfQorICAgIAorICAgIEpTVmFsdWUqIGFkZHJl
c3NPZkluZmVycmVkVmFsdWUoKSB7IHJldHVybiAmbV9pbmZlcnJlZFZhbHVlOyB9CisKK3ByaXZh
dGU6CisgICAgSlNWYWx1ZSBtX2luZmVycmVkVmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIFZhcmlhYmxlV2F0Y2hwb2ludFNldF9oCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMTU5NzMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA4LDE0ICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIGZpcmVBbGxTbG93KCk7
CiAgICAgfQogICAgIAotICAgIHZvaWQgbm90aWZ5V3JpdGUoKQotICAgIHsKLSAgICAgICAgaWYg
KHN0YXRlKCkgPT0gQ2xlYXJXYXRjaHBvaW50KQotICAgICAgICAgICAgc3RhcnRXYXRjaGluZygp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaXJlQWxsKCk7Ci0gICAgfQotICAgIAogICAg
IGludDhfdCogYWRkcmVzc09mU3RhdGUoKSB7IHJldHVybiAmbV9zdGF0ZTsgfQogICAgIGludDhf
dCogYWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpIHsgcmV0dXJuICZtX3NldElzTm90RW1wdHk7IH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTUwNSwxMyArMTUwNSwxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoK
KyAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFZhckluamVjdGlvbldhdGNo
cG9pbnQ6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgY2FzZSBOb3RpZnlQdXRH
bG9iYWxWYXI6CisgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTU5NzMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwOTQsMTMgKzMwOTQsMTUgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQoVmly
dHVhbFJlZ2lzdGVyKHNjb3BlKSkpOwogICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkg
ZW50cnkgPSBnbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCktPmdldCh1aWQpOwotICAgICAgICAg
ICAgICAgIGlmICghZW50cnkuY291bGRCZVdhdGNoZWQoKSB8fCAhbV9ncmFwaC53YXRjaHBvaW50
cygpLmlzU3RpbGxWYWxpZChlbnRyeS53YXRjaHBvaW50U2V0KCkpKSB7CisgICAgICAgICAgICAg
ICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0ID0gZW50cnkud2F0Y2hwb2lu
dFNldCgpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9CisgICAgICAg
ICAgICAgICAgICAgIHdhdGNocG9pbnRTZXQgPyB3YXRjaHBvaW50U2V0LT5pbmZlcnJlZFZhbHVl
KCkgOiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgaWYgKCFzcGVjaWZpY1ZhbHVlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgYWRkVG9HcmFwaChH
ZXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24pKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoR2xvYmFsVmFyV2F0Y2hwb2ludCwgT3BJbmZvKG9wZXJhbmQpLCBPcElu
Zm8oaWRlbnRpZmllck51bWJlcikpOwotICAgICAgICAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNW
YWx1ZSA9IGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKTsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFZhcmlhYmxlV2F0Y2hwb2ludCwgT3BJbmZvKHdh
dGNocG9pbnRTZXQpKTsKICAgICAgICAgICAgICAgICBpZiAoc3BlY2lmaWNWYWx1ZS5pc0NlbGwo
KSkKICAgICAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCBjZWxsQ29u
c3RhbnQoc3BlY2lmaWNWYWx1ZS5hc0NlbGwoKSkpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAg
LTMxMjgsNyArMzEzMCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtp
ZGVudGlmaWVyTnVtYmVyXTsKIAogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAw
OwotICAgICAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludHMgPSAwOworICAgICAgICAg
ICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IDA7CiAgICAgICAgICAgICB1
aW50cHRyX3Qgb3BlcmFuZDsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBDb25jdXJy
ZW50SklUTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1f
bG9jayk7CkBAIC0zMTYwLDkgKzMxNjIsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2Jh
bE9iamVjdC0+c3ltYm9sVGFibGUoKS0+Z2V0KHVpZCk7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KHdhdGNocG9pbnRzID09IGVudHJ5LndhdGNocG9pbnRTZXQoKSk7Ci0gICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChQdXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgZ2V0KFZpcnR1YWxSZWdp
c3Rlcih2YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZU5vZGUgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRHbG9i
YWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgdmFsdWVOb2RlKTsKICAgICAgICAgICAgICAgICBpZiAo
d2F0Y2hwb2ludHMtPnN0YXRlKCkgIT0gSXNJbnZhbGlkYXRlZCkKLSAgICAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChOb3RpZnlQdXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZv
KGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOb3Rp
ZnlXcml0ZSwgT3BJbmZvKHdhdGNocG9pbnRzKSwgdmFsdWVOb2RlKTsKICAgICAgICAgICAgICAg
ICAvLyBLZWVwIHNjb3BlIGFsaXZlIHVudGlsIGFmdGVyIHB1dC4KICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKFBoYW50b20sIGdldChWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCwyOCArMjYwLDYgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAotICAgIGJvb2wgZ2xvYmFsVmFyV2F0
Y2hwb2ludEVsaW1pbmF0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVy
KQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTsp
IHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgR2xvYmFsVmFy
V2F0Y2hwb2ludDoKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCkg
PT0gcmVnaXN0ZXJQb2ludGVyKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgotICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50
ZXIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5jbG9iYmVyc1dvcmxkKG5vZGUpKQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KICAgICBib29sIHZhckluamVjdGlvbldhdGNocG9pbnRFbGltaW5hdGlvbigpCiAg
ICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewpA
QCAtMTIyOSwxMyArMTIwNyw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCi0gICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIGlm
IChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBpZiAoZ2xvYmFsVmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKG5vZGUtPnJlZ2lz
dGVyUG9pbnRlcigpKSkKLSAgICAgICAgICAgICAgICBlbGltaW5hdGUoKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2lu
dDoKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw4ICsxNDMsMTMgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICB3cml0ZShTaWRlU3Rh
dGUpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFs
VmFyOgorICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgorICAgICAgICByZWFkKFdhdGNocG9p
bnRfZmlyZSk7CisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgY2FzZSBOb3RpZnlXcml0
ZToKICAgICAgICAgd3JpdGUoV2F0Y2hwb2ludF9maXJlKTsKKyAgICAgICAgd3JpdGUoU2lkZVN0
YXRlKTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAt
NTIwLDcgKzUyNSw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUK
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldEdsb2JhbFZhcjoKLSAgICBj
YXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKEFic29s
dXRlLCBub2RlLT5yZWdpc3RlclBvaW50ZXIoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShy
ZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsOCArOTAzLDggQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAg
ICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFsVmFyOgot
ICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgTm90aWZ5V3Jp
dGU6CisgICAgICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgICAgICBjYXNlIFZhcklu
amVjdGlvbldhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBv
aW50OgogICAgICAgICBjYXNlIENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0OCwyMCArNzQ4LDkgQEAgc3RydWN0IE5vZGUgewog
ICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFzSWRlbnRp
Zmllck51bWJlckZvckNoZWNrKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IEdsb2Jh
bFZhcldhdGNocG9pbnQgfHwgb3AoKSA9PSBOb3RpZnlQdXRHbG9iYWxWYXI7Ci0gICAgfQotICAg
IAotICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpCi0gICAgewotICAgICAg
ICBBU1NFUlQoaGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpOwotICAgICAgICByZXR1cm4g
bV9vcEluZm8yOwotICAgIH0KLSAgICAKICAgICBib29sIGhhc1JlZ2lzdGVyUG9pbnRlcigpCiAg
ICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRH
bG9iYWxWYXIgfHwgb3AoKSA9PSBHbG9iYWxWYXJXYXRjaHBvaW50IHx8IG9wKCkgPT0gTm90aWZ5
UHV0R2xvYmFsVmFyOworICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3Ao
KSA9PSBQdXRHbG9iYWxWYXI7CiAgICAgfQogICAgIAogICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiogcmVnaXN0ZXJQb2ludGVyKCkKQEAgLTk3Myw2ICs5NjIsMTYgQEAgc3RydWN0IE5vZGUgewog
ICAgIHsKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KHJlaW50ZXJwcmV0
X2Nhc3Q8SlNDZWxsKj4obV9vcEluZm8pKTsKICAgICB9CisgICAgCisgICAgYm9vbCBoYXNWYXJp
YWJsZVdhdGNocG9pbnRTZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gTm90aWZ5
V3JpdGUgfHwgb3AoKSA9PSBWYXJpYWJsZVdhdGNocG9pbnQ7CisgICAgfQorICAgIAorICAgIFZh
cmlhYmxlV2F0Y2hwb2ludFNldCogdmFyaWFibGVXYXRjaHBvaW50U2V0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZhcmlhYmxlV2F0Y2hwb2ludFNldCo+KG1fb3BJ
bmZvKTsKKyAgICB9CiAKICAgICBib29sIGhhc1N0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lv
biAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE4NCw4ICsxODQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oUHV0Q2xvc3VyZVZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEdldEdsb2JhbFZhciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFs
VmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oTm90aWZ5UHV0R2xvYmFsVmFyLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oR2xvYmFsVmFyV2F0Y2hwb2ludCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKE5vdGlmeVdyaXRlLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oVmFyaWFibGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhBbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTU5NzMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTk4LDEyICs5OTgsMTIgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25T
d2l0Y2hTdHJpbgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oZXhlYy0+Y29kZUJsb2Nr
KCktPnN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlGb3JWYWx1ZShzdHJpbmct
PnZhbHVlKGV4ZWMpLmltcGwoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiB9CiAKLXZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFdhdGNocG9p
bnRTZXQqIHNldCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlXcml0ZShFeGVj
U3RhdGUqIGV4ZWMsIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0KQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OwogCi0gICAgc2V0LT5ub3RpZnlXcml0ZSgpOworICAgIHNldC0+aW52YWxpZGF0ZSgpOwogfQog
CiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QgYSwgaW50
MzJfdCBiKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJ
KHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMgogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk1ha2VSb3BlMyhFeGVjU3RhdGUqLCBKU1N0cmluZyosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsK
IGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJs
ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgc2l6ZV90IHRhYmxlSW5kZXgpOwogY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmcoRXhlY1N0YXRlKiwgc2l6ZV90IHRh
YmxlSW5kZXgsIEpTU3RyaW5nKik7Ci12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTm90aWZ5
V3JpdGUoRXhlY1N0YXRlKiwgV2F0Y2hwb2ludFNldCopOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5vdGlmeVdyaXRlKEV4ZWNTdGF0ZSosIFZhcmlhYmxlV2F0Y2hwb2ludFNldCopOwog
CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAvLyBGSVhNRTogTWFrZSBjYWxscyB3b3JrIHdlbGwuIEN1
cnJlbnRseSB0aGV5J3JlIGEgcHVyZSByZWdyZXNzaW9uLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzQsNyAr
NTc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAg
ICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRzOgogICAgICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90
Q3JlYXRlZDoKLSAgICAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAgICAgICBjYXNl
IFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50
OgogICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICAgICAgY2Fz
ZSBQaGFudG9tOgpAQCAtNTgyLDcgKzU4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hl
Y2tXYXRjaGRvZ1RpbWVyOgogICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNl
IExvb3BIaW50OgotICAgICAgICBjYXNlIE5vdGlmeVB1dEdsb2JhbFZhcjoKKyAgICAgICAgY2Fz
ZSBOb3RpZnlXcml0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgYWxyZWFkeSBoYXMgYSBwcmVkaWN0aW9u
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJ
KHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAg
ICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKLSAgICBjYXNlIEds
b2JhbFZhcldhdGNocG9pbnQ6CisgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2Fz
ZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgogICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKICAgICBj
YXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKQEAgLTI0Miw3ICsyNDIsNyBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBJbnQ1MlRvRG91
YmxlOgogICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6
Ci0gICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6CisgICAgY2FzZSBOb3RpZnlXcml0ZToKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgIGNhc2UgR2V0QnlWYWw6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNTMsMjggKzQzNTMsMTMgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6IHsKLSNpZiBERkdfRU5BQkxFKEpJ
VF9BU1NFUlQpCi0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAgIG1faml0LmxvYWQ2NChu
b2RlLT5yZWdpc3RlclBvaW50ZXIoKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoNjQoCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1
YWwsIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KG5vZGUtPnJlZ2lzdGVyUG9pbnRlcigpLT5nZXQoKSkpKTsKLSAgICAgICAgbV9qaXQuYnJlYWtw
b2ludCgpOwotICAgICAgICBvay5saW5rKCZtX2ppdCk7Ci0jZW5kaWYKLSAgICAgICAgCi0gICAg
ICAgIG5vUmVzdWx0KG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgICAgIAotICAg
IGNhc2UgTm90aWZ5UHV0R2xvYmFsVmFyOiB7Ci0gICAgICAgIGNvbXBpbGVOb3RpZnlQdXRHbG9i
YWxWYXIobm9kZSk7CisgICAgY2FzZSBOb3RpZnlXcml0ZTogeworICAgICAgICBjb21waWxlTm90
aWZ5V3JpdGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgVmFySW5q
ZWN0aW9uV2F0Y2hwb2ludDogeworICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKKyAg
ICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDogewogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NjAxLDEwICs1NjAxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2goTm9kZSog
bm8KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTm90aWZ5UHV0R2xvYmFsVmFyKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTm90aWZ5V3JpdGUoTm9kZSogbm9kZSkKIHsKLSAgICBXYXRjaHBv
aW50U2V0KiBzZXQgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPnN5
bWJvbFRhYmxlKCktPmdldCgKLSAgICAgICAgbV9qaXQuZ3JhcGgoKS5pZGVudGlmaWVycygpW25v
ZGUtPmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpXSkud2F0Y2hwb2ludFNldCgpOworICAgIFZh
cmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gbm9kZS0+dmFyaWFibGVXYXRjaHBvaW50U2V0KCk7
CisgICAgCisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwor
ICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgIAogICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOwogICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKQEAgLTU2Mjcs
NiArNTYyOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90aWZ5UHV0R2xvCiAg
ICAgICAgIGlzV2F0Y2hlZC5saW5rKCZtX2ppdCk7CiAgICAgfQogICAgIAorICAgIHJlYWR5LmFw
cGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAg
ICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyhzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFs
dWUoKSksIHZhbHVlR1BSKSk7CisgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2Ug
PSBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENv
bXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3Moc2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkpKTsK
ICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpLCBzZXQtPmFkZHJl
c3NPZlN0YXRlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg0LDcgKzEwODQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FVyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRT
ZXQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
VndzIG9wZXJhdGlvbiwgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KQogICAg
IHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIod2F0Y2hwb2ludFNldCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OwpAQCAtMjA0NSw3ICsyMDQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0
aW9uRXhwcmVzc2lvbihOb2RlKik7CiAgICAgYm9vbCBjb21waWxlUmVnRXhwRXhlYyhOb2RlKik7
CiAgICAgCi0gICAgdm9pZCBjb21waWxlTm90aWZ5UHV0R2xvYmFsVmFyKE5vZGUqKTsKKyAgICB2
b2lkIGNvbXBpbGVOb3RpZnlXcml0ZShOb2RlKik7CiAgICAgCiAgICAgLy8gc2l6ZSBjYW4gYmUg
YW4gaW1tZWRpYXRlIG9yIGEgcmVnaXN0ZXIsIGFuZCBtdXN0IGJlIGluIGJ5dGVzLiBJZiBzaXpl
IGlzIGEgcmVnaXN0ZXIsCiAgICAgLy8gaXQgbXVzdCBiZSBhIGRpZmZlcmVudCByZWdpc3RlciB0
aGFuIHJlc3VsdEdQUi4gRW1pdHMgY29kZSB0aGF0IHBsYWNlIGEgcG9pbnRlciB0bwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRD
b2xsZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTgsMTAgKzExOCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9ub2RlLT5z
dHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6Ci0gICAg
ICAgICAgICBhZGRMYXppbHkoCi0gICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0KCktPnN5bWJv
bFRhYmxlKCktPmdldCgKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pZGVudGlmaWVycygp
W21fbm9kZS0+aWRlbnRpZmllck51bWJlckZvckNoZWNrKCldKS53YXRjaHBvaW50U2V0KCkpOwor
ICAgICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKKyAgICAgICAgICAgIGFkZExhemlseSht
X25vZGUtPnZhcmlhYmxlV2F0Y2hwb2ludFNldCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNjE4LDcgKzYxOCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRHZXRHbG9iYWxWYXIodWludHB0cl90IG9wZXJh
bmQpOwogICAgICAgICB2b2lkIGVtaXRHZXRDbG9zdXJlVmFyKGludCBzY29wZSwgdWludHB0cl90
IG9wZXJhbmQpOwogICAgICAgICB2b2lkIGVtaXRQdXRHbG9iYWxQcm9wZXJ0eSh1aW50cHRyX3Qq
IG9wZXJhbmRTbG90LCBpbnQgdmFsdWUpOwotICAgICAgICB2b2lkIGVtaXRQdXRHbG9iYWxWYXIo
dWludHB0cl90IG9wZXJhbmQsIGludCB2YWx1ZSwgV2F0Y2hwb2ludFNldCopOworICAgICAgICB2
b2lkIGVtaXRQdXRHbG9iYWxWYXIodWludHB0cl90IG9wZXJhbmQsIGludCB2YWx1ZSwgVmFyaWFi
bGVXYXRjaHBvaW50U2V0Kik7CiAgICAgICAgIHZvaWQgZW1pdFB1dENsb3N1cmVWYXIoaW50IHNj
b3BlLCB1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlKTsKIAogICAgICAgICB2b2lkIGVtaXRJ
bml0UmVnaXN0ZXIoaW50IGRzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlB1dEtpbmQuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVTdHViSW5mby5oIgotI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKyNpbmNsdWRl
ICJWYXJpYWJsZVdhdGNocG9pbnRTZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTc2LDcg
Kzc2LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgU3Q6IFN0cnVjdHVyZSoKICAgICBWOiB2b2lkCiAg
ICAgVm06IFZNKgotICAgIFc6IFdhdGNocG9pbnRTZXQqCisgICAgVndzOiBWYXJpYWJsZVdhdGNo
cG9pbnRTZXQqCiAgICAgWjogaW50MzJfdAogKi8KIHR5cGVkZWYgQ2FsbEZyYW1lKiBKSVRfT1BF
UkFUSU9OICgqRl9KSVRPcGVyYXRpb25fRUpKWikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKQEAgLTE1NCw3ICsxNTQsNyBAQCB0eXBlZGVmIHZv
aWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElP
TiAoKlZfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5cGVk
ZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVBaSikoRXhlY1N0YXRlKiwg
dm9pZCosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFU
SU9OICgqVl9KSVRPcGVyYXRpb25fRVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKTsKLXR5cGVk
ZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVcpKEV4ZWNTdGF0ZSosIFdh
dGNocG9pbnRTZXQqKTsKK3R5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRp
b25fRVZ3cykoRXhlY1N0YXRlKiwgVmFyaWFibGVXYXRjaHBvaW50U2V0Kik7CiB0eXBlZGVmIHZv
aWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90
KTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVZtKShFeGVj
U3RhdGUqLCBWTSopOwogdHlwZWRlZiBjaGFyKiBKSVRfT1BFUkFUSU9OICgqUF9KSVRPcGVyYXRp
b25fRSkoRXhlY1N0YXRlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3
MSw4ICs3NzEsMTAgQEAgdm9pZCBKSVQ6OmVtaXRQdXRHbG9iYWxQcm9wZXJ0eSh1aW50cHRyXwog
ICAgIHN0b3JlUHRyKHJlZ1QyLCBCYXNlSW5kZXgocmVnVDAsIHJlZ1QxLCBUaW1lc0VpZ2h0LCAo
Zmlyc3RPdXRPZkxpbmVPZmZzZXQgLSAyKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRQdXRHbG9iYWxWYXIodWludHB0cl90IG9wZXJhbmQsIGludCB2YWx1
ZSwgV2F0Y2hwb2ludFNldCogc2V0KQordm9pZCBKSVQ6OmVtaXRQdXRHbG9iYWxWYXIodWludHB0
cl90IG9wZXJhbmQsIGludCB2YWx1ZSwgVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQpCiB7Cisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOworCiAgICAgaWYgKHNldCAm
JiBzZXQtPnN0YXRlKCkgIT0gSXNJbnZhbGlkYXRlZCkgewogICAgICAgICBsb2FkOChzZXQtPmFk
ZHJlc3NPZlN0YXRlKCksIHJlZ1QxKTsKICAgICAgICAgCkBAIC03ODMsMjQgKzc4NSwyMSBAQCB2
b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlCiAgICAgICAgIGlmIChzZXQt
PnN0YXRlKCkgPT0gQ2xlYXJXYXRjaHBvaW50KSB7CiAgICAgICAgICAgICBKdW1wIGlzV2F0Y2hl
ZCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKENsZWFyV2F0Y2hwb2lu
dCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihJc1dhdGNo
ZWQpLCByZWdUMSk7CisgICAgICAgICAgICBzdG9yZTY0KHJlZ1QwLCBzZXQtPmFkZHJlc3NPZklu
ZmVycmVkVmFsdWUoKSk7CisgICAgICAgICAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKElzV2F0Y2hl
ZCksIHNldC0+YWRkcmVzc09mU3RhdGUoKSk7CiAgICAgICAgICAgICByZWFkeS5hcHBlbmQoanVt
cCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaXNXYXRjaGVkLmxpbmsodGhpcyk7CiAg
ICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHJlYWR5LmFwcGVuZChicmFuY2g2NChFcXVhbCwg
QWJzb2x1dGVBZGRyZXNzKHNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpKSwgcmVnVDApKTsK
ICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNz
KHNldC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpKSkpOwotICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihJc0ludmFsaWRhdGVkKSwgcmVnVDEpOworICAgICAgICBzdG9yZTgoVHJ1c3RlZEltbTMy
KElzSW52YWxpZGF0ZWQpLCBzZXQtPmFkZHJlc3NPZlN0YXRlKCkpOworICAgICAgICAKICAgICAg
ICAgcmVhZHkubGluayh0aGlzKTsKICAgICB9CiAgICAgCi0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcih2YWx1ZSwgcmVnVDApOwogICAgIHN0b3JlUHRyKHJlZ1QwLCByZWludGVycHJldF9jYXN0
PHZvaWQqPihvcGVyYW5kKSk7Ci0gICAgCi0gICAgaWYgKHNldCAmJiBzZXQtPnN0YXRlKCkgIT0g
SXNJbnZhbGlkYXRlZCkgewotICAgICAgICBtZW1vcnlGZW5jZSgpOwotICAgICAgICBzdG9yZTgo
cmVnVDEsIHNldC0+YWRkcmVzc09mU3RhdGUoKSk7Ci0gICAgfQogfQogCiB2b2lkIEpJVDo6ZW1p
dFB1dENsb3N1cmVWYXIoaW50IHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUy
LDIzICsxOTUyLDMwIEBAIG1hY3JvIHB1dFByb3BlcnR5KCkKICAgICBzdG9yZVByb3BlcnR5QXRW
YXJpYWJsZU9mZnNldCh0MSwgdDAsIHQyKQogZW5kCiAKK21hY3JvIG5vdGlmeVdyaXRlKHNldCwg
dmFsdWUsIHNjcmF0Y2gsIHNsb3cpCisgICAgbG9hZGIgVmFyaWFibGVXYXRjaHBvaW50U2V0Ojpt
X3N0YXRlW3NldF0sIHNjcmF0Y2gKKyAgICBiaWVxIHNjcmF0Y2gsIElzSW52YWxpZGF0ZWQsIC5k
b25lCisgICAgYmluZXEgc2NyYXRjaCwgQ2xlYXJXYXRjaHBvaW50LCAub3ZlcndyaXRlCisgICAg
c3RvcmVxIHZhbHVlLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1faW5mZXJyZWRWYWx1ZVtzZXRd
CisgICAgc3RvcmViIElzV2F0Y2hlZCwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRlW3Nl
dF0KKyAgICBqbXAgLmRvbmUKKworLm92ZXJ3cml0ZToKKyAgICBicWVxIHZhbHVlLCBWYXJpYWJs
ZVdhdGNocG9pbnRTZXQ6Om1faW5mZXJyZWRWYWx1ZVtzZXRdLCAuZG9uZQorICAgIGJ0Ym56IFZh
cmlhYmxlV2F0Y2hwb2ludFNldDo6bV9zZXRJc05vdEVtcHR5W3NldF0sIHNsb3cKKyAgICBzdG9y
ZXEgMCwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX2luZmVycmVkVmFsdWVbc2V0XQorICAgIHN0
b3JlYiBJc0ludmFsaWRhdGVkLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc3RhdGVbc2V0XQor
CisuZG9uZTogICAgCitlbmQKKwogbWFjcm8gcHV0R2xvYmFsVmFyKCkKLSAgICBsb2FkcEZyb21J
bnN0cnVjdGlvbig1LCB0MikKLSAgICBsb2FkYiBXYXRjaHBvaW50U2V0OjptX3N0YXRlW3QyXSwg
dDMKLSAgICBiaWVxIHQzLCBJc0ludmFsaWRhdGVkLCAucmVhZHkKLSAgICBiaW5lcSB0MywgQ2xl
YXJXYXRjaHBvaW50LCAubmVlZFRvSW52YWxpZGF0ZQotICAgIG1vdmUgSXNXYXRjaGVkLCB0Mwot
ICAgIGptcCAucmVhZHkKLS5uZWVkVG9JbnZhbGlkYXRlOgotICAgIGJ0Ym56IFdhdGNocG9pbnRT
ZXQ6Om1fc2V0SXNOb3RFbXB0eVt0Ml0sIC5wRHluYW1pYwotICAgIG1vdmUgSXNJbnZhbGlkYXRl
ZCwgdDMKLS5yZWFkeToKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCiAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNSwg
dDIpCisgICAgbm90aWZ5V3JpdGUodDIsIHQxLCB0MCwgLnBEeW5hbWljKQogICAgIGxvYWRwRnJv
bUluc3RydWN0aW9uKDYsIHQwKQogICAgIHN0b3JlcSB0MSwgW3QwXQotICAgIG1lbWZlbmNlCi0g
ICAgc3RvcmViIHQzLCBXYXRjaHBvaW50U2V0OjptX3N0YXRlW3QyXQogZW5kCiAKIG1hY3JvIHB1
dENsb3N1cmVWYXIoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYs
NyArMjE2LDcgQEAgSlNHbG9iYWxPYmplY3Q6Ok5ld0dsb2JhbFZhciBKU0dsb2JhbE9iagogICAg
IGludCBpbmRleCA9IHN5bWJvbFRhYmxlKCktPnNpemUobG9ja2VyKTsKICAgICBTeW1ib2xUYWJs
ZUVudHJ5IG5ld0VudHJ5KGluZGV4LCAoY29uc3RhbnRNb2RlID09IElzQ29uc3RhbnQpID8gUmVh
ZE9ubHkgOiAwKTsKICAgICBpZiAoY29uc3RhbnRNb2RlID09IElzVmFyaWFibGUpCi0gICAgICAg
IG5ld0VudHJ5LnByZXBhcmVUb1dhdGNoKFN5bWJvbFRhYmxlRW50cnk6Ok5vdEluaXRpYWxpemVk
KTsKKyAgICAgICAgbmV3RW50cnkucHJlcGFyZVRvV2F0Y2goKTsKICAgICBTeW1ib2xUYWJsZTo6
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS0+YWRkKGxvY2tlciwgaWRlbnQu
aW1wbCgpLCBuZXdFbnRyeSk7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBh
ZGRSZWdpc3RlcnMoMSk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
YWRkRnVuY3Rpb24oRXhlY1N0YQogICAgIE5ld0dsb2JhbFZhciB2YXIgPSBhZGRHbG9iYWxWYXIo
cHJvcGVydHlOYW1lLCBJc1ZhcmlhYmxlKTsKICAgICByZWdpc3RlckF0KHZhci5yZWdpc3Rlck51
bWJlcikuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIHZhbHVlKTsKICAgICBpZiAodmFyLnNldCkKLSAg
ICAgICAgdmFyLnNldC0+bm90aWZ5V3JpdGUoKTsKKyAgICAgICAgdmFyLnNldC0+bm90aWZ5V3Jp
dGUodmFsdWUpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTT2JqZWN0KiBsYXN0SW5Qcm90b3R5cGVD
aGFpbihKU09iamVjdCogb2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTEsNyArMjkxLDcgQEAgcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RhbnRNb2RlIHsgSXNDb25z
dGFudCwgSXNWYXJpYWJsZSB9OwogICAgIHN0cnVjdCBOZXdHbG9iYWxWYXIgewogICAgICAgICBp
bnQgcmVnaXN0ZXJOdW1iZXI7Ci0gICAgICAgIFdhdGNocG9pbnRTZXQqIHNldDsKKyAgICAgICAg
VmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQ7CiAgICAgfTsKICAgICBOZXdHbG9iYWxWYXIgYWRk
R2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImLCBDb25zdGFudE1vZGUpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCShyZXZpc2lvbiAxNTk3MzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTY29wZUNoYWluSXRlcmF0
b3I7Ci1jbGFzcyBXYXRjaHBvaW50U2V0OworY2xhc3MgVmFyaWFibGVXYXRjaHBvaW50U2V0Owog
CiBlbnVtIFJlc29sdmVNb2RlIHsKICAgICBUaHJvd0lmTm90Rm91bmQsCkBAIC05Niw3ICs5Niw3
IEBAIGlubGluZSBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc28KIH0KIAogc3RydWN0
IFJlc29sdmVPcCB7Ci0gICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0
aCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVp
bnRwdHJfdCBvcGVyYW5kKQorICAgIFJlc29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3Qg
ZGVwdGgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHdhdGNo
cG9pbnRTZXQsIHVpbnRwdHJfdCBvcGVyYW5kKQogICAgICAgICA6IHR5cGUodHlwZSkKICAgICAg
ICAgLCBkZXB0aChkZXB0aCkKICAgICAgICAgLCBzdHJ1Y3R1cmUoc3RydWN0dXJlKQpAQCAtMTA4
LDcgKzEwOCw3IEBAIHN0cnVjdCBSZXNvbHZlT3AgewogICAgIFJlc29sdmVUeXBlIHR5cGU7CiAg
ICAgc2l6ZV90IGRlcHRoOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwotICAgIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQ7CisgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBv
aW50U2V0OwogICAgIHVpbnRwdHJfdCBvcGVyYW5kOwogfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkocmV2aXNp
b24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDYgQEAgaW5saW5lIGJvb2wg
c3ltYm9sVGFibGVQdXQoCiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpo
ZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKG9iamVjdCkpOwogICAgIAogICAgIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4qIHJlZzsKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSAwOwogICAgIHsK
ICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUo
KTsKICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUu
bV9sb2NrLCBleGVjLT52bSgpLmhlYXApOwpAQCAtMTM4LDE1ICsxMzcsMTQgQEAgaW5saW5lIGJv
b2wgc3ltYm9sVGFibGVQdXQoCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIHNldCA9IGl0ZXItPnZhbHVlLndhdGNocG9pbnRT
ZXQoKTsKKyAgICAgICAgaWYgKFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gaXRlci0+dmFs
dWUud2F0Y2hwb2ludFNldCgpKQorICAgICAgICAgICAgc2V0LT5ub3RpZnlXcml0ZSh2YWx1ZSk7
CiAgICAgICAgIHJlZyA9ICZvYmplY3QtPnJlZ2lzdGVyQXQoZmFzdEVudHJ5LmdldEluZGV4KCkp
OwogICAgIH0KICAgICAvLyBJJ2QgcHJlZmVyIHdlIG5vdCBob2xkIGxvY2sgd2hpbGUgZXhlY3V0
aW5nIGJhcnJpZXJzLCBzaW5jZSBJIHByZWZlciB0byByZXNlcnZlCiAgICAgLy8gdGhlIHJpZ2h0
IGZvciBiYXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJIGRvbid0IHdhbnQg
dG8gaG9sZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4KICAgICByZWctPnNldCh2bSwg
b2JqZWN0LCB2YWx1ZSk7Ci0gICAgaWYgKHNldCkKLSAgICAgICAgc2V0LT5ub3RpZnlXcml0ZSgp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNTgsNyArMTU2LDYgQEAgaW5saW5lIGJvb2wg
c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1
ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKIAogICAgIFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSAw
OwogICAgIHsKICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3lt
Ym9sVGFibGUoKTsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFi
bGUubV9sb2NrKTsKQEAgLTE2NywxMyArMTY0LDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxl
UHV0V2l0aEF0dHJpYnV0ZXMKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU3lt
Ym9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKICAgICAgICAgQVNTRVJUKCFlbnRy
eS5pc051bGwoKSk7Ci0gICAgICAgIHNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKKyAgICAg
ICAgaWYgKFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgp
KQorICAgICAgICAgICAgc2V0LT5ub3RpZnlXcml0ZSh2YWx1ZSk7CiAgICAgICAgIGVudHJ5LnNl
dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgICAgIHJlZyA9ICZvYmplY3QtPnJlZ2lzdGVy
QXQoZW50cnkuZ2V0SW5kZXgoKSk7CiAgICAgfQogICAgIHJlZy0+c2V0KHZtLCBvYmplY3QsIHZh
bHVlKTsKLSAgICBpZiAoc2V0KQotICAgICAgICBzZXQtPm5vdGlmeVdyaXRlKCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5jcHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMzcgKzU4LDMy
IEBAIHZvaWQgU3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5U2xvdygKICAgICBkZWxldGUg
ZmF0RW50cnkoKTsKIH0KIAotYm9vbCBTeW1ib2xUYWJsZUVudHJ5Ojpjb3VsZEJlV2F0Y2hlZCgp
CitKU1ZhbHVlIFN5bWJvbFRhYmxlRW50cnk6OmluZmVycmVkVmFsdWUoKQogewogICAgIGlmICgh
aXNGYXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdhdGNocG9pbnRTZXQqIHdhdGNo
cG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKLSAgICBpZiAoIXdhdGNo
cG9pbnRzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHdhdGNocG9pbnRzLT5z
dGF0ZSgpID09IElzV2F0Y2hlZDsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICByZXR1
cm4gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy0+aW5mZXJyZWRWYWx1ZSgpOwogfQogCi12b2lk
IFN5bWJvbFRhYmxlRW50cnk6OnByZXBhcmVUb1dhdGNoKFdhdGNoU3RhdGUgc3RhdGUpCit2b2lk
IFN5bWJvbFRhYmxlRW50cnk6OnByZXBhcmVUb1dhdGNoKCkKIHsKICAgICBGYXRFbnRyeSogZW50
cnkgPSBpbmZsYXRlKCk7CiAgICAgQVNTRVJUKCFlbnRyeS0+bV93YXRjaHBvaW50cyk7Ci0gICAg
ZW50cnktPm1fd2F0Y2hwb2ludHMgPSBhZG9wdFJlZigKLSAgICAgICAgbmV3IFdhdGNocG9pbnRT
ZXQoc3RhdGUgPT0gQWxyZWFkeUluaXRpYWxpemVkID8gSXNXYXRjaGVkIDogQ2xlYXJXYXRjaHBv
aW50KSk7CisgICAgZW50cnktPm1fd2F0Y2hwb2ludHMgPSBhZG9wdFJlZihuZXcgVmFyaWFibGVX
YXRjaHBvaW50U2V0KCkpOwogfQogCiB2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmFkZFdhdGNocG9p
bnQoV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkKIHsKLSAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQo
KSk7CiAgICAgZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkKHdhdGNocG9pbnQpOwogfQog
Ci12b2lkIFN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlU2xvdygpCit2b2lkIFN5bWJvbFRh
YmxlRW50cnk6Om5vdGlmeVdyaXRlU2xvdyhKU1ZhbHVlIHZhbHVlKQogewotICAgIFdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAg
ICBWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRj
aHBvaW50cy5nZXQoKTsKICAgICBpZiAoIXdhdGNocG9pbnRzKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgd2F0Y2hwb2ludHMtPm5vdGlmeVdyaXRlKCk7CisgICAgd2F0Y2hwb2ludHMtPm5v
dGlmeVdyaXRlKHZhbHVlKTsKIH0KIAogU3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnkqIFN5bWJv
bFRhYmxlRW50cnk6OmluZmxhdGVTbG93KCkKQEAgLTEwOSw1ICsxMDQsMzEgQEAgU3ltYm9sVGFi
bGU6OlN5bWJvbFRhYmxlKFZNJiB2bSkKIAogU3ltYm9sVGFibGU6On5TeW1ib2xUYWJsZSgpIHsg
fQogCit2b2lkIFN5bWJvbFRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogdGhpc0NlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFN5bWJvbFRhYmxlKiB0aGlzU3ltYm9sVGFibGUg
PSBqc0Nhc3Q8U3ltYm9sVGFibGUqPih0aGlzQ2VsbCk7CisgICAgaWYgKCF0aGlzU3ltYm9sVGFi
bGUtPm1fd2F0Y2hwb2ludENsZWFudXApCisgICAgICAgIHRoaXNTeW1ib2xUYWJsZS0+bV93YXRj
aHBvaW50Q2xlYW51cCA9IHN0ZDo6bWFrZV91bmlxdWU8V2F0Y2hwb2ludENsZWFudXA+KCk7Cisg
ICAgCisgICAgdmlzaXRvci5hZGRVbmNvbmRpdGlvbmFsRmluYWxpemVyKHRoaXNTeW1ib2xUYWJs
ZS0+bV93YXRjaHBvaW50Q2xlYW51cC5nZXQoKSk7Cit9CisKK1N5bWJvbFRhYmxlOjpXYXRjaHBv
aW50Q2xlYW51cDo6V2F0Y2hwb2ludENsZWFudXAoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQor
ICAgIDogbV9zeW1ib2xUYWJsZShzeW1ib2xUYWJsZSkKK3sKK30KKworU3ltYm9sVGFibGU6Oldh
dGNocG9pbnRDbGVhbnVwOjp+V2F0Y2hwb2ludENsZWFudXAoKSB7IH0KKwordm9pZCBTeW1ib2xU
YWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkKK3sKKyAg
ICBNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3N5bWJvbFRhYmxlLT5tX21hcC5iZWdpbigpOworICAg
IE1hcDo6aXRlcmF0b3IgZW5kID0gbV9zeW1ib2xUYWJsZS0+bV9tYXAuZW5kKCk7CisgICAgZm9y
ICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgaWYgKFZhcmlhYmxlV2F0Y2hwb2lu
dFNldCogc2V0ID0gaXRlci0+dmFsdWUud2F0Y2hwb2ludFNldCgpKQorICAgICAgICAgICAgc2V0
LT5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDEzIEBACiAKICNpbmNsdWRl
ICJDb25jdXJyZW50SklUTG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAi
V2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlV2F0Y2hwb2ludFNldC5oIgogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIFdhdGNocG9pbnQ7
Ci1jbGFzcyBXYXRjaHBvaW50U2V0OwotCiBzdHJ1Y3QgU2xvd0FyZ3VtZW50IHsKICAgICBlbnVt
IFN0YXR1cyB7CiAgICAgICAgIE5vcm1hbCA9IDAsCkBAIC03OSwxMSArNzYsMTEgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgaW50IG1pc3NpbmdTeW1ib2xNYQogLy8gY291bnRlZCBwb2ludGVyIHRv
IGEgc2hhcmVkIFdhdGNocG9pbnRTZXQuIFRodXMsIGluLXBsYWNlIGVkaXRzIG9mIHRoZQogLy8g
V2F0Y2hwb2ludFNldCB3aWxsIG1hbmlmZXN0IGluIGFsbCBjb3BpZXMuIEhlcmUncyBhIHBpY3R1
cmU6CiAvLwotLy8gU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNocG9pbnRT
ZXQKKy8vIFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVudHJ5IC0tPiBWYXJpYWJsZVdhdGNocG9p
bnRTZXQKIC8vCiAvLyBJZiB5b3UgbWFrZSBhIGNvcHkgb2YgYSBTeW1ib2xUYWJsZUVudHJ5LCB5
b3Ugd2lsbCBoYXZlOgogLy8KLS8vIG9yaWdpbmFsOiBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRF
bnRyeSAtLT4gV2F0Y2hwb2ludFNldAorLy8gb3JpZ2luYWw6IFN5bWJvbFRhYmxlRW50cnkgLS0+
IEZhdEVudHJ5IC0tPiBWYXJpYWJsZVdhdGNocG9pbnRTZXQKIC8vIGNvcHk6ICAgICBTeW1ib2xU
YWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLS0tLV4KIAogc3RydWN0IFN5bWJvbFRhYmxlRW50cnkg
ewpAQCAtMjE4LDI1ICsyMTUsMjQgQEAgc3RydWN0IFN5bWJvbFRhYmxlRW50cnkgewogICAgICAg
ICByZXR1cm4gYml0cygpICYgUmVhZE9ubHlGbGFnOwogICAgIH0KICAgICAKLSAgICBib29sIGNv
dWxkQmVXYXRjaGVkKCk7CisgICAgSlNWYWx1ZSBpbmZlcnJlZFZhbHVlKCk7CiAgICAgCi0gICAg
ZW51bSBXYXRjaFN0YXRlIHsgTm90SW5pdGlhbGl6ZWQsIEFscmVhZHlJbml0aWFsaXplZCB9Owot
ICAgIHZvaWQgcHJlcGFyZVRvV2F0Y2goV2F0Y2hTdGF0ZSk7CisgICAgdm9pZCBwcmVwYXJlVG9X
YXRjaCgpOwogICAgIAogICAgIHZvaWQgYWRkV2F0Y2hwb2ludChXYXRjaHBvaW50Kik7CiAgICAg
Ci0gICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCgpCisgICAgVmFyaWFibGVXYXRjaHBv
aW50U2V0KiB3YXRjaHBvaW50U2V0KCkKICAgICB7CiAgICAgICAgIGlmICghaXNGYXQoKSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV93YXRjaHBv
aW50cy5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIG5vdGlmeVdy
aXRlKCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5V3JpdGUoSlNWYWx1ZSB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBub3RpZnlXcml0ZVNsb3coKTsKKyAgICAgICAgbm90aWZ5V3JpdGVTbG93KHZh
bHVlKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpAQCAtMjU2LDExICsyNTIsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIGludHB0cl90IG1fYml0czsgLy8gYWx3YXlzIGhhcyBGYXRG
bGFnIHNldCBhbmQgZXhhY3RseSBtYXRjaGVzIHdoYXQgdGhlIGJpdHMgd291bGQgaGF2ZSBiZWVu
IGlmIHRoaXMgd2Fzbid0IGZhdC4KICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxXYXRjaHBvaW50
U2V0PiBtX3dhdGNocG9pbnRzOworICAgICAgICBSZWZQdHI8VmFyaWFibGVXYXRjaHBvaW50U2V0
PiBtX3dhdGNocG9pbnRzOwogICAgIH07CiAgICAgCiAgICAgU3ltYm9sVGFibGVFbnRyeSYgY29w
eVNsb3coY29uc3QgU3ltYm9sVGFibGVFbnRyeSYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgbm90aWZ5V3JpdGVTbG93KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBub3RpZnlX
cml0ZVNsb3coSlNWYWx1ZSk7CiAgICAgCiAgICAgYm9vbCBpc0ZhdCgpIGNvbnN0CiAgICAgewpA
QCAtNDY2LDkgKzQ2MiwyMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU2xvd0FyZ3VtZW50KiBzbG93
QXJndW1lbnRzKCkgeyByZXR1cm4gbV9zbG93QXJndW1lbnRzLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXRTbG93QXJndW1lbnRzKHN0ZDo6dW5pcXVlX3B0cjxTbG93QXJndW1lbnRbXT4gc2xvd0FyZ3Vt
ZW50cykgeyBtX3Nsb3dBcmd1bWVudHMgPSBzdGQ6Om1vdmUoc2xvd0FyZ3VtZW50cyk7IH0KIAor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKwog
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKIHByaXZhdGU6CisgICAgY2xhc3MgV2F0Y2hwb2lu
dENsZWFudXAgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciB7CisgICAgcHVibGljOgor
ICAgICAgICBXYXRjaHBvaW50Q2xlYW51cChTeW1ib2xUYWJsZSopOworICAgICAgICB2aXJ0dWFs
IH5XYXRjaHBvaW50Q2xlYW51cCgpOworICAgICAgICAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAg
IHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIE9WRVJSSURFOworCisgICAg
cHJpdmF0ZToKKyAgICAgICAgU3ltYm9sVGFibGUqIG1fc3ltYm9sVGFibGU7CisgICAgfTsKKyAg
ICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xUYWJsZShWTSYpOwogICAgIH5TeW1ib2xU
YWJsZSgpOwogCkBAIC00ODEsNiArNDkxLDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9jYXB0dXJl
RW5kOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dBcmd1bWVudFtdPiBtX3Nsb3dBcmd1bWVu
dHM7CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9pbnRDbGVhbnVwPiBtX3dhdGNo
cG9pbnRDbGVhbnVwOwogCiBwdWJsaWM6CiAgICAgbXV0YWJsZSBDb25jdXJyZW50SklUTG9jayBt
X2xvY2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217755</attachid>
            <date>2013-11-23 16:26:48 -0800</date>
            <delta_ts>2013-11-25 21:27:51 -0800</delta_ts>
            <desc>the wrong approach</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>49482</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBA
QAorMjAxMy0xMS0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlc3RydWN0dXJlIGdsb2JhbCB2YXJpYWJsZSBjb25zdGFudCBpbmZlcmVuY2Ugc28gdGhhdCBp
dCBjb3VsZCB3b3JrIGZvciBhbnkga2luZCBvZiBzeW1ib2wgdGFibGUgdmFyaWFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBj
aGFuZ2VzIHRoZSB3YXkgZ2xvYmFsIHZhcmlhYmxlIGNvbnN0YW50IGluZmVyZW5jZSB3b3JrcyBz
byB0aGF0IGl0IGNhbiBiZSByZXVzZWQKKyAgICAgICAgZm9yIGNsb3N1cmUgdmFyaWFibGUgY29u
c3RhbnQgaW5mZXJlbmNlLiBDbG9zdXJlIHZhcmlhYmxlcyBtYXkgYmUgaW5zdGFudGlhdGVkIG11
bHRpcGxlCisgICAgICAgIHRpbWVzLCBsaWtlOgorICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGZvbygpIHsKKyAgICAgICAgICAgICAgICB2YXIgV0lEVEggPSA0NTsKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbiBiYXIoKSB7CisgICAgICAgICAgICAgICAgICAgIC4uLiB1c2UgV0lEVEgg
Li4uCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgRXZlbiBpZiBmb28oKSBpcyBjYWxsZWQgbWFueSB0aW1lcyBh
bmQgV0lEVEggaXMgYXNzaWduZWQgdG8gbXVsdGlwbGUgdGltZXMsIHRoYXQKKyAgICAgICAgZG9l
c24ndCBjaGFuZ2UgdGhlIGZhY3QgdGhhdCBpdCdzIGEgY29uc3RhbnQuIFRoZSBnb2FsIG9mIGNs
b3N1cmUgdmFyaWFibGUgY29uc3RhbnQKKyAgICAgICAgaW5mZXJlbmNlIGlzIHRvIGNhdGNoIGFu
eSBjYXNlIHdoZXJlIGEgY2xvc3VyZSB2YXJpYWJsZSBoYXMgYmVlbiBhc3NpZ25lZCBhdCBsZWFz
dCBvbmNlCisgICAgICAgIGFuZCBpdHMgdmFsdWUgaGFzIG5ldmVyIGNoYW5nZWQuIFRoaXMgcGF0
Y2ggZG9lc24ndCBpbXBsZW1lbnQgdGhhdCwgYnV0IGl0IGRvZXMgY2hhbmdlCisgICAgICAgIGds
b2JhbCB2YXJpYWJsZSBjb25zdGFudCBpbmZlcmVuY2UgdG8gaGF2ZSBhbGwgb2YgdGhlIHBvd2Vy
cyBuZWVkZWQgdG8gZG8gdGhhdC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaW52b2x2ZXMgdGhy
ZWUgY2hhbmdlczoKKyAgICAgICAgCisgICAgICAgICAgICAtIFRoZSB3YXRjaHBvaW50IG9iamVj
dCBub3cgY29udGFpbnMgdGhlIGluZmVycmVkIHZhbHVlLiBUaGlzIGludm9sdmVzIGNyZWF0aW5n
IGEKKyAgICAgICAgICAgICAgbmV3IGtpbmQgb2Ygd2F0Y2hwb2ludCBzZXQsIHRoZSBWYXJpYWJs
ZVdhdGNocG9pbnRTZXQuIFdlIHdpbGwgcmV1c2UgdGhpcyBvYmplY3QKKyAgICAgICAgICAgICAg
Zm9yIGNsb3N1cmUgdmFyaWFibGVzLgorICAgICAgICAKKyAgICAgICAgICAgIC0gV3JpdGluZyB0
byBhIHZhcmlhYmxlIHRoYXQgaXMgd2F0Y2hwb2ludGVkIHN0aWxsIGludm9sdmVzIHRoZXNlIHRo
cmVlIHN0YXRlcyB0aGF0CisgICAgICAgICAgICAgIHdlIHByb2NlZWQgdGhyb3VnaCBtb25vdG9u
aWNhbGx5IChVbmluaXRpYWxpemVkLT5Jbml0aWFsaXplZC0+SW52YWxpZGF0ZWQpIGJ1dAorICAg
ICAgICAgICAgICBub3csIHRoZSBJbml0aWFsaXplZC0+SW52YWxpZGF0ZWQgc3RhdGUgdHJhbnNp
dGlvbiBvbmx5IGhhcHBlbnMgaWYgd2UgY2hhbmdlIHRoZQorICAgICAgICAgICAgICB2YXJpYWJs
ZSdzIHZhbHVlLCByYXRoZXIgdGhhbiBzdG9yZSB0byB0aGUgdmFyaWFibGUuIFJlcGVhdGVkbHkg
c3RvcmluZyB0aGUgc2FtZQorICAgICAgICAgICAgICB2YWx1ZSB3b24ndCBjaGFuZ2UgdGhlIHZh
cmlhYmxlJ3Mgc3RhdGUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgICogYnl0ZWNvZGUvVmFyaWFibGVXYXRj
aHBvaW50U2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpWYXJpYWJsZVdhdGNocG9pbnRTZXQ6
OlZhcmlhYmxlV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0Y2hwb2lu
dFNldDo6flZhcmlhYmxlV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0
Y2hwb2ludFNldDo6aW5mZXJyZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0Y2hw
b2ludFNldDo6bm90aWZ5V3JpdGUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZVdhdGNocG9pbnRT
ZXQ6OmludmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZVdhdGNocG9pbnRTZXQ6OmZp
bmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBvaW50
U2V0OjphZGRyZXNzT2ZJbmZlcnJlZFZhbHVlKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBv
aW50Lmg6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVy
aXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9k
ZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNSZWdpc3RlclBvaW50ZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1ZhcmlhYmxl
V2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6dmFyaWFibGVXYXRjaHBv
aW50U2V0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAg
KiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRm
Zy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5vdGlmeVdyaXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
V2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZTo6aGFuZGxlKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRHbG9iYWxWYXIpOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRHbG9iYWxW
YXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUu
aDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU9wOjpSZXNvbHZlT3ApOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6
CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
OjppbmZlcnJlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6cHJlcGFy
ZVRvV2F0Y2gpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjphZGRXYXRjaHBvaW50
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5V3JpdGVTbG93KToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpT
eW1ib2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OldhdGNocG9pbnRDbGVhbnVwKToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6OldhdGNocG9pbnRDbGVhbnVwOjp+V2F0Y2hwb2ludENsZWFu
dXApOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6Cisg
ICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OndhdGNocG9pbnRTZXQpOgorICAgICAgICAo
SlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZSk6CisKIDIwMTMtMTEtMjIgIE1hcmsg
SGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0MgT2JqLUMg
QVBJIHNob3VsZCBoYXZlIHJlYWwgZG9jdW1lbnRhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xODEs
NiArMTgxLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WYWx1ZVJlY292ZXJ5LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9W
YXJpYWJsZVdhdGNocG9pbnRTZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZpcnR1YWxSZWdpc3Rlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50
LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lv
biAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03OTUsNiArNzk1LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFVubGlua2VkQ29kZUJsb2Nr
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxWYWx1ZVByb2ZpbGUu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFZhbHVlUmVjb3Zlcnku
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFZhcmlhYmxlV2F0Y2hw
b2ludFNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcVmlydHVh
bFJlZ2lzdGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxXYXRj
aHBvaW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29tcGlsZXJcQnl0
ZWNvZGVHZW5lcmF0b3IuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCw3
IEBACiAJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGOTQzRjE2Njc2MzJEMDBE
NjE5NzEgLyogQ29kZVR5cGUuY3BwICovOyB9OwogCQkwRjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEg
LyogSklUQ29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjhGOTQ0MzE2Njc2MzUyMDBENjE5NzEgLyogSklUQ29kZS5jcHAgKi87IH07CiAJCTBG
OEY5NDQ2MTY2NzY0RjEwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDQ1MTY2NzY0RUUwMEQ2MTk3MSAv
KiBDb2RlT3JpZ2luLmNwcCAqLzsgfTsKKwkJMEY5MTgxQzcxODQxNUNBNTAwNTdCNjY5IC8qIFZh
cmlhYmxlV2F0Y2hwb2ludFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5MTgxQzYxODQxNUNBNTAwNTdCNjY5IC8qIFZhcmlhYmxlV2F0Y2hwb2lu
dFNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGOTE5RDBDMTU3RUUwOUYwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDA5MTU3RUUw
OUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCAqLzsgfTsKIAkJMEY5MTlEMEQx
NTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAv
KiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5MTlEMEUxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwICovOyB9OwpAQCAtMTU5Myw2ICsxNTk0LDcgQEAKIAkJMEY4Rjk0M0YxNjY3NjMy
RDAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvZGVUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4Rjk0
NDMxNjY3NjM1MjAwRDYxOTcxIC8qIEpJVENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSklUQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOEY5NDQ1MTY2NzY0RUUwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjkxODFDNjE4NDE1Q0E1MDA1N0I2NjkgLyogVmFyaWFibGVXYXRjaHBv
aW50U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhcmlhYmxlV2F0Y2hw
b2ludFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkxOUQwOTE1N0VFMDlE
MDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9i
amVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0
QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxMzIsNiArNDEzNCw3IEBACiAJCQkJMEY5NjNCMzYx
M0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTBGMjRFNTU3MTdGNzRF
REIwMEFCQjIxNyAvKiBWYWx1ZVJlY292ZXJ5LmNwcCAqLywKIAkJCQkwRjQyNkE0NTE0NjBDQkFC
MDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovLAorCQkJCTBGOTE4MUM2MTg0MTVDQTUwMDU3
QjY2OSAvKiBWYXJpYWJsZVdhdGNocG9pbnRTZXQuaCAqLywKIAkJCQkwRjQyNkE0NjE0NjBDQkFC
MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAw
NEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAogCQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3
RCAvKiBXYXRjaHBvaW50LmggKi8sCkBAIC00Mzc1LDYgKzQzNzgsNyBAQAogCQkJCTBGQzA5N0Ey
MTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhB
MzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyQTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE4MUM3MTg0
MTVDQTUwMDU3QjY2OSAvKiBWYXJpYWJsZVdhdGNocG9pbnRTZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRDhBMzJDMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQzRjE1Qzc1
RjE5MDA2QTU5N0MgLyogREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCRTBGNzcxNkMxREIxMjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIG5h
bWVzcGFjZSBKU0MgewogY2xhc3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKIGNsYXNzIEFycmF5
UHJvZmlsZTsKIGNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOworY2xhc3MgVmFyaWFibGVX
YXRjaHBvaW50U2V0Owogc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogc3RydWN0IFZhbHVlUHJv
ZmlsZTsKIApAQCAtMTE1LDcgKzExNiw3IEBAIHN0cnVjdCBJbnN0cnVjdGlvbiB7CiAgICAgICAg
IEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlOwogICAgICAgICBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlKiBhcnJheUFsbG9jYXRpb25Qcm9maWxlOwogICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSogb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7Ci0gICAgICAgIFdhdGNocG9pbnRTZXQqIHdh
dGNocG9pbnRTZXQ7CisgICAgICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNl
dDsKICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgYm9vbCogcHJlZGljYXRlUG9pbnRl
cjsKICAgICB9IHU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFyaWFi
bGVXYXRjaHBvaW50U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNldC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVmFyaWFibGVXYXRjaHBvaW50U2V0X2gKKyNkZWZp
bmUgVmFyaWFibGVXYXRjaHBvaW50U2V0X2gKKworI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKyNp
bmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFZhcmlh
YmxlV2F0Y2hwb2ludFNldCA6IHB1YmxpYyBXYXRjaHBvaW50U2V0IHsKKyAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIFZhcmlhYmxlV2F0Y2hwb2lu
dFNldCgpCisgICAgICAgIDogV2F0Y2hwb2ludFNldChDbGVhcldhdGNocG9pbnQpCisgICAgewor
ICAgIH0KKyAgICAKKyAgICB+VmFyaWFibGVXYXRjaHBvaW50U2V0KCkgeyB9CisgICAgCisgICAg
Ly8gRm9yIHRoZSBwdXJwb3NlIG9mIGRlY2lkaW5nIHdoZXRoZXIgb3Igbm90IHRvIHdhdGNoIHRo
aXMgdmFyaWFibGUsIHlvdSBvbmx5IG5lZWQKKyAgICAvLyB0byBpbnNwZWN0IGluZmVycmVkVmFs
dWUoKS4gSWYgdGhpcyByZXR1cm5zIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSBlbXB0eQorICAg
IC8vIHZhbHVlLCB0aGVuIGl0IG1lYW5zIHRoYXQgYXQgYWxsIGZ1dHVyZSBzYWZlcG9pbnRzLCB0
aGlzIHdhdGNocG9pbnQgc2V0IHdpbGwgYmUKKyAgICAvLyBpbiBvbmUgb2YgdGhlc2Ugc3RhdGVz
OgorICAgIC8vCisgICAgLy8gICAgSXNXYXRjaGVkOiBpbiB0aGlzIGNhc2UsIHRoZSB2YXJpYWJs
ZSdzIHZhbHVlIG11c3Qgc3RpbGwgYmUgdGhlCisgICAgLy8gICAgICAgIGluZmVycmVkVmFsdWUu
CisgICAgLy8KKyAgICAvLyAgICBJc0ludmFsaWRhdGVkOiBpbiB0aGlzIGNhc2UgdGhlIHZhcmlh
YmxlJ3MgdmFsdWUgbWF5IGJlIGFueXRoaW5nIGJ1dCB5b3UnbGwKKyAgICAvLyAgICAgICAgZWl0
aGVyIG5vdGljZSB0aGF0IGl0J3MgaW52YWxpZGF0ZWQgYW5kIG5vdCBpbnN0YWxsIHRoZSB3YXRj
aHBvaW50LCBvcgorICAgIC8vICAgICAgICB5b3Ugd2lsbCBoYXZlIGJlZW4gbm90aWZpZWQgdGhh
dCB0aGUgd2F0Y2hwb2ludCB3YXMgZmlyZWQuCisgICAgSlNWYWx1ZSBpbmZlcnJlZFZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmZlcnJlZFZhbHVlOyB9CisgICAgCisgICAgdm9pZCBub3RpZnlX
cml0ZShKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhdmFsdWUpOworICAg
ICAgICBzd2l0Y2ggKHN0YXRlKCkpIHsKKyAgICAgICAgY2FzZSBDbGVhcldhdGNocG9pbnQ6Cisg
ICAgICAgICAgICBtX2luZmVycmVkVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIHN0YXJ0V2F0
Y2hpbmcoKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlIElzV2F0Y2hlZDoK
KyAgICAgICAgICAgIEFTU0VSVCghIW1faW5mZXJyZWRWYWx1ZSk7CisgICAgICAgICAgICBpZiAo
dmFsdWUgPT0gbV9pbmZlcnJlZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIElzSW52YWxpZGF0ZWQ6CisgICAgICAgICAgICBBU1NFUlQoIW1faW5mZXJy
ZWRWYWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGludmFsaWRh
dGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhbV9pbmZlcnJlZFZhbHVlKTsKKyAgICAgICAg
QVNTRVJUKHN0YXRlKCkgPT0gSXNXYXRjaGVkKTsKKyAgICAgICAgbV9pbmZlcnJlZFZhbHVlID0g
SlNWYWx1ZSgpOworICAgICAgICBmaXJlQWxsKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhbV9pbmZlcnJl
ZFZhbHVlID09IChzdGF0ZSgpID09IElzV2F0Y2hlZCkpOworICAgICAgICBpZiAoIW1faW5mZXJy
ZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFtX2luZmVycmVkVmFs
dWUuaXNDZWxsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEpTQ2VsbCogY2VsbCA9
IG1faW5mZXJyZWRWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNl
bGwpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgfQor
ICAgIAorICAgIEpTVmFsdWUqIGFkZHJlc3NPZkluZmVycmVkVmFsdWUoKSB7IHJldHVybiAmbV9p
bmZlcnJlZFZhbHVlOyB9CisKK3ByaXZhdGU6CisgICAgSlNWYWx1ZSBtX2luZmVycmVkVmFsdWU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFZhcmlhYmxlV2F0Y2hwb2lu
dFNldF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9p
bnQuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1dhdGNocG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDE0ICsxMDgsNiBAQCBwdWJsaWM6
CiAgICAgICAgIGZpcmVBbGxTbG93KCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgbm90aWZ5V3Jp
dGUoKQotICAgIHsKLSAgICAgICAgaWYgKHN0YXRlKCkgPT0gQ2xlYXJXYXRjaHBvaW50KQotICAg
ICAgICAgICAgc3RhcnRXYXRjaGluZygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaXJl
QWxsKCk7Ci0gICAgfQotICAgIAogICAgIGludDhfdCogYWRkcmVzc09mU3RhdGUoKSB7IHJldHVy
biAmbV9zdGF0ZTsgfQogICAgIGludDhfdCogYWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpIHsgcmV0
dXJuICZtX3NldElzTm90RW1wdHk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTUwNSwxMyArMTUwNSwxMyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5v
ZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNh
c2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAg
ICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQo
dHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRHbG9iYWxW
YXI6Ci0gICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6CisgICAgY2FzZSBOb3RpZnlXcml0ZToK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOTQsMTMgKzMwOTQsMTUgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgY2Fz
ZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChQaGFudG9tLCBnZXQoVmlydHVhbFJlZ2lzdGVyKHNjb3BlKSkpOwogICAgICAgICAg
ICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxl
KCktPmdldCh1aWQpOwotICAgICAgICAgICAgICAgIGlmICghZW50cnkuY291bGRCZVdhdGNoZWQo
KSB8fCAhbV9ncmFwaC53YXRjaHBvaW50cygpLmlzU3RpbGxWYWxpZChlbnRyeS53YXRjaHBvaW50
U2V0KCkpKSB7CisgICAgICAgICAgICAgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBv
aW50U2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOworICAgICAgICAgICAgICAgIEpTVmFsdWUg
c3BlY2lmaWNWYWx1ZSA9CisgICAgICAgICAgICAgICAgICAgIHdhdGNocG9pbnRTZXQgPyB3YXRj
aHBvaW50U2V0LT5pbmZlcnJlZFZhbHVlKCkgOiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAg
aWYgKCFzcGVjaWZpY1ZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoZHN0KSwgYWRkVG9HcmFwaChHZXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJ
bmZvKHByZWRpY3Rpb24pKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2xvYmFsVmFyV2F0Y2hwb2lu
dCwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8oaWRlbnRpZmllck51bWJlcikpOwotICAgICAgICAg
ICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChl
bnRyeS5nZXRJbmRleCgpKS5nZXQoKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFZhcmlh
YmxlV2F0Y2hwb2ludCwgT3BJbmZvKHdhdGNocG9pbnRTZXQpKTsKICAgICAgICAgICAgICAgICBp
ZiAoc3BlY2lmaWNWYWx1ZS5pc0NlbGwoKSkKICAgICAgICAgICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3Rlcihkc3QpLCBjZWxsQ29uc3RhbnQoc3BlY2lmaWNWYWx1ZS5hc0NlbGwoKSkpOwog
ICAgICAgICAgICAgICAgIGVsc2UKQEAgLTMxMjgsNyArMzEzMCw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKIAogICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAwOwotICAgICAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0
Y2hwb2ludHMgPSAwOworICAgICAgICAgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBv
aW50cyA9IDA7CiAgICAgICAgICAgICB1aW50cHRyX3Qgb3BlcmFuZDsKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CkBAIC0zMTYwLDkgKzMxNjIsMTAgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgY2FzZSBH
bG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKS0+Z2V0KHVpZCk7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKHdhdGNocG9pbnRzID09IGVudHJ5LndhdGNocG9pbnRT
ZXQoKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRHbG9iYWxWYXIsIE9wSW5mbyhv
cGVyYW5kKSwgZ2V0KFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICBO
b2RlKiB2YWx1ZU5vZGUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKHZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChQdXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgdmFsdWVOb2Rl
KTsKICAgICAgICAgICAgICAgICBpZiAod2F0Y2hwb2ludHMtPnN0YXRlKCkgIT0gSXNJbnZhbGlk
YXRlZCkKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOb3RpZnlQdXRHbG9iYWxWYXIs
IE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChOb3RpZnlXcml0ZSwgT3BJbmZvKHdhdGNocG9pbnRzKSwgdmFs
dWVOb2RlKTsKICAgICAgICAgICAgICAgICAvLyBLZWVwIHNjb3BlIGFsaXZlIHVudGlsIGFmdGVy
IHB1dC4KICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChWaXJ0dWFsUmVn
aXN0ZXIoc2NvcGUpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2MCwyOCArMjYwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAg
IAotICAgIGJvb2wgZ2xvYmFsVmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKFdyaXRlQmFycmllcjxV
bmtub3duPiogcmVnaXN0ZXJQb2ludGVyKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1
cnJlbnRCbG9jay0+YXQoaSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+cmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgUHV0R2xvYmFsVmFyOgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5yZWdpc3RlclBv
aW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV9ncmFw
aC5jbG9iYmVyc1dvcmxkKG5vZGUpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBib29sIHZhckluamVjdGlvbldh
dGNocG9pbnRFbGltaW5hdGlvbigpCiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2luZGV4SW5CbG9jazsgaS0tOykgewpAQCAtMTIyOSwxMyArMTIwNyw2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0
Y2hwb2ludDoKLSAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCi0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoZ2xvYmFsVmFyV2F0Y2hwb2lu
dEVsaW1pbmF0aW9uKG5vZGUtPnJlZ2lzdGVyUG9pbnRlcigpKSkKLSAgICAgICAgICAgICAgICBl
bGltaW5hdGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0
b3JlRWxpbWluYXRpb24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0Myw4ICsxNDMsMTMgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZQogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFsVmFyOgorICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50
OgorICAgICAgICByZWFkKFdhdGNocG9pbnRfZmlyZSk7CisgICAgICAgIHJldHVybjsKKyAgICAg
ICAgCisgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgd3JpdGUoV2F0Y2hwb2ludF9maXJl
KTsKKyAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2Fz
ZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtNTIwLDcgKzUyNSw2IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBj
YXNlIEdldEdsb2JhbFZhcjoKLSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAgICAgICAg
IHJlYWQoQWJzdHJhY3RIZWFwKEFic29sdXRlLCBub2RlLT5yZWdpc3RlclBvaW50ZXIoKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsOCAr
OTAzLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgICAgICBj
YXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgICAgIGNh
c2UgTm90aWZ5UHV0R2xvYmFsVmFyOgotICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6
CisgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6CisgICAgICAgIGNhc2UgVmFyaWFibGVXYXRjaHBv
aW50OgogICAgICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6CiAgICAgICAgIGNhc2Ug
QWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgICAgICBjYXNlIENhbGw6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0OCwyMCAr
NzQ4LDkgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQog
ICAgIAotICAgIGJvb2wgaGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBvcCgpID09IEdsb2JhbFZhcldhdGNocG9pbnQgfHwgb3AoKSA9PSBOb3RpZnlQ
dXRHbG9iYWxWYXI7Ci0gICAgfQotICAgIAotICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXJG
b3JDaGVjaygpCi0gICAgewotICAgICAgICBBU1NFUlQoaGFzSWRlbnRpZmllck51bWJlckZvckNo
ZWNrKCkpOwotICAgICAgICByZXR1cm4gbV9vcEluZm8yOwotICAgIH0KLSAgICAKICAgICBib29s
IGhhc1JlZ2lzdGVyUG9pbnRlcigpCiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRH
bG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBHbG9iYWxWYXJXYXRj
aHBvaW50IHx8IG9wKCkgPT0gTm90aWZ5UHV0R2xvYmFsVmFyOworICAgICAgICByZXR1cm4gb3Ao
KSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXI7CiAgICAgfQogICAgIAog
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKCkKQEAgLTk3Myw2ICs5
NjIsMTYgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxFeGVj
dXRhYmxlQmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9vcEluZm8pKTsKICAgICB9
CisgICAgCisgICAgYm9vbCBoYXNWYXJpYWJsZVdhdGNocG9pbnRTZXQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gTm90aWZ5V3JpdGUgfHwgb3AoKSA9PSBWYXJpYWJsZVdhdGNocG9p
bnQ7CisgICAgfQorICAgIAorICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogdmFyaWFibGVXYXRj
aHBvaW50U2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZhcmlh
YmxlV2F0Y2hwb2ludFNldCo+KG1fb3BJbmZvKTsKKyAgICB9CiAKICAgICBib29sIGhhc1N0cnVj
dHVyZVRyYW5zaXRpb25EYXRhKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw4ICsxODQsOCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0Q2xvc3VyZVZhciwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEdsb2JhbFZhciwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFj
cm8oTm90aWZ5UHV0R2xvYmFsVmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oR2xv
YmFsVmFyV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKE5vdGlmeVdy
aXRlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oVmFyaWFibGVXYXRjaHBvaW50LCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk4LDEyICs5OTgsMTIgQEAgY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbgogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjaGFyKj4oZXhlYy0+Y29kZUJsb2NrKCktPnN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUlu
ZGV4KS5jdGlGb3JWYWx1ZShzdHJpbmctPnZhbHVlKGV4ZWMpLmltcGwoKSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlXcml0ZShF
eGVjU3RhdGUqIGV4ZWMsIFdhdGNocG9pbnRTZXQqIHNldCkKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Ob3RpZnlXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFZhcmlhYmxlV2F0Y2hwb2ludFNl
dCogc2V0KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCi0gICAgc2V0LT5ub3RpZnlXcml0ZSgpOworICAg
IHNldC0+aW52YWxpZGF0ZSgpOwogfQogCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25G
TW9kT25JbnRzKGludDMyX3QgYSwgaW50MzJfdCBiKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyAr
MTI1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMgogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMyhFeGVjU3RhdGUqLCBKU1N0cmluZyos
IEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRmlu
ZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgc2l6
ZV90IHRhYmxlSW5kZXgpOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJp
bmcoRXhlY1N0YXRlKiwgc2l6ZV90IHRhYmxlSW5kZXgsIEpTU3RyaW5nKik7Ci12b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTm90aWZ5V3JpdGUoRXhlY1N0YXRlKiwgV2F0Y2hwb2ludFNldCop
Owordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5vdGlmeVdyaXRlKEV4ZWNTdGF0ZSosIFZh
cmlhYmxlV2F0Y2hwb2ludFNldCopOwogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAvLyBGSVhNRTog
TWFrZSBjYWxscyB3b3JrIHdlbGwuIEN1cnJlbnRseSB0aGV5J3JlIGEgcHVyZSByZWdyZXNzaW9u
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NzQsNyArNTc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBU
ZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRzOgogICAgICAg
ICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKLSAgICAgICAgY2FzZSBHbG9iYWxWYXJX
YXRjaHBvaW50OgorICAgICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICAgICAgY2Fz
ZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgogICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxl
V2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtNTgyLDcgKzU4Miw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgogICAgICAgICBjYXNlIFVu
cmVhY2hhYmxlOgogICAgICAgICBjYXNlIExvb3BIaW50OgotICAgICAgICBjYXNlIE5vdGlmeVB1
dEdsb2JhbFZhcjoKKyAgICAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQg
YWxyZWFkeSBoYXMgYSBwcmVkaWN0aW9uLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIs
NyArMTcyLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAg
IGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICBjYXNlIFB1
dEdsb2JhbFZhcjoKLSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgY2FzZSBWYXJp
YWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgogICAgIGNh
c2UgQ2hlY2tGdW5jdGlvbjoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoK
QEAgLTI0Miw3ICsyNDIsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0CiAgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgogICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAg
IGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6Ci0gICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6Cisg
ICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAg
IGNhc2UgR2V0QnlWYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzNTMsMjggKzQzNTMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9p
bnQ6IHsKLSNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCi0gICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7
Ci0gICAgICAgIG1faml0LmxvYWQ2NChub2RlLT5yZWdpc3RlclBvaW50ZXIoKSwgc2NyYXRjaEdQ
Uik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoNjQoCi0gICAg
ICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICBUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKG5vZGUtPnJlZ2lzdGVyUG9pbnRlcigpLT5nZXQoKSkp
KTsKLSAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwotICAgICAgICBvay5saW5rKCZtX2ppdCk7
Ci0jZW5kaWYKLSAgICAgICAgCi0gICAgICAgIG5vUmVzdWx0KG5vZGUpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFsVmFyOiB7Ci0gICAg
ICAgIGNvbXBpbGVOb3RpZnlQdXRHbG9iYWxWYXIobm9kZSk7CisgICAgY2FzZSBOb3RpZnlXcml0
ZTogeworICAgICAgICBjb21waWxlTm90aWZ5V3JpdGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAotICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDogeworICAgIGNhc2UgVmFy
SW5qZWN0aW9uV2F0Y2hwb2ludDoKKyAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDogewogICAg
ICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9u
IDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTM5LDggKzM1MzksNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJpdGhNb2QoTm9kCiAgICAgICAgIAogICAgICAgICBpZiAoaXNJbnQzMkNv
bnN0YW50KG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKICAgICAgICAgICAgIGludDMyX3QgZGl2
aXNvciA9IHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGUtPmNoaWxkMigpLm5vZGUoKSk7Ci0gICAg
ICAgICAgICBpZiAoZGl2aXNvciA+IDAgJiYgaGFzT25lQml0U2V0KGRpdmlzb3IpKSB7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKGRpdmlzb3IgIT0gMSk7CisgICAgICAgICAgICBpZiAoZGl2aXNv
ciA+IDEgJiYgaGFzT25lQml0U2V0KGRpdmlzb3IpKSB7CiAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9nYXJpdGhtID0gV1RGOjpmYXN0TG9nMihkaXZpc29yKTsKICAgICAgICAgICAgICAgICBH
UFJSZWcgZGl2aWRlbmRHUFIgPSBvcDEuZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTU2MDEsMTAgKzU2MDAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN3aXRjaChOb2RlKiBubwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3RpZnlQdXRHbG9iYWxWYXIo
Tm9kZSogbm9kZSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3RpZnlXcml0ZShOb2Rl
KiBub2RlKQogewotICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG1faml0Lmdsb2JhbE9iamVjdEZv
cihub2RlLT5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS0+Z2V0KAotICAgICAgICBtX2ppdC5n
cmFwaCgpLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlckZvckNoZWNrKCldKS53
YXRjaHBvaW50U2V0KCk7CisgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQgPSBub2RlLT52
YXJpYWJsZVdhdGNocG9pbnRTZXQoKTsKKyAgICAKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7
CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgR1BSUmVnIHRlbXBHUFIg
PSB0ZW1wLmdwcigpOwpAQCAtNTYyNyw5ICs1NjI4LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOb3RpZnlQdXRHbG8KICAgICAgICAgaXNXYXRjaGVkLmxpbmsoJm1faml0KTsKICAg
ICB9CiAgICAgCisgICAgcmVhZHkuYXBwZW5kKG1faml0LmJyYW5jaDY0KAorICAgICAgICBKSVRD
b21waWxlcjo6RXF1YWwsIAorICAgICAgICBKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKHNl
dC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpKSwgdmFsdWVHUFIpKTsKKyAgICAKICAgICBKSVRD
b21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICBKSVRD
b21waWxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyhzZXQtPmFkZHJl
c3NPZlNldElzTm90RW1wdHkoKSkpOwogICAgIG1faml0LnN0b3JlOChUcnVzdGVkSW1tMzIoSXNJ
bnZhbGlkYXRlZCksIHNldC0+YWRkcmVzc09mU3RhdGUoKSk7CisgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCB0ZW1wR1BSKTsKKyAgICBtX2pp
dC5zdG9yZTY0KHRlbXBHUFIsIHNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpKTsKIAogICAg
IHJlYWR5LmxpbmsoJm1faml0KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA4NCw3ICsxMDg0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVcgb3BlcmF0aW9uLCBXYXRjaHBvaW50U2V0
KiB3YXRjaHBvaW50U2V0KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRVZ3cyBvcGVyYXRpb24sIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogd2F0Y2hw
b2ludFNldCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHdhdGNocG9pbnRTZXQpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGwob3BlcmF0aW9uKTsKQEAgLTIwNDUsNyArMjA0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbkV4cHJlc3Npb24oTm9kZSopOwogICAgIGJvb2wgY29tcGlsZVJlZ0V4
cEV4ZWMoTm9kZSopOwogICAgIAotICAgIHZvaWQgY29tcGlsZU5vdGlmeVB1dEdsb2JhbFZhcihO
b2RlKik7CisgICAgdm9pZCBjb21waWxlTm90aWZ5V3JpdGUoTm9kZSopOwogICAgIAogICAgIC8v
IHNpemUgY2FuIGJlIGFuIGltbWVkaWF0ZSBvciBhIHJlZ2lzdGVyLCBhbmQgbXVzdCBiZSBpbiBi
eXRlcy4gSWYgc2l6ZSBpcyBhIHJlZ2lzdGVyLAogICAgIC8vIGl0IG11c3QgYmUgYSBkaWZmZXJl
bnQgcmVnaXN0ZXIgdGhhbiByZXN1bHRHUFIuIEVtaXRzIGNvZGUgdGhhdCBwbGFjZSBhIHBvaW50
ZXIgdG8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxl
Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDEwICsxMTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIG1fbm9kZS0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBHbG9iYWxWYXJXYXRj
aHBvaW50OgotICAgICAgICAgICAgYWRkTGF6aWx5KAotICAgICAgICAgICAgICAgIGdsb2JhbE9i
amVjdCgpLT5zeW1ib2xUYWJsZSgpLT5nZXQoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpXSkud2F0Y2hw
b2ludFNldCgpKTsKKyAgICAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CisgICAgICAgICAg
ICBhZGRMYXppbHkobV9ub2RlLT52YXJpYWJsZVdhdGNocG9pbnRTZXQoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9p
bnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw3ICs2
MTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0R2V0R2xvYmFsVmFyKHVp
bnRwdHJfdCBvcGVyYW5kKTsKICAgICAgICAgdm9pZCBlbWl0R2V0Q2xvc3VyZVZhcihpbnQgc2Nv
cGUsIHVpbnRwdHJfdCBvcGVyYW5kKTsKICAgICAgICAgdm9pZCBlbWl0UHV0R2xvYmFsUHJvcGVy
dHkodWludHB0cl90KiBvcGVyYW5kU2xvdCwgaW50IHZhbHVlKTsKLSAgICAgICAgdm9pZCBlbWl0
UHV0R2xvYmFsVmFyKHVpbnRwdHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUsIFdhdGNocG9pbnRTZXQq
KTsKKyAgICAgICAgdm9pZCBlbWl0UHV0R2xvYmFsVmFyKHVpbnRwdHJfdCBvcGVyYW5kLCBpbnQg
dmFsdWUsIFZhcmlhYmxlV2F0Y2hwb2ludFNldCopOwogICAgICAgICB2b2lkIGVtaXRQdXRDbG9z
dXJlVmFyKGludCBzY29wZSwgdWludHB0cl90IG9wZXJhbmQsIGludCB2YWx1ZSk7CiAKICAgICAg
ICAgdm9pZCBlbWl0SW5pdFJlZ2lzdGVyKGludCBkc3QpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJQdXRLaW5k
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKLSNpbmNsdWRlICJXYXRjaHBvaW50
LmgiCisjaW5jbHVkZSAiVmFyaWFibGVXYXRjaHBvaW50U2V0LmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC03Niw3ICs3Niw3IEBAIGV4dGVybiAiQyIgewogICAgIFN0OiBTdHJ1Y3R1cmUqCiAg
ICAgVjogdm9pZAogICAgIFZtOiBWTSoKLSAgICBXOiBXYXRjaHBvaW50U2V0KgorICAgIFZ3czog
VmFyaWFibGVXYXRjaHBvaW50U2V0KgogICAgIFo6IGludDMyX3QKICovCiB0eXBlZGVmIENhbGxG
cmFtZSogSklUX09QRVJBVElPTiAoKkZfSklUT3BlcmF0aW9uX0VKSlopKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7CkBAIC0xNTQsNyArMTU0LDcg
QEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdAogdHlwZWRlZiB2b2lk
IEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0
aW9uKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQWkop
KEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZv
aWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJ
bXBsKik7Ci10eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VXKShF
eGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0Kik7Cit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAo
KlZfSklUT3BlcmF0aW9uX0VWd3MpKEV4ZWNTdGF0ZSosIFZhcmlhYmxlV2F0Y2hwb2ludFNldCop
OwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0
YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0
aW9uX0VWbSkoRXhlY1N0YXRlKiwgVk0qKTsKIHR5cGVkZWYgY2hhciogSklUX09QRVJBVElPTiAo
KlBfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE1OTczMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NzEsOCArNzcxLDEwIEBAIHZvaWQgSklUOjplbWl0UHV0R2xvYmFsUHJvcGVy
dHkodWludHB0cl8KICAgICBzdG9yZVB0cihyZWdUMiwgQmFzZUluZGV4KHJlZ1QwLCByZWdUMSwg
VGltZXNFaWdodCwgKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0UHV0R2xvYmFsVmFyKHVpbnRwdHJfdCBvcGVy
YW5kLCBpbnQgdmFsdWUsIFdhdGNocG9pbnRTZXQqIHNldCkKK3ZvaWQgSklUOjplbWl0UHV0R2xv
YmFsVmFyKHVpbnRwdHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUsIFZhcmlhYmxlV2F0Y2hwb2ludFNl
dCogc2V0KQogeworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKKwog
ICAgIGlmIChzZXQgJiYgc2V0LT5zdGF0ZSgpICE9IElzSW52YWxpZGF0ZWQpIHsKICAgICAgICAg
bG9hZDgoc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpLCByZWdUMSk7CiAgICAgICAgIApAQCAtNzgzLDI0
ICs3ODUsMjMgQEAgdm9pZCBKSVQ6OmVtaXRQdXRHbG9iYWxWYXIodWludHB0cl90IG9wZQogICAg
ICAgICBpZiAoc2V0LT5zdGF0ZSgpID09IENsZWFyV2F0Y2hwb2ludCkgewogICAgICAgICAgICAg
SnVtcCBpc1dhdGNoZWQgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihD
bGVhcldhdGNocG9pbnQpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoSXNXYXRjaGVkKSwgcmVnVDEpOworICAgICAgICAgICAgc3RvcmU2NChyZWdUMCwgc2V0
LT5hZGRyZXNzT2ZJbmZlcnJlZFZhbHVlKCkpOworICAgICAgICAgICAgc3RvcmU4KFRydXN0ZWRJ
bW0zMihJc1dhdGNoZWQpLCBzZXQtPmFkZHJlc3NPZlN0YXRlKCkpOwogICAgICAgICAgICAgcmVh
ZHkuYXBwZW5kKGp1bXAoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlzV2F0Y2hlZC5s
aW5rKHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICByZWFkeS5hcHBlbmQoYnJh
bmNoNjQoRXF1YWwsIEFic29sdXRlQWRkcmVzcyhzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUo
KSksIHJlZ1QwKSk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFi
c29sdXRlQWRkcmVzcyhzZXQtPmFkZHJlc3NPZlNldElzTm90RW1wdHkoKSkpKTsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCksIHJlZ1QxKTsKKyAgICAgICAgc3RvcmU4
KFRydXN0ZWRJbW0zMihJc0ludmFsaWRhdGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAg
ICAgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCByZWdU
MSk7CisgICAgICAgIHN0b3JlNjQocmVnVDEsIHNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgp
KTsKKyAgICAgICAgCiAgICAgICAgIHJlYWR5LmxpbmsodGhpcyk7CiAgICAgfQogICAgIAotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICBzdG9yZVB0cihyZWdU
MCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3BlcmFuZCkpOwotICAgIAotICAgIGlmIChzZXQg
JiYgc2V0LT5zdGF0ZSgpICE9IElzSW52YWxpZGF0ZWQpIHsKLSAgICAgICAgbWVtb3J5RmVuY2Uo
KTsKLSAgICAgICAgc3RvcmU4KHJlZ1QxLCBzZXQtPmFkZHJlc3NPZlN0YXRlKCkpOwotICAgIH0K
IH0KIAogdm9pZCBKSVQ6OmVtaXRQdXRDbG9zdXJlVmFyKGludCBzY29wZSwgdWludHB0cl90IG9w
ZXJhbmQsIGludCB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxNTk3MzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29y
a2luZyBjb3B5KQpAQCAtMTk1MiwyMyArMTk1MiwzMCBAQCBtYWNybyBwdXRQcm9wZXJ0eSgpCiAg
ICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0MikKIGVuZAogCittYWNy
byBub3RpZnlXcml0ZShzZXQsIHZhbHVlLCBzY3JhdGNoLCBzbG93KQorICAgIGxvYWRiIFZhcmlh
YmxlV2F0Y2hwb2ludFNldDo6bV9zdGF0ZVtzZXRdLCBzY3JhdGNoCisgICAgYmllcSBzY3JhdGNo
LCBJc0ludmFsaWRhdGVkLCAuZG9uZQorICAgIGJpbmVxIHNjcmF0Y2gsIENsZWFyV2F0Y2hwb2lu
dCwgLm92ZXJ3cml0ZQorICAgIHN0b3JlcSB2YWx1ZSwgVmFyaWFibGVXYXRjaHBvaW50U2V0Ojpt
X2luZmVycmVkVmFsdWVbc2V0XQorICAgIHN0b3JlYiBJc1dhdGNoZWQsIFZhcmlhYmxlV2F0Y2hw
b2ludFNldDo6bV9zdGF0ZVtzZXRdCisgICAgam1wIC5kb25lCisKKy5vdmVyd3JpdGU6CisgICAg
YnFlcSB2YWx1ZSwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX2luZmVycmVkVmFsdWVbc2V0XSwg
LmRvbmUKKyAgICBidGJueiBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc2V0SXNOb3RFbXB0eVtz
ZXRdLCBzbG93CisgICAgc3RvcmVxIDAsIFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bV9pbmZlcnJl
ZFZhbHVlW3NldF0KKyAgICBzdG9yZWIgSXNJbnZhbGlkYXRlZCwgVmFyaWFibGVXYXRjaHBvaW50
U2V0OjptX3N0YXRlW3NldF0KKworLmRvbmU6ICAgIAorZW5kCisKIG1hY3JvIHB1dEdsb2JhbFZh
cigpCi0gICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNSwgdDIpCi0gICAgbG9hZGIgV2F0Y2hwb2lu
dFNldDo6bV9zdGF0ZVt0Ml0sIHQzCi0gICAgYmllcSB0MywgSXNJbnZhbGlkYXRlZCwgLnJlYWR5
Ci0gICAgYmluZXEgdDMsIENsZWFyV2F0Y2hwb2ludCwgLm5lZWRUb0ludmFsaWRhdGUKLSAgICBt
b3ZlIElzV2F0Y2hlZCwgdDMKLSAgICBqbXAgLnJlYWR5Ci0ubmVlZFRvSW52YWxpZGF0ZToKLSAg
ICBidGJueiBXYXRjaHBvaW50U2V0OjptX3NldElzTm90RW1wdHlbdDJdLCAucER5bmFtaWMKLSAg
ICBtb3ZlIElzSW52YWxpZGF0ZWQsIHQzCi0ucmVhZHk6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDMsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQxKQorICAgIGxvYWRw
RnJvbUluc3RydWN0aW9uKDUsIHQyKQorICAgIG5vdGlmeVdyaXRlKHQyLCB0MSwgdDAsIC5wRHlu
YW1pYykKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MCkKICAgICBzdG9yZXEgdDEsIFt0
MF0KLSAgICBtZW1mZW5jZQotICAgIHN0b3JlYiB0MywgV2F0Y2hwb2ludFNldDo6bV9zdGF0ZVt0
Ml0KIGVuZAogCiBtYWNybyBwdXRDbG9zdXJlVmFyKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE1OTczMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw3IEBAIEpTR2xvYmFsT2JqZWN0OjpOZXdHbG9iYWxW
YXIgSlNHbG9iYWxPYmoKICAgICBpbnQgaW5kZXggPSBzeW1ib2xUYWJsZSgpLT5zaXplKGxvY2tl
cik7CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgKGNvbnN0YW50TW9kZSA9
PSBJc0NvbnN0YW50KSA/IFJlYWRPbmx5IDogMCk7CiAgICAgaWYgKGNvbnN0YW50TW9kZSA9PSBJ
c1ZhcmlhYmxlKQotICAgICAgICBuZXdFbnRyeS5wcmVwYXJlVG9XYXRjaChTeW1ib2xUYWJsZUVu
dHJ5OjpOb3RJbml0aWFsaXplZCk7CisgICAgICAgIG5ld0VudHJ5LnByZXBhcmVUb1dhdGNoKCk7
CiAgICAgU3ltYm9sVGFibGU6Ok1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkt
PmFkZChsb2NrZXIsIGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwogICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKICAgICAgICAgYWRkUmVnaXN0ZXJzKDEpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmFkZEZ1bmN0aW9uKEV4ZWNTdGEKICAgICBOZXdHbG9iYWxWYXIg
dmFyID0gYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSwgSXNWYXJpYWJsZSk7CiAgICAgcmVnaXN0
ZXJBdCh2YXIucmVnaXN0ZXJOdW1iZXIpLnNldChleGVjLT52bSgpLCB0aGlzLCB2YWx1ZSk7CiAg
ICAgaWYgKHZhci5zZXQpCi0gICAgICAgIHZhci5zZXQtPm5vdGlmeVdyaXRlKCk7CisgICAgICAg
IHZhci5zZXQtPm5vdGlmeVdyaXRlKHZhbHVlKTsKIH0KIAogc3RhdGljIGlubGluZSBKU09iamVj
dCogbGFzdEluUHJvdG90eXBlQ2hhaW4oSlNPYmplY3QqIG9iamVjdCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTU5
NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw3IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIENv
bnN0YW50TW9kZSB7IElzQ29uc3RhbnQsIElzVmFyaWFibGUgfTsKICAgICBzdHJ1Y3QgTmV3R2xv
YmFsVmFyIHsKICAgICAgICAgaW50IHJlZ2lzdGVyTnVtYmVyOwotICAgICAgICBXYXRjaHBvaW50
U2V0KiBzZXQ7CisgICAgICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0OwogICAgIH07CiAg
ICAgTmV3R2xvYmFsVmFyIGFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiwgQ29uc3RhbnRN
b2RlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAkocmV2
aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwotY2xhc3MgV2F0Y2hwb2ludFNldDsKK2NsYXNzIFZhcmlh
YmxlV2F0Y2hwb2ludFNldDsKIAogZW51bSBSZXNvbHZlTW9kZSB7CiAgICAgVGhyb3dJZk5vdEZv
dW5kLApAQCAtOTYsNyArOTYsNyBAQCBpbmxpbmUgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNr
cyhSZXNvCiB9CiAKIHN0cnVjdCBSZXNvbHZlT3AgewotICAgIFJlc29sdmVPcChSZXNvbHZlVHlw
ZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXRjaHBvaW50U2V0
KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCkKKyAgICBSZXNvbHZlT3AoUmVzb2x2
ZVR5cGUgdHlwZSwgc2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVmFyaWFibGVX
YXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCkKICAgICAgICAg
OiB0eXBlKHR5cGUpCiAgICAgICAgICwgZGVwdGgoZGVwdGgpCiAgICAgICAgICwgc3RydWN0dXJl
KHN0cnVjdHVyZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdHJ1Y3QgUmVzb2x2ZU9wIHsKICAgICBS
ZXNvbHZlVHlwZSB0eXBlOwogICAgIHNpemVfdCBkZXB0aDsKICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZTsKLSAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0OworICAgIFZhcmlhYmxlV2F0
Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldDsKICAgICB1aW50cHRyX3Qgb3BlcmFuZDsKIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRh
YmxlT2JqZWN0LmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEy
Myw2IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgIEFTU0VSVCghSGVhcDo6aGVh
cCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKICAg
ICAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7Ci0gICAgV2F0Y2hwb2ludFNl
dCogc2V0ID0gMDsKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpv
YmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgZXhlYy0+dm0oKS5oZWFwKTsKQEAgLTEzOCwxNSAr
MTM3LDE0IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBzZXQgPSBpdGVy
LT52YWx1ZS53YXRjaHBvaW50U2V0KCk7CisgICAgICAgIGlmIChWYXJpYWJsZVdhdGNocG9pbnRT
ZXQqIHNldCA9IGl0ZXItPnZhbHVlLndhdGNocG9pbnRTZXQoKSkKKyAgICAgICAgICAgIHNldC0+
bm90aWZ5V3JpdGUodmFsdWUpOwogICAgICAgICByZWcgPSAmb2JqZWN0LT5yZWdpc3RlckF0KGZh
c3RFbnRyeS5nZXRJbmRleCgpKTsKICAgICB9CiAgICAgLy8gSSdkIHByZWZlciB3ZSBub3QgaG9s
ZCBsb2NrIHdoaWxlIGV4ZWN1dGluZyBiYXJyaWVycywgc2luY2UgSSBwcmVmZXIgdG8gcmVzZXJ2
ZQogICAgIC8vIHRoZSByaWdodCBmb3IgYmFycmllcnMgdG8gYmUgYWJsZSB0byB0cmlnZ2VyIEdD
LiBBbmQgSSBkb24ndCB3YW50IHRvIGhvbGQgVk0KICAgICAvLyBsb2NrcyB3aGlsZSBHQydpbmcu
CiAgICAgcmVnLT5zZXQodm0sIG9iamVjdCwgdmFsdWUpOwotICAgIGlmIChzZXQpCi0gICAgICAg
IHNldC0+bm90aWZ5V3JpdGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTU4LDcgKzE1
Niw2IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMKICAgICBBU1NF
UlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAo
b2JqZWN0KSk7CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7Ci0gICAgV2F0
Y2hwb2ludFNldCogc2V0ID0gMDsKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7CkBAIC0xNjcsMTMgKzE2NCwxMiBAQCBpbmxp
bmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CiAg
ICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwotICAgICAgICBzZXQgPSBlbnRyeS53YXRj
aHBvaW50U2V0KCk7CisgICAgICAgIGlmIChWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHNldCA9IGVu
dHJ5LndhdGNocG9pbnRTZXQoKSkKKyAgICAgICAgICAgIHNldC0+bm90aWZ5V3JpdGUodmFsdWUp
OwogICAgICAgICBlbnRyeS5zZXRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgICAgICByZWcg
PSAmb2JqZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpOwogICAgIH0KICAgICByZWct
PnNldCh2bSwgb2JqZWN0LCB2YWx1ZSk7Ci0gICAgaWYgKHNldCkKLSAgICAgICAgc2V0LT5ub3Rp
ZnlXcml0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDM3ICs1OCwzMiBAQCB2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmZyZWVGYXRFbnRy
eVNsb3coCiAgICAgZGVsZXRlIGZhdEVudHJ5KCk7CiB9CiAKLWJvb2wgU3ltYm9sVGFibGVFbnRy
eTo6Y291bGRCZVdhdGNoZWQoKQorSlNWYWx1ZSBTeW1ib2xUYWJsZUVudHJ5OjppbmZlcnJlZFZh
bHVlKCkKIHsKICAgICBpZiAoIWlzRmF0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBX
YXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0
KCk7Ci0gICAgaWYgKCF3YXRjaHBvaW50cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiB3YXRjaHBvaW50cy0+c3RhdGUoKSA9PSBJc1dhdGNoZWQ7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CisgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMtPmluZmVycmVk
VmFsdWUoKTsKIH0KIAotdm9pZCBTeW1ib2xUYWJsZUVudHJ5OjpwcmVwYXJlVG9XYXRjaChXYXRj
aFN0YXRlIHN0YXRlKQordm9pZCBTeW1ib2xUYWJsZUVudHJ5OjpwcmVwYXJlVG9XYXRjaCgpCiB7
CiAgICAgRmF0RW50cnkqIGVudHJ5ID0gaW5mbGF0ZSgpOwogICAgIEFTU0VSVCghZW50cnktPm1f
d2F0Y2hwb2ludHMpOwotICAgIGVudHJ5LT5tX3dhdGNocG9pbnRzID0gYWRvcHRSZWYoCi0gICAg
ICAgIG5ldyBXYXRjaHBvaW50U2V0KHN0YXRlID09IEFscmVhZHlJbml0aWFsaXplZCA/IElzV2F0
Y2hlZCA6IENsZWFyV2F0Y2hwb2ludCkpOworICAgIGVudHJ5LT5tX3dhdGNocG9pbnRzID0gYWRv
cHRSZWYobmV3IFZhcmlhYmxlV2F0Y2hwb2ludFNldCgpKTsKIH0KIAogdm9pZCBTeW1ib2xUYWJs
ZUVudHJ5OjphZGRXYXRjaHBvaW50KFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCiB7Ci0gICAgQVNT
RVJUKGNvdWxkQmVXYXRjaGVkKCkpOwogICAgIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMtPmFk
ZCh3YXRjaHBvaW50KTsKIH0KIAotdm9pZCBTeW1ib2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZVNs
b3coKQordm9pZCBTeW1ib2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZVNsb3coSlNWYWx1ZSB2YWx1
ZSkKIHsKLSAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IGZhdEVudHJ5KCktPm1fd2F0
Y2hwb2ludHMuZ2V0KCk7CisgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9
IGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7CiAgICAgaWYgKCF3YXRjaHBvaW50cykK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHdhdGNocG9pbnRzLT5ub3RpZnlXcml0ZSgpOwor
ICAgIHdhdGNocG9pbnRzLT5ub3RpZnlXcml0ZSh2YWx1ZSk7CiB9CiAKIFN5bWJvbFRhYmxlRW50
cnk6OkZhdEVudHJ5KiBTeW1ib2xUYWJsZUVudHJ5OjppbmZsYXRlU2xvdygpCkBAIC0xMDksNSAr
MTA0LDMzIEBAIFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZShWTSYgdm0pCiAKIFN5bWJvbFRhYmxl
Ojp+U3ltYm9sVGFibGUoKSB7IH0KIAordm9pZCBTeW1ib2xUYWJsZTo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIHRoaXNDZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBTeW1ib2xUYWJs
ZSogdGhpc1N5bWJvbFRhYmxlID0ganNDYXN0PFN5bWJvbFRhYmxlKj4odGhpc0NlbGwpOworICAg
IGlmICghdGhpc1N5bWJvbFRhYmxlLT5tX3dhdGNocG9pbnRDbGVhbnVwKSB7CisgICAgICAgIHRo
aXNTeW1ib2xUYWJsZS0+bV93YXRjaHBvaW50Q2xlYW51cCA9CisgICAgICAgICAgICBzdGQ6Om1h
a2VfdW5pcXVlPFdhdGNocG9pbnRDbGVhbnVwPih0aGlzU3ltYm9sVGFibGUpOworICAgIH0KKyAg
ICAKKyAgICB2aXNpdG9yLmFkZFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIodGhpc1N5bWJvbFRhYmxl
LT5tX3dhdGNocG9pbnRDbGVhbnVwLmdldCgpKTsKK30KKworU3ltYm9sVGFibGU6OldhdGNocG9p
bnRDbGVhbnVwOjpXYXRjaHBvaW50Q2xlYW51cChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisg
ICAgOiBtX3N5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQoreworfQorCitTeW1ib2xUYWJsZTo6V2F0
Y2hwb2ludENsZWFudXA6On5XYXRjaHBvaW50Q2xlYW51cCgpIHsgfQorCit2b2lkIFN5bWJvbFRh
YmxlOjpXYXRjaHBvaW50Q2xlYW51cDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKQoreworICAg
IE1hcDo6aXRlcmF0b3IgaXRlciA9IG1fc3ltYm9sVGFibGUtPm1fbWFwLmJlZ2luKCk7CisgICAg
TWFwOjppdGVyYXRvciBlbmQgPSBtX3N5bWJvbFRhYmxlLT5tX21hcC5lbmQoKTsKKyAgICBmb3Ig
KDsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICBpZiAoVmFyaWFibGVXYXRjaHBvaW50
U2V0KiBzZXQgPSBpdGVyLT52YWx1ZS53YXRjaHBvaW50U2V0KCkpCisgICAgICAgICAgICBzZXQt
PmZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5o
CShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNiArMzEsMTMgQEAKIAogI2luY2x1ZGUg
IkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNsdWRlICJX
YXRjaHBvaW50LmgiCisjaW5jbHVkZSAiVmFyaWFibGVXYXRjaHBvaW50U2V0LmgiCiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgV2F0Y2hwb2ludDsK
LWNsYXNzIFdhdGNocG9pbnRTZXQ7Ci0KIHN0cnVjdCBTbG93QXJndW1lbnQgewogICAgIGVudW0g
U3RhdHVzIHsKICAgICAgICAgTm9ybWFsID0gMCwKQEAgLTc5LDExICs3NiwxMSBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBpbnQgbWlzc2luZ1N5bWJvbE1hCiAvLyBjb3VudGVkIHBvaW50ZXIgdG8g
YSBzaGFyZWQgV2F0Y2hwb2ludFNldC4gVGh1cywgaW4tcGxhY2UgZWRpdHMgb2YgdGhlCiAvLyBX
YXRjaHBvaW50U2V0IHdpbGwgbWFuaWZlc3QgaW4gYWxsIGNvcGllcy4gSGVyZSdzIGEgcGljdHVy
ZToKIC8vCi0vLyBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0Y2hwb2ludFNl
dAorLy8gU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFZhcmlhYmxlV2F0Y2hwb2lu
dFNldAogLy8KIC8vIElmIHlvdSBtYWtlIGEgY29weSBvZiBhIFN5bWJvbFRhYmxlRW50cnksIHlv
dSB3aWxsIGhhdmU6CiAvLwotLy8gb3JpZ2luYWw6IFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVu
dHJ5IC0tPiBXYXRjaHBvaW50U2V0CisvLyBvcmlnaW5hbDogU3ltYm9sVGFibGVFbnRyeSAtLT4g
RmF0RW50cnkgLS0+IFZhcmlhYmxlV2F0Y2hwb2ludFNldAogLy8gY29weTogICAgIFN5bWJvbFRh
YmxlRW50cnkgLS0+IEZhdEVudHJ5IC0tLS0tXgogCiBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7
CkBAIC0yMTgsMjUgKzIxNSwyNCBAQCBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7CiAgICAgICAg
IHJldHVybiBiaXRzKCkgJiBSZWFkT25seUZsYWc7CiAgICAgfQogICAgIAotICAgIGJvb2wgY291
bGRCZVdhdGNoZWQoKTsKKyAgICBKU1ZhbHVlIGluZmVycmVkVmFsdWUoKTsKICAgICAKLSAgICBl
bnVtIFdhdGNoU3RhdGUgeyBOb3RJbml0aWFsaXplZCwgQWxyZWFkeUluaXRpYWxpemVkIH07Ci0g
ICAgdm9pZCBwcmVwYXJlVG9XYXRjaChXYXRjaFN0YXRlKTsKKyAgICB2b2lkIHByZXBhcmVUb1dh
dGNoKCk7CiAgICAgCiAgICAgdm9pZCBhZGRXYXRjaHBvaW50KFdhdGNocG9pbnQqKTsKICAgICAK
LSAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KCkKKyAgICBWYXJpYWJsZVdhdGNocG9p
bnRTZXQqIHdhdGNocG9pbnRTZXQoKQogICAgIHsKICAgICAgICAgaWYgKCFpc0ZhdCgpKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX3dhdGNocG9p
bnRzLmdldCgpOwogICAgIH0KICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5V3Jp
dGUoKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlXcml0ZShKU1ZhbHVlIHZhbHVlKQog
ICAgIHsKICAgICAgICAgaWYgKExJS0VMWSghaXNGYXQoKSkpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG5vdGlmeVdyaXRlU2xvdygpOworICAgICAgICBub3RpZnlXcml0ZVNsb3codmFs
dWUpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC0yNTYsMTEgKzI1MiwxMSBAQCBwcml2YXRl
OgogICAgICAgICAKICAgICAgICAgaW50cHRyX3QgbV9iaXRzOyAvLyBhbHdheXMgaGFzIEZhdEZs
YWcgc2V0IGFuZCBleGFjdGx5IG1hdGNoZXMgd2hhdCB0aGUgYml0cyB3b3VsZCBoYXZlIGJlZW4g
aWYgdGhpcyB3YXNuJ3QgZmF0LgogICAgICAgICAKLSAgICAgICAgUmVmUHRyPFdhdGNocG9pbnRT
ZXQ+IG1fd2F0Y2hwb2ludHM7CisgICAgICAgIFJlZlB0cjxWYXJpYWJsZVdhdGNocG9pbnRTZXQ+
IG1fd2F0Y2hwb2ludHM7CiAgICAgfTsKICAgICAKICAgICBTeW1ib2xUYWJsZUVudHJ5JiBjb3B5
U2xvdyhjb25zdCBTeW1ib2xUYWJsZUVudHJ5Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBub3RpZnlXcml0ZVNsb3coKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG5vdGlmeVdy
aXRlU2xvdyhKU1ZhbHVlKTsKICAgICAKICAgICBib29sIGlzRmF0KCkgY29uc3QKICAgICB7CkBA
IC00NjYsOSArNDYyLDIzIEBAIHB1YmxpYzoKICAgICBjb25zdCBTbG93QXJndW1lbnQqIHNsb3dB
cmd1bWVudHMoKSB7IHJldHVybiBtX3Nsb3dBcmd1bWVudHMuZ2V0KCk7IH0KICAgICB2b2lkIHNl
dFNsb3dBcmd1bWVudHMoc3RkOjp1bmlxdWVfcHRyPFNsb3dBcmd1bWVudFtdPiBzbG93QXJndW1l
bnRzKSB7IG1fc2xvd0FyZ3VtZW50cyA9IHN0ZDo6bW92ZShzbG93QXJndW1lbnRzKTsgfQogCisg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCiAg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBXYXRjaHBvaW50
Q2xlYW51cCA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIFdhdGNocG9pbnRDbGVhbnVwKFN5bWJvbFRhYmxlKik7CisgICAgICAgIHZpcnR1YWwg
fldhdGNocG9pbnRDbGVhbnVwKCk7CisgICAgICAgIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAg
dmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkgT1ZFUlJJREU7CisKKyAgICBw
cml2YXRlOgorICAgICAgICBTeW1ib2xUYWJsZSogbV9zeW1ib2xUYWJsZTsKKyAgICB9OworICAg
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbFRhYmxlKFZNJik7CiAgICAgflN5bWJvbFRh
YmxlKCk7CiAKQEAgLTQ4MSw2ICs0OTEsOCBAQCBwcml2YXRlOgogICAgIGludCBtX2NhcHR1cmVF
bmQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd0FyZ3VtZW50W10+IG1fc2xvd0FyZ3VtZW50
czsKKyAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F0Y2hwb2ludENsZWFudXA+IG1fd2F0Y2hw
b2ludENsZWFudXA7CiAKIHB1YmxpYzoKICAgICBtdXRhYmxlIENvbmN1cnJlbnRKSVRMb2NrIG1f
bG9jazsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217861</attachid>
            <date>2013-11-25 21:27:51 -0800</date>
            <delta_ts>2013-11-26 09:40:07 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>60274</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBA
QAorMjAxMy0xMS0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlc3RydWN0dXJlIGdsb2JhbCB2YXJpYWJsZSBjb25zdGFudCBpbmZlcmVuY2Ugc28gdGhhdCBp
dCBjb3VsZCB3b3JrIGZvciBhbnkga2luZCBvZiBzeW1ib2wgdGFibGUgdmFyaWFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBj
aGFuZ2VzIHRoZSB3YXkgZ2xvYmFsIHZhcmlhYmxlIGNvbnN0YW50IGluZmVyZW5jZSB3b3JrcyBz
byB0aGF0IGl0IGNhbiBiZSByZXVzZWQKKyAgICAgICAgZm9yIGNsb3N1cmUgdmFyaWFibGUgY29u
c3RhbnQgaW5mZXJlbmNlLiBDbG9zdXJlIHZhcmlhYmxlcyBtYXkgYmUgaW5zdGFudGlhdGVkIG11
bHRpcGxlCisgICAgICAgIHRpbWVzLCBsaWtlOgorICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGZvbygpIHsKKyAgICAgICAgICAgICAgICB2YXIgV0lEVEggPSA0NTsKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbiBiYXIoKSB7CisgICAgICAgICAgICAgICAgICAgIC4uLiB1c2UgV0lEVEgg
Li4uCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgRXZlbiBpZiBmb28oKSBpcyBjYWxsZWQgbWFueSB0aW1lcyBh
bmQgV0lEVEggaXMgYXNzaWduZWQgdG8gbXVsdGlwbGUgdGltZXMsIHRoYXQKKyAgICAgICAgZG9l
c24ndCBjaGFuZ2UgdGhlIGZhY3QgdGhhdCBpdCdzIGEgY29uc3RhbnQuIFRoZSBnb2FsIG9mIGNs
b3N1cmUgdmFyaWFibGUgY29uc3RhbnQKKyAgICAgICAgaW5mZXJlbmNlIGlzIHRvIGNhdGNoIGFu
eSBjYXNlIHdoZXJlIGEgY2xvc3VyZSB2YXJpYWJsZSBoYXMgYmVlbiBhc3NpZ25lZCBhdCBsZWFz
dCBvbmNlCisgICAgICAgIGFuZCBpdHMgdmFsdWUgaGFzIG5ldmVyIGNoYW5nZWQuIFRoaXMgcGF0
Y2ggZG9lc24ndCBpbXBsZW1lbnQgdGhhdCwgYnV0IGl0IGRvZXMgY2hhbmdlCisgICAgICAgIGds
b2JhbCB2YXJpYWJsZSBjb25zdGFudCBpbmZlcmVuY2UgdG8gaGF2ZSBhbGwgb2YgdGhlIHBvd2Vy
cyBuZWVkZWQgdG8gZG8gdGhhdC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaW52b2x2ZXMgdGhy
ZWUgY2hhbmdlczoKKyAgICAgICAgCisgICAgICAgICAgICAtIFRoZSB3YXRjaHBvaW50IG9iamVj
dCBub3cgY29udGFpbnMgdGhlIGluZmVycmVkIHZhbHVlLiBUaGlzIGludm9sdmVzIGNyZWF0aW5n
IGEKKyAgICAgICAgICAgICAgbmV3IGtpbmQgb2Ygd2F0Y2hwb2ludCBzZXQsIHRoZSBWYXJpYWJs
ZVdhdGNocG9pbnRTZXQuIFdlIHdpbGwgcmV1c2UgdGhpcyBvYmplY3QKKyAgICAgICAgICAgICAg
Zm9yIGNsb3N1cmUgdmFyaWFibGVzLgorICAgICAgICAKKyAgICAgICAgICAgIC0gV3JpdGluZyB0
byBhIHZhcmlhYmxlIHRoYXQgaXMgd2F0Y2hwb2ludGVkIHN0aWxsIGludm9sdmVzIHRoZXNlIHRo
cmVlIHN0YXRlcyB0aGF0CisgICAgICAgICAgICAgIHdlIHByb2NlZWQgdGhyb3VnaCBtb25vdG9u
aWNhbGx5IChVbmluaXRpYWxpemVkLT5Jbml0aWFsaXplZC0+SW52YWxpZGF0ZWQpIGJ1dAorICAg
ICAgICAgICAgICBub3csIHRoZSBJbml0aWFsaXplZC0+SW52YWxpZGF0ZWQgc3RhdGUgdHJhbnNp
dGlvbiBvbmx5IGhhcHBlbnMgaWYgd2UgY2hhbmdlIHRoZQorICAgICAgICAgICAgICB2YXJpYWJs
ZSdzIHZhbHVlLCByYXRoZXIgdGhhbiBzdG9yZSB0byB0aGUgdmFyaWFibGUuIFJlcGVhdGVkbHkg
c3RvcmluZyB0aGUgc2FtZQorICAgICAgICAgICAgICB2YWx1ZSB3b24ndCBjaGFuZ2UgdGhlIHZh
cmlhYmxlJ3Mgc3RhdGUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgICogYnl0ZWNvZGUvVmFyaWFibGVXYXRj
aHBvaW50U2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpWYXJpYWJsZVdhdGNocG9pbnRTZXQ6
OlZhcmlhYmxlV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0Y2hwb2lu
dFNldDo6flZhcmlhYmxlV2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0
Y2hwb2ludFNldDo6aW5mZXJyZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0Y2hw
b2ludFNldDo6bm90aWZ5V3JpdGUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZVdhdGNocG9pbnRT
ZXQ6OmludmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZVdhdGNocG9pbnRTZXQ6OmZp
bmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBvaW50
U2V0OjphZGRyZXNzT2ZJbmZlcnJlZFZhbHVlKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBv
aW50Lmg6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVy
aXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9k
ZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNSZWdpc3RlclBvaW50ZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1ZhcmlhYmxl
V2F0Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6dmFyaWFibGVXYXRjaHBv
aW50U2V0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAg
KiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRm
Zy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5vdGlmeVdyaXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
V2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZTo6aGFuZGxlKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRHbG9iYWxWYXIpOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRHbG9iYWxW
YXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUu
aDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU9wOjpSZXNvbHZlT3ApOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6
CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
OjppbmZlcnJlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6cHJlcGFy
ZVRvV2F0Y2gpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjphZGRXYXRjaHBvaW50
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5V3JpdGVTbG93KToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpT
eW1ib2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OldhdGNocG9pbnRDbGVhbnVwKToKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6OldhdGNocG9pbnRDbGVhbnVwOjp+V2F0Y2hwb2ludENsZWFu
dXApOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6Cisg
ICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OndhdGNocG9pbnRTZXQpOgorICAgICAgICAo
SlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0ZSk6CisKIDIwMTMtMTEtMjIgIE1hcmsg
SGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0MgT2JqLUMg
QVBJIHNob3VsZCBoYXZlIHJlYWwgZG9jdW1lbnRhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xODEs
NiArMTgxLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WYWx1ZVJlY292ZXJ5LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9W
YXJpYWJsZVdhdGNocG9pbnRTZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZpcnR1YWxSZWdpc3Rlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50
LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lv
biAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03OTUsNiArNzk1LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFVubGlua2VkQ29kZUJsb2Nr
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxWYWx1ZVByb2ZpbGUu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFZhbHVlUmVjb3Zlcnku
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFZhcmlhYmxlV2F0Y2hw
b2ludFNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcVmlydHVh
bFJlZ2lzdGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxXYXRj
aHBvaW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29tcGlsZXJcQnl0
ZWNvZGVHZW5lcmF0b3IuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCw3
IEBACiAJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGOTQzRjE2Njc2MzJEMDBE
NjE5NzEgLyogQ29kZVR5cGUuY3BwICovOyB9OwogCQkwRjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEg
LyogSklUQ29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjhGOTQ0MzE2Njc2MzUyMDBENjE5NzEgLyogSklUQ29kZS5jcHAgKi87IH07CiAJCTBG
OEY5NDQ2MTY2NzY0RjEwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDQ1MTY2NzY0RUUwMEQ2MTk3MSAv
KiBDb2RlT3JpZ2luLmNwcCAqLzsgfTsKKwkJMEY5MTgxQzcxODQxNUNBNTAwNTdCNjY5IC8qIFZh
cmlhYmxlV2F0Y2hwb2ludFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5MTgxQzYxODQxNUNBNTAwNTdCNjY5IC8qIFZhcmlhYmxlV2F0Y2hwb2lu
dFNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGOTE5RDBDMTU3RUUwOUYwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDA5MTU3RUUw
OUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCAqLzsgfTsKIAkJMEY5MTlEMEQx
NTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAv
KiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5MTlEMEUxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwICovOyB9OwpAQCAtMTU5Myw2ICsxNTk0LDcgQEAKIAkJMEY4Rjk0M0YxNjY3NjMy
RDAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvZGVUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4Rjk0
NDMxNjY3NjM1MjAwRDYxOTcxIC8qIEpJVENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSklUQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOEY5NDQ1MTY2NzY0RUUwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjkxODFDNjE4NDE1Q0E1MDA1N0I2NjkgLyogVmFyaWFibGVXYXRjaHBv
aW50U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhcmlhYmxlV2F0Y2hw
b2ludFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkxOUQwOTE1N0VFMDlE
MDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9i
amVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0
QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxMzIsNiArNDEzNCw3IEBACiAJCQkJMEY5NjNCMzYx
M0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTBGMjRFNTU3MTdGNzRF
REIwMEFCQjIxNyAvKiBWYWx1ZVJlY292ZXJ5LmNwcCAqLywKIAkJCQkwRjQyNkE0NTE0NjBDQkFC
MDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovLAorCQkJCTBGOTE4MUM2MTg0MTVDQTUwMDU3
QjY2OSAvKiBWYXJpYWJsZVdhdGNocG9pbnRTZXQuaCAqLywKIAkJCQkwRjQyNkE0NjE0NjBDQkFC
MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAw
NEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAogCQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3
RCAvKiBXYXRjaHBvaW50LmggKi8sCkBAIC00Mzc1LDYgKzQzNzgsNyBAQAogCQkJCTBGQzA5N0Ey
MTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhB
MzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyQTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE4MUM3MTg0
MTVDQTUwMDU3QjY2OSAvKiBWYXJpYWJsZVdhdGNocG9pbnRTZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRDhBMzJDMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQzRjE1Qzc1
RjE5MDA2QTU5N0MgLyogREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCRTBGNzcxNkMxREIxMjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIG5h
bWVzcGFjZSBKU0MgewogY2xhc3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKIGNsYXNzIEFycmF5
UHJvZmlsZTsKIGNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOworY2xhc3MgVmFyaWFibGVX
YXRjaHBvaW50U2V0Owogc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogc3RydWN0IFZhbHVlUHJv
ZmlsZTsKIApAQCAtMTE1LDcgKzExNiw3IEBAIHN0cnVjdCBJbnN0cnVjdGlvbiB7CiAgICAgICAg
IEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlOwogICAgICAgICBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlKiBhcnJheUFsbG9jYXRpb25Qcm9maWxlOwogICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSogb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7Ci0gICAgICAgIFdhdGNocG9pbnRTZXQqIHdh
dGNocG9pbnRTZXQ7CisgICAgICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNl
dDsKICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgYm9vbCogcHJlZGljYXRlUG9pbnRl
cjsKICAgICB9IHU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFyaWFi
bGVXYXRjaHBvaW50U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNldC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVmFyaWFibGVXYXRjaHBvaW50U2V0X2gKKyNkZWZp
bmUgVmFyaWFibGVXYXRjaHBvaW50U2V0X2gKKworI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKyNp
bmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFZhcmlh
YmxlV2F0Y2hwb2ludFNldCA6IHB1YmxpYyBXYXRjaHBvaW50U2V0IHsKKyAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIFZhcmlhYmxlV2F0Y2hwb2lu
dFNldCgpCisgICAgICAgIDogV2F0Y2hwb2ludFNldChDbGVhcldhdGNocG9pbnQpCisgICAgewor
ICAgIH0KKyAgICAKKyAgICB+VmFyaWFibGVXYXRjaHBvaW50U2V0KCkgeyB9CisgICAgCisgICAg
Ly8gRm9yIHRoZSBwdXJwb3NlIG9mIGRlY2lkaW5nIHdoZXRoZXIgb3Igbm90IHRvIHdhdGNoIHRo
aXMgdmFyaWFibGUsIHlvdSBvbmx5IG5lZWQKKyAgICAvLyB0byBpbnNwZWN0IGluZmVycmVkVmFs
dWUoKS4gSWYgdGhpcyByZXR1cm5zIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSBlbXB0eQorICAg
IC8vIHZhbHVlLCB0aGVuIGl0IG1lYW5zIHRoYXQgYXQgYWxsIGZ1dHVyZSBzYWZlcG9pbnRzLCB0
aGlzIHdhdGNocG9pbnQgc2V0IHdpbGwgYmUKKyAgICAvLyBpbiBvbmUgb2YgdGhlc2Ugc3RhdGVz
OgorICAgIC8vCisgICAgLy8gICAgSXNXYXRjaGVkOiBpbiB0aGlzIGNhc2UsIHRoZSB2YXJpYWJs
ZSdzIHZhbHVlIG11c3Qgc3RpbGwgYmUgdGhlCisgICAgLy8gICAgICAgIGluZmVycmVkVmFsdWUu
CisgICAgLy8KKyAgICAvLyAgICBJc0ludmFsaWRhdGVkOiBpbiB0aGlzIGNhc2UgdGhlIHZhcmlh
YmxlJ3MgdmFsdWUgbWF5IGJlIGFueXRoaW5nIGJ1dCB5b3UnbGwKKyAgICAvLyAgICAgICAgZWl0
aGVyIG5vdGljZSB0aGF0IGl0J3MgaW52YWxpZGF0ZWQgYW5kIG5vdCBpbnN0YWxsIHRoZSB3YXRj
aHBvaW50LCBvcgorICAgIC8vICAgICAgICB5b3Ugd2lsbCBoYXZlIGJlZW4gbm90aWZpZWQgdGhh
dCB0aGUgd2F0Y2hwb2ludCB3YXMgZmlyZWQuCisgICAgSlNWYWx1ZSBpbmZlcnJlZFZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmZlcnJlZFZhbHVlOyB9CisgICAgCisgICAgdm9pZCBub3RpZnlX
cml0ZShKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhdmFsdWUpOworICAg
ICAgICBzd2l0Y2ggKHN0YXRlKCkpIHsKKyAgICAgICAgY2FzZSBDbGVhcldhdGNocG9pbnQ6Cisg
ICAgICAgICAgICBtX2luZmVycmVkVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIHN0YXJ0V2F0
Y2hpbmcoKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlIElzV2F0Y2hlZDoK
KyAgICAgICAgICAgIEFTU0VSVCghIW1faW5mZXJyZWRWYWx1ZSk7CisgICAgICAgICAgICBpZiAo
dmFsdWUgPT0gbV9pbmZlcnJlZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIElzSW52YWxpZGF0ZWQ6CisgICAgICAgICAgICBBU1NFUlQoIW1faW5mZXJy
ZWRWYWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGludmFsaWRh
dGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhbV9pbmZlcnJlZFZhbHVlKTsKKyAgICAgICAg
QVNTRVJUKHN0YXRlKCkgPT0gSXNXYXRjaGVkKTsKKyAgICAgICAgbV9pbmZlcnJlZFZhbHVlID0g
SlNWYWx1ZSgpOworICAgICAgICBmaXJlQWxsKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhbV9pbmZlcnJl
ZFZhbHVlID09IChzdGF0ZSgpID09IElzV2F0Y2hlZCkpOworICAgICAgICBpZiAoIW1faW5mZXJy
ZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFtX2luZmVycmVkVmFs
dWUuaXNDZWxsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEpTQ2VsbCogY2VsbCA9
IG1faW5mZXJyZWRWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNl
bGwpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgfQor
ICAgIAorICAgIEpTVmFsdWUqIGFkZHJlc3NPZkluZmVycmVkVmFsdWUoKSB7IHJldHVybiAmbV9p
bmZlcnJlZFZhbHVlOyB9CisKK3ByaXZhdGU6CisgICAgSlNWYWx1ZSBtX2luZmVycmVkVmFsdWU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFZhcmlhYmxlV2F0Y2hwb2lu
dFNldF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9p
bnQuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1dhdGNocG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDE0ICsxMDgsNiBAQCBwdWJsaWM6
CiAgICAgICAgIGZpcmVBbGxTbG93KCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgbm90aWZ5V3Jp
dGUoKQotICAgIHsKLSAgICAgICAgaWYgKHN0YXRlKCkgPT0gQ2xlYXJXYXRjaHBvaW50KQotICAg
ICAgICAgICAgc3RhcnRXYXRjaGluZygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaXJl
QWxsKCk7Ci0gICAgfQotICAgIAogICAgIGludDhfdCogYWRkcmVzc09mU3RhdGUoKSB7IHJldHVy
biAmbV9zdGF0ZTsgfQogICAgIGludDhfdCogYWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpIHsgcmV0
dXJuICZtX3NldElzTm90RW1wdHk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTUwNSwxMyArMTUwNSwxMyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5v
ZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNh
c2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAg
ICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQo
dHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRHbG9iYWxW
YXI6Ci0gICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6CisgICAgY2FzZSBOb3RpZnlXcml0ZToK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOTQsMTMgKzMwOTQsMTUgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgY2Fz
ZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChQaGFudG9tLCBnZXQoVmlydHVhbFJlZ2lzdGVyKHNjb3BlKSkpOwogICAgICAgICAg
ICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxl
KCktPmdldCh1aWQpOwotICAgICAgICAgICAgICAgIGlmICghZW50cnkuY291bGRCZVdhdGNoZWQo
KSB8fCAhbV9ncmFwaC53YXRjaHBvaW50cygpLmlzU3RpbGxWYWxpZChlbnRyeS53YXRjaHBvaW50
U2V0KCkpKSB7CisgICAgICAgICAgICAgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBv
aW50U2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOworICAgICAgICAgICAgICAgIEpTVmFsdWUg
c3BlY2lmaWNWYWx1ZSA9CisgICAgICAgICAgICAgICAgICAgIHdhdGNocG9pbnRTZXQgPyB3YXRj
aHBvaW50U2V0LT5pbmZlcnJlZFZhbHVlKCkgOiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAg
aWYgKCFzcGVjaWZpY1ZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoZHN0KSwgYWRkVG9HcmFwaChHZXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJ
bmZvKHByZWRpY3Rpb24pKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2xvYmFsVmFyV2F0Y2hwb2lu
dCwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8oaWRlbnRpZmllck51bWJlcikpOwotICAgICAgICAg
ICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChl
bnRyeS5nZXRJbmRleCgpKS5nZXQoKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFZhcmlh
YmxlV2F0Y2hwb2ludCwgT3BJbmZvKHdhdGNocG9pbnRTZXQpKTsKICAgICAgICAgICAgICAgICBp
ZiAoc3BlY2lmaWNWYWx1ZS5pc0NlbGwoKSkKICAgICAgICAgICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3Rlcihkc3QpLCBjZWxsQ29uc3RhbnQoc3BlY2lmaWNWYWx1ZS5hc0NlbGwoKSkpOwog
ICAgICAgICAgICAgICAgIGVsc2UKQEAgLTMxMjgsNyArMzEzMCw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKIAogICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAwOwotICAgICAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0
Y2hwb2ludHMgPSAwOworICAgICAgICAgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBv
aW50cyA9IDA7CiAgICAgICAgICAgICB1aW50cHRyX3Qgb3BlcmFuZDsKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CkBAIC0zMTYwLDkgKzMxNjIsMTAgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgY2FzZSBH
bG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKS0+Z2V0KHVpZCk7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKHdhdGNocG9pbnRzID09IGVudHJ5LndhdGNocG9pbnRT
ZXQoKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRHbG9iYWxWYXIsIE9wSW5mbyhv
cGVyYW5kKSwgZ2V0KFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICBO
b2RlKiB2YWx1ZU5vZGUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKHZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChQdXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgdmFsdWVOb2Rl
KTsKICAgICAgICAgICAgICAgICBpZiAod2F0Y2hwb2ludHMtPnN0YXRlKCkgIT0gSXNJbnZhbGlk
YXRlZCkKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOb3RpZnlQdXRHbG9iYWxWYXIs
IE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChOb3RpZnlXcml0ZSwgT3BJbmZvKHdhdGNocG9pbnRzKSwgdmFs
dWVOb2RlKTsKICAgICAgICAgICAgICAgICAvLyBLZWVwIHNjb3BlIGFsaXZlIHVudGlsIGFmdGVy
IHB1dC4KICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChWaXJ0dWFsUmVn
aXN0ZXIoc2NvcGUpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2MCwyOCArMjYwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAg
IAotICAgIGJvb2wgZ2xvYmFsVmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKFdyaXRlQmFycmllcjxV
bmtub3duPiogcmVnaXN0ZXJQb2ludGVyKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1
cnJlbnRCbG9jay0+YXQoaSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+cmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgUHV0R2xvYmFsVmFyOgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5yZWdpc3RlclBv
aW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV9ncmFw
aC5jbG9iYmVyc1dvcmxkKG5vZGUpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBib29sIHZhckluamVjdGlvbldh
dGNocG9pbnRFbGltaW5hdGlvbigpCiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2luZGV4SW5CbG9jazsgaS0tOykgewpAQCAtMTIyOSwxMyArMTIwNyw2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0
Y2hwb2ludDoKLSAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCi0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoZ2xvYmFsVmFyV2F0Y2hwb2lu
dEVsaW1pbmF0aW9uKG5vZGUtPnJlZ2lzdGVyUG9pbnRlcigpKSkKLSAgICAgICAgICAgICAgICBl
bGltaW5hdGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0
b3JlRWxpbWluYXRpb24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0Myw4ICsxNDMsMTMgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZQogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFsVmFyOgorICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50
OgorICAgICAgICByZWFkKFdhdGNocG9pbnRfZmlyZSk7CisgICAgICAgIHJldHVybjsKKyAgICAg
ICAgCisgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgd3JpdGUoV2F0Y2hwb2ludF9maXJl
KTsKKyAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2Fz
ZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtNTIwLDcgKzUyNSw2IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBj
YXNlIEdldEdsb2JhbFZhcjoKLSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAgICAgICAg
IHJlYWQoQWJzdHJhY3RIZWFwKEFic29sdXRlLCBub2RlLT5yZWdpc3RlclBvaW50ZXIoKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsOCAr
OTAzLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgICAgICBj
YXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgICAgIGNh
c2UgTm90aWZ5UHV0R2xvYmFsVmFyOgotICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6
CisgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6CisgICAgICAgIGNhc2UgVmFyaWFibGVXYXRjaHBv
aW50OgogICAgICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6CiAgICAgICAgIGNhc2Ug
QWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgICAgICBjYXNlIENhbGw6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0OCwyMCAr
NzQ4LDkgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQog
ICAgIAotICAgIGJvb2wgaGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBvcCgpID09IEdsb2JhbFZhcldhdGNocG9pbnQgfHwgb3AoKSA9PSBOb3RpZnlQ
dXRHbG9iYWxWYXI7Ci0gICAgfQotICAgIAotICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXJG
b3JDaGVjaygpCi0gICAgewotICAgICAgICBBU1NFUlQoaGFzSWRlbnRpZmllck51bWJlckZvckNo
ZWNrKCkpOwotICAgICAgICByZXR1cm4gbV9vcEluZm8yOwotICAgIH0KLSAgICAKICAgICBib29s
IGhhc1JlZ2lzdGVyUG9pbnRlcigpCiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRH
bG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBHbG9iYWxWYXJXYXRj
aHBvaW50IHx8IG9wKCkgPT0gTm90aWZ5UHV0R2xvYmFsVmFyOworICAgICAgICByZXR1cm4gb3Ao
KSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXI7CiAgICAgfQogICAgIAog
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKCkKQEAgLTk3Myw2ICs5
NjIsMTYgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxFeGVj
dXRhYmxlQmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9vcEluZm8pKTsKICAgICB9
CisgICAgCisgICAgYm9vbCBoYXNWYXJpYWJsZVdhdGNocG9pbnRTZXQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gTm90aWZ5V3JpdGUgfHwgb3AoKSA9PSBWYXJpYWJsZVdhdGNocG9p
bnQ7CisgICAgfQorICAgIAorICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogdmFyaWFibGVXYXRj
aHBvaW50U2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZhcmlh
YmxlV2F0Y2hwb2ludFNldCo+KG1fb3BJbmZvKTsKKyAgICB9CiAKICAgICBib29sIGhhc1N0cnVj
dHVyZVRyYW5zaXRpb25EYXRhKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw4ICsxODQsOCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0Q2xvc3VyZVZhciwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEdsb2JhbFZhciwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFj
cm8oTm90aWZ5UHV0R2xvYmFsVmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oR2xv
YmFsVmFyV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKE5vdGlmeVdy
aXRlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oVmFyaWFibGVXYXRjaHBvaW50LCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk4LDEyICs5OTgsMTIgQEAgY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbgogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjaGFyKj4oZXhlYy0+Y29kZUJsb2NrKCktPnN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUlu
ZGV4KS5jdGlGb3JWYWx1ZShzdHJpbmctPnZhbHVlKGV4ZWMpLmltcGwoKSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlXcml0ZShF
eGVjU3RhdGUqIGV4ZWMsIFdhdGNocG9pbnRTZXQqIHNldCkKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Ob3RpZnlXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFZhcmlhYmxlV2F0Y2hwb2ludFNl
dCogc2V0KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCi0gICAgc2V0LT5ub3RpZnlXcml0ZSgpOworICAg
IHNldC0+aW52YWxpZGF0ZSgpOwogfQogCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25G
TW9kT25JbnRzKGludDMyX3QgYSwgaW50MzJfdCBiKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyAr
MTI1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMgogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMyhFeGVjU3RhdGUqLCBKU1N0cmluZyos
IEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRmlu
ZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgc2l6
ZV90IHRhYmxlSW5kZXgpOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJp
bmcoRXhlY1N0YXRlKiwgc2l6ZV90IHRhYmxlSW5kZXgsIEpTU3RyaW5nKik7Ci12b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTm90aWZ5V3JpdGUoRXhlY1N0YXRlKiwgV2F0Y2hwb2ludFNldCop
Owordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5vdGlmeVdyaXRlKEV4ZWNTdGF0ZSosIFZh
cmlhYmxlV2F0Y2hwb2ludFNldCopOwogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAvLyBGSVhNRTog
TWFrZSBjYWxscyB3b3JrIHdlbGwuIEN1cnJlbnRseSB0aGV5J3JlIGEgcHVyZSByZWdyZXNzaW9u
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NzQsNyArNTc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBU
ZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRzOgogICAgICAg
ICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKLSAgICAgICAgY2FzZSBHbG9iYWxWYXJX
YXRjaHBvaW50OgorICAgICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICAgICAgY2Fz
ZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgogICAgICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxl
V2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtNTgyLDcgKzU4Miw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgogICAgICAgICBjYXNlIFVu
cmVhY2hhYmxlOgogICAgICAgICBjYXNlIExvb3BIaW50OgotICAgICAgICBjYXNlIE5vdGlmeVB1
dEdsb2JhbFZhcjoKKyAgICAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQg
YWxyZWFkeSBoYXMgYSBwcmVkaWN0aW9uLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIs
NyArMTcyLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAg
IGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICBjYXNlIFB1
dEdsb2JhbFZhcjoKLSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgY2FzZSBWYXJp
YWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgogICAgIGNh
c2UgQ2hlY2tGdW5jdGlvbjoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoK
QEAgLTI0Miw3ICsyNDIsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0CiAgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgogICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAg
IGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6Ci0gICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6Cisg
ICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAg
IGNhc2UgR2V0QnlWYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwOTIsOCArNDA5Miw1OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgTm90aWZ5UHV0
R2xvYmFsVmFyOiB7Ci0gICAgICAgIGNvbXBpbGVOb3RpZnlQdXRHbG9iYWxWYXIobm9kZSk7Cisg
ICAgY2FzZSBOb3RpZnlXcml0ZTogeworICAgICAgICBWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHNl
dCA9IG5vZGUtPnZhcmlhYmxlV2F0Y2hwb2ludFNldCgpOworICAgIAorICAgICAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyB2YWx1
ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkR1BS
ID0gdmFsdWUucGF5bG9hZEdQUigpOworICAgIAorICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgIAorICAgICAg
ICBtX2ppdC5sb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHRlbXBHUFIpOworICAgIAorICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgcmVhZHk7CisgICAgCisgICAgICAgIHJlYWR5LmFw
cGVuZChtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJ
bW0zMihJc0ludmFsaWRhdGVkKSkpOworICAgIAorICAgICAgICBpZiAoc2V0LT5zdGF0ZSgpID09
IENsZWFyV2F0Y2hwb2ludCkgeworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNXYXRj
aGVkID0KKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1
YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihDbGVhcldhdGNocG9pbnQpKTsKKyAgICAgICAgCisg
ICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCAmc2V0LT5hZGRyZXNzT2ZJbmZl
cnJlZFZhbHVlKCktPnUuYXNCaXRzLnRhZyk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZh
bHVlUGF5bG9hZEdQUiwgJnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0cy5w
YXlsb2FkKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlOChUcnVzdGVkSW1tMzIoSXNXYXRjaGVk
KSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAgICAgICAgICAgIHJlYWR5LmFwcGVuZChtX2pp
dC5qdW1wKCkpOworICAgICAgICAKKyAgICAgICAgICAgIGlzV2F0Y2hlZC5saW5rKCZtX2ppdCk7
CisgICAgICAgIH0KKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90RXF1
YWwgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwK
KyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3MoJnNldC0+YWRkcmVzc09m
SW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0cy5wYXlsb2FkKSwKKyAgICAgICAgICAgIHZhbHVlUGF5
bG9hZEdQUik7CisgICAgICAgIHJlYWR5LmFwcGVuZChtX2ppdC5icmFuY2g2NCgKKyAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWJzb2x1
dGVBZGRyZXNzKCZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKS0+dS5hc0JpdHMudGFnKSwK
KyAgICAgICAgICAgIHZhbHVlVGFnR1BSKSk7CisgICAgICAgIGRlZmluaXRlbHlOb3RFcXVhbC5s
aW5rKCZtX2ppdCk7CisgICAgCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0g
bV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgSklU
Q29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyhzZXQtPmFkZHJlc3NPZlNldElzTm90RW1wdHkoKSkp
OworICAgICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpLCBzZXQt
PmFkZHJlc3NPZlN0YXRlKCkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpLAorICAgICAgICAgICAgJnNldC0+
YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0cy50YWcpOworICAgICAgICBtX2ppdC5z
dG9yZTMyKAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKDApLCAmc2V0LT5hZGRyZXNzT2ZJbmZl
cnJlZFZhbHVlKCktPnUuYXNCaXRzLnBheWxvYWQpOworCisgICAgICAgIHJlYWR5LmxpbmsoJm1f
aml0KTsKKyAgICAKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICBz
bG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbk5vdGlmeVdyaXRlLCBOb1Jlc3Vs
dCwgc2V0KSk7CisgICAgCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM1Mywy
OCArNDM1Myw1MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDogewot
I2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKLSAgICAg
ICAgbV9qaXQubG9hZDY0KG5vZGUtPnJlZ2lzdGVyUG9pbnRlcigpLCBzY3JhdGNoR1BSKTsKLSAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgb2sgPSBtX2ppdC5icmFuY2g2NCgKLSAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpFcXVhbCwgc2NyYXRjaEdQUiwKLSAgICAgICAgICAgIFRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCktPmdldCgpKSkpOwotICAg
ICAgICBtX2ppdC5icmVha3BvaW50KCk7Ci0gICAgICAgIG9rLmxpbmsoJm1faml0KTsKLSNlbmRp
ZgorICAgIGNhc2UgTm90aWZ5V3JpdGU6IHsKKyAgICAgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0
KiBzZXQgPSBub2RlLT52YXJpYWJsZVdhdGNocG9pbnRTZXQoKTsKKyAgICAKKyAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcg
dmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAKKyAgICAg
ICAgbV9qaXQubG9hZDgoc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpLCB0ZW1wR1BSKTsKKyAgICAKKyAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHJlYWR5OworICAgIAorICAgICAgICByZWFkeS5h
cHBlbmQobV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVk
SW1tMzIoSXNJbnZhbGlkYXRlZCkpKTsKKyAgICAKKyAgICAgICAgaWYgKHNldC0+c3RhdGUoKSA9
PSBDbGVhcldhdGNocG9pbnQpIHsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzV2F0
Y2hlZCA9CisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoQ2xlYXJXYXRjaHBvaW50KSk7CisgICAgICAgIAor
ICAgICAgICAgICAgbV9qaXQuc3RvcmU2NCh2YWx1ZUdQUiwgc2V0LT5hZGRyZXNzT2ZJbmZlcnJl
ZFZhbHVlKCkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihJc1dhdGNo
ZWQpLCBzZXQtPmFkZHJlc3NPZlN0YXRlKCkpOworICAgICAgICAgICAgcmVhZHkuYXBwZW5kKG1f
aml0Lmp1bXAoKSk7CiAgICAgICAgIAorICAgICAgICAgICAgaXNXYXRjaGVkLmxpbmsoJm1faml0
KTsKKyAgICAgICAgfQorICAgIAorICAgICAgICByZWFkeS5hcHBlbmQobV9qaXQuYnJhbmNoNjQo
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFic29sdXRlQWRkcmVzcyhzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKSksIHZhbHVl
R1BSKSk7CisgICAgCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQu
YnJhbmNoVGVzdDgoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29tcGls
ZXI6OkFic29sdXRlQWRkcmVzcyhzZXQtPmFkZHJlc3NPZlNldElzTm90RW1wdHkoKSkpOworICAg
ICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpLCBzZXQtPmFkZHJl
c3NPZlN0YXRlKCkpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKSksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5zdG9yZTY0KHRlbXBH
UFIsIHNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpKTsKKworICAgICAgICByZWFkeS5saW5r
KCZtX2ppdCk7CisgICAgCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25Ob3RpZnlXcml0ZSwgTm9S
ZXN1bHQsIHNldCkpOworICAgIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgICAgICAKLSAgICBjYXNlIE5vdGlmeVB1dEdsb2JhbFZhcjogewotICAg
ICAgICBjb21waWxlTm90aWZ5UHV0R2xvYmFsVmFyKG5vZGUpOwotICAgICAgICBicmVhazsKLSAg
ICB9CiAKLSAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6IHsKKyAgICBjYXNlIFZhcklu
amVjdGlvbldhdGNocG9pbnQ6CisgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6IHsKICAgICAg
ICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAx
NTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUzOSw4ICszNTM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFyaXRoTW9kKE5vZAogICAgICAgICAKICAgICAgICAgaWYgKGlzSW50MzJDb25z
dGFudChub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICBpbnQzMl90IGRpdmlz
b3IgPSB2YWx1ZU9mSW50MzJDb25zdGFudChub2RlLT5jaGlsZDIoKS5ub2RlKCkpOwotICAgICAg
ICAgICAgaWYgKGRpdmlzb3IgPiAwICYmIGhhc09uZUJpdFNldChkaXZpc29yKSkgewotICAgICAg
ICAgICAgICAgIEFTU0VSVChkaXZpc29yICE9IDEpOworICAgICAgICAgICAgaWYgKGRpdmlzb3Ig
PiAxICYmIGhhc09uZUJpdFNldChkaXZpc29yKSkgewogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvZ2FyaXRobSA9IFdURjo6ZmFzdExvZzIoZGl2aXNvcik7CiAgICAgICAgICAgICAgICAgR1BS
UmVnIGRpdmlkZW5kR1BSID0gb3AxLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CkBAIC01NjAxLDQ0ICs1NjAwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaChOb2RlKiBubwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3RpZnlQdXRHbG9iYWxWYXIoTm9k
ZSogbm9kZSkKLXsKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBtX2ppdC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+Y29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCktPmdldCgKLSAgICAgICAgbV9qaXQu
Z3JhcGgoKS5pZGVudGlmaWVycygpW25vZGUtPmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpXSku
d2F0Y2hwb2ludFNldCgpOwotICAgIAotICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAg
IEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAKLSAgICBtX2ppdC5sb2FkOChzZXQt
PmFkZHJlc3NPZlN0YXRlKCksIHRlbXBHUFIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCByZWFkeTsKLSAgICAKLSAgICByZWFkeS5hcHBlbmQobV9qaXQuYnJhbmNoMzIoSklUQ29t
cGlsZXI6OkVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCkpKTsKLSAg
ICAKLSAgICBtX2ppdC5tZW1vcnlGZW5jZSgpOwotCi0gICAgaWYgKHNldC0+c3RhdGUoKSA9PSBD
bGVhcldhdGNocG9pbnQpIHsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNXYXRjaGVkID0K
LSAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdGVtcEdQ
UiwgVHJ1c3RlZEltbTMyKENsZWFyV2F0Y2hwb2ludCkpOwotICAgICAgICAKLSAgICAgICAgbV9q
aXQuc3RvcmU4KFRydXN0ZWRJbW0zMihJc1dhdGNoZWQpLCBzZXQtPmFkZHJlc3NPZlN0YXRlKCkp
OwotICAgICAgICByZWFkeS5hcHBlbmQobV9qaXQuanVtcCgpKTsKLSAgICAgICAgCi0gICAgICAg
IGlzV2F0Y2hlZC5saW5rKCZtX2ppdCk7Ci0gICAgfQotICAgIAotICAgIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoVGVzdDgoCi0gICAgICAgIEpJVENvbXBpbGVyOjpO
b25aZXJvLCBKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKHNldC0+YWRkcmVzc09mU2V0SXNO
b3RFbXB0eSgpKSk7Ci0gICAgbV9qaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihJc0ludmFsaWRhdGVk
KSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKLQotICAgIHJlYWR5LmxpbmsoJm1faml0KTsKLSAg
ICAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dD
YXNlLCB0aGlzLCBvcGVyYXRpb25Ob3RpZnlXcml0ZSwgTm9SZXN1bHQsIHNldCkpOwotICAgIAot
ICAgIG5vUmVzdWx0KG5vZGUpOwotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjphZGRCcmFuY2go
Y29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wLCBCYXNpY0Jsb2NrKiBkZXN0aW5h
dGlvbikKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBqdW1wLmp1bXBzKCkuc2l6ZSgpOyBpLS07
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg0LDcgKzEwODQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FVyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpCisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FVndzIG9wZXJhdGlv
biwgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIod2F0Y2hwb2lu
dFNldCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwpAQCAtMjA0NSw4
ICsyMDQ1LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uRXhwcmVzc2lv
bihOb2RlKik7CiAgICAgYm9vbCBjb21waWxlUmVnRXhwRXhlYyhOb2RlKik7CiAgICAgCi0gICAg
dm9pZCBjb21waWxlTm90aWZ5UHV0R2xvYmFsVmFyKE5vZGUqKTsKLSAgICAKICAgICAvLyBzaXpl
IGNhbiBiZSBhbiBpbW1lZGlhdGUgb3IgYSByZWdpc3RlciwgYW5kIG11c3QgYmUgaW4gYnl0ZXMu
IElmIHNpemUgaXMgYSByZWdpc3RlciwKICAgICAvLyBpdCBtdXN0IGJlIGEgZGlmZmVyZW50IHJl
Z2lzdGVyIHRoYW4gcmVzdWx0R1BSLiBFbWl0cyBjb2RlIHRoYXQgcGxhY2UgYSBwb2ludGVyIHRv
CiAgICAgLy8gdGhlIGVuZCBvZiB0aGUgYWxsb2NhdGlvbi4gVGhlIHJldHVybmVkIGp1bXAgaXMg
dGhlIGp1bXAgdG8gdGhlIHNsb3cgcGF0aC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50
Q29sbGVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDEwICsxMTgsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIG1fbm9kZS0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgotICAgICAgICAgICAgYWRkTGF6aWx5KAotICAg
ICAgICAgICAgICAgIGdsb2JhbE9iamVjdCgpLT5zeW1ib2xUYWJsZSgpLT5nZXQoCi0gICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1i
ZXJGb3JDaGVjaygpXSkud2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAgY2FzZSBWYXJpYWJsZVdh
dGNocG9pbnQ6CisgICAgICAgICAgICBhZGRMYXppbHkobV9ub2RlLT52YXJpYWJsZVdhdGNocG9p
bnRTZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IFZhckluamVjdGlvbldhdGNocG9pbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJl
dmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTYxOCw3ICs2MTgsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdEdldEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCk7CiAgICAgICAgIHZvaWQgZW1p
dEdldENsb3N1cmVWYXIoaW50IHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFuZCk7CiAgICAgICAgIHZv
aWQgZW1pdFB1dEdsb2JhbFByb3BlcnR5KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QsIGludCB2YWx1
ZSk7Ci0gICAgICAgIHZvaWQgZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50
IHZhbHVlLCBXYXRjaHBvaW50U2V0Kik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdm9p
ZCBlbWl0Tm90aWZ5V3JpdGUoUmVnaXN0ZXJJRCB2YWx1ZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBW
YXJpYWJsZVdhdGNocG9pbnRTZXQqKTsKKyNlbHNlCisgICAgICAgIHZvaWQgZW1pdE5vdGlmeVdy
aXRlKFJlZ2lzdGVySUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGVySUQgc2NyYXRj
aCwgVmFyaWFibGVXYXRjaHBvaW50U2V0Kik7CisjZW5kaWYKKyAgICAgICAgdm9pZCBlbWl0UHV0
R2xvYmFsVmFyKHVpbnRwdHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUsIFZhcmlhYmxlV2F0Y2hwb2lu
dFNldCopOwogICAgICAgICB2b2lkIGVtaXRQdXRDbG9zdXJlVmFyKGludCBzY29wZSwgdWludHB0
cl90IG9wZXJhbmQsIGludCB2YWx1ZSk7CiAKICAgICAgICAgdm9pZCBlbWl0SW5pdFJlZ2lzdGVy
KGludCBkc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
U3R1YkluZm8uaCIKLSNpbmNsdWRlICJXYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiVmFyaWFibGVX
YXRjaHBvaW50U2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03Niw3ICs3Niw3IEBAIGV4
dGVybiAiQyIgewogICAgIFN0OiBTdHJ1Y3R1cmUqCiAgICAgVjogdm9pZAogICAgIFZtOiBWTSoK
LSAgICBXOiBXYXRjaHBvaW50U2V0KgorICAgIFZ3czogVmFyaWFibGVXYXRjaHBvaW50U2V0Kgog
ICAgIFo6IGludDMyX3QKICovCiB0eXBlZGVmIENhbGxGcmFtZSogSklUX09QRVJBVElPTiAoKkZf
SklUT3BlcmF0aW9uX0VKSlopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgaW50MzJfdCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVS
QVRJT04gKCpWX0pJVE9wZXJhdAogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9w
ZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQz
Ml90LCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklU
T3BlcmF0aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKik7Ci10eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VXKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0
Kik7Cit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VWd3MpKEV4
ZWNTdGF0ZSosIFZhcmlhYmxlV2F0Y2hwb2ludFNldCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVS
QVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVm
IHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VWbSkoRXhlY1N0YXRlKiwgVk0q
KTsKIHR5cGVkZWYgY2hhciogSklUX09QRVJBVElPTiAoKlBfSklUT3BlcmF0aW9uX0UpKEV4ZWNT
dGF0ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MDcsMzcgKzgwNyw0OCBAQCB2b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFByb3BlcnR5KHVpbnRw
dHJfCiAgICAgc3RvcmUzMihyZWdUMiwgQmFzZUluZGV4KHJlZ1QwLCByZWdUMSwgVGltZXNFaWdo
dCwgKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkp
OwogfQogCi12b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50
IHZhbHVlLCBXYXRjaHBvaW50U2V0KiBzZXQpCit2b2lkIEpJVDo6ZW1pdE5vdGlmeVdyaXRlKFJl
Z2lzdGVySUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGVySUQgc2NyYXRjaCwgVmFy
aWFibGVXYXRjaHBvaW50U2V0KiBzZXQpCiB7Ci0gICAgaWYgKHNldCAmJiBzZXQtPnN0YXRlKCkg
IT0gSXNJbnZhbGlkYXRlZCkgewotICAgICAgICBsb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCks
IHJlZ1QyKTsKLSAgICAgICAgCi0gICAgICAgIEp1bXBMaXN0IHJlYWR5OwotICAgICAgICAKLSAg
ICAgICAgcmVhZHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKElz
SW52YWxpZGF0ZWQpKSk7CisgICAgaWYgKCFzZXQgfHwgc2V0LT5zdGF0ZSgpID09IElzSW52YWxp
ZGF0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBsb2FkOChzZXQtPmFkZHJlc3NPZlN0
YXRlKCksIHNjcmF0Y2gpOworICAgIAorICAgIEp1bXBMaXN0IHJlYWR5OworICAgIAorICAgIHJl
YWR5LmFwcGVuZChicmFuY2gzMihFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKElzSW52YWxp
ZGF0ZWQpKSk7CisgICAgCisgICAgaWYgKHNldC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQp
IHsKKyAgICAgICAgSnVtcCBpc1dhdGNoZWQgPSBicmFuY2gzMihOb3RFcXVhbCwgc2NyYXRjaCwg
VHJ1c3RlZEltbTMyKENsZWFyV2F0Y2hwb2ludCkpOwogICAgICAgICAKLSAgICAgICAgaWYgKHNl
dC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKLSAgICAgICAgICAgIEp1bXAgaXNXYXRj
aGVkID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQ2xlYXJXYXRjaHBv
aW50KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKElzV2F0
Y2hlZCksIHJlZ1QyKTsKLSAgICAgICAgICAgIHJlYWR5LmFwcGVuZChqdW1wKCkpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpc1dhdGNoZWQubGluayh0aGlzKTsKLSAgICAgICAgfQorICAg
ICAgICBzdG9yZTMyKHRhZywgJnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0
cy50YWcpOworICAgICAgICBzdG9yZTMyKHBheWxvYWQsICZzZXQtPmFkZHJlc3NPZkluZmVycmVk
VmFsdWUoKS0+dS5hc0JpdHMucGF5bG9hZCk7CisgICAgICAgIHN0b3JlOChUcnVzdGVkSW1tMzIo
SXNXYXRjaGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAgICAgICAgcmVhZHkuYXBwZW5k
KGp1bXAoKSk7CiAgICAgICAgIAotICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25a
ZXJvLCBBYnNvbHV0ZUFkZHJlc3Moc2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkpKSk7Ci0g
ICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpLCByZWdUMik7Ci0gICAgICAg
IHJlYWR5LmxpbmsodGhpcyk7CisgICAgICAgIGlzV2F0Y2hlZC5saW5rKHRoaXMpOwogICAgIH0K
KworICAgIEp1bXAgZGVmaW5pdGVseU5vdEVxdWFsID0gYnJhbmNoMzIoCisgICAgICAgIE5vdEVx
dWFsLCBBYnNvbHV0ZUFkZHJlc3MoJnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFz
Qml0cy5wYXlsb2FkKSwgcGF5bG9hZCk7CisgICAgcmVhZHkuYXBwZW5kKGJyYW5jaDMyKAorICAg
ICAgICBFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUo
KS0+dS5hc0JpdHMudGFnKSwgdGFnKSk7CisgICAgZGVmaW5pdGVseU5vdEVxdWFsLmxpbmsodGhp
cyk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNz
KHNldC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpKSkpOworICAgIHN0b3JlOChUcnVzdGVkSW1t
MzIoSXNJbnZhbGlkYXRlZCksIHNldC0+YWRkcmVzc09mU3RhdGUoKSk7CisgICAgc3RvcmUzMigK
KyAgICAgICAgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpLCAmc2V0LT5hZGRy
ZXNzT2ZJbmZlcnJlZFZhbHVlKCktPnUuYXNCaXRzLnRhZyk7CisgICAgc3RvcmUzMihUcnVzdGVk
SW1tMzIoMCksICZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKS0+dS5hc0JpdHMucGF5bG9h
ZCk7CiAgICAgCisgICAgcmVhZHkubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRQdXRH
bG9iYWxWYXIodWludHB0cl90IG9wZXJhbmQsIGludCB2YWx1ZSwgV2F0Y2hwb2ludFNldCogc2V0
KQorewogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOworICAgIGVtaXROb3RpZnlX
cml0ZShyZWdUMSwgcmVnVDAsIHJlZ1QyKTsKICAgICBzdG9yZTMyKHJlZ1QxLCByZWludGVycHJl
dF9jYXN0PGNoYXIqPihvcGVyYW5kKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMudGFnKSk7CiAgICAgc3RvcmUzMihyZWdUMCwgcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4ob3BlcmFuZCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpKTsKLSAgICAKLSAgICBpZiAoc2V0ICYmIHNldC0+c3RhdGUoKSAh
PSBJc0ludmFsaWRhdGVkKSB7Ci0gICAgICAgIG1lbW9yeUZlbmNlKCk7Ci0gICAgICAgIHN0b3Jl
OChyZWdUMSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKLSAgICB9CiB9CiAKIHZvaWQgSklUOjpl
bWl0UHV0Q2xvc3VyZVZhcihpbnQgc2NvcGUsIHVpbnRwdHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3MSwzNiArNzcxLDQxIEBAIHZv
aWQgSklUOjplbWl0UHV0R2xvYmFsUHJvcGVydHkodWludHB0cl8KICAgICBzdG9yZVB0cihyZWdU
MiwgQmFzZUluZGV4KHJlZ1QwLCByZWdUMSwgVGltZXNFaWdodCwgKGZpcnN0T3V0T2ZMaW5lT2Zm
c2V0IC0gMikgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0
UHV0R2xvYmFsVmFyKHVpbnRwdHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUsIFdhdGNocG9pbnRTZXQq
IHNldCkKK3ZvaWQgSklUOjplbWl0Tm90aWZ5V3JpdGUoUmVnaXN0ZXJJRCB2YWx1ZSwgUmVnaXN0
ZXJJRCBzY3JhdGNoLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHNldCkKIHsKLSAgICBpZiAoc2V0
ICYmIHNldC0+c3RhdGUoKSAhPSBJc0ludmFsaWRhdGVkKSB7Ci0gICAgICAgIGxvYWQ4KHNldC0+
YWRkcmVzc09mU3RhdGUoKSwgcmVnVDEpOwotICAgICAgICAKLSAgICAgICAgSnVtcExpc3QgcmVh
ZHk7Ci0gICAgICAgIAotICAgICAgICByZWFkeS5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCkpKTsKKyAgICBpZiAoIXNldCB8fCBzZXQtPnN0
YXRlKCkgPT0gSXNJbnZhbGlkYXRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGxvYWQ4
KHNldC0+YWRkcmVzc09mU3RhdGUoKSwgc2NyYXRjaCk7CisgICAgCisgICAgSnVtcExpc3QgcmVh
ZHk7CisgICAgCisgICAgcmVhZHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBzY3JhdGNoLCBUcnVz
dGVkSW1tMzIoSXNJbnZhbGlkYXRlZCkpKTsKKyAgICAKKyAgICBpZiAoc2V0LT5zdGF0ZSgpID09
IENsZWFyV2F0Y2hwb2ludCkgeworICAgICAgICBKdW1wIGlzV2F0Y2hlZCA9IGJyYW5jaDMyKE5v
dEVxdWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIoQ2xlYXJXYXRjaHBvaW50KSk7CiAgICAgICAg
IAotICAgICAgICBpZiAoc2V0LT5zdGF0ZSgpID09IENsZWFyV2F0Y2hwb2ludCkgewotICAgICAg
ICAgICAgSnVtcCBpc1dhdGNoZWQgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihDbGVhcldhdGNocG9pbnQpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbW92ZShU
cnVzdGVkSW1tMzIoSXNXYXRjaGVkKSwgcmVnVDEpOwotICAgICAgICAgICAgcmVhZHkuYXBwZW5k
KGp1bXAoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlzV2F0Y2hlZC5saW5rKHRoaXMp
OwotICAgICAgICB9CisgICAgICAgIHN0b3JlNjQodmFsdWUsIHNldC0+YWRkcmVzc09mSW5mZXJy
ZWRWYWx1ZSgpKTsKKyAgICAgICAgc3RvcmU4KFRydXN0ZWRJbW0zMihJc1dhdGNoZWQpLCBzZXQt
PmFkZHJlc3NPZlN0YXRlKCkpOworICAgICAgICByZWFkeS5hcHBlbmQoanVtcCgpKTsKICAgICAg
ICAgCi0gICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblplcm8sIEFic29sdXRlQWRk
cmVzcyhzZXQtPmFkZHJlc3NPZlNldElzTm90RW1wdHkoKSkpKTsKLSAgICAgICAgbW92ZShUcnVz
dGVkSW1tMzIoSXNJbnZhbGlkYXRlZCksIHJlZ1QxKTsKLSAgICAgICAgcmVhZHkubGluayh0aGlz
KTsKKyAgICAgICAgaXNXYXRjaGVkLmxpbmsodGhpcyk7CiAgICAgfQogICAgIAorICAgIHJlYWR5
LmFwcGVuZChicmFuY2g2NChFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKHNldC0+YWRkcmVzc09mSW5m
ZXJyZWRWYWx1ZSgpKSwgdmFsdWUpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25a
ZXJvLCBBYnNvbHV0ZUFkZHJlc3Moc2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkpKSk7Cisg
ICAgc3RvcmU4KFRydXN0ZWRJbW0zMihJc0ludmFsaWRhdGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0
ZSgpKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKSks
IHNjcmF0Y2gpOworICAgIHN0b3JlNjQoc2NyYXRjaCwgc2V0LT5hZGRyZXNzT2ZJbmZlcnJlZFZh
bHVlKCkpOworICAgIAorICAgIHJlYWR5LmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgSklUOjplbWl0
UHV0R2xvYmFsVmFyKHVpbnRwdHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUsIFZhcmlhYmxlV2F0Y2hw
b2ludFNldCogc2V0KQorewogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1Qw
KTsKKyAgICBlbWl0Tm90aWZ5V3JpdGUocmVnVDAsIHJlZ1QxLCBzZXQpOwogICAgIHN0b3JlUHRy
KHJlZ1QwLCByZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVyYW5kKSk7Ci0gICAgCi0gICAgaWYg
KHNldCAmJiBzZXQtPnN0YXRlKCkgIT0gSXNJbnZhbGlkYXRlZCkgewotICAgICAgICBtZW1vcnlG
ZW5jZSgpOwotICAgICAgICBzdG9yZTgocmVnVDEsIHNldC0+YWRkcmVzc09mU3RhdGUoKSk7Ci0g
ICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdFB1dENsb3N1cmVWYXIoaW50IHNjb3BlLCB1aW50cHRy
X3Qgb3BlcmFuZCwgaW50IHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE1
OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMyLDI1ICsyMTMyLDM1IEBAIG1hY3JvIHB1
dFByb3BlcnR5KCkKICAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAsIHQy
LCB0MykKIGVuZAogCittYWNybyBub3RpZnlXcml0ZShzZXQsIHZhbHVlVGFnLCB2YWx1ZVBheWxv
YWQsIHNjcmF0Y2gsIHNsb3cpCisgICAgbG9hZGIgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0
YXRlW3NldF0sIHNjcmF0Y2gKKyAgICBiaWVxIHNjcmF0Y2gsIElzSW52YWxpZGF0ZWQsIC5kb25l
CisgICAgYmluZXEgc2NyYXRjaCwgQ2xlYXJXYXRjaHBvaW50LCAub3ZlcndyaXRlCisgICAgc3Rv
cmVpIHZhbHVlVGFnLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1faW5mZXJyZWRWYWx1ZSArIFRh
Z09mZnNldFtzZXRdCisgICAgc3RvcmVpIHZhbHVlUGF5bG9hZCwgVmFyaWFibGVXYXRjaHBvaW50
U2V0OjptX2luZmVycmVkVmFsdWUgKyBQYXlsb2FkT2Zmc2V0W3NldF0KKyAgICBzdG9yZWIgSXNX
YXRjaGVkLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc3RhdGVbc2V0XQorICAgIGptcCAuZG9u
ZQorCisub3ZlcndyaXRlOgorICAgIGJpbmVxIHZhbHVlUGF5bG9hZCwgVmFyaWFibGVXYXRjaHBv
aW50U2V0OjptX2luZmVycmVkVmFsdWUgKyBQYXlsb2FkT2Zmc2V0W3NldF0sIC5kZWZpbml0ZWx5
RGlmZmVyZW50CisgICAgYmllcSB2YWx1ZVRhZywgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX2lu
ZmVycmVkVmFsdWUgKyBUYWdPZmZzZXRbc2V0XSwgLmRvbmUKKy5kZWZpbml0ZWx5RGlmZmVyZW50
OgorICAgIGJ0Ym56IFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bV9zZXRJc05vdEVtcHR5W3NldF0s
IHNsb3cKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgVmFyaWFibGVXYXRjaHBvaW50U2V0Ojpt
X2luZmVycmVkVmFsdWUgKyBUYWdPZmZzZXRbc2V0XQorICAgIHN0b3JlaSAwLCBWYXJpYWJsZVdh
dGNocG9pbnRTZXQ6Om1faW5mZXJyZWRWYWx1ZSArIFBheWxhb2RPZmZzZXRbc2V0XQorICAgIHN0
b3JlYiBJc0ludmFsaWRhdGVkLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc3RhdGVbc2V0XQor
CisuZG9uZToKK2VuZAorCiBtYWNybyBwdXRHbG9iYWxWYXIoKQotICAgIGxvYWRwRnJvbUluc3Ry
dWN0aW9uKDUsIHQyKQotICAgIGxvYWRiIFdhdGNocG9pbnRTZXQ6Om1fc3RhdGVbdDJdLCB0Mwot
ICAgIGJpZXEgdDMsIElzSW52YWxpZGF0ZWQsIC5yZWFkeQotICAgIGJpbmVxIHQzLCBDbGVhcldh
dGNocG9pbnQsIC5uZWVkVG9JbnZhbGlkYXRlCi0gICAgbW92ZSBJc1dhdGNoZWQsIHQzCi0gICAg
am1wIC5yZWFkeQotLm5lZWRUb0ludmFsaWRhdGU6Ci0gICAgYnRibnogV2F0Y2hwb2ludFNldDo6
bV9zZXRJc05vdEVtcHR5W3QyXSwgLnBEeW5hbWljCi0gICAgbW92ZSBJc0ludmFsaWRhdGVkLCB0
MwotLnJlYWR5OgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MCkKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNSwg
dDMpCisgICAgbm90aWZ5V3JpdGUodDMsIHQxLCB0MiwgdDAsIC5wRHluYW1pYykKICAgICBsb2Fk
cEZyb21JbnN0cnVjdGlvbig2LCB0MCkKICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0MF0KICAg
ICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDBdCi0gICAgbWVtZmVuY2UKLSAgICBsb2FkcEZy
b21JbnN0cnVjdGlvbig1LCB0MikKLSAgICBzdG9yZWIgdDMsIFdhdGNocG9pbnRTZXQ6Om1fc3Rh
dGVbdDJdCiBlbmQKIAogbWFjcm8gcHV0Q2xvc3VyZVZhcigpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2
aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5NTIsMjMgKzE5NTIsMzAgQEAgbWFj
cm8gcHV0UHJvcGVydHkoKQogICAgIHN0b3JlUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0
MCwgdDIpCiBlbmQKIAorbWFjcm8gbm90aWZ5V3JpdGUoc2V0LCB2YWx1ZSwgc2NyYXRjaCwgc2xv
dykKKyAgICBsb2FkYiBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc3RhdGVbc2V0XSwgc2NyYXRj
aAorICAgIGJpZXEgc2NyYXRjaCwgSXNJbnZhbGlkYXRlZCwgLmRvbmUKKyAgICBiaW5lcSBzY3Jh
dGNoLCBDbGVhcldhdGNocG9pbnQsIC5vdmVyd3JpdGUKKyAgICBzdG9yZXEgdmFsdWUsIFZhcmlh
YmxlV2F0Y2hwb2ludFNldDo6bV9pbmZlcnJlZFZhbHVlW3NldF0KKyAgICBzdG9yZWIgSXNXYXRj
aGVkLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc3RhdGVbc2V0XQorICAgIGptcCAuZG9uZQor
Cisub3ZlcndyaXRlOgorICAgIGJxZXEgdmFsdWUsIFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bV9p
bmZlcnJlZFZhbHVlW3NldF0sIC5kb25lCisgICAgYnRibnogVmFyaWFibGVXYXRjaHBvaW50U2V0
OjptX3NldElzTm90RW1wdHlbc2V0XSwgc2xvdworICAgIHN0b3JlcSAwLCBWYXJpYWJsZVdhdGNo
cG9pbnRTZXQ6Om1faW5mZXJyZWRWYWx1ZVtzZXRdCisgICAgc3RvcmViIElzSW52YWxpZGF0ZWQs
IFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bV9zdGF0ZVtzZXRdCisKKy5kb25lOiAgICAKK2VuZAor
CiBtYWNybyBwdXRHbG9iYWxWYXIoKQotICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQyKQot
ICAgIGxvYWRiIFdhdGNocG9pbnRTZXQ6Om1fc3RhdGVbdDJdLCB0MwotICAgIGJpZXEgdDMsIElz
SW52YWxpZGF0ZWQsIC5yZWFkeQotICAgIGJpbmVxIHQzLCBDbGVhcldhdGNocG9pbnQsIC5uZWVk
VG9JbnZhbGlkYXRlCi0gICAgbW92ZSBJc1dhdGNoZWQsIHQzCi0gICAgam1wIC5yZWFkeQotLm5l
ZWRUb0ludmFsaWRhdGU6Ci0gICAgYnRibnogV2F0Y2hwb2ludFNldDo6bV9zZXRJc05vdEVtcHR5
W3QyXSwgLnBEeW5hbWljCi0gICAgbW92ZSBJc0ludmFsaWRhdGVkLCB0MwotLnJlYWR5OgogICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQwLCB0MSkKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig1LCB0MikKKyAgICBub3RpZnlXcml0
ZSh0MiwgdDEsIHQwLCAucER5bmFtaWMpCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwgdDAp
CiAgICAgc3RvcmVxIHQxLCBbdDBdCi0gICAgbWVtZmVuY2UKLSAgICBzdG9yZWIgdDMsIFdhdGNo
cG9pbnRTZXQ6Om1fc3RhdGVbdDJdCiBlbmQKIAogbWFjcm8gcHV0Q2xvc3VyZVZhcigpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBKU0dsb2Jh
bE9iamVjdDo6TmV3R2xvYmFsVmFyIEpTR2xvYmFsT2JqCiAgICAgaW50IGluZGV4ID0gc3ltYm9s
VGFibGUoKS0+c2l6ZShsb2NrZXIpOwogICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkoaW5k
ZXgsIChjb25zdGFudE1vZGUgPT0gSXNDb25zdGFudCkgPyBSZWFkT25seSA6IDApOwogICAgIGlm
IChjb25zdGFudE1vZGUgPT0gSXNWYXJpYWJsZSkKLSAgICAgICAgbmV3RW50cnkucHJlcGFyZVRv
V2F0Y2goU3ltYm9sVGFibGVFbnRyeTo6Tm90SW5pdGlhbGl6ZWQpOworICAgICAgICBuZXdFbnRy
eS5wcmVwYXJlVG9XYXRjaCgpOwogICAgIFN5bWJvbFRhYmxlOjpNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSBzeW1ib2xUYWJsZSgpLT5hZGQobG9ja2VyLCBpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsK
ICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIGFkZFJlZ2lzdGVycygxKTsKQEAg
LTIzNCw3ICsyMzQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjphZGRGdW5jdGlvbihFeGVjU3Rh
CiAgICAgTmV3R2xvYmFsVmFyIHZhciA9IGFkZEdsb2JhbFZhcihwcm9wZXJ0eU5hbWUsIElzVmFy
aWFibGUpOwogICAgIHJlZ2lzdGVyQXQodmFyLnJlZ2lzdGVyTnVtYmVyKS5zZXQoZXhlYy0+dm0o
KSwgdGhpcywgdmFsdWUpOwogICAgIGlmICh2YXIuc2V0KQotICAgICAgICB2YXIuc2V0LT5ub3Rp
ZnlXcml0ZSgpOworICAgICAgICB2YXIuc2V0LT5ub3RpZnlXcml0ZSh2YWx1ZSk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgSlNPYmplY3QqIGxhc3RJblByb3RvdHlwZUNoYWluKEpTT2JqZWN0KiBvYmpl
Y3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgZW51bSBDb25zdGFudE1vZGUgeyBJc0NvbnN0YW50LCBJc1ZhcmlhYmxlIH07
CiAgICAgc3RydWN0IE5ld0dsb2JhbFZhciB7CiAgICAgICAgIGludCByZWdpc3Rlck51bWJlcjsK
LSAgICAgICAgV2F0Y2hwb2ludFNldCogc2V0OworICAgICAgICBWYXJpYWJsZVdhdGNocG9pbnRT
ZXQqIHNldDsKICAgICB9OwogICAgIE5ld0dsb2JhbFZhciBhZGRHbG9iYWxWYXIoY29uc3QgSWRl
bnRpZmllciYsIENvbnN0YW50TW9kZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKLWNsYXNzIFdhdGNocG9p
bnRTZXQ7CitjbGFzcyBWYXJpYWJsZVdhdGNocG9pbnRTZXQ7CiAKIGVudW0gUmVzb2x2ZU1vZGUg
ewogICAgIFRocm93SWZOb3RGb3VuZCwKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5lIGJvb2wgbmVl
ZHNWYXJJbmplY3Rpb25DaGVja3MoUmVzbwogfQogCiBzdHJ1Y3QgUmVzb2x2ZU9wIHsKLSAgICBS
ZXNvbHZlT3AoUmVzb2x2ZVR5cGUgdHlwZSwgc2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwgdWludHB0cl90IG9wZXJhbmQpCisg
ICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwgdWludHB0cl90
IG9wZXJhbmQpCiAgICAgICAgIDogdHlwZSh0eXBlKQogICAgICAgICAsIGRlcHRoKGRlcHRoKQog
ICAgICAgICAsIHN0cnVjdHVyZShzdHJ1Y3R1cmUpCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RydWN0
IFJlc29sdmVPcCB7CiAgICAgUmVzb2x2ZVR5cGUgdHlwZTsKICAgICBzaXplX3QgZGVwdGg7CiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7Ci0gICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNl
dDsKKyAgICBWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CiAgICAgdWludHB0
cl90IG9wZXJhbmQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMyw3ICsxMjMsNiBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAg
ICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6
OmhlYXAob2JqZWN0KSk7CiAgICAgCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogcmVn
OwotICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IDA7CiAgICAgewogICAgICAgICBTeW1ib2xUYWJs
ZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBHQ1NhZmVD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMtPnZtKCku
aGVhcCk7CkBAIC0xMzgsMTUgKzEzNywxNCBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgK
ICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
LSAgICAgICAgc2V0ID0gaXRlci0+dmFsdWUud2F0Y2hwb2ludFNldCgpOworICAgICAgICBpZiAo
VmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQgPSBpdGVyLT52YWx1ZS53YXRjaHBvaW50U2V0KCkp
CisgICAgICAgICAgICBzZXQtPm5vdGlmeVdyaXRlKHZhbHVlKTsKICAgICAgICAgcmVnID0gJm9i
amVjdC0+cmVnaXN0ZXJBdChmYXN0RW50cnkuZ2V0SW5kZXgoKSk7CiAgICAgfQogICAgIC8vIEkn
ZCBwcmVmZXIgd2Ugbm90IGhvbGQgbG9jayB3aGlsZSBleGVjdXRpbmcgYmFycmllcnMsIHNpbmNl
IEkgcHJlZmVyIHRvIHJlc2VydmUKICAgICAvLyB0aGUgcmlnaHQgZm9yIGJhcnJpZXJzIHRvIGJl
IGFibGUgdG8gdHJpZ2dlciBHQy4gQW5kIEkgZG9uJ3Qgd2FudCB0byBob2xkIFZNCiAgICAgLy8g
bG9ja3Mgd2hpbGUgR0MnaW5nLgogICAgIHJlZy0+c2V0KHZtLCBvYmplY3QsIHZhbHVlKTsKLSAg
ICBpZiAoc2V0KQotICAgICAgICBzZXQtPm5vdGlmeVdyaXRlKCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTE1OCw3ICsxNTYsNiBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhB
dHRyaWJ1dGVzCiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZh
bHVlKSA9PSBIZWFwOjpoZWFwKG9iamVjdCkpOwogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPiogcmVnOwotICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IDA7CiAgICAgewogICAgICAgICBT
eW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAg
ICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwpAQCAtMTY3
LDEzICsxNjQsMTIgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRy
eSA9IGl0ZXItPnZhbHVlOwogICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKLSAgICAg
ICAgc2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOworICAgICAgICBpZiAoVmFyaWFibGVXYXRj
aHBvaW50U2V0KiBzZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCkpCisgICAgICAgICAgICBzZXQt
Pm5vdGlmeVdyaXRlKHZhbHVlKTsKICAgICAgICAgZW50cnkuc2V0QXR0cmlidXRlcyhhdHRyaWJ1
dGVzKTsKICAgICAgICAgcmVnID0gJm9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgp
KTsKICAgICB9CiAgICAgcmVnLT5zZXQodm0sIG9iamVjdCwgdmFsdWUpOwotICAgIGlmIChzZXQp
Ci0gICAgICAgIHNldC0+bm90aWZ5V3JpdGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2
aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwzNyArNTgsMzIgQEAgdm9pZCBTeW1ib2xUYWJs
ZUVudHJ5OjpmcmVlRmF0RW50cnlTbG93KAogICAgIGRlbGV0ZSBmYXRFbnRyeSgpOwogfQogCi1i
b29sIFN5bWJvbFRhYmxlRW50cnk6OmNvdWxkQmVXYXRjaGVkKCkKK0pTVmFsdWUgU3ltYm9sVGFi
bGVFbnRyeTo6aW5mZXJyZWRWYWx1ZSgpCiB7CiAgICAgaWYgKCFpc0ZhdCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludHMgPSBmYXRFbnRyeSgp
LT5tX3dhdGNocG9pbnRzLmdldCgpOwotICAgIGlmICghd2F0Y2hwb2ludHMpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gd2F0Y2hwb2ludHMtPnN0YXRlKCkgPT0gSXNXYXRjaGVk
OworICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIHJldHVybiBmYXRFbnRyeSgpLT5tX3dh
dGNocG9pbnRzLT5pbmZlcnJlZFZhbHVlKCk7CiB9CiAKLXZvaWQgU3ltYm9sVGFibGVFbnRyeTo6
cHJlcGFyZVRvV2F0Y2goV2F0Y2hTdGF0ZSBzdGF0ZSkKK3ZvaWQgU3ltYm9sVGFibGVFbnRyeTo6
cHJlcGFyZVRvV2F0Y2goKQogewogICAgIEZhdEVudHJ5KiBlbnRyeSA9IGluZmxhdGUoKTsKICAg
ICBBU1NFUlQoIWVudHJ5LT5tX3dhdGNocG9pbnRzKTsKLSAgICBlbnRyeS0+bV93YXRjaHBvaW50
cyA9IGFkb3B0UmVmKAotICAgICAgICBuZXcgV2F0Y2hwb2ludFNldChzdGF0ZSA9PSBBbHJlYWR5
SW5pdGlhbGl6ZWQgPyBJc1dhdGNoZWQgOiBDbGVhcldhdGNocG9pbnQpKTsKKyAgICBlbnRyeS0+
bV93YXRjaHBvaW50cyA9IGFkb3B0UmVmKG5ldyBWYXJpYWJsZVdhdGNocG9pbnRTZXQoKSk7CiB9
CiAKIHZvaWQgU3ltYm9sVGFibGVFbnRyeTo6YWRkV2F0Y2hwb2ludChXYXRjaHBvaW50KiB3YXRj
aHBvaW50KQogewotICAgIEFTU0VSVChjb3VsZEJlV2F0Y2hlZCgpKTsKICAgICBmYXRFbnRyeSgp
LT5tX3dhdGNocG9pbnRzLT5hZGQod2F0Y2hwb2ludCk7CiB9CiAKLXZvaWQgU3ltYm9sVGFibGVF
bnRyeTo6bm90aWZ5V3JpdGVTbG93KCkKK3ZvaWQgU3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5V3Jp
dGVTbG93KEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludHMg
PSBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLmdldCgpOworICAgIFZhcmlhYmxlV2F0Y2hwb2lu
dFNldCogd2F0Y2hwb2ludHMgPSBmYXRFbnRyeSgpLT5tX3dhdGNocG9pbnRzLmdldCgpOwogICAg
IGlmICghd2F0Y2hwb2ludHMpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICB3YXRjaHBvaW50
cy0+bm90aWZ5V3JpdGUoKTsKKyAgICB3YXRjaHBvaW50cy0+bm90aWZ5V3JpdGUodmFsdWUpOwog
fQogCiBTeW1ib2xUYWJsZUVudHJ5OjpGYXRFbnRyeSogU3ltYm9sVGFibGVFbnRyeTo6aW5mbGF0
ZVNsb3coKQpAQCAtMTA5LDUgKzEwNCwzMyBAQCBTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGUoVk0m
IHZtKQogCiBTeW1ib2xUYWJsZTo6flN5bWJvbFRhYmxlKCkgeyB9CiAKK3ZvaWQgU3ltYm9sVGFi
bGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiB0aGlzQ2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgU3ltYm9sVGFibGUqIHRoaXNTeW1ib2xUYWJsZSA9IGpzQ2FzdDxTeW1ib2xUYWJs
ZSo+KHRoaXNDZWxsKTsKKyAgICBpZiAoIXRoaXNTeW1ib2xUYWJsZS0+bV93YXRjaHBvaW50Q2xl
YW51cCkgeworICAgICAgICB0aGlzU3ltYm9sVGFibGUtPm1fd2F0Y2hwb2ludENsZWFudXAgPQor
ICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxXYXRjaHBvaW50Q2xlYW51cD4odGhpc1N5bWJv
bFRhYmxlKTsKKyAgICB9CisgICAgCisgICAgdmlzaXRvci5hZGRVbmNvbmRpdGlvbmFsRmluYWxp
emVyKHRoaXNTeW1ib2xUYWJsZS0+bV93YXRjaHBvaW50Q2xlYW51cC5nZXQoKSk7Cit9CisKK1N5
bWJvbFRhYmxlOjpXYXRjaHBvaW50Q2xlYW51cDo6V2F0Y2hwb2ludENsZWFudXAoU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlKQorICAgIDogbV9zeW1ib2xUYWJsZShzeW1ib2xUYWJsZSkKK3sKK30K
KworU3ltYm9sVGFibGU6OldhdGNocG9pbnRDbGVhbnVwOjp+V2F0Y2hwb2ludENsZWFudXAoKSB7
IH0KKwordm9pZCBTeW1ib2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OmZpbmFsaXplVW5jb25k
aXRpb25hbGx5KCkKK3sKKyAgICBNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3N5bWJvbFRhYmxlLT5t
X21hcC5iZWdpbigpOworICAgIE1hcDo6aXRlcmF0b3IgZW5kID0gbV9zeW1ib2xUYWJsZS0+bV9t
YXAuZW5kKCk7CisgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgaWYg
KFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gaXRlci0+dmFsdWUud2F0Y2hwb2ludFNldCgp
KQorICAgICAgICAgICAgc2V0LT5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOworICAgIH0KK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMx
LDEzIEBACiAKICNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgIlZhcmlhYmxlV2F0Y2hw
b2ludFNldC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWNsYXNzIFdhdGNocG9pbnQ7Ci1jbGFzcyBXYXRjaHBvaW50U2V0OwotCiBzdHJ1Y3QgU2xvd0Fy
Z3VtZW50IHsKICAgICBlbnVtIFN0YXR1cyB7CiAgICAgICAgIE5vcm1hbCA9IDAsCkBAIC03OSwx
MSArNzYsMTEgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgaW50IG1pc3NpbmdTeW1ib2xNYQogLy8g
Y291bnRlZCBwb2ludGVyIHRvIGEgc2hhcmVkIFdhdGNocG9pbnRTZXQuIFRodXMsIGluLXBsYWNl
IGVkaXRzIG9mIHRoZQogLy8gV2F0Y2hwb2ludFNldCB3aWxsIG1hbmlmZXN0IGluIGFsbCBjb3Bp
ZXMuIEhlcmUncyBhIHBpY3R1cmU6CiAvLwotLy8gU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50
cnkgLS0+IFdhdGNocG9pbnRTZXQKKy8vIFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVudHJ5IC0t
PiBWYXJpYWJsZVdhdGNocG9pbnRTZXQKIC8vCiAvLyBJZiB5b3UgbWFrZSBhIGNvcHkgb2YgYSBT
eW1ib2xUYWJsZUVudHJ5LCB5b3Ugd2lsbCBoYXZlOgogLy8KLS8vIG9yaWdpbmFsOiBTeW1ib2xU
YWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0Y2hwb2ludFNldAorLy8gb3JpZ2luYWw6IFN5
bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVudHJ5IC0tPiBWYXJpYWJsZVdhdGNocG9pbnRTZXQKIC8v
IGNvcHk6ICAgICBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLS0tLV4KIAogc3RydWN0
IFN5bWJvbFRhYmxlRW50cnkgewpAQCAtMjE4LDI1ICsyMTUsMjQgQEAgc3RydWN0IFN5bWJvbFRh
YmxlRW50cnkgewogICAgICAgICByZXR1cm4gYml0cygpICYgUmVhZE9ubHlGbGFnOwogICAgIH0K
ICAgICAKLSAgICBib29sIGNvdWxkQmVXYXRjaGVkKCk7CisgICAgSlNWYWx1ZSBpbmZlcnJlZFZh
bHVlKCk7CiAgICAgCi0gICAgZW51bSBXYXRjaFN0YXRlIHsgTm90SW5pdGlhbGl6ZWQsIEFscmVh
ZHlJbml0aWFsaXplZCB9OwotICAgIHZvaWQgcHJlcGFyZVRvV2F0Y2goV2F0Y2hTdGF0ZSk7Cisg
ICAgdm9pZCBwcmVwYXJlVG9XYXRjaCgpOwogICAgIAogICAgIHZvaWQgYWRkV2F0Y2hwb2ludChX
YXRjaHBvaW50Kik7CiAgICAgCi0gICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCgpCisg
ICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KCkKICAgICB7CiAgICAgICAg
IGlmICghaXNGYXQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gZmF0
RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgQUxXQVlTX0lO
TElORSB2b2lkIG5vdGlmeVdyaXRlKCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5V3Jp
dGUoSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkoIWlzRmF0KCkpKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBub3RpZnlXcml0ZVNsb3coKTsKKyAgICAgICAg
bm90aWZ5V3JpdGVTbG93KHZhbHVlKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpAQCAtMjU2LDEx
ICsyNTIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGludHB0cl90IG1fYml0czsg
Ly8gYWx3YXlzIGhhcyBGYXRGbGFnIHNldCBhbmQgZXhhY3RseSBtYXRjaGVzIHdoYXQgdGhlIGJp
dHMgd291bGQgaGF2ZSBiZWVuIGlmIHRoaXMgd2Fzbid0IGZhdC4KICAgICAgICAgCi0gICAgICAg
IFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX3dhdGNocG9pbnRzOworICAgICAgICBSZWZQdHI8VmFy
aWFibGVXYXRjaHBvaW50U2V0PiBtX3dhdGNocG9pbnRzOwogICAgIH07CiAgICAgCiAgICAgU3lt
Ym9sVGFibGVFbnRyeSYgY29weVNsb3coY29uc3QgU3ltYm9sVGFibGVFbnRyeSYpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgbm90aWZ5V3JpdGVTbG93KCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBub3RpZnlXcml0ZVNsb3coSlNWYWx1ZSk7CiAgICAgCiAgICAgYm9vbCBpc0Zh
dCgpIGNvbnN0CiAgICAgewpAQCAtNDY2LDkgKzQ2MiwyMyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U2xvd0FyZ3VtZW50KiBzbG93QXJndW1lbnRzKCkgeyByZXR1cm4gbV9zbG93QXJndW1lbnRzLmdl
dCgpOyB9CiAgICAgdm9pZCBzZXRTbG93QXJndW1lbnRzKHN0ZDo6dW5pcXVlX3B0cjxTbG93QXJn
dW1lbnRbXT4gc2xvd0FyZ3VtZW50cykgeyBtX3Nsb3dBcmd1bWVudHMgPSBzdGQ6Om1vdmUoc2xv
d0FyZ3VtZW50cyk7IH0KIAorICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKKwogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKIHByaXZhdGU6Cisg
ICAgY2xhc3MgV2F0Y2hwb2ludENsZWFudXAgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXpl
ciB7CisgICAgcHVibGljOgorICAgICAgICBXYXRjaHBvaW50Q2xlYW51cChTeW1ib2xUYWJsZSop
OworICAgICAgICB2aXJ0dWFsIH5XYXRjaHBvaW50Q2xlYW51cCgpOworICAgICAgICAKKyAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgp
IE9WRVJSSURFOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgU3ltYm9sVGFibGUqIG1fc3ltYm9s
VGFibGU7CisgICAgfTsKKyAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xUYWJsZShW
TSYpOwogICAgIH5TeW1ib2xUYWJsZSgpOwogCkBAIC00ODEsNiArNDkxLDggQEAgcHJpdmF0ZToK
ICAgICBpbnQgbV9jYXB0dXJlRW5kOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dBcmd1bWVu
dFtdPiBtX3Nsb3dBcmd1bWVudHM7CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFdhdGNocG9p
bnRDbGVhbnVwPiBtX3dhdGNocG9pbnRDbGVhbnVwOwogCiBwdWJsaWM6CiAgICAgbXV0YWJsZSBD
b25jdXJyZW50SklUTG9jayBtX2xvY2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217883</attachid>
            <date>2013-11-26 09:40:07 -0800</date>
            <delta_ts>2013-11-26 10:56:39 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>69449</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5Nzg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MCBA
QAorMjAxMy0xMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlc3RydWN0dXJlIGdsb2JhbCB2YXJpYWJsZSBjb25zdGFudCBpbmZlcmVuY2Ugc28gdGhhdCBp
dCBjb3VsZCB3b3JrIGZvciBhbnkga2luZCBvZiBzeW1ib2wgdGFibGUgdmFyaWFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBj
aGFuZ2VzIHRoZSB3YXkgZ2xvYmFsIHZhcmlhYmxlIGNvbnN0YW50IGluZmVyZW5jZSB3b3JrcyBz
byB0aGF0IGl0IGNhbiBiZSByZXVzZWQKKyAgICAgICAgZm9yIGNsb3N1cmUgdmFyaWFibGUgY29u
c3RhbnQgaW5mZXJlbmNlLiBTb21lIG9mIHRoZSBwcmVtaXNlcyB0aGF0IG9yaWdpbmFsbHkgbW90
aXZhdGVkCisgICAgICAgIHRoaXMgcGF0Y2ggYXJlIHNvbWV3aGF0IHdyb25nLCBidXQgaXQgbGVk
IHRvIHNvbWUgc2ltcGxpZmljYXRpb25zIGFueXdheSBhbmQgSSBzdXNwZWN0CisgICAgICAgIHRo
YXQgd2UnbGwgYmUgYWJsZSB0byBmaXggdGhvc2UgcHJlbWlzZXMgaW4gdGhlIGZ1dHVyZS4gVGhl
IG1haW4gcG9pbnQgb2YgdGhpcyBwYXRjaCBpcworICAgICAgICB0byBtYWtlIGl0IGVhc3kgdG8g
cmV1c2UgZ2xvYmFsIHZhcmlhYmxlIGNvbnN0YW50IGluZmVyZW5jZSBmb3IgY2xvc3VyZSB2YXJp
YWJsZQorICAgICAgICBjb25zdGFudCBpbmZlcmVuY2UsIGFuZCB0aGlzIHdpbGwgYmUgcG9zc2li
bGUgcHJvdmlkZWQgd2UgY2FuIGFsc28gZWl0aGVyIChhKSBpbmZlcgorICAgICAgICBvbmUtc2hv
dCBjbG9zdXJlcyAoZWFzeSkgb3IgKGIpIGluZmVyIGNsb3N1cmUgdmFyaWFibGVzIHRoYXQgYXJl
IGFsd2F5cyBhc3NpZ25lZCBwcmlvcgorICAgICAgICB0byBmaXJzdCB1c2UuCisgICAgICAgIAor
ICAgICAgICBPbmUgb2YgdGhlIHRoaW5ncyB0aGF0IHRoaXMgcGF0Y2ggaXMgbWVhbnQgdG8gZW5h
YmxlIGlzIGNvbnN0YW50IGluZmVyZW5jZSBmb3IgY2xvc3VyZQorICAgICAgICB2YXJpYWJsZXMg
dGhhdCBtYXkgYmUgcGFydCBvZiBhIG11bHRpLXNob3QgY2xvc3VyZS4gQ2xvc3VyZSB2YXJpYWJs
ZXMgbWF5IGJlCisgICAgICAgIGluc3RhbnRpYXRlZCBtdWx0aXBsZSB0aW1lcywgbGlrZToKKyAg
ICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAgICAgICAgICAgdmFy
IFdJRFRIID0gNDU7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gYmFyKCkgeworICAgICAgICAg
ICAgICAgICAgICAuLi4gdXNlIFdJRFRIIC4uLgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEV2ZW4gaWYgZm9v
KCkgaXMgY2FsbGVkIG1hbnkgdGltZXMgYW5kIFdJRFRIIGlzIGFzc2lnbmVkIHRvIG11bHRpcGxl
IHRpbWVzLCB0aGF0CisgICAgICAgIGRvZXNuJ3QgY2hhbmdlIHRoZSBmYWN0IHRoYXQgaXQncyBh
IGNvbnN0YW50LiBUaGUgZ29hbCBvZiBjbG9zdXJlIHZhcmlhYmxlIGNvbnN0YW50CisgICAgICAg
IGluZmVyZW5jZSBpcyB0byBjYXRjaCBhbnkgY2FzZSB3aGVyZSBhIGNsb3N1cmUgdmFyaWFibGUg
aGFzIGJlZW4gYXNzaWduZWQgYXQgbGVhc3Qgb25jZQorICAgICAgICBhbmQgaXRzIHZhbHVlIGhh
cyBuZXZlciBjaGFuZ2VkLiBUaGlzIHBhdGNoIGRvZXNuJ3QgaW1wbGVtZW50IHRoYXQsIGJ1dCBp
dCBkb2VzIGNoYW5nZQorICAgICAgICBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgaW5mZXJlbmNl
IHRvIGhhdmUgbW9zdCBvZiB0aGUgcG93ZXJzIG5lZWRlZCB0byBkbyB0aGF0LiBOb3RlCisgICAg
ICAgIHRoYXQgbW9zdCBsaWtlbHkgd2Ugd2lsbCB1c2UgdGhpcyBmdW5jdGlvbmFsaXR5IG9ubHkg
dG8gaW1wbGVtZW50IGNvbnN0YW50IGluZmVyZW5jZQorICAgICAgICBmb3Igb25lLXNob3QgY2xv
c3VyZXMsIGJ1dCB0aGUgcmVzdWx0aW5nIG1hY2hpbmVyeSBpcyBzdGlsbCBzaW1wbGVyIHRoYW4g
d2hhdCB3ZSBoYWQKKyAgICAgICAgYmVmb3JlLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpbnZv
bHZlcyB0aHJlZSBjaGFuZ2VzOgorICAgICAgICAKKyAgICAgICAgICAgIC0gVGhlIHdhdGNocG9p
bnQgb2JqZWN0IG5vdyBjb250YWlucyB0aGUgaW5mZXJyZWQgdmFsdWUuIFRoaXMgaW52b2x2ZXMg
Y3JlYXRpbmcgYQorICAgICAgICAgICAgICBuZXcga2luZCBvZiB3YXRjaHBvaW50IHNldCwgdGhl
IFZhcmlhYmxlV2F0Y2hwb2ludFNldC4gV2Ugd2lsbCByZXVzZSB0aGlzIG9iamVjdAorICAgICAg
ICAgICAgICBmb3IgY2xvc3VyZSB2YXJpYWJsZXMuCisgICAgICAgIAorICAgICAgICAgICAgLSBX
cml0aW5nIHRvIGEgdmFyaWFibGUgdGhhdCBpcyB3YXRjaHBvaW50ZWQgc3RpbGwgaW52b2x2ZXMg
dGhlc2UgdGhyZWUgc3RhdGVzIHRoYXQKKyAgICAgICAgICAgICAgd2UgcHJvY2VlZCB0aHJvdWdo
IG1vbm90b25pY2FsbHkgKFVuaW5pdGlhbGl6ZWQtPkluaXRpYWxpemVkLT5JbnZhbGlkYXRlZCkg
YnV0CisgICAgICAgICAgICAgIG5vdywgdGhlIEluaXRpYWxpemVkLT5JbnZhbGlkYXRlZCBzdGF0
ZSB0cmFuc2l0aW9uIG9ubHkgaGFwcGVucyBpZiB3ZSBjaGFuZ2UgdGhlCisgICAgICAgICAgICAg
IHZhcmlhYmxlJ3MgdmFsdWUsIHJhdGhlciB0aGFuIHN0b3JlIHRvIHRoZSB2YXJpYWJsZS4gUmVw
ZWF0ZWRseSBzdG9yaW5nIHRoZSBzYW1lCisgICAgICAgICAgICAgIHZhbHVlIHdvbid0IGNoYW5n
ZSB0aGUgdmFyaWFibGUncyBzdGF0ZS4KKyAgICAgICAgCisgICAgICAgICAgICAtIE9uIDY0LWJp
dCBzeXN0ZW1zICh0aGUgb25seSBzeXN0ZW1zIG9uIHdoaWNoIHdlIGRvIGNvbmN1cnJlbnQgSklU
KSwgeW91IG5vIGxvbmdlcgorICAgICAgICAgICAgICBuZWVkIGZhbmN5IGZlbmNpbmcgdG8gZ2V0
IGEgY29uc2lzdGVudCB2aWV3IG9mIHRoZSB3YXRjaHBvaW50IGluIHRoZSBKSVQuIFRoZQorICAg
ICAgICAgICAgICBzdGF0ZSBvZiB0aGUgVmFyaWFibGVXYXRjaHBvaW50U2V0IGZvciB0aGUgcHVy
cG9zZXMgb2YgY29uc3RhbnQgZm9sZGluZyBpcworICAgICAgICAgICAgICBlbnRpcmVseSBlbmNh
cHN1bGF0ZWQgaW4gdGhlIFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bV9pbmZlcnJlZFZhbHVlLiBJ
ZiB0aGF0IGlzCisgICAgICAgICAgICAgIEpTVmFsdWUoKSB0aGVuIHlvdSBjYW5ub3QgZm9sZCAo
ZWl0aGVyIGJlY2F1c2UgdGhlIHNldCBpcyB1bmluaXRpYWxpemVkIG9yCisgICAgICAgICAgICAg
IGJlY2F1c2UgaXQncyBpbnZhbGlkYXRlZCAtIGRvZXNuJ3QgbWF0dGVyIHdoaWNoKTsgb24gdGhl
IG90aGVyIGhhbmQgaWYgdGhlIHZhbHVlCisgICAgICAgICAgICAgIGlzIGFueXRoaW5nIG90aGVy
IHRoYW4gSlNWYWx1ZSgpIHRoZW4geW91IGNhbiBmb2xkLCBhbmQgdGhhdCdzIHRoZSB2YWx1ZSB5
b3UgZm9sZAorICAgICAgICAgICAgICB0by4gU2ltcGxlIQorICAgICAgICAKKyAgICAgICAgVGhp
cyBhbHNvIGNoYW5nZXMgdGhlIHdheSB0aGF0IERGRyBJUiBkZWFscyB3aXRoIHZhcmlhYmxlIHdh
dGNocG9pbnRzLiBJdCdzIG5vdworICAgICAgICBvYmxpdmlvdXMgdG8gZ2xvYmFsIHZhcmlhYmxl
cy4gWW91IGluc3RhbGwgYSB3YXRjaHBvaW50IHVzaW5nIFZhcmlhYmxlV2F0Y2hwb2ludCBhbmQK
KyAgICAgICAgeW91IG5vdGlmeSB3cml0ZSB1c2luZyBOb3RpZnlXcml0ZS4gRWFzeSEKKyAgICAg
ICAgCisgICAgICAgIE5vdGUgdGhhdCByaWdodCBub3csIGJlY2F1c2Ugb2YgdGhlIGZhY3QgdGhh
dCBvcF9lbnRlciB3aWxsIHN0b3JlIFVuZGVmaW5lZCBpbnRvIGV2ZXJ5CisgICAgICAgIGNhcHR1
cmVkIHZhcmlhYmxlLCB5b3UgY2FuJ3QgYWN0dWFsbHkgZG8gY29uc3RhbnQgaW5mZXJlbmNlIHVu
bGVzcyB3ZSBpbnRyb2R1Y2Ugc29tZQorICAgICAgICBtb3JlIGhvcnJvci4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAg
ICAgICAgKiBieXRlY29kZS9WYXJpYWJsZVdhdGNocG9pbnRTZXQuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OlZhcmlhYmxlV2F0Y2hwb2ludFNldDo6VmFyaWFibGVXYXRjaHBvaW50U2V0KToKKyAg
ICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBvaW50U2V0Ojp+VmFyaWFibGVXYXRjaHBvaW50U2V0
KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBvaW50U2V0OjppbmZlcnJlZFZhbHVlKToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBvaW50U2V0Ojpub3RpZnlXcml0ZSk6CisgICAg
ICAgIChKU0M6OlZhcmlhYmxlV2F0Y2hwb2ludFNldDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChK
U0M6OlZhcmlhYmxlV2F0Y2hwb2ludFNldDo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAg
ICAgICAoSlNDOjpWYXJpYWJsZVdhdGNocG9pbnRTZXQ6OmFkZHJlc3NPZkluZmVycmVkVmFsdWUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuaDoKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjo6OmV4ZWN1dGVF
ZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZH
Q1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpwZXJmb3JtTm9kZUNT
RSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5o
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1JlZ2lzdGVyUG9pbnRlcik6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzVmFyaWFibGVXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjp2YXJpYWJsZVdhdGNocG9pbnRTZXQpOgorICAgICAgICAqIGRmZy9ERkdO
b2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhNb2QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6Oldh
dGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlTm90aWZ5V3JpdGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdE5vdGlmeVdyaXRlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0UHV0R2xvYmFsVmFyKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5vdGlmeVdyaXRlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0UHV0R2xvYmFsVmFyKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjphZGRHbG9iYWxWYXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6YWRkRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTU2NvcGUuaDoKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU9wOjpSZXNv
bHZlT3ApOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0
aEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjppbmZlcnJlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6cHJlcGFyZVRvV2F0Y2gpOgorICAgICAgICAoSlNDOjpTeW1ib2xU
YWJsZUVudHJ5OjphZGRXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRy
eTo6bm90aWZ5V3JpdGVTbG93KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6Oldh
dGNocG9pbnRDbGVhbnVwKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OldhdGNocG9pbnRD
bGVhbnVwOjp+V2F0Y2hwb2ludENsZWFudXApOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6
V2F0Y2hwb2ludENsZWFudXA6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBy
dW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6Ondh
dGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5Ojpub3RpZnlXcml0
ZSk6CisKIDIwMTMtMTEtMjYgIE5hZGF2IFJvdGVtICA8bnJvdGVtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBPcHRpbWl6ZSBhd2F5IE9SIHdpdGggemVybyAtIGEgY29tbW9uIEFTTS5qcyBwYXR0ZXJu
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlz
aW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmggXAorCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdhdGNocG9pbnRTZXQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC03OTUsNiArNzk1LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXFVubGlua2VkQ29kZUJsb2NrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxWYWx1ZVByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJ5dGVjb2RlXFZhbHVlUmVjb3ZlcnkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJ5dGVjb2RlXFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYnl0ZWNvZGVcVmlydHVhbFJlZ2lzdGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxXYXRjaHBvaW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxieXRlY29tcGlsZXJcQnl0ZWNvZGVHZW5lcmF0b3IuaCIgLz4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCw3IEBACiAJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAv
KiBDb2RlVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjhGOTQzRjE2Njc2MzJEMDBENjE5NzEgLyogQ29kZVR5cGUuY3BwICovOyB9OwogCQkw
RjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEgLyogSklUQ29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGOTQ0MzE2Njc2MzUyMDBENjE5NzEgLyog
SklUQ29kZS5jcHAgKi87IH07CiAJCTBGOEY5NDQ2MTY2NzY0RjEwMEQ2MTk3MSAvKiBDb2RlT3Jp
Z2luLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
OEY5NDQ1MTY2NzY0RUUwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLzsgfTsKKwkJMEY5MTgx
QzcxODQxNUNBNTAwNTdCNjY5IC8qIFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTgxQzYxODQxNUNBNTAwNTdC
NjY5IC8qIFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTE5RDBDMTU3RUUwOUYwMDRBNEU3RCAvKiBKU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGOTE5RDA5MTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0
LmNwcCAqLzsgfTsKIAkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVP
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
OTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5MTlEMTAxNTdGMzMy
OTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEUxNTdGMzMyNzAwNEE0RTdE
IC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwICovOyB9OwpAQCAtMTU5Myw2ICsxNTk0
LDcgQEAKIAkJMEY4Rjk0M0YxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVUeXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4Rjk0NDMxNjY3NjM1MjAwRDYxOTcxIC8qIEpJVENvZGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQ29kZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOEY5NDQ1MTY2NzY0RUUwMEQ2MTk3MSAvKiBDb2Rl
T3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVPcmln
aW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxODFDNjE4NDE1Q0E1MDA1
N0I2NjkgLyogVmFyaWFibGVXYXRjaHBvaW50U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N5bWJvbFRhYmxlT2Jq
ZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEExNTdFRTA5RDAw
NEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxMzIsNiAr
NDEzNCw3IEBACiAJCQkJMEY5NjNCMzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5o
ICovLAogCQkJCTBGMjRFNTU3MTdGNzRFREIwMEFCQjIxNyAvKiBWYWx1ZVJlY292ZXJ5LmNwcCAq
LywKIAkJCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovLAor
CQkJCTBGOTE4MUM2MTg0MTVDQTUwMDU3QjY2OSAvKiBWYXJpYWJsZVdhdGNocG9pbnRTZXQuaCAq
LywKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8s
CiAJCQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAogCQkJ
CTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8sCkBAIC00Mzc1LDYg
KzQzNzgsNyBAQAogCQkJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyQTE3RDUxRjU3
MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGOTE4MUM3MTg0MTVDQTUwMDU3QjY2OSAvKiBWYXJpYWJsZVdhdGNocG9p
bnRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzJDMTdENTFGNTcwMENBMkM0MCAvKiBE
RkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjYzOTQzRjE1Qzc1RjE5MDA2QTU5N0MgLyogREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRTBGNzcxNkMxREIxMjAwODJDNUU4IC8q
IERGR1VuaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDE1OTczMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZTsKIGNsYXNzIEFycmF5UHJvZmlsZTsKIGNsYXNzIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOworY2xhc3MgVmFyaWFibGVXYXRjaHBvaW50U2V0Owogc3RydWN0IExMSW50Q2FsbExp
bmtJbmZvOwogc3RydWN0IFZhbHVlUHJvZmlsZTsKIApAQCAtMTE1LDcgKzExNiw3IEBAIHN0cnVj
dCBJbnN0cnVjdGlvbiB7CiAgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlOwogICAg
ICAgICBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBhcnJheUFsbG9jYXRpb25Qcm9maWxlOwogICAg
ICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7Ci0g
ICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CisgICAgICAgIFZhcmlhYmxlV2F0
Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldDsKICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAg
ICAgYm9vbCogcHJlZGljYXRlUG9pbnRlcjsKICAgICB9IHU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFyaWFibGVXYXRjaHBvaW50U2V0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNldC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV2F0
Y2hwb2ludFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVmFyaWFi
bGVXYXRjaHBvaW50U2V0X2gKKyNkZWZpbmUgVmFyaWFibGVXYXRjaHBvaW50U2V0X2gKKworI2lu
Y2x1ZGUgIldhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIFZhcmlhYmxlV2F0Y2hwb2ludFNldCA6IHB1YmxpYyBXYXRjaHBv
aW50U2V0IHsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGlj
OgorICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCgpCisgICAgICAgIDogV2F0Y2hwb2ludFNldChD
bGVhcldhdGNocG9pbnQpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+VmFyaWFibGVXYXRjaHBv
aW50U2V0KCkgeyB9CisgICAgCisgICAgLy8gRm9yIHRoZSBwdXJwb3NlIG9mIGRlY2lkaW5nIHdo
ZXRoZXIgb3Igbm90IHRvIHdhdGNoIHRoaXMgdmFyaWFibGUsIHlvdSBvbmx5IG5lZWQKKyAgICAv
LyB0byBpbnNwZWN0IGluZmVycmVkVmFsdWUoKS4gSWYgdGhpcyByZXR1cm5zIHNvbWV0aGluZyBv
dGhlciB0aGFuIHRoZSBlbXB0eQorICAgIC8vIHZhbHVlLCB0aGVuIGl0IG1lYW5zIHRoYXQgYXQg
YWxsIGZ1dHVyZSBzYWZlcG9pbnRzLCB0aGlzIHdhdGNocG9pbnQgc2V0IHdpbGwgYmUKKyAgICAv
LyBpbiBvbmUgb2YgdGhlc2Ugc3RhdGVzOgorICAgIC8vCisgICAgLy8gICAgSXNXYXRjaGVkOiBp
biB0aGlzIGNhc2UsIHRoZSB2YXJpYWJsZSdzIHZhbHVlIG11c3Qgc3RpbGwgYmUgdGhlCisgICAg
Ly8gICAgICAgIGluZmVycmVkVmFsdWUuCisgICAgLy8KKyAgICAvLyAgICBJc0ludmFsaWRhdGVk
OiBpbiB0aGlzIGNhc2UgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgbWF5IGJlIGFueXRoaW5nIGJ1dCB5
b3UnbGwKKyAgICAvLyAgICAgICAgZWl0aGVyIG5vdGljZSB0aGF0IGl0J3MgaW52YWxpZGF0ZWQg
YW5kIG5vdCBpbnN0YWxsIHRoZSB3YXRjaHBvaW50LCBvcgorICAgIC8vICAgICAgICB5b3Ugd2ls
bCBoYXZlIGJlZW4gbm90aWZpZWQgdGhhdCB0aGUgd2F0Y2hwb2ludCB3YXMgZmlyZWQuCisgICAg
SlNWYWx1ZSBpbmZlcnJlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbmZlcnJlZFZhbHVlOyB9
CisgICAgCisgICAgdm9pZCBub3RpZnlXcml0ZShKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCEhdmFsdWUpOworICAgICAgICBzd2l0Y2ggKHN0YXRlKCkpIHsKKyAgICAgICAg
Y2FzZSBDbGVhcldhdGNocG9pbnQ6CisgICAgICAgICAgICBtX2luZmVycmVkVmFsdWUgPSB2YWx1
ZTsKKyAgICAgICAgICAgIHN0YXJ0V2F0Y2hpbmcoKTsKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBjYXNlIElzV2F0Y2hlZDoKKyAgICAgICAgICAgIEFTU0VSVCghIW1faW5mZXJyZWRW
YWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gbV9pbmZlcnJlZFZhbHVlKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIElzSW52YWxpZGF0ZWQ6CisgICAg
ICAgICAgICBBU1NFUlQoIW1faW5mZXJyZWRWYWx1ZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGludmFsaWRhdGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhbV9p
bmZlcnJlZFZhbHVlKTsKKyAgICAgICAgQVNTRVJUKHN0YXRlKCkgPT0gSXNXYXRjaGVkKTsKKyAg
ICAgICAgbV9pbmZlcnJlZFZhbHVlID0gSlNWYWx1ZSgpOworICAgICAgICBmaXJlQWxsKCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCEhbV9pbmZlcnJlZFZhbHVlID09IChzdGF0ZSgpID09IElzV2F0Y2hlZCkp
OworICAgICAgICBpZiAoIW1faW5mZXJyZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaWYgKCFtX2luZmVycmVkVmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIEpTQ2VsbCogY2VsbCA9IG1faW5mZXJyZWRWYWx1ZS5hc0NlbGwoKTsKKyAgICAg
ICAgaWYgKEhlYXA6OmlzTWFya2VkKGNlbGwpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpbnZhbGlkYXRlKCk7CisgICAgfQorICAgIAorICAgIEpTVmFsdWUqIGFkZHJlc3NPZkluZmVy
cmVkVmFsdWUoKSB7IHJldHVybiAmbV9pbmZlcnJlZFZhbHVlOyB9CisKK3ByaXZhdGU6CisgICAg
SlNWYWx1ZSBtX2luZmVycmVkVmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIFZhcmlhYmxlV2F0Y2hwb2ludFNldF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA4LDE0ICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIGZpcmVBbGxTbG93KCk7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgbm90aWZ5V3JpdGUoKQotICAgIHsKLSAgICAgICAgaWYgKHN0YXRlKCkg
PT0gQ2xlYXJXYXRjaHBvaW50KQotICAgICAgICAgICAgc3RhcnRXYXRjaGluZygpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBmaXJlQWxsKCk7Ci0gICAgfQotICAgIAogICAgIGludDhfdCog
YWRkcmVzc09mU3RhdGUoKSB7IHJldHVybiAmbV9zdGF0ZTsgfQogICAgIGludDhfdCogYWRkcmVz
c09mU2V0SXNOb3RFbXB0eSgpIHsgcmV0dXJuICZtX3NldElzTm90RW1wdHk7IH0KICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTUwNSwxMyArMTUwNSwxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICBjYXNl
IFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6CiAg
ICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6
CisgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwOTQsMTMgKzMwOTQsMTUgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
OiB7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQoVmlydHVhbFJlZ2lz
dGVyKHNjb3BlKSkpOwogICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBn
bG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCktPmdldCh1aWQpOwotICAgICAgICAgICAgICAgIGlm
ICghZW50cnkuY291bGRCZVdhdGNoZWQoKSB8fCAhbV9ncmFwaC53YXRjaHBvaW50cygpLmlzU3Rp
bGxWYWxpZChlbnRyeS53YXRjaHBvaW50U2V0KCkpKSB7CisgICAgICAgICAgICAgICAgVmFyaWFi
bGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOwor
ICAgICAgICAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9CisgICAgICAgICAgICAgICAg
ICAgIHdhdGNocG9pbnRTZXQgPyB3YXRjaHBvaW50U2V0LT5pbmZlcnJlZFZhbHVlKCkgOiBKU1Zh
bHVlKCk7CisgICAgICAgICAgICAgICAgaWYgKCFzcGVjaWZpY1ZhbHVlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgYWRkVG9HcmFwaChHZXRHbG9iYWxW
YXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24pKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoR2xvYmFsVmFyV2F0Y2hwb2ludCwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8oaWRlbnRp
Zmllck51bWJlcikpOwotICAgICAgICAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9IGds
b2JhbE9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKTsKKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKFZhcmlhYmxlV2F0Y2hwb2ludCwgT3BJbmZvKHdhdGNocG9pbnRT
ZXQpKTsKICAgICAgICAgICAgICAgICBpZiAoc3BlY2lmaWNWYWx1ZS5pc0NlbGwoKSkKICAgICAg
ICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCBjZWxsQ29uc3RhbnQoc3Bl
Y2lmaWNWYWx1ZS5hc0NlbGwoKSkpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTMxMjgsNyAr
MzEzMCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVy
TnVtYmVyXTsKIAogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAwOwotICAgICAg
ICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludHMgPSAwOworICAgICAgICAgICAgVmFyaWFi
bGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IDA7CiAgICAgICAgICAgICB1aW50cHRyX3Qg
b3BlcmFuZDsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CkBA
IC0zMTYwLDkgKzMxNjIsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7
CiAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9iamVjdC0+
c3ltYm9sVGFibGUoKS0+Z2V0KHVpZCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHdhdGNocG9p
bnRzID09IGVudHJ5LndhdGNocG9pbnRTZXQoKSk7Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChQdXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgZ2V0KFZpcnR1YWxSZWdpc3Rlcih2YWx1
ZSkpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZU5vZGUgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRHbG9iYWxWYXIsIE9w
SW5mbyhvcGVyYW5kKSwgdmFsdWVOb2RlKTsKICAgICAgICAgICAgICAgICBpZiAod2F0Y2hwb2lu
dHMtPnN0YXRlKCkgIT0gSXNJbnZhbGlkYXRlZCkKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChOb3RpZnlQdXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKGlkZW50aWZp
ZXJOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOb3RpZnlXcml0ZSwg
T3BJbmZvKHdhdGNocG9pbnRzKSwgdmFsdWVOb2RlKTsKICAgICAgICAgICAgICAgICAvLyBLZWVw
IHNjb3BlIGFsaXZlIHVudGlsIGFmdGVyIHB1dC4KICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KFBoYW50b20sIGdldChWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAko
cmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCwyOCArMjYwLDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAotICAgIGJvb2wgZ2xvYmFsVmFyV2F0Y2hwb2ludEVs
aW1pbmF0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQb2ludGVyKQotICAgIHsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKLSAgICAg
ICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7Ci0gICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2lu
dDoKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCkgPT0gcmVnaXN0
ZXJQb2ludGVyKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFyOgotICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50ZXIpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5jbG9iYmVyc1dvcmxkKG5vZGUpKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
ICAgICBib29sIHZhckluamVjdGlvbldhdGNocG9pbnRFbGltaW5hdGlvbigpCiAgICAgewogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewpAQCAtMTIyOSwx
MyArMTIwNyw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0g
ICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIGlmIChjc2VNb2Rl
ID09IFN0b3JlRWxpbWluYXRpb24pCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBpZiAoZ2xvYmFsVmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKG5vZGUtPnJlZ2lzdGVyUG9pbnRl
cigpKSkKLSAgICAgICAgICAgICAgICBlbGltaW5hdGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKICAgICAg
ICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCiAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAko
cmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw4ICsxNDMsMTMgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFsVmFyOgorICAg
IGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgorICAgICAgICByZWFkKFdhdGNocG9pbnRfZmlyZSk7
CisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAg
ICAgd3JpdGUoV2F0Y2hwb2ludF9maXJlKTsKKyAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtNTIwLDcgKzUy
NSw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldEdsb2JhbFZhcjoKLSAgICBjYXNlIEdsb2Jh
bFZhcldhdGNocG9pbnQ6CiAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFwKEFic29sdXRlLCBub2Rl
LT5yZWdpc3RlclBvaW50ZXIoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAx
NTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MDMsOCArOTAzLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBQ
dXRHbG9iYWxWYXI6Ci0gICAgICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFsVmFyOgotICAgICAgICBj
YXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6CisgICAg
ICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgICAgICBjYXNlIFZhckluamVjdGlvbldh
dGNocG9pbnQ6CiAgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAg
ICAgICBjYXNlIENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2
aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc0OCwyMCArNzQ4LDkgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBy
ZXR1cm4gbV9vcEluZm87CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFzSWRlbnRpZmllck51bWJl
ckZvckNoZWNrKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IEdsb2JhbFZhcldhdGNo
cG9pbnQgfHwgb3AoKSA9PSBOb3RpZnlQdXRHbG9iYWxWYXI7Ci0gICAgfQotICAgIAotICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpCi0gICAgewotICAgICAgICBBU1NFUlQo
aGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpOwotICAgICAgICByZXR1cm4gbV9vcEluZm8y
OwotICAgIH0KLSAgICAKICAgICBib29sIGhhc1JlZ2lzdGVyUG9pbnRlcigpCiAgICAgewotICAg
ICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRHbG9iYWxWYXIg
fHwgb3AoKSA9PSBHbG9iYWxWYXJXYXRjaHBvaW50IHx8IG9wKCkgPT0gTm90aWZ5UHV0R2xvYmFs
VmFyOworICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBQdXRH
bG9iYWxWYXI7CiAgICAgfQogICAgIAogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0
ZXJQb2ludGVyKCkKQEAgLTk3Myw2ICs5NjIsMTYgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAg
ICAgICAgcmV0dXJuIGpzQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8SlND
ZWxsKj4obV9vcEluZm8pKTsKICAgICB9CisgICAgCisgICAgYm9vbCBoYXNWYXJpYWJsZVdhdGNo
cG9pbnRTZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gTm90aWZ5V3JpdGUgfHwg
b3AoKSA9PSBWYXJpYWJsZVdhdGNocG9pbnQ7CisgICAgfQorICAgIAorICAgIFZhcmlhYmxlV2F0
Y2hwb2ludFNldCogdmFyaWFibGVXYXRjaHBvaW50U2V0KCkKKyAgICB7CisgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFZhcmlhYmxlV2F0Y2hwb2ludFNldCo+KG1fb3BJbmZvKTsKKyAg
ICB9CiAKICAgICBib29sIGhhc1N0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNTk3MzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE4NCw4ICsxODQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgbWFjcm8oUHV0Q2xvc3VyZVZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dEdsb2JhbFZhciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oTm90aWZ5UHV0R2xvYmFsVmFyLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCi0gICAgbWFjcm8oR2xvYmFsVmFyV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAorICAgIG1hY3JvKE5vdGlmeVdyaXRlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oVmFyaWFibGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVmFy
SW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENoZWNr
RnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhBbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTk4LDEyICs5OTgsMTIgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJp
bgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oZXhlYy0+Y29kZUJsb2NrKCktPnN0cmlu
Z1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlGb3JWYWx1ZShzdHJpbmctPnZhbHVlKGV4
ZWMpLmltcGwoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Ob3RpZnlXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFdhdGNocG9pbnRTZXQqIHNl
dCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbnZhbGlkYXRlKEV4ZWNTdGF0ZSogZXhl
YywgVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICBz
ZXQtPm5vdGlmeVdyaXRlKCk7CisgICAgc2V0LT5pbnZhbGlkYXRlKCk7CiB9CiAKIGRvdWJsZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkZNb2RPbkludHMoaW50MzJfdCBhLCBpbnQzMl90IGIpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24g
MTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTWFrZVJvcGUyCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWFrZVJvcGUz
KEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgSlNTdHJpbmcqLCBKU1N0cmluZyopOwogY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0Rm9yRG91YmxlKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBzaXplX3QgdGFibGVJbmRleCk7CiBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblN3aXRjaFN0cmluZyhFeGVjU3RhdGUqLCBzaXplX3QgdGFibGVJbmRleCwg
SlNTdHJpbmcqKTsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlXcml0ZShFeGVj
U3RhdGUqLCBXYXRjaHBvaW50U2V0Kik7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW52
YWxpZGF0ZShFeGVjU3RhdGUqLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQqKTsKIAogI2lmIEVOQUJM
RShGVExfSklUKQogLy8gRklYTUU6IE1ha2UgY2FsbHMgd29yayB3ZWxsLiBDdXJyZW50bHkgdGhl
eSdyZSBhIHB1cmUgcmVncmVzc2lvbi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc0LDcgKzU3NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgVGVh
ck9mZkFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6Ci0g
ICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBWYXJpYWJsZVdh
dGNocG9pbnQ6CiAgICAgICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKICAgICAgICAg
Y2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgUGhhbnRvbToK
QEAgLTU4Miw3ICs1ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrV2F0Y2hkb2dU
aW1lcjoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBMb29wSGludDoK
LSAgICAgICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6CisgICAgICAgIGNhc2UgTm90aWZ5V3Jp
dGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdl
dHMgaWdub3JlZCBiZWNhdXNlIGl0IGFscmVhZHkgaGFzIGEgcHJlZGljdGlvbi4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAx
NTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0
cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBHZXRH
bG9iYWxWYXI6CiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgY2FzZSBHbG9iYWxWYXJXYXRj
aHBvaW50OgorICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0
aW9uV2F0Y2hwb2ludDoKICAgICBjYXNlIENoZWNrRnVuY3Rpb246CiAgICAgY2FzZSBBbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnQ6CkBAIC0yNDIsNyArMjQyLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSW50NTJUb0RvdWJsZToKICAgICBj
YXNlIEludDUyVG9WYWx1ZToKICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgotICAgIGNhc2Ug
Tm90aWZ5UHV0R2xvYmFsVmFyOgorICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZp
c2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDcxLDMzICs0MDcxLDY0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OiB7Ci0jaWYgREZHX0VOQUJMRShKSVRf
QVNTRVJUKQotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAgICAgR1BS
UmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwotICAgICAgICBtX2ppdC5sb2FkMzIobm9k
ZS0+cmVnaXN0ZXJQb2ludGVyKCktPnRhZ1BvaW50ZXIoKSwgc2NyYXRjaEdQUik7Ci0gICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIG5vdE9LID0gbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICBK
SVRDb21waWxlcjo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICBUcnVzdGVkSW1t
MzIobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCktPmdldCgpLnRhZygpKSk7Ci0gICAgICAgIG1faml0
LmxvYWQzMihub2RlLT5yZWdpc3RlclBvaW50ZXIoKS0+cGF5bG9hZFBvaW50ZXIoKSwgc2NyYXRj
aEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoMzIoCi0g
ICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICBU
cnVzdGVkSW1tMzIobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCktPmdldCgpLnBheWxvYWQoKSkpOwot
ICAgICAgICBub3RPSy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsK
LSAgICAgICAgb2subGluaygmbV9qaXQpOwotI2VuZGlmCisgICAgY2FzZSBOb3RpZnlXcml0ZTog
eworICAgICAgICBWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHNldCA9IG5vZGUtPnZhcmlhYmxlV2F0
Y2hwb2ludFNldCgpOworICAgIAorICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQ
UigpOworICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigp
OworICAgIAorICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgIAorICAgICAgICBtX2ppdC5sb2FkOChzZXQtPmFk
ZHJlc3NPZlN0YXRlKCksIHRlbXBHUFIpOworICAgIAorICAgICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3QgcmVhZHk7CisgICAgCisgICAgICAgIHJlYWR5LmFwcGVuZChtX2ppdC5icmFuY2gzMihK
SVRDb21waWxlcjo6RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihJc0ludmFsaWRhdGVkKSkp
OworICAgIAorICAgICAgICBpZiAoc2V0LT5zdGF0ZSgpID09IENsZWFyV2F0Y2hwb2ludCkgewor
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNXYXRjaGVkID0KKyAgICAgICAgICAgICAg
ICBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJ
bW0zMihDbGVhcldhdGNocG9pbnQpKTsKICAgICAgICAgCi0gICAgICAgIG5vUmVzdWx0KG5vZGUp
OwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVl
VGFnR1BSLCAmc2V0LT5hZGRyZXNzT2ZJbmZlcnJlZFZhbHVlKCktPnUuYXNCaXRzLnRhZyk7Cisg
ICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlUGF5bG9hZEdQUiwgJnNldC0+YWRkcmVzc09m
SW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAgICAgIG1faml0LnN0
b3JlOChUcnVzdGVkSW1tMzIoSXNXYXRjaGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAg
ICAgICAgICAgIHJlYWR5LmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAKKyAgICAgICAg
ICAgIGlzV2F0Y2hlZC5saW5rKCZtX2ppdCk7CisgICAgICAgIH0KIAotICAgIGNhc2UgTm90aWZ5
UHV0R2xvYmFsVmFyOiB7Ci0gICAgICAgIGNvbXBpbGVOb3RpZnlQdXRHbG9iYWxWYXIobm9kZSk7
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlOb3RFcXVhbCA9IG1faml0LmJy
YW5jaDMyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAorICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcygmc2V0LT5hZGRyZXNzT2ZJbmZlcnJlZFZhbHVl
KCktPnUuYXNCaXRzLnBheWxvYWQpLAorICAgICAgICAgICAgdmFsdWVQYXlsb2FkR1BSKTsKKyAg
ICAgICAgcmVhZHkuYXBwZW5kKG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3MoJnNl
dC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0cy50YWcpLAorICAgICAgICAgICAg
dmFsdWVUYWdHUFIpKTsKKyAgICAgICAgZGVmaW5pdGVseU5vdEVxdWFsLmxpbmsoJm1faml0KTsK
KyAgICAKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hU
ZXN0OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWJz
b2x1dGVBZGRyZXNzKHNldC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpKSk7CisgICAgICAgIG1f
aml0LnN0b3JlOChUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCksIHNldC0+YWRkcmVzc09mU3Rh
dGUoKSk7CisgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZyksCisgICAgICAgICAgICAmc2V0LT5hZGRyZXNzT2ZJbmZl
cnJlZFZhbHVlKCktPnUuYXNCaXRzLnRhZyk7CisgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAg
ICAgICAgICBUcnVzdGVkSW1tMzIoMCksICZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKS0+
dS5hc0JpdHMucGF5bG9hZCk7CisKKyAgICAgICAgcmVhZHkubGluaygmbV9qaXQpOworICAgIAor
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChz
bG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uSW52YWxpZGF0ZSwgTm9SZXN1bHQsIHNldCkpOworICAg
IAorICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
Y2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OiB7CisgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRj
aHBvaW50OgorICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OiB7CiAgICAgICAgIG5vUmVzdWx0
KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1OTczMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzNTMsMjggKzQzNTMsNTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIEds
b2JhbFZhcldhdGNocG9pbnQ6IHsKLSNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCi0gICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAgIG1faml0LmxvYWQ2NChub2RlLT5yZWdpc3RlclBvaW50
ZXIoKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG9rID0gbV9qaXQu
YnJhbmNoNjQoCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHNjcmF0Y2hHUFIsCi0g
ICAgICAgICAgICBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKG5vZGUtPnJlZ2lzdGVyUG9p
bnRlcigpLT5nZXQoKSkpKTsKLSAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwotICAgICAgICBv
ay5saW5rKCZtX2ppdCk7Ci0jZW5kaWYKKyAgICBjYXNlIE5vdGlmeVdyaXRlOiB7CisgICAgICAg
IFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gbm9kZS0+dmFyaWFibGVXYXRjaHBvaW50U2V0
KCk7CisgICAgCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgCisgICAg
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRl
bXAuZ3ByKCk7CisgICAgCisgICAgICAgIG1faml0LmxvYWQ4KHNldC0+YWRkcmVzc09mU3RhdGUo
KSwgdGVtcEdQUik7CisgICAgCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCByZWFkeTsK
KyAgICAKKyAgICAgICAgcmVhZHkuYXBwZW5kKG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpF
cXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7CisgICAgCisgICAg
ICAgIGlmIChzZXQtPnN0YXRlKCkgPT0gQ2xlYXJXYXRjaHBvaW50KSB7CisgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc1dhdGNoZWQgPQorICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKENsZWFyV2F0
Y2hwb2ludCkpOworICAgICAgICAKKyAgICAgICAgICAgIG1faml0LnN0b3JlNjQodmFsdWVHUFIs
IHNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
OChUcnVzdGVkSW1tMzIoSXNXYXRjaGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAgICAg
ICAgICAgIHJlYWR5LmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICAKKyAgICAgICAgICAg
IGlzV2F0Y2hlZC5saW5rKCZtX2ppdCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcmVhZHku
YXBwZW5kKG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAK
KyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3Moc2V0LT5hZGRyZXNzT2ZJ
bmZlcnJlZFZhbHVlKCkpLCB2YWx1ZUdQUikpOworICAgIAorICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBzbG93Q2FzZSA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgSklUQ29tcGls
ZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3Moc2V0LT5hZGRyZXNzT2ZT
ZXRJc05vdEVtcHR5KCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihJc0lu
dmFsaWRhdGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCB0ZW1wR1BSKTsKKyAgICAg
ICAgbV9qaXQuc3RvcmU2NCh0ZW1wR1BSLCBzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKSk7
CisKKyAgICAgICAgcmVhZHkubGluaygmbV9qaXQpOworICAgIAorICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93Q2FzZSwgdGhpcywgb3Bl
cmF0aW9uSW52YWxpZGF0ZSwgTm9SZXN1bHQsIHNldCkpOworICAgIAogICAgICAgICBub1Jlc3Vs
dChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKLSAgICBjYXNlIE5vdGlm
eVB1dEdsb2JhbFZhcjogewotICAgICAgICBjb21waWxlTm90aWZ5UHV0R2xvYmFsVmFyKG5vZGUp
OwotICAgICAgICBicmVhazsKLSAgICB9CiAKLSAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9p
bnQ6IHsKKyAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6CisgICAgY2FzZSBWYXJpYWJs
ZVdhdGNocG9pbnQ6IHsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUzOSw4ICszNTM5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZAogICAgICAgICAKICAg
ICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CiAgICAg
ICAgICAgICBpbnQzMl90IGRpdmlzb3IgPSB2YWx1ZU9mSW50MzJDb25zdGFudChub2RlLT5jaGls
ZDIoKS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGRpdmlzb3IgPiAwICYmIGhhc09uZUJpdFNl
dChkaXZpc29yKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChkaXZpc29yICE9IDEpOworICAg
ICAgICAgICAgaWYgKGRpdmlzb3IgPiAxICYmIGhhc09uZUJpdFNldChkaXZpc29yKSkgewogICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvZ2FyaXRobSA9IFdURjo6ZmFzdExvZzIoZGl2aXNvcik7
CiAgICAgICAgICAgICAgICAgR1BSUmVnIGRpdmlkZW5kR1BSID0gb3AxLmdwcigpOwogICAgICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC01NjAxLDQ0ICs1NjAwLDYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaChOb2RlKiBubwogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
b3RpZnlQdXRHbG9iYWxWYXIoTm9kZSogbm9kZSkKLXsKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQg
PSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCkt
PmdldCgKLSAgICAgICAgbV9qaXQuZ3JhcGgoKS5pZGVudGlmaWVycygpW25vZGUtPmlkZW50aWZp
ZXJOdW1iZXJGb3JDaGVjaygpXSkud2F0Y2hwb2ludFNldCgpOwotICAgIAotICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwotICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAK
LSAgICBtX2ppdC5sb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHRlbXBHUFIpOwotICAgIAot
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCByZWFkeTsKLSAgICAKLSAgICByZWFkeS5hcHBlbmQo
bV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIo
SXNJbnZhbGlkYXRlZCkpKTsKLSAgICAKLSAgICBtX2ppdC5tZW1vcnlGZW5jZSgpOwotCi0gICAg
aWYgKHNldC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKLSAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNXYXRjaGVkID0KLSAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKENsZWFyV2F0Y2hwb2ludCkpOwot
ICAgICAgICAKLSAgICAgICAgbV9qaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihJc1dhdGNoZWQpLCBz
ZXQtPmFkZHJlc3NPZlN0YXRlKCkpOwotICAgICAgICByZWFkeS5hcHBlbmQobV9qaXQuanVtcCgp
KTsKLSAgICAgICAgCi0gICAgICAgIGlzV2F0Y2hlZC5saW5rKCZtX2ppdCk7Ci0gICAgfQotICAg
IAotICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoVGVzdDgoCi0g
ICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNz
KHNldC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpKSk7Ci0gICAgbV9qaXQuc3RvcmU4KFRydXN0
ZWRJbW0zMihJc0ludmFsaWRhdGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKLQotICAgIHJl
YWR5LmxpbmsoJm1faml0KTsKLSAgICAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAg
ICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25Ob3RpZnlXcml0ZSwgTm9S
ZXN1bHQsIHNldCkpOwotICAgIAotICAgIG5vUmVzdWx0KG5vZGUpOwotfQotCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjphZGRCcmFuY2goY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1w
LCBCYXNpY0Jsb2NrKiBkZXN0aW5hdGlvbikKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBqdW1w
Lmp1bXBzKCkuc2l6ZSgpOyBpLS07KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg0
LDcgKzEwODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FVyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdh
dGNocG9pbnRTZXQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FVndzIG9wZXJhdGlvbiwgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50
U2V0KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChv
cGVyYXRpb24pOwpAQCAtMjA0NSw4ICsyMDQ1LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGls
ZU5ld0Z1bmN0aW9uRXhwcmVzc2lvbihOb2RlKik7CiAgICAgYm9vbCBjb21waWxlUmVnRXhwRXhl
YyhOb2RlKik7CiAgICAgCi0gICAgdm9pZCBjb21waWxlTm90aWZ5UHV0R2xvYmFsVmFyKE5vZGUq
KTsKLSAgICAKICAgICAvLyBzaXplIGNhbiBiZSBhbiBpbW1lZGlhdGUgb3IgYSByZWdpc3Rlciwg
YW5kIG11c3QgYmUgaW4gYnl0ZXMuIElmIHNpemUgaXMgYSByZWdpc3RlciwKICAgICAvLyBpdCBt
dXN0IGJlIGEgZGlmZmVyZW50IHJlZ2lzdGVyIHRoYW4gcmVzdWx0R1BSLiBFbWl0cyBjb2RlIHRo
YXQgcGxhY2UgYSBwb2ludGVyIHRvCiAgICAgLy8gdGhlIGVuZCBvZiB0aGUgYWxsb2NhdGlvbi4g
VGhlIHJldHVybmVkIGp1bXAgaXMgdGhlIGp1bXAgdG8gdGhlIHNsb3cgcGF0aC4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29s
bGVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE4LDEwICsxMTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fbm9kZS0+c3Ry
dWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgotICAgICAg
ICAgICAgYWRkTGF6aWx5KAotICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdCgpLT5zeW1ib2xU
YWJsZSgpLT5nZXQoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtt
X25vZGUtPmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpXSkud2F0Y2hwb2ludFNldCgpKTsKKyAg
ICAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CisgICAgICAgICAgICBhZGRMYXppbHkobV9u
b2RlLT52YXJpYWJsZVdhdGNocG9pbnRTZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAx
NTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRHbG9i
YWxWYXI6CiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxW
YXI6CiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgogICAgIGNhc2UgQXJp
dGhTdWI6CkBAIC05Miw3ICs5MSw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiAKICAgICBjYXNlIExvb3BIaW50OgogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNlIENv
bnN0cnVjdDoKLSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAgICAgY2FzZSBHZXRNeVNj
b3BlOgogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0Q2xvc3VyZVJlZ2lzdGVyczoK
QEAgLTEwNCw2ICsxMDIsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogCiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoK
ICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgorICAgIGNhc2UgVmFyaWFibGVXYXRj
aHBvaW50OgorICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4K
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHZXRCeUlkOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE1OTczMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTQsMTEgKzM5NCwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1
dEdsb2JhbFZhcjoKICAgICAgICAgICAgIGNvbXBpbGVQdXRHbG9iYWxWYXIoKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vdGlmeVB1dEdsb2JhbFZhcjoKLSAgICAgICAgICAg
IGNvbXBpbGVOb3RpZnlQdXRHbG9iYWxWYXIoKTsKKyAgICAgICAgY2FzZSBOb3RpZnlXcml0ZToK
KyAgICAgICAgICAgIGNvbXBpbGVOb3RpZnlXcml0ZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIGNvbXBpbGVHbG9i
YWxWYXJXYXRjaHBvaW50KCk7CisgICAgICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0TXlTY29wZToKICAgICAgICAgICAgIGNv
bXBpbGVHZXRNeVNjb3BlKCk7CkBAIC0yMTE3LDE3ICsyMTE2LDIwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5hYnNvbHV0ZShtX25v
ZGUtPnJlZ2lzdGVyUG9pbnRlcigpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZU5v
dGlmeVB1dEdsb2JhbFZhcigpCisgICAgdm9pZCBjb21waWxlTm90aWZ5V3JpdGUoKQogICAgIHsK
ICAgICAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS0+Z2V0KAogICAgICAgICAgICAgbV9ncmFw
aC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlckZvckNoZWNrKCldKS53YXRj
aHBvaW50U2V0KCk7CiAgICAgICAgIAotICAgICAgICBMQmFzaWNCbG9jayBpc05vdEludmFsaWRh
dGVkID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOb3RpZnlQdXRHbG9iYWxWYXIgbm90IGludmFs
aWRhdGVkIGNhc2UiKSk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGlzQ2xlYXIgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIk5vdGlmeVB1dEdsb2JhbFZhciBjbGVhciBjYXNlIikpOwotICAgICAgICBM
QmFzaWNCbG9jayBpc1dhdGNoZWQgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVB1dEds
b2JhbFZhciB3YXRjaGVkIGNhc2UiKSk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGlzV2F0Y2hlZEZh
c3QgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVB1dEdsb2JhbFZhciB3YXRjaGVkIGZh
c3QgY2FzZSIpKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgaXNXYXRjaGVkU2xvdyA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgiTm90aWZ5UHV0R2xvYmFsVmFyIHdhdGNoZWQgc2xvdyBjYXNlIikpOwot
ICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
Ik5vdGlmeVB1dEdsb2JhbFZhciBjb250aW51YXRpb24iKSk7CisgICAgICAgIExWYWx1ZSB2YWx1
ZSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAKKyAgICAgICAgTEJhc2lj
QmxvY2sgaXNOb3RJbnZhbGlkYXRlZCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTm90aWZ5V3Jp
dGUgbm90IGludmFsaWRhdGVkIGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2xlYXIg
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVdyaXRlIGNsZWFyIGNhc2UiKSk7CisgICAg
ICAgIExCYXNpY0Jsb2NrIGlzV2F0Y2hlZCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTm90aWZ5
V3JpdGUgd2F0Y2hlZCBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBpbnZhbGlkYXRlID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJOb3RpZnlXcml0ZSBpbnZhbGlkYXRlIGNhc2UiKSk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGludmFsaWRhdGVGYXN0ID0gRlRMX05FV19CTE9DSyhtX291dCwg
KCJOb3RpZnlXcml0ZSBpbnZhbGlkYXRlIGZhc3QgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxv
Y2sgaW52YWxpZGF0ZVNsb3cgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVdyaXRlIGlu
dmFsaWRhdGUgc2xvdyBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24g
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVdyaXRlIGNvbnRpbnVhdGlvbiIpKTsKICAg
ICAgICAgCiAgICAgICAgIExWYWx1ZSBzdGF0ZSA9IG1fb3V0LmxvYWQ4KG1fb3V0LmFic29sdXRl
KHNldC0+YWRkcmVzc09mU3RhdGUoKSkpOwogICAgICAgICAKQEAgLTIxMzcsOCArMjEzOSw2IEBA
IHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKGlzTm90SW52YWxpZGF0ZWQsIGlzQ2xlYXIpOwogCi0gICAgICAgIG1fb3V0LmZl
bmNlQWNxUmVsKCk7Ci0gICAgICAgIAogICAgICAgICBMVmFsdWUgaXNDbGVhclZhbHVlOwogICAg
ICAgICBpZiAoc2V0LT5zdGF0ZSgpID09IENsZWFyV2F0Y2hwb2ludCkKICAgICAgICAgICAgIGlz
Q2xlYXJWYWx1ZSA9IG1fb3V0LmVxdWFsKHN0YXRlLCBtX291dC5jb25zdEludDgoQ2xlYXJXYXRj
aHBvaW50KSk7CkBAIC0yMTQ4LDM0ICsyMTQ4LDM4IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICBtX291dC5hcHBlbmRUbyhpc0NsZWFyLCBpc1dhdGNoZWQpOwogICAgICAgICAKKyAgICAg
ICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgbV9vdXQuYWJzb2x1dGUoc2V0LT5hZGRyZXNzT2ZJbmZl
cnJlZFZhbHVlKCkpKTsKICAgICAgICAgbV9vdXQuc3RvcmU4KG1fb3V0LmNvbnN0SW50OChJc1dh
dGNoZWQpLCBtX291dC5hYnNvbHV0ZShzZXQtPmFkZHJlc3NPZlN0YXRlKCkpKTsKICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYXBwZW5k
VG8oaXNXYXRjaGVkLCBpc1dhdGNoZWRGYXN0KTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNX
YXRjaGVkLCBpbnZhbGlkYXRlKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmJyYW5jaDY0KAor
ICAgICAgICAgICAgbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmxvYWQ2NChzZXQtPmFkZHJlc3NP
ZkluZmVycmVkVmFsdWUoKSkpLAorICAgICAgICAgICAgY29udGludWF0aW9uLCBpbnZhbGlkYXRl
KTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGludmFsaWRhdGUsIGludmFsaWRh
dGVGYXN0KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgIG1f
b3V0Lm5vdFplcm84KG1fb3V0LmxvYWQ4KG1fb3V0LmFic29sdXRlKHNldC0+YWRkcmVzc09mU2V0
SXNOb3RFbXB0eSgpKSkpLAotICAgICAgICAgICAgaXNXYXRjaGVkU2xvdywgaXNXYXRjaGVkRmFz
dCk7CisgICAgICAgICAgICBpbnZhbGlkYXRlU2xvdywgaW52YWxpZGF0ZUZhc3QpOwogICAgICAg
ICAKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNXYXRjaGVkRmFzdCwgaXNXYXRjaGVkU2xvdyk7
CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGludmFsaWRhdGVGYXN0LCBpbnZhbGlkYXRlU2xvdyk7
CiAgICAgICAgIAorICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKSksCisgICAgICAgICAgICBtX291dC5h
YnNvbHV0ZShzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKSkpOwogICAgICAgICBtX291dC5z
dG9yZTgobV9vdXQuY29uc3RJbnQ4KElzSW52YWxpZGF0ZWQpLCBtX291dC5hYnNvbHV0ZShzZXQt
PmFkZHJlc3NPZlN0YXRlKCkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwog
ICAgICAgICAKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNXYXRjaGVkU2xvdywgY29udGludWF0
aW9uKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW52YWxpZGF0ZVNsb3csIGNvbnRpbnVhdGlv
bik7CiAgICAgICAgIAotICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5v
dGlmeVdyaXRlKSwgbV9jYWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKHNldCkpOworICAgICAg
ICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkludmFsaWRhdGUpLCBtX2NhbGxGcmFt
ZSwgbV9vdXQuY29uc3RJbnRQdHIoc2V0KSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVHbG9iYWxWYXJXYXRjaHBvaW50
KCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbiBkZWJ1ZyBtb2RlIHdlIGNvdWxkIGVtaXQg
c29tZSBhc3NlcnRpb24gY29kZSBoZXJlLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDcxCi0gICAgfQotICAgIAogICAgIHZvaWQgY29tcGls
ZUdldE15U2NvcGUoKQogICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKGFk
ZHJlc3NGb3IoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1OTczMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
OCw3ICs2MTgsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEdldEdsb2Jh
bFZhcih1aW50cHRyX3Qgb3BlcmFuZCk7CiAgICAgICAgIHZvaWQgZW1pdEdldENsb3N1cmVWYXIo
aW50IHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFuZCk7CiAgICAgICAgIHZvaWQgZW1pdFB1dEdsb2Jh
bFByb3BlcnR5KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QsIGludCB2YWx1ZSk7Ci0gICAgICAgIHZv
aWQgZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlLCBXYXRjaHBv
aW50U2V0Kik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdm9pZCBlbWl0Tm90aWZ5V3Jp
dGUoUmVnaXN0ZXJJRCB2YWx1ZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBWYXJpYWJsZVdhdGNocG9p
bnRTZXQqKTsKKyNlbHNlCisgICAgICAgIHZvaWQgZW1pdE5vdGlmeVdyaXRlKFJlZ2lzdGVySUQg
dGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGVySUQgc2NyYXRjaCwgVmFyaWFibGVXYXRj
aHBvaW50U2V0Kik7CisjZW5kaWYKKyAgICAgICAgdm9pZCBlbWl0UHV0R2xvYmFsVmFyKHVpbnRw
dHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUsIFZhcmlhYmxlV2F0Y2hwb2ludFNldCopOwogICAgICAg
ICB2b2lkIGVtaXRQdXRDbG9zdXJlVmFyKGludCBzY29wZSwgdWludHB0cl90IG9wZXJhbmQsIGlu
dCB2YWx1ZSk7CiAKICAgICAgICAgdm9pZCBlbWl0SW5pdFJlZ2lzdGVyKGludCBkc3QpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE1
OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
ICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKLSNp
bmNsdWRlICJXYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiVmFyaWFibGVXYXRjaHBvaW50U2V0Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03Niw3ICs3Niw3IEBAIGV4dGVybiAiQyIgewogICAg
IFN0OiBTdHJ1Y3R1cmUqCiAgICAgVjogdm9pZAogICAgIFZtOiBWTSoKLSAgICBXOiBXYXRjaHBv
aW50U2V0KgorICAgIFZ3czogVmFyaWFibGVXYXRjaHBvaW50U2V0KgogICAgIFo6IGludDMyX3QK
ICovCiB0eXBlZGVmIENhbGxGcmFtZSogSklUX09QRVJBVElPTiAoKkZfSklUT3BlcmF0aW9uX0VK
SlopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7
CkBAIC0xNTQsNyArMTU0LDcgQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9w
ZXJhdAogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FUGMpKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZf
SklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQzMl90LCBFbmNvZGVkSlNW
YWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VTc2lK
SkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKik7Ci10eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZf
SklUT3BlcmF0aW9uX0VXKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0Kik7Cit0eXBlZGVmIHZv
aWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VWd3MpKEV4ZWNTdGF0ZSosIFZhcmlh
YmxlV2F0Y2hwb2ludFNldCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9w
ZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJB
VElPTiAoKlZfSklUT3BlcmF0aW9uX0VWbSkoRXhlY1N0YXRlKiwgVk0qKTsKIHR5cGVkZWYgY2hh
ciogSklUX09QRVJBVElPTiAoKlBfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDcsMzcgKzgwNyw0
OCBAQCB2b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFByb3BlcnR5KHVpbnRwdHJfCiAgICAgc3RvcmUz
MihyZWdUMiwgQmFzZUluZGV4KHJlZ1QwLCByZWdUMSwgVGltZXNFaWdodCwgKGZpcnN0T3V0T2ZM
aW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlLCBXYXRjaHBv
aW50U2V0KiBzZXQpCit2b2lkIEpJVDo6ZW1pdE5vdGlmeVdyaXRlKFJlZ2lzdGVySUQgdGFnLCBS
ZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGVySUQgc2NyYXRjaCwgVmFyaWFibGVXYXRjaHBvaW50
U2V0KiBzZXQpCiB7Ci0gICAgaWYgKHNldCAmJiBzZXQtPnN0YXRlKCkgIT0gSXNJbnZhbGlkYXRl
ZCkgewotICAgICAgICBsb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHJlZ1QyKTsKLSAgICAg
ICAgCi0gICAgICAgIEp1bXBMaXN0IHJlYWR5OwotICAgICAgICAKLSAgICAgICAgcmVhZHkuYXBw
ZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7
CisgICAgaWYgKCFzZXQgfHwgc2V0LT5zdGF0ZSgpID09IElzSW52YWxpZGF0ZWQpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBsb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHNjcmF0Y2gp
OworICAgIAorICAgIEp1bXBMaXN0IHJlYWR5OworICAgIAorICAgIHJlYWR5LmFwcGVuZChicmFu
Y2gzMihFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7CisgICAg
CisgICAgaWYgKHNldC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKKyAgICAgICAgSnVt
cCBpc1dhdGNoZWQgPSBicmFuY2gzMihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKENs
ZWFyV2F0Y2hwb2ludCkpOwogICAgICAgICAKLSAgICAgICAgaWYgKHNldC0+c3RhdGUoKSA9PSBD
bGVhcldhdGNocG9pbnQpIHsKLSAgICAgICAgICAgIEp1bXAgaXNXYXRjaGVkID0gYnJhbmNoMzIo
Tm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQ2xlYXJXYXRjaHBvaW50KSk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKElzV2F0Y2hlZCksIHJlZ1QyKTsK
LSAgICAgICAgICAgIHJlYWR5LmFwcGVuZChqdW1wKCkpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpc1dhdGNoZWQubGluayh0aGlzKTsKLSAgICAgICAgfQorICAgICAgICBzdG9yZTMyKHRh
ZywgJnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0cy50YWcpOworICAgICAg
ICBzdG9yZTMyKHBheWxvYWQsICZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKS0+dS5hc0Jp
dHMucGF5bG9hZCk7CisgICAgICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoSXNXYXRjaGVkKSwgc2V0
LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAgICAgICAgcmVhZHkuYXBwZW5kKGp1bXAoKSk7CiAgICAg
ICAgIAotICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFk
ZHJlc3Moc2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkpKSk7Ci0gICAgICAgIG1vdmUoVHJ1
c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpLCByZWdUMik7Ci0gICAgICAgIHJlYWR5LmxpbmsodGhp
cyk7CisgICAgICAgIGlzV2F0Y2hlZC5saW5rKHRoaXMpOwogICAgIH0KKworICAgIEp1bXAgZGVm
aW5pdGVseU5vdEVxdWFsID0gYnJhbmNoMzIoCisgICAgICAgIE5vdEVxdWFsLCBBYnNvbHV0ZUFk
ZHJlc3MoJnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0cy5wYXlsb2FkKSwg
cGF5bG9hZCk7CisgICAgcmVhZHkuYXBwZW5kKGJyYW5jaDMyKAorICAgICAgICBFcXVhbCwgQWJz
b2x1dGVBZGRyZXNzKCZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKS0+dS5hc0JpdHMudGFn
KSwgdGFnKSk7CisgICAgZGVmaW5pdGVseU5vdEVxdWFsLmxpbmsodGhpcyk7CisgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNzKHNldC0+YWRkcmVzc09m
U2V0SXNOb3RFbXB0eSgpKSkpOworICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRl
ZCksIHNldC0+YWRkcmVzc09mU3RhdGUoKSk7CisgICAgc3RvcmUzMigKKyAgICAgICAgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpLCAmc2V0LT5hZGRyZXNzT2ZJbmZlcnJlZFZh
bHVlKCktPnUuYXNCaXRzLnRhZyk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksICZzZXQt
PmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKS0+dS5hc0JpdHMucGF5bG9hZCk7CiAgICAgCisgICAg
cmVhZHkubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRQdXRHbG9iYWxWYXIodWludHB0
cl90IG9wZXJhbmQsIGludCB2YWx1ZSwgVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQpCit7CiAg
ICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CisgICAgZW1pdE5vdGlmeVdyaXRlKHJl
Z1QxLCByZWdUMCwgcmVnVDIsIHNldCk7CiAgICAgc3RvcmUzMihyZWdUMSwgcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4ob3BlcmFuZCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnRhZykpOwogICAgIHN0b3JlMzIocmVnVDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KG9wZXJhbmQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3Is
IGFzQml0cy5wYXlsb2FkKSk7Ci0gICAgCi0gICAgaWYgKHNldCAmJiBzZXQtPnN0YXRlKCkgIT0g
SXNJbnZhbGlkYXRlZCkgewotICAgICAgICBtZW1vcnlGZW5jZSgpOwotICAgICAgICBzdG9yZTgo
cmVnVDEsIHNldC0+YWRkcmVzc09mU3RhdGUoKSk7Ci0gICAgfQogfQogCiB2b2lkIEpJVDo6ZW1p
dFB1dENsb3N1cmVWYXIoaW50IHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzEsMzYgKzc3MSw0MSBAQCB2b2lk
IEpJVDo6ZW1pdFB1dEdsb2JhbFByb3BlcnR5KHVpbnRwdHJfCiAgICAgc3RvcmVQdHIocmVnVDIs
IEJhc2VJbmRleChyZWdUMCwgcmVnVDEsIFRpbWVzRWlnaHQsIChmaXJzdE91dE9mTGluZU9mZnNl
dCAtIDIpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwogfQogCi12b2lkIEpJVDo6ZW1pdFB1
dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlLCBXYXRjaHBvaW50U2V0KiBz
ZXQpCit2b2lkIEpJVDo6ZW1pdE5vdGlmeVdyaXRlKFJlZ2lzdGVySUQgdmFsdWUsIFJlZ2lzdGVy
SUQgc2NyYXRjaCwgVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQpCiB7Ci0gICAgaWYgKHNldCAm
JiBzZXQtPnN0YXRlKCkgIT0gSXNJbnZhbGlkYXRlZCkgewotICAgICAgICBsb2FkOChzZXQtPmFk
ZHJlc3NPZlN0YXRlKCksIHJlZ1QxKTsKLSAgICAgICAgCi0gICAgICAgIEp1bXBMaXN0IHJlYWR5
OwotICAgICAgICAKLSAgICAgICAgcmVhZHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMSwg
VHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7CisgICAgaWYgKCFzZXQgfHwgc2V0LT5zdGF0
ZSgpID09IElzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBsb2FkOChz
ZXQtPmFkZHJlc3NPZlN0YXRlKCksIHNjcmF0Y2gpOworICAgIAorICAgIEp1bXBMaXN0IHJlYWR5
OworICAgIAorICAgIHJlYWR5LmFwcGVuZChicmFuY2gzMihFcXVhbCwgc2NyYXRjaCwgVHJ1c3Rl
ZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7CisgICAgCisgICAgaWYgKHNldC0+c3RhdGUoKSA9PSBD
bGVhcldhdGNocG9pbnQpIHsKKyAgICAgICAgSnVtcCBpc1dhdGNoZWQgPSBicmFuY2gzMihOb3RF
cXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKENsZWFyV2F0Y2hwb2ludCkpOwogICAgICAgICAK
LSAgICAgICAgaWYgKHNldC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKLSAgICAgICAg
ICAgIEp1bXAgaXNXYXRjaGVkID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1t
MzIoQ2xlYXJXYXRjaHBvaW50KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTMyKElzV2F0Y2hlZCksIHJlZ1QxKTsKLSAgICAgICAgICAgIHJlYWR5LmFwcGVuZChq
dW1wKCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpc1dhdGNoZWQubGluayh0aGlzKTsK
LSAgICAgICAgfQorICAgICAgICBzdG9yZTY0KHZhbHVlLCBzZXQtPmFkZHJlc3NPZkluZmVycmVk
VmFsdWUoKSk7CisgICAgICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoSXNXYXRjaGVkKSwgc2V0LT5h
ZGRyZXNzT2ZTdGF0ZSgpKTsKKyAgICAgICAgcmVhZHkuYXBwZW5kKGp1bXAoKSk7CiAgICAgICAg
IAotICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJl
c3Moc2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkpKSk7Ci0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKElzSW52YWxpZGF0ZWQpLCByZWdUMSk7Ci0gICAgICAgIHJlYWR5LmxpbmsodGhpcyk7
CisgICAgICAgIGlzV2F0Y2hlZC5saW5rKHRoaXMpOwogICAgIH0KICAgICAKKyAgICByZWFkeS5h
cHBlbmQoYnJhbmNoNjQoRXF1YWwsIEFic29sdXRlQWRkcmVzcyhzZXQtPmFkZHJlc3NPZkluZmVy
cmVkVmFsdWUoKSksIHZhbHVlKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVy
bywgQWJzb2x1dGVBZGRyZXNzKHNldC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpKSkpOworICAg
IHN0b3JlOChUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCksIHNldC0+YWRkcmVzc09mU3RhdGUo
KSk7CisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCBz
Y3JhdGNoKTsKKyAgICBzdG9yZTY0KHNjcmF0Y2gsIHNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1
ZSgpKTsKKyAgICAKKyAgICByZWFkeS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFB1
dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlLCBWYXJpYWJsZVdhdGNocG9p
bnRTZXQqIHNldCkKK3sKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7
CisgICAgZW1pdE5vdGlmeVdyaXRlKHJlZ1QwLCByZWdUMSwgc2V0KTsKICAgICBzdG9yZVB0cihy
ZWdUMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3BlcmFuZCkpOwotICAgIAotICAgIGlmIChz
ZXQgJiYgc2V0LT5zdGF0ZSgpICE9IElzSW52YWxpZGF0ZWQpIHsKLSAgICAgICAgbWVtb3J5RmVu
Y2UoKTsKLSAgICAgICAgc3RvcmU4KHJlZ1QxLCBzZXQtPmFkZHJlc3NPZlN0YXRlKCkpOwotICAg
IH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRQdXRDbG9zdXJlVmFyKGludCBzY29wZSwgdWludHB0cl90
IG9wZXJhbmQsIGludCB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNTk3
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjEzMiwyNSArMjEzMiwzNSBAQCBtYWNybyBwdXRQ
cm9wZXJ0eSgpCiAgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQwLCB0Miwg
dDMpCiBlbmQKIAorbWFjcm8gbm90aWZ5V3JpdGUoc2V0LCB2YWx1ZVRhZywgdmFsdWVQYXlsb2Fk
LCBzY3JhdGNoLCBzbG93KQorICAgIGxvYWRiIFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bV9zdGF0
ZVtzZXRdLCBzY3JhdGNoCisgICAgYmllcSBzY3JhdGNoLCBJc0ludmFsaWRhdGVkLCAuZG9uZQor
ICAgIGJpbmVxIHNjcmF0Y2gsIENsZWFyV2F0Y2hwb2ludCwgLm92ZXJ3cml0ZQorICAgIHN0b3Jl
aSB2YWx1ZVRhZywgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX2luZmVycmVkVmFsdWUgKyBUYWdP
ZmZzZXRbc2V0XQorICAgIHN0b3JlaSB2YWx1ZVBheWxvYWQsIFZhcmlhYmxlV2F0Y2hwb2ludFNl
dDo6bV9pbmZlcnJlZFZhbHVlICsgUGF5bG9hZE9mZnNldFtzZXRdCisgICAgc3RvcmViIElzV2F0
Y2hlZCwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRlW3NldF0KKyAgICBqbXAgLmRvbmUK
KworLm92ZXJ3cml0ZToKKyAgICBiaW5lcSB2YWx1ZVBheWxvYWQsIFZhcmlhYmxlV2F0Y2hwb2lu
dFNldDo6bV9pbmZlcnJlZFZhbHVlICsgUGF5bG9hZE9mZnNldFtzZXRdLCAuZGVmaW5pdGVseURp
ZmZlcmVudAorICAgIGJpZXEgdmFsdWVUYWcsIFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bV9pbmZl
cnJlZFZhbHVlICsgVGFnT2Zmc2V0W3NldF0sIC5kb25lCisuZGVmaW5pdGVseURpZmZlcmVudDoK
KyAgICBidGJueiBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc2V0SXNOb3RFbXB0eVtzZXRdLCBz
bG93CisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bV9p
bmZlcnJlZFZhbHVlICsgVGFnT2Zmc2V0W3NldF0KKyAgICBzdG9yZWkgMCwgVmFyaWFibGVXYXRj
aHBvaW50U2V0OjptX2luZmVycmVkVmFsdWUgKyBQYXlsb2FkT2Zmc2V0W3NldF0KKyAgICBzdG9y
ZWIgSXNJbnZhbGlkYXRlZCwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRlW3NldF0KKwor
LmRvbmU6CitlbmQKKwogbWFjcm8gcHV0R2xvYmFsVmFyKCkKLSAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbig1LCB0MikKLSAgICBsb2FkYiBXYXRjaHBvaW50U2V0OjptX3N0YXRlW3QyXSwgdDMKLSAg
ICBiaWVxIHQzLCBJc0ludmFsaWRhdGVkLCAucmVhZHkKLSAgICBiaW5lcSB0MywgQ2xlYXJXYXRj
aHBvaW50LCAubmVlZFRvSW52YWxpZGF0ZQotICAgIG1vdmUgSXNXYXRjaGVkLCB0MwotICAgIGpt
cCAucmVhZHkKLS5uZWVkVG9JbnZhbGlkYXRlOgotICAgIGJ0Ym56IFdhdGNocG9pbnRTZXQ6Om1f
c2V0SXNOb3RFbXB0eVt0Ml0sIC5wRHluYW1pYwotICAgIG1vdmUgSXNJbnZhbGlkYXRlZCwgdDMK
LS5yZWFkeToKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQz
KQorICAgIG5vdGlmeVdyaXRlKHQzLCB0MSwgdDIsIHQwLCAucER5bmFtaWMpCiAgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNiwgdDApCiAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDBdCiAgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QwXQotICAgIG1lbWZlbmNlCi0gICAgbG9hZHBGcm9t
SW5zdHJ1Y3Rpb24oNSwgdDIpCi0gICAgc3RvcmViIHQzLCBXYXRjaHBvaW50U2V0OjptX3N0YXRl
W3QyXQogZW5kCiAKIG1hY3JvIHB1dENsb3N1cmVWYXIoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlz
aW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUyLDIzICsxOTUyLDMwIEBAIG1hY3Jv
IHB1dFByb3BlcnR5KCkKICAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDAs
IHQyKQogZW5kCiAKK21hY3JvIG5vdGlmeVdyaXRlKHNldCwgdmFsdWUsIHNjcmF0Y2gsIHNsb3cp
CisgICAgbG9hZGIgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRlW3NldF0sIHNjcmF0Y2gK
KyAgICBiaWVxIHNjcmF0Y2gsIElzSW52YWxpZGF0ZWQsIC5kb25lCisgICAgYmluZXEgc2NyYXRj
aCwgQ2xlYXJXYXRjaHBvaW50LCAub3ZlcndyaXRlCisgICAgc3RvcmVxIHZhbHVlLCBWYXJpYWJs
ZVdhdGNocG9pbnRTZXQ6Om1faW5mZXJyZWRWYWx1ZVtzZXRdCisgICAgc3RvcmViIElzV2F0Y2hl
ZCwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRlW3NldF0KKyAgICBqbXAgLmRvbmUKKwor
Lm92ZXJ3cml0ZToKKyAgICBicWVxIHZhbHVlLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1faW5m
ZXJyZWRWYWx1ZVtzZXRdLCAuZG9uZQorICAgIGJ0Ym56IFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6
bV9zZXRJc05vdEVtcHR5W3NldF0sIHNsb3cKKyAgICBzdG9yZXEgMCwgVmFyaWFibGVXYXRjaHBv
aW50U2V0OjptX2luZmVycmVkVmFsdWVbc2V0XQorICAgIHN0b3JlYiBJc0ludmFsaWRhdGVkLCBW
YXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc3RhdGVbc2V0XQorCisuZG9uZTogICAgCitlbmQKKwog
bWFjcm8gcHV0R2xvYmFsVmFyKCkKLSAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig1LCB0MikKLSAg
ICBsb2FkYiBXYXRjaHBvaW50U2V0OjptX3N0YXRlW3QyXSwgdDMKLSAgICBiaWVxIHQzLCBJc0lu
dmFsaWRhdGVkLCAucmVhZHkKLSAgICBiaW5lcSB0MywgQ2xlYXJXYXRjaHBvaW50LCAubmVlZFRv
SW52YWxpZGF0ZQotICAgIG1vdmUgSXNXYXRjaGVkLCB0MwotICAgIGptcCAucmVhZHkKLS5uZWVk
VG9JbnZhbGlkYXRlOgotICAgIGJ0Ym56IFdhdGNocG9pbnRTZXQ6Om1fc2V0SXNOb3RFbXB0eVt0
Ml0sIC5wRHluYW1pYwotICAgIG1vdmUgSXNJbnZhbGlkYXRlZCwgdDMKLS5yZWFkeToKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MCwgdDEpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNSwgdDIpCisgICAgbm90aWZ5V3JpdGUo
dDIsIHQxLCB0MCwgLnBEeW5hbWljKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQwKQog
ICAgIHN0b3JlcSB0MSwgW3QwXQotICAgIG1lbWZlbmNlCi0gICAgc3RvcmViIHQzLCBXYXRjaHBv
aW50U2V0OjptX3N0YXRlW3QyXQogZW5kCiAKIG1hY3JvIHB1dENsb3N1cmVWYXIoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAko
cmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAgSlNHbG9iYWxP
YmplY3Q6Ok5ld0dsb2JhbFZhciBKU0dsb2JhbE9iagogICAgIGludCBpbmRleCA9IHN5bWJvbFRh
YmxlKCktPnNpemUobG9ja2VyKTsKICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4
LCAoY29uc3RhbnRNb2RlID09IElzQ29uc3RhbnQpID8gUmVhZE9ubHkgOiAwKTsKICAgICBpZiAo
Y29uc3RhbnRNb2RlID09IElzVmFyaWFibGUpCi0gICAgICAgIG5ld0VudHJ5LnByZXBhcmVUb1dh
dGNoKFN5bWJvbFRhYmxlRW50cnk6Ok5vdEluaXRpYWxpemVkKTsKKyAgICAgICAgbmV3RW50cnku
cHJlcGFyZVRvV2F0Y2goKTsKICAgICBTeW1ib2xUYWJsZTo6TWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gc3ltYm9sVGFibGUoKS0+YWRkKGxvY2tlciwgaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CiAg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBhZGRSZWdpc3RlcnMoMSk7CkBAIC0y
MzQsNyArMjM0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24oRXhlY1N0YQog
ICAgIE5ld0dsb2JhbFZhciB2YXIgPSBhZGRHbG9iYWxWYXIocHJvcGVydHlOYW1lLCBJc1Zhcmlh
YmxlKTsKICAgICByZWdpc3RlckF0KHZhci5yZWdpc3Rlck51bWJlcikuc2V0KGV4ZWMtPnZtKCks
IHRoaXMsIHZhbHVlKTsKICAgICBpZiAodmFyLnNldCkKLSAgICAgICAgdmFyLnNldC0+bm90aWZ5
V3JpdGUoKTsKKyAgICAgICAgdmFyLnNldC0+bm90aWZ5V3JpdGUodmFsdWUpOwogfQogCiBzdGF0
aWMgaW5saW5lIEpTT2JqZWN0KiBsYXN0SW5Qcm90b3R5cGVDaGFpbihKU09iamVjdCogb2JqZWN0
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNyArMjkxLDcgQEAgcHJvdGVj
dGVkOgogICAgIGVudW0gQ29uc3RhbnRNb2RlIHsgSXNDb25zdGFudCwgSXNWYXJpYWJsZSB9Owog
ICAgIHN0cnVjdCBOZXdHbG9iYWxWYXIgewogICAgICAgICBpbnQgcmVnaXN0ZXJOdW1iZXI7Ci0g
ICAgICAgIFdhdGNocG9pbnRTZXQqIHNldDsKKyAgICAgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0
KiBzZXQ7CiAgICAgfTsKICAgICBOZXdHbG9iYWxWYXIgYWRkR2xvYmFsVmFyKGNvbnN0IElkZW50
aWZpZXImLCBDb25zdGFudE1vZGUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5oCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7Ci1jbGFzcyBXYXRjaHBvaW50
U2V0OworY2xhc3MgVmFyaWFibGVXYXRjaHBvaW50U2V0OwogCiBlbnVtIFJlc29sdmVNb2RlIHsK
ICAgICBUaHJvd0lmTm90Rm91bmQsCkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSBib29sIG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKFJlc28KIH0KIAogc3RydWN0IFJlc29sdmVPcCB7Ci0gICAgUmVz
b2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBvcGVyYW5kKQorICAg
IFJlc29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBv
cGVyYW5kKQogICAgICAgICA6IHR5cGUodHlwZSkKICAgICAgICAgLCBkZXB0aChkZXB0aCkKICAg
ICAgICAgLCBzdHJ1Y3R1cmUoc3RydWN0dXJlKQpAQCAtMTA4LDcgKzEwOCw3IEBAIHN0cnVjdCBS
ZXNvbHZlT3AgewogICAgIFJlc29sdmVUeXBlIHR5cGU7CiAgICAgc2l6ZV90IGRlcHRoOwogICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlOwotICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7
CisgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0OwogICAgIHVpbnRwdHJf
dCBvcGVyYW5kOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjMsNyArMTIzLDYgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAg
QVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpo
ZWFwKG9iamVjdCkpOwogICAgIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsK
LSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSAwOwogICAgIHsKICAgICAgICAgU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgR0NTYWZlQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrLCBleGVjLT52bSgpLmhl
YXApOwpAQCAtMTM4LDE1ICsxMzcsMTQgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAg
ICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0g
ICAgICAgIHNldCA9IGl0ZXItPnZhbHVlLndhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgaWYgKFZh
cmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gaXRlci0+dmFsdWUud2F0Y2hwb2ludFNldCgpKQor
ICAgICAgICAgICAgc2V0LT5ub3RpZnlXcml0ZSh2YWx1ZSk7CiAgICAgICAgIHJlZyA9ICZvYmpl
Y3QtPnJlZ2lzdGVyQXQoZmFzdEVudHJ5LmdldEluZGV4KCkpOwogICAgIH0KICAgICAvLyBJJ2Qg
cHJlZmVyIHdlIG5vdCBob2xkIGxvY2sgd2hpbGUgZXhlY3V0aW5nIGJhcnJpZXJzLCBzaW5jZSBJ
IHByZWZlciB0byByZXNlcnZlCiAgICAgLy8gdGhlIHJpZ2h0IGZvciBiYXJyaWVycyB0byBiZSBh
YmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJIGRvbid0IHdhbnQgdG8gaG9sZCBWTQogICAgIC8vIGxv
Y2tzIHdoaWxlIEdDJ2luZy4KICAgICByZWctPnNldCh2bSwgb2JqZWN0LCB2YWx1ZSk7Ci0gICAg
aWYgKHNldCkKLSAgICAgICAgc2V0LT5ub3RpZnlXcml0ZSgpOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0xNTgsNyArMTU2LDYgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0
cmlidXRlcwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1
ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIHJlZzsKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSAwOwogICAgIHsKICAgICAgICAgU3lt
Ym9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKQEAgLTE2Nywx
MyArMTY0LDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkg
PSBpdGVyLT52YWx1ZTsKICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7Ci0gICAgICAg
IHNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgaWYgKFZhcmlhYmxlV2F0Y2hw
b2ludFNldCogc2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpKQorICAgICAgICAgICAgc2V0LT5u
b3RpZnlXcml0ZSh2YWx1ZSk7CiAgICAgICAgIGVudHJ5LnNldEF0dHJpYnV0ZXMoYXR0cmlidXRl
cyk7CiAgICAgICAgIHJlZyA9ICZvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSk7
CiAgICAgfQogICAgIHJlZy0+c2V0KHZtLCBvYmplY3QsIHZhbHVlKTsKLSAgICBpZiAoc2V0KQot
ICAgICAgICBzZXQtPm5vdGlmeVdyaXRlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAJKHJldmlz
aW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMzcgKzU4LDMyIEBAIHZvaWQgU3ltYm9sVGFibGVF
bnRyeTo6ZnJlZUZhdEVudHJ5U2xvdygKICAgICBkZWxldGUgZmF0RW50cnkoKTsKIH0KIAotYm9v
bCBTeW1ib2xUYWJsZUVudHJ5Ojpjb3VsZEJlV2F0Y2hlZCgpCitKU1ZhbHVlIFN5bWJvbFRhYmxl
RW50cnk6OmluZmVycmVkVmFsdWUoKQogewogICAgIGlmICghaXNGYXQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+
bV93YXRjaHBvaW50cy5nZXQoKTsKLSAgICBpZiAoIXdhdGNocG9pbnRzKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHdhdGNocG9pbnRzLT5zdGF0ZSgpID09IElzV2F0Y2hlZDsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICByZXR1cm4gZmF0RW50cnkoKS0+bV93YXRj
aHBvaW50cy0+aW5mZXJyZWRWYWx1ZSgpOwogfQogCi12b2lkIFN5bWJvbFRhYmxlRW50cnk6OnBy
ZXBhcmVUb1dhdGNoKFdhdGNoU3RhdGUgc3RhdGUpCit2b2lkIFN5bWJvbFRhYmxlRW50cnk6OnBy
ZXBhcmVUb1dhdGNoKCkKIHsKICAgICBGYXRFbnRyeSogZW50cnkgPSBpbmZsYXRlKCk7CiAgICAg
QVNTRVJUKCFlbnRyeS0+bV93YXRjaHBvaW50cyk7Ci0gICAgZW50cnktPm1fd2F0Y2hwb2ludHMg
PSBhZG9wdFJlZigKLSAgICAgICAgbmV3IFdhdGNocG9pbnRTZXQoc3RhdGUgPT0gQWxyZWFkeUlu
aXRpYWxpemVkID8gSXNXYXRjaGVkIDogQ2xlYXJXYXRjaHBvaW50KSk7CisgICAgZW50cnktPm1f
d2F0Y2hwb2ludHMgPSBhZG9wdFJlZihuZXcgVmFyaWFibGVXYXRjaHBvaW50U2V0KCkpOwogfQog
CiB2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmFkZFdhdGNocG9pbnQoV2F0Y2hwb2ludCogd2F0Y2hw
b2ludCkKIHsKLSAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7CiAgICAgZmF0RW50cnkoKS0+
bV93YXRjaHBvaW50cy0+YWRkKHdhdGNocG9pbnQpOwogfQogCi12b2lkIFN5bWJvbFRhYmxlRW50
cnk6Om5vdGlmeVdyaXRlU2xvdygpCit2b2lkIFN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRl
U2xvdyhKU1ZhbHVlIHZhbHVlKQogewotICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0g
ZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICBWYXJpYWJsZVdhdGNocG9pbnRT
ZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKICAgICBp
ZiAoIXdhdGNocG9pbnRzKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgd2F0Y2hwb2ludHMt
Pm5vdGlmeVdyaXRlKCk7CisgICAgd2F0Y2hwb2ludHMtPm5vdGlmeVdyaXRlKHZhbHVlKTsKIH0K
IAogU3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnkqIFN5bWJvbFRhYmxlRW50cnk6OmluZmxhdGVT
bG93KCkKQEAgLTEwOSw1ICsxMDQsMzMgQEAgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlKFZNJiB2
bSkKIAogU3ltYm9sVGFibGU6On5TeW1ib2xUYWJsZSgpIHsgfQogCit2b2lkIFN5bWJvbFRhYmxl
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogdGhpc0NlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIFN5bWJvbFRhYmxlKiB0aGlzU3ltYm9sVGFibGUgPSBqc0Nhc3Q8U3ltYm9sVGFibGUq
Pih0aGlzQ2VsbCk7CisgICAgaWYgKCF0aGlzU3ltYm9sVGFibGUtPm1fd2F0Y2hwb2ludENsZWFu
dXApIHsKKyAgICAgICAgdGhpc1N5bWJvbFRhYmxlLT5tX3dhdGNocG9pbnRDbGVhbnVwID0KKyAg
ICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8V2F0Y2hwb2ludENsZWFudXA+KHRoaXNTeW1ib2xU
YWJsZSk7CisgICAgfQorICAgIAorICAgIHZpc2l0b3IuYWRkVW5jb25kaXRpb25hbEZpbmFsaXpl
cih0aGlzU3ltYm9sVGFibGUtPm1fd2F0Y2hwb2ludENsZWFudXAuZ2V0KCkpOworfQorCitTeW1i
b2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OldhdGNocG9pbnRDbGVhbnVwKFN5bWJvbFRhYmxl
KiBzeW1ib2xUYWJsZSkKKyAgICA6IG1fc3ltYm9sVGFibGUoc3ltYm9sVGFibGUpCit7Cit9CisK
K1N5bWJvbFRhYmxlOjpXYXRjaHBvaW50Q2xlYW51cDo6fldhdGNocG9pbnRDbGVhbnVwKCkgeyB9
CisKK3ZvaWQgU3ltYm9sVGFibGU6OldhdGNocG9pbnRDbGVhbnVwOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSgpCit7CisgICAgTWFwOjppdGVyYXRvciBpdGVyID0gbV9zeW1ib2xUYWJsZS0+bV9t
YXAuYmVnaW4oKTsKKyAgICBNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fc3ltYm9sVGFibGUtPm1fbWFw
LmVuZCgpOworICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgICAgIGlmIChW
YXJpYWJsZVdhdGNocG9pbnRTZXQqIHNldCA9IGl0ZXItPnZhbHVlLndhdGNocG9pbnRTZXQoKSkK
KyAgICAgICAgICAgIHNldC0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKKyAgICB9Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE2ICszMSwx
MyBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgotI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJWYXJpYWJsZVdhdGNocG9p
bnRTZXQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1j
bGFzcyBXYXRjaHBvaW50OwotY2xhc3MgV2F0Y2hwb2ludFNldDsKLQogc3RydWN0IFNsb3dBcmd1
bWVudCB7CiAgICAgZW51bSBTdGF0dXMgewogICAgICAgICBOb3JtYWwgPSAwLApAQCAtNzksMTEg
Kzc2LDExIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGludCBtaXNzaW5nU3ltYm9sTWEKIC8vIGNv
dW50ZWQgcG9pbnRlciB0byBhIHNoYXJlZCBXYXRjaHBvaW50U2V0LiBUaHVzLCBpbi1wbGFjZSBl
ZGl0cyBvZiB0aGUKIC8vIFdhdGNocG9pbnRTZXQgd2lsbCBtYW5pZmVzdCBpbiBhbGwgY29waWVz
LiBIZXJlJ3MgYSBwaWN0dXJlOgogLy8KLS8vIFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVudHJ5
IC0tPiBXYXRjaHBvaW50U2V0CisvLyBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4g
VmFyaWFibGVXYXRjaHBvaW50U2V0CiAvLwogLy8gSWYgeW91IG1ha2UgYSBjb3B5IG9mIGEgU3lt
Ym9sVGFibGVFbnRyeSwgeW91IHdpbGwgaGF2ZToKIC8vCi0vLyBvcmlnaW5hbDogU3ltYm9sVGFi
bGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKy8vIG9yaWdpbmFsOiBTeW1i
b2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gVmFyaWFibGVXYXRjaHBvaW50U2V0CiAvLyBj
b3B5OiAgICAgU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0tLS1eCiAKIHN0cnVjdCBT
eW1ib2xUYWJsZUVudHJ5IHsKQEAgLTIxOCwyNSArMjE1LDI0IEBAIHN0cnVjdCBTeW1ib2xUYWJs
ZUVudHJ5IHsKICAgICAgICAgcmV0dXJuIGJpdHMoKSAmIFJlYWRPbmx5RmxhZzsKICAgICB9CiAg
ICAgCi0gICAgYm9vbCBjb3VsZEJlV2F0Y2hlZCgpOworICAgIEpTVmFsdWUgaW5mZXJyZWRWYWx1
ZSgpOwogICAgIAotICAgIGVudW0gV2F0Y2hTdGF0ZSB7IE5vdEluaXRpYWxpemVkLCBBbHJlYWR5
SW5pdGlhbGl6ZWQgfTsKLSAgICB2b2lkIHByZXBhcmVUb1dhdGNoKFdhdGNoU3RhdGUpOworICAg
IHZvaWQgcHJlcGFyZVRvV2F0Y2goKTsKICAgICAKICAgICB2b2lkIGFkZFdhdGNocG9pbnQoV2F0
Y2hwb2ludCopOwogICAgIAotICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQoKQorICAg
IFZhcmlhYmxlV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCgpCiAgICAgewogICAgICAgICBp
ZiAoIWlzRmF0KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGZhdEVu
dHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7CiAgICAgfQogICAgIAotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBub3RpZnlXcml0ZSgpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIG5vdGlmeVdyaXRl
KEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoTElLRUxZKCFpc0ZhdCgpKSkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbm90aWZ5V3JpdGVTbG93KCk7CisgICAgICAgIG5v
dGlmeVdyaXRlU2xvdyh2YWx1ZSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAgLTI1NiwxMSAr
MjUyLDExIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBpbnRwdHJfdCBtX2JpdHM7IC8v
IGFsd2F5cyBoYXMgRmF0RmxhZyBzZXQgYW5kIGV4YWN0bHkgbWF0Y2hlcyB3aGF0IHRoZSBiaXRz
IHdvdWxkIGhhdmUgYmVlbiBpZiB0aGlzIHdhc24ndCBmYXQuCiAgICAgICAgIAotICAgICAgICBS
ZWZQdHI8V2F0Y2hwb2ludFNldD4gbV93YXRjaHBvaW50czsKKyAgICAgICAgUmVmUHRyPFZhcmlh
YmxlV2F0Y2hwb2ludFNldD4gbV93YXRjaHBvaW50czsKICAgICB9OwogICAgIAogICAgIFN5bWJv
bFRhYmxlRW50cnkmIGNvcHlTbG93KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIG5vdGlmeVdyaXRlU2xvdygpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgbm90aWZ5V3JpdGVTbG93KEpTVmFsdWUpOwogICAgIAogICAgIGJvb2wgaXNGYXQo
KSBjb25zdAogICAgIHsKQEAgLTQ2Niw5ICs0NjIsMjMgQEAgcHVibGljOgogICAgIGNvbnN0IFNs
b3dBcmd1bWVudCogc2xvd0FyZ3VtZW50cygpIHsgcmV0dXJuIG1fc2xvd0FyZ3VtZW50cy5nZXQo
KTsgfQogICAgIHZvaWQgc2V0U2xvd0FyZ3VtZW50cyhzdGQ6OnVuaXF1ZV9wdHI8U2xvd0FyZ3Vt
ZW50W10+IHNsb3dBcmd1bWVudHMpIHsgbV9zbG93QXJndW1lbnRzID0gc3RkOjptb3ZlKHNsb3dB
cmd1bWVudHMpOyB9CiAKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CisKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiBwcml2YXRlOgorICAg
IGNsYXNzIFdhdGNocG9pbnRDbGVhbnVwIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIg
eworICAgIHB1YmxpYzoKKyAgICAgICAgV2F0Y2hwb2ludENsZWFudXAoU3ltYm9sVGFibGUqKTsK
KyAgICAgICAgdmlydHVhbCB+V2F0Y2hwb2ludENsZWFudXAoKTsKKyAgICAgICAgCisgICAgcHJv
dGVjdGVkOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKSBP
VkVSUklERTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFN5bWJvbFRhYmxlKiBtX3N5bWJvbFRh
YmxlOworICAgIH07CisgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3ltYm9sVGFibGUoVk0m
KTsKICAgICB+U3ltYm9sVGFibGUoKTsKIApAQCAtNDgxLDYgKzQ5MSw4IEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fY2FwdHVyZUVuZDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93QXJndW1lbnRb
XT4gbV9zbG93QXJndW1lbnRzOworICAgIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50
Q2xlYW51cD4gbV93YXRjaHBvaW50Q2xlYW51cDsKIAogcHVibGljOgogICAgIG11dGFibGUgQ29u
Y3VycmVudEpJVExvY2sgbV9sb2NrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217889</attachid>
            <date>2013-11-26 10:56:39 -0800</date>
            <delta_ts>2013-11-26 17:21:51 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>69692</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5Nzg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MiBA
QAorMjAxMy0xMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlc3RydWN0dXJlIGdsb2JhbCB2YXJpYWJsZSBjb25zdGFudCBpbmZlcmVuY2Ugc28gdGhhdCBp
dCBjb3VsZCB3b3JrIGZvciBhbnkga2luZCBvZiBzeW1ib2wgdGFibGUgdmFyaWFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBj
aGFuZ2VzIHRoZSB3YXkgZ2xvYmFsIHZhcmlhYmxlIGNvbnN0YW50IGluZmVyZW5jZSB3b3JrcyBz
byB0aGF0IGl0IGNhbiBiZSByZXVzZWQKKyAgICAgICAgZm9yIGNsb3N1cmUgdmFyaWFibGUgY29u
c3RhbnQgaW5mZXJlbmNlLiBTb21lIG9mIHRoZSBwcmVtaXNlcyB0aGF0IG9yaWdpbmFsbHkgbW90
aXZhdGVkCisgICAgICAgIHRoaXMgcGF0Y2ggYXJlIHNvbWV3aGF0IHdyb25nLCBidXQgaXQgbGVk
IHRvIHNvbWUgc2ltcGxpZmljYXRpb25zIGFueXdheSBhbmQgSSBzdXNwZWN0CisgICAgICAgIHRo
YXQgd2UnbGwgYmUgYWJsZSB0byBmaXggdGhvc2UgcHJlbWlzZXMgaW4gdGhlIGZ1dHVyZS4gVGhl
IG1haW4gcG9pbnQgb2YgdGhpcyBwYXRjaCBpcworICAgICAgICB0byBtYWtlIGl0IGVhc3kgdG8g
cmV1c2UgZ2xvYmFsIHZhcmlhYmxlIGNvbnN0YW50IGluZmVyZW5jZSBmb3IgY2xvc3VyZSB2YXJp
YWJsZQorICAgICAgICBjb25zdGFudCBpbmZlcmVuY2UsIGFuZCB0aGlzIHdpbGwgYmUgcG9zc2li
bGUgcHJvdmlkZWQgd2UgY2FuIGFsc28gZWl0aGVyIChhKSBpbmZlcgorICAgICAgICBvbmUtc2hv
dCBjbG9zdXJlcyAoZWFzeSkgb3IgKGIpIGluZmVyIGNsb3N1cmUgdmFyaWFibGVzIHRoYXQgYXJl
IGFsd2F5cyBhc3NpZ25lZCBwcmlvcgorICAgICAgICB0byBmaXJzdCB1c2UuCisgICAgICAgIAor
ICAgICAgICBPbmUgb2YgdGhlIHRoaW5ncyB0aGF0IHRoaXMgcGF0Y2ggaXMgbWVhbnQgdG8gZW5h
YmxlIGlzIGNvbnN0YW50IGluZmVyZW5jZSBmb3IgY2xvc3VyZQorICAgICAgICB2YXJpYWJsZXMg
dGhhdCBtYXkgYmUgcGFydCBvZiBhIG11bHRpLXNob3QgY2xvc3VyZS4gQ2xvc3VyZSB2YXJpYWJs
ZXMgbWF5IGJlCisgICAgICAgIGluc3RhbnRpYXRlZCBtdWx0aXBsZSB0aW1lcywgbGlrZToKKyAg
ICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAgICAgICAgICAgdmFy
IFdJRFRIID0gNDU7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gYmFyKCkgeworICAgICAgICAg
ICAgICAgICAgICAuLi4gdXNlIFdJRFRIIC4uLgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEV2ZW4gaWYgZm9v
KCkgaXMgY2FsbGVkIG1hbnkgdGltZXMgYW5kIFdJRFRIIGlzIGFzc2lnbmVkIHRvIG11bHRpcGxl
IHRpbWVzLCB0aGF0CisgICAgICAgIGRvZXNuJ3QgY2hhbmdlIHRoZSBmYWN0IHRoYXQgaXQncyBh
IGNvbnN0YW50LiBUaGUgZ29hbCBvZiBjbG9zdXJlIHZhcmlhYmxlIGNvbnN0YW50CisgICAgICAg
IGluZmVyZW5jZSBpcyB0byBjYXRjaCBhbnkgY2FzZSB3aGVyZSBhIGNsb3N1cmUgdmFyaWFibGUg
aGFzIGJlZW4gYXNzaWduZWQgYXQgbGVhc3Qgb25jZQorICAgICAgICBhbmQgaXRzIHZhbHVlIGhh
cyBuZXZlciBjaGFuZ2VkLiBUaGlzIHBhdGNoIGRvZXNuJ3QgaW1wbGVtZW50IHRoYXQsIGJ1dCBp
dCBkb2VzIGNoYW5nZQorICAgICAgICBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgaW5mZXJlbmNl
IHRvIGhhdmUgbW9zdCBvZiB0aGUgcG93ZXJzIG5lZWRlZCB0byBkbyB0aGF0LiBOb3RlCisgICAg
ICAgIHRoYXQgbW9zdCBsaWtlbHkgd2Ugd2lsbCB1c2UgdGhpcyBmdW5jdGlvbmFsaXR5IG9ubHkg
dG8gaW1wbGVtZW50IGNvbnN0YW50IGluZmVyZW5jZQorICAgICAgICBmb3Igb25lLXNob3QgY2xv
c3VyZXMsIGJ1dCB0aGUgcmVzdWx0aW5nIG1hY2hpbmVyeSBpcyBzdGlsbCBzaW1wbGVyIHRoYW4g
d2hhdCB3ZSBoYWQKKyAgICAgICAgYmVmb3JlLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpbnZv
bHZlcyB0aHJlZSBjaGFuZ2VzOgorICAgICAgICAKKyAgICAgICAgICAgIC0gVGhlIHdhdGNocG9p
bnQgb2JqZWN0IG5vdyBjb250YWlucyB0aGUgaW5mZXJyZWQgdmFsdWUuIFRoaXMgaW52b2x2ZXMg
Y3JlYXRpbmcgYQorICAgICAgICAgICAgICBuZXcga2luZCBvZiB3YXRjaHBvaW50IHNldCwgdGhl
IFZhcmlhYmxlV2F0Y2hwb2ludFNldC4gV2Ugd2lsbCByZXVzZSB0aGlzIG9iamVjdAorICAgICAg
ICAgICAgICBmb3IgY2xvc3VyZSB2YXJpYWJsZXMuCisgICAgICAgIAorICAgICAgICAgICAgLSBX
cml0aW5nIHRvIGEgdmFyaWFibGUgdGhhdCBpcyB3YXRjaHBvaW50ZWQgc3RpbGwgaW52b2x2ZXMg
dGhlc2UgdGhyZWUgc3RhdGVzIHRoYXQKKyAgICAgICAgICAgICAgd2UgcHJvY2VlZCB0aHJvdWdo
IG1vbm90b25pY2FsbHkgKFVuaW5pdGlhbGl6ZWQtPkluaXRpYWxpemVkLT5JbnZhbGlkYXRlZCkg
YnV0CisgICAgICAgICAgICAgIG5vdywgdGhlIEluaXRpYWxpemVkLT5JbnZhbGlkYXRlZCBzdGF0
ZSB0cmFuc2l0aW9uIG9ubHkgaGFwcGVucyBpZiB3ZSBjaGFuZ2UgdGhlCisgICAgICAgICAgICAg
IHZhcmlhYmxlJ3MgdmFsdWUsIHJhdGhlciB0aGFuIHN0b3JlIHRvIHRoZSB2YXJpYWJsZS4gUmVw
ZWF0ZWRseSBzdG9yaW5nIHRoZSBzYW1lCisgICAgICAgICAgICAgIHZhbHVlIHdvbid0IGNoYW5n
ZSB0aGUgdmFyaWFibGUncyBzdGF0ZS4KKyAgICAgICAgCisgICAgICAgICAgICAtIE9uIDY0LWJp
dCBzeXN0ZW1zICh0aGUgb25seSBzeXN0ZW1zIG9uIHdoaWNoIHdlIGRvIGNvbmN1cnJlbnQgSklU
KSwgeW91IG5vIGxvbmdlcgorICAgICAgICAgICAgICBuZWVkIGZhbmN5IGZlbmNpbmcgdG8gZ2V0
IGEgY29uc2lzdGVudCB2aWV3IG9mIHRoZSB3YXRjaHBvaW50IGluIHRoZSBKSVQuIFRoZQorICAg
ICAgICAgICAgICBzdGF0ZSBvZiB0aGUgVmFyaWFibGVXYXRjaHBvaW50U2V0IGZvciB0aGUgcHVy
cG9zZXMgb2YgY29uc3RhbnQgZm9sZGluZyBpcworICAgICAgICAgICAgICBlbnRpcmVseSBlbmNh
cHN1bGF0ZWQgaW4gdGhlIFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bV9pbmZlcnJlZFZhbHVlLiBJ
ZiB0aGF0IGlzCisgICAgICAgICAgICAgIEpTVmFsdWUoKSB0aGVuIHlvdSBjYW5ub3QgZm9sZCAo
ZWl0aGVyIGJlY2F1c2UgdGhlIHNldCBpcyB1bmluaXRpYWxpemVkIG9yCisgICAgICAgICAgICAg
IGJlY2F1c2UgaXQncyBpbnZhbGlkYXRlZCAtIGRvZXNuJ3QgbWF0dGVyIHdoaWNoKTsgb24gdGhl
IG90aGVyIGhhbmQgaWYgdGhlIHZhbHVlCisgICAgICAgICAgICAgIGlzIGFueXRoaW5nIG90aGVy
IHRoYW4gSlNWYWx1ZSgpIHRoZW4geW91IGNhbiBmb2xkLCBhbmQgdGhhdCdzIHRoZSB2YWx1ZSB5
b3UgZm9sZAorICAgICAgICAgICAgICB0by4gU2ltcGxlIQorICAgICAgICAKKyAgICAgICAgVGhp
cyBhbHNvIGNoYW5nZXMgdGhlIHdheSB0aGF0IERGRyBJUiBkZWFscyB3aXRoIHZhcmlhYmxlIHdh
dGNocG9pbnRzLiBJdCdzIG5vdworICAgICAgICBvYmxpdmlvdXMgdG8gZ2xvYmFsIHZhcmlhYmxl
cy4gWW91IGluc3RhbGwgYSB3YXRjaHBvaW50IHVzaW5nIFZhcmlhYmxlV2F0Y2hwb2ludCBhbmQK
KyAgICAgICAgeW91IG5vdGlmeSB3cml0ZSB1c2luZyBOb3RpZnlXcml0ZS4gRWFzeSEKKyAgICAg
ICAgCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmVxdWlyZXMgc29tZSBtb3JlIHR3ZWFr
cyBiZWNhdXNlIG9mIHRoZSBmYWN0IHRoYXQgb3BfZW50ZXIgd2lsbAorICAgICAgICBzdG9yZSBV
bmRlZmluZWQgaW50byBldmVyeSBjYXB0dXJlZCB2YXJpYWJsZS4gSGVuY2UgaXQgd29uJ3QgZXZl
biB3b3JrIGZvciBvbmUtc2hvdAorICAgICAgICBjbG9zdXJlcy4gT25lLXNob3QgY2xvc3VyZXMg
YXJlIGVhc2lseSBmaXhlZCBieSBpbnRyb2R1Y2luZyBhbm90aGVyIHN0YXRlIChzbyB3ZSdsbAor
ICAgICAgICBoYXZlIFVuaW5pdGlhbGl6ZWQtPlVuZGVmaW5lZC0+SW5pdGlhbGl6ZWQtPkludmFs
aWRhdGVkKS4gTXVsdGktc2hvdCBjbG9zdXJlcyB3aWxsCisgICAgICAgIHJlcXVpcmUgc3RhdGlj
IGFuYWx5c2lzLiBPbmUtc2hvdCBjbG9zdXJlcyBhcmUgY2xlYXJseSBhIGhpZ2hlciBwcmlvcml0
eS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBieXRlY29kZS9WYXJpYWJsZVdhdGNocG9pbnRTZXQuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0Y2hwb2ludFNldDo6VmFyaWFibGVXYXRj
aHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBvaW50U2V0Ojp+VmFyaWFi
bGVXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBvaW50U2V0Ojpp
bmZlcnJlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBvaW50U2V0Ojpub3Rp
ZnlXcml0ZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0Y2hwb2ludFNldDo6aW52YWxpZGF0
ZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0Y2hwb2ludFNldDo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZVdhdGNocG9pbnRTZXQ6OmFkZHJlc3NP
ZkluZmVycmVkVmFsdWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuaDoKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjo6OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAg
ICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNl
OjpwZXJmb3JtTm9kZUNTRSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1JlZ2lzdGVyUG9p
bnRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzVmFyaWFibGVXYXRjaHBvaW50U2V0
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp2YXJpYWJsZVdhdGNocG9pbnRTZXQpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJpdGhNb2QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjpjb21waWxlTm90aWZ5V3JpdGUpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5vdGlmeVdyaXRlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0UHV0R2xvYmFsVmFyKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5vdGlmeVdyaXRlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0R2xvYmFsVmFyKToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRHbG9iYWxWYXIpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuaDoKKyAgICAgICAgKEpTQzo6
UmVzb2x2ZU9wOjpSZXNvbHZlT3ApOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5
bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFi
bGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjppbmZlcnJlZFZhbHVlKToK
KyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6cHJlcGFyZVRvV2F0Y2gpOgorICAgICAg
ICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjphZGRXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGVFbnRyeTo6bm90aWZ5V3JpdGVTbG93KToKKyAgICAgICAgKEpTQzo6U3ltYm9s
VGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6V2F0Y2hw
b2ludENsZWFudXA6OldhdGNocG9pbnRDbGVhbnVwKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGU6OldhdGNocG9pbnRDbGVhbnVwOjp+V2F0Y2hwb2ludENsZWFudXApOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5
KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlRW50cnk6OndhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVu
dHJ5Ojpub3RpZnlXcml0ZSk6CisKIDIwMTMtMTEtMjYgIE5hZGF2IFJvdGVtICA8bnJvdGVtQGFw
cGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6ZSBhd2F5IE9SIHdpdGggemVybyAtIGEgY29tbW9u
IEFTTS5qcyBwYXR0ZXJuLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDcgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Zh
bHVlUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNv
dmVyeS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdhdGNocG9pbnRT
ZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmggXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03OTUsNiArNzk1LDcgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFVubGlua2VkQ29kZUJsb2NrLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxWYWx1ZVByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFZhbHVlUmVjb3ZlcnkuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcVmlydHVhbFJlZ2lzdGVyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxXYXRjaHBvaW50LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29tcGlsZXJcQnl0ZWNvZGVHZW5lcmF0b3IuaCIg
Lz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTk3MzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCw3IEBACiAJCTBGOEY5NDQyMTY2
NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGOTQzRjE2Njc2MzJEMDBENjE5NzEgLyogQ29kZVR5cGUu
Y3BwICovOyB9OwogCQkwRjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEgLyogSklUQ29kZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGOTQ0MzE2Njc2
MzUyMDBENjE5NzEgLyogSklUQ29kZS5jcHAgKi87IH07CiAJCTBGOEY5NDQ2MTY2NzY0RjEwMEQ2
MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOEY5NDQ1MTY2NzY0RUUwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAq
LzsgfTsKKwkJMEY5MTgxQzcxODQxNUNBNTAwNTdCNjY5IC8qIFZhcmlhYmxlV2F0Y2hwb2ludFNl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTgx
QzYxODQxNUNBNTAwNTdCNjY5IC8qIFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTE5RDBDMTU3RUUwOUYw
MDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTE5RDA5MTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcCAqLzsgfTsKIAkJMEY5MTlEMEQxNTdFRTBBMjAwNEE0RTdEIC8q
IEpTU3ltYm9sVGFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2Jq
ZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEUx
NTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwICovOyB9OwpA
QCAtMTU5Myw2ICsxNTk0LDcgQEAKIAkJMEY4Rjk0M0YxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVU
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVUeXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4Rjk0NDMxNjY3NjM1MjAwRDYxOTcx
IC8qIEpJVENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklU
Q29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOEY5NDQ1MTY2NzY0RUUw
MEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkx
ODFDNjE4NDE1Q0E1MDA1N0I2NjkgLyogVmFyaWFibGVXYXRjaHBvaW50U2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5
MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQxMzIsNiArNDEzNCw3IEBACiAJCQkJMEY5NjNCMzYxM0ZDNkZERTAwMDJEOUIyIC8q
IFZhbHVlUHJvZmlsZS5oICovLAogCQkJCTBGMjRFNTU3MTdGNzRFREIwMEFCQjIxNyAvKiBWYWx1
ZVJlY292ZXJ5LmNwcCAqLywKIAkJCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVS
ZWNvdmVyeS5oICovLAorCQkJCTBGOTE4MUM2MTg0MTVDQTUwMDU3QjY2OSAvKiBWYXJpYWJsZVdh
dGNocG9pbnRTZXQuaCAqLywKIAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVh
bFJlZ2lzdGVyLmggKi8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9p
bnQuY3BwICovLAogCQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50Lmgg
Ki8sCkBAIC00Mzc1LDYgKzQzNzgsNyBAQAogCQkJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAv
KiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0
MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkQ4QTMyQTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE4MUM3MTg0MTVDQTUwMDU3QjY2OSAvKiBW
YXJpYWJsZVdhdGNocG9pbnRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzJDMTdENTFG
NTcwMENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQzRjE1Qzc1RjE5MDA2QTU5N0MgLyogREZH
VHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRTBGNzcxNkMx
REIxMjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlz
aW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKIGNsYXNzIEFycmF5UHJvZmlsZTsKIGNsYXNzIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOworY2xhc3MgVmFyaWFibGVXYXRjaHBvaW50U2V0Owogc3Ry
dWN0IExMSW50Q2FsbExpbmtJbmZvOwogc3RydWN0IFZhbHVlUHJvZmlsZTsKIApAQCAtMTE1LDcg
KzExNiw3IEBAIHN0cnVjdCBJbnN0cnVjdGlvbiB7CiAgICAgICAgIEFycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlOwogICAgICAgICBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBhcnJheUFsbG9jYXRp
b25Qcm9maWxlOwogICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogb2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU7Ci0gICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CisgICAg
ICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldDsKICAgICAgICAgdm9pZCog
cG9pbnRlcjsKICAgICAgICAgYm9vbCogcHJlZGljYXRlUG9pbnRlcjsKICAgICB9IHU7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFyaWFibGVXYXRjaHBvaW50U2V0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV2F0
Y2hwb2ludFNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgVmFyaWFibGVXYXRjaHBvaW50U2V0X2gKKyNkZWZpbmUgVmFyaWFibGVXYXRjaHBv
aW50U2V0X2gKKworI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJp
ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFZhcmlhYmxlV2F0Y2hwb2ludFNldCA6
IHB1YmxpYyBXYXRjaHBvaW50U2V0IHsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworcHVibGljOgorICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCgpCisgICAgICAgIDog
V2F0Y2hwb2ludFNldChDbGVhcldhdGNocG9pbnQpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+
VmFyaWFibGVXYXRjaHBvaW50U2V0KCkgeyB9CisgICAgCisgICAgLy8gRm9yIHRoZSBwdXJwb3Nl
IG9mIGRlY2lkaW5nIHdoZXRoZXIgb3Igbm90IHRvIHdhdGNoIHRoaXMgdmFyaWFibGUsIHlvdSBv
bmx5IG5lZWQKKyAgICAvLyB0byBpbnNwZWN0IGluZmVycmVkVmFsdWUoKS4gSWYgdGhpcyByZXR1
cm5zIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSBlbXB0eQorICAgIC8vIHZhbHVlLCB0aGVuIGl0
IG1lYW5zIHRoYXQgYXQgYWxsIGZ1dHVyZSBzYWZlcG9pbnRzLCB0aGlzIHdhdGNocG9pbnQgc2V0
IHdpbGwgYmUKKyAgICAvLyBpbiBvbmUgb2YgdGhlc2Ugc3RhdGVzOgorICAgIC8vCisgICAgLy8g
ICAgSXNXYXRjaGVkOiBpbiB0aGlzIGNhc2UsIHRoZSB2YXJpYWJsZSdzIHZhbHVlIG11c3Qgc3Rp
bGwgYmUgdGhlCisgICAgLy8gICAgICAgIGluZmVycmVkVmFsdWUuCisgICAgLy8KKyAgICAvLyAg
ICBJc0ludmFsaWRhdGVkOiBpbiB0aGlzIGNhc2UgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgbWF5IGJl
IGFueXRoaW5nIGJ1dCB5b3UnbGwKKyAgICAvLyAgICAgICAgZWl0aGVyIG5vdGljZSB0aGF0IGl0
J3MgaW52YWxpZGF0ZWQgYW5kIG5vdCBpbnN0YWxsIHRoZSB3YXRjaHBvaW50LCBvcgorICAgIC8v
ICAgICAgICB5b3Ugd2lsbCBoYXZlIGJlZW4gbm90aWZpZWQgdGhhdCB0aGUgd2F0Y2hwb2ludCB3
YXMgZmlyZWQuCisgICAgSlNWYWx1ZSBpbmZlcnJlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9p
bmZlcnJlZFZhbHVlOyB9CisgICAgCisgICAgdm9pZCBub3RpZnlXcml0ZShKU1ZhbHVlIHZhbHVl
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhdmFsdWUpOworICAgICAgICBzd2l0Y2ggKHN0YXRl
KCkpIHsKKyAgICAgICAgY2FzZSBDbGVhcldhdGNocG9pbnQ6CisgICAgICAgICAgICBtX2luZmVy
cmVkVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIHN0YXJ0V2F0Y2hpbmcoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBjYXNlIElzV2F0Y2hlZDoKKyAgICAgICAgICAgIEFTU0VS
VCghIW1faW5mZXJyZWRWYWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gbV9pbmZlcnJl
ZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGludmFsaWRhdGUo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIElzSW52
YWxpZGF0ZWQ6CisgICAgICAgICAgICBBU1NFUlQoIW1faW5mZXJyZWRWYWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGludmFsaWRhdGUoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCEhbV9pbmZlcnJlZFZhbHVlKTsKKyAgICAgICAgQVNTRVJUKHN0YXRlKCkgPT0g
SXNXYXRjaGVkKTsKKyAgICAgICAgbV9pbmZlcnJlZFZhbHVlID0gSlNWYWx1ZSgpOworICAgICAg
ICBmaXJlQWxsKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhbV9pbmZlcnJlZFZhbHVlID09IChzdGF0ZSgp
ID09IElzV2F0Y2hlZCkpOworICAgICAgICBpZiAoIW1faW5mZXJyZWRWYWx1ZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFtX2luZmVycmVkVmFsdWUuaXNDZWxsKCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIEpTQ2VsbCogY2VsbCA9IG1faW5mZXJyZWRWYWx1ZS5h
c0NlbGwoKTsKKyAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGNlbGwpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgfQorICAgIAorICAgIEpTVmFsdWUq
IGFkZHJlc3NPZkluZmVycmVkVmFsdWUoKSB7IHJldHVybiAmbV9pbmZlcnJlZFZhbHVlOyB9CisK
K3ByaXZhdGU6CisgICAgSlNWYWx1ZSBtX2luZmVycmVkVmFsdWU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIFZhcmlhYmxlV2F0Y2hwb2ludFNldF9oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMTU5
NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA4LDE0ICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIGZpcmVBbGxT
bG93KCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgbm90aWZ5V3JpdGUoKQotICAgIHsKLSAgICAg
ICAgaWYgKHN0YXRlKCkgPT0gQ2xlYXJXYXRjaHBvaW50KQotICAgICAgICAgICAgc3RhcnRXYXRj
aGluZygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaXJlQWxsKCk7Ci0gICAgfQotICAg
IAogICAgIGludDhfdCogYWRkcmVzc09mU3RhdGUoKSB7IHJldHVybiAmbV9zdGF0ZTsgfQogICAg
IGludDhfdCogYWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpIHsgcmV0dXJuICZtX3NldElzTm90RW1w
dHk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE1OTczMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTUwNSwxMyArMTUwNSwxMyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBU
b3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hw
b2ludDoKKyAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2ludDoKICAgICBjYXNlIFZhckluamVjdGlv
bldhdGNocG9pbnQ6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgY2FzZSBOb3Rp
ZnlQdXRHbG9iYWxWYXI6CisgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTU5
NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwOTQsMTMgKzMwOTQsMTUgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBn
ZXQoVmlydHVhbFJlZ2lzdGVyKHNjb3BlKSkpOwogICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxl
RW50cnkgZW50cnkgPSBnbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCktPmdldCh1aWQpOwotICAg
ICAgICAgICAgICAgIGlmICghZW50cnkuY291bGRCZVdhdGNoZWQoKSB8fCAhbV9ncmFwaC53YXRj
aHBvaW50cygpLmlzU3RpbGxWYWxpZChlbnRyeS53YXRjaHBvaW50U2V0KCkpKSB7CisgICAgICAg
ICAgICAgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0ID0gZW50cnkud2F0
Y2hwb2ludFNldCgpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSA9Cisg
ICAgICAgICAgICAgICAgICAgIHdhdGNocG9pbnRTZXQgPyB3YXRjaHBvaW50U2V0LT5pbmZlcnJl
ZFZhbHVlKCkgOiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgaWYgKCFzcGVjaWZpY1ZhbHVl
KSB7CiAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgYWRkVG9H
cmFwaChHZXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24pKSk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoR2xvYmFsVmFyV2F0Y2hwb2ludCwgT3BJbmZvKG9wZXJhbmQp
LCBPcEluZm8oaWRlbnRpZmllck51bWJlcikpOwotICAgICAgICAgICAgICAgIEpTVmFsdWUgc3Bl
Y2lmaWNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5n
ZXQoKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFZhcmlhYmxlV2F0Y2hwb2ludCwgT3BJ
bmZvKHdhdGNocG9pbnRTZXQpKTsKICAgICAgICAgICAgICAgICBpZiAoc3BlY2lmaWNWYWx1ZS5p
c0NlbGwoKSkKICAgICAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCBj
ZWxsQ29uc3RhbnQoc3BlY2lmaWNWYWx1ZS5hc0NlbGwoKSkpOwogICAgICAgICAgICAgICAgIGVs
c2UKQEAgLTMxMjgsNyArMzEzMCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKIAogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSAwOwotICAgICAgICAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludHMgPSAwOworICAg
ICAgICAgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IDA7CiAgICAgICAg
ICAgICB1aW50cHRyX3Qgb3BlcmFuZDsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPm1fbG9jayk7CkBAIC0zMTYwLDkgKzMxNjIsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9
IGdsb2JhbE9iamVjdC0+c3ltYm9sVGFibGUoKS0+Z2V0KHVpZCk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKHdhdGNocG9pbnRzID09IGVudHJ5LndhdGNocG9pbnRTZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChQdXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgZ2V0KFZpcnR1
YWxSZWdpc3Rlcih2YWx1ZSkpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZU5vZGUgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQ
dXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwgdmFsdWVOb2RlKTsKICAgICAgICAgICAgICAg
ICBpZiAod2F0Y2hwb2ludHMtPnN0YXRlKCkgIT0gSXNJbnZhbGlkYXRlZCkKLSAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChOb3RpZnlQdXRHbG9iYWxWYXIsIE9wSW5mbyhvcGVyYW5kKSwg
T3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChOb3RpZnlXcml0ZSwgT3BJbmZvKHdhdGNocG9pbnRzKSwgdmFsdWVOb2RlKTsKICAgICAgICAg
ICAgICAgICAvLyBLZWVwIHNjb3BlIGFsaXZlIHVudGlsIGFmdGVyIHB1dC4KICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUpKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCwyOCArMjYwLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIAotICAgIGJvb2wgZ2xvYmFs
VmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJQ
b2ludGVyKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7
IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgR2xv
YmFsVmFyV2F0Y2hwb2ludDoKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+cmVnaXN0ZXJQb2lu
dGVyKCkgPT0gcmVnaXN0ZXJQb2ludGVyKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUHV0R2xvYmFsVmFy
OgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3Rl
clBvaW50ZXIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5jbG9iYmVyc1dvcmxkKG5v
ZGUpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KICAgICBib29sIHZhckluamVjdGlvbldhdGNocG9pbnRFbGltaW5hdGlv
bigpCiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0t
OykgewpAQCAtMTIyOSwxMyArMTIwNyw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKLSAgICAgICAg
ICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCi0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBpZiAoZ2xvYmFsVmFyV2F0Y2hwb2ludEVsaW1pbmF0aW9uKG5vZGUt
PnJlZ2lzdGVyUG9pbnRlcigpKSkKLSAgICAgICAgICAgICAgICBlbGltaW5hdGUoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0
Y2hwb2ludDoKICAgICAgICAgICAgIGlmIChjc2VNb2RlID09IFN0b3JlRWxpbWluYXRpb24pCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw4ICsxNDMsMTMgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICB3cml0ZShT
aWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNhc2UgTm90aWZ5UHV0
R2xvYmFsVmFyOgorICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgorICAgICAgICByZWFkKFdh
dGNocG9pbnRfZmlyZSk7CisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgY2FzZSBOb3Rp
ZnlXcml0ZToKICAgICAgICAgd3JpdGUoV2F0Y2hwb2ludF9maXJlKTsKKyAgICAgICAgd3JpdGUo
U2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9u
OgpAQCAtNTIwLDcgKzUyNSw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEdldEdsb2JhbFZhcjoK
LSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFw
KEFic29sdXRlLCBub2RlLT5yZWdpc3RlclBvaW50ZXIoKSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsOCArOTAzLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoK
ICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFs
VmFyOgotICAgICAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CisgICAgICAgIGNhc2UgTm90
aWZ5V3JpdGU6CisgICAgICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgICAgICBjYXNl
IFZhckluamVjdGlvbldhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50OgogICAgICAgICBjYXNlIENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0OCwyMCArNzQ4LDkgQEAgc3RydWN0IE5v
ZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFz
SWRlbnRpZmllck51bWJlckZvckNoZWNrKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09
IEdsb2JhbFZhcldhdGNocG9pbnQgfHwgb3AoKSA9PSBOb3RpZnlQdXRHbG9iYWxWYXI7Ci0gICAg
fQotICAgIAotICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpCi0gICAgewot
ICAgICAgICBBU1NFUlQoaGFzSWRlbnRpZmllck51bWJlckZvckNoZWNrKCkpOwotICAgICAgICBy
ZXR1cm4gbV9vcEluZm8yOwotICAgIH0KLSAgICAKICAgICBib29sIGhhc1JlZ2lzdGVyUG9pbnRl
cigpCiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIgfHwgb3AoKSA9
PSBQdXRHbG9iYWxWYXIgfHwgb3AoKSA9PSBHbG9iYWxWYXJXYXRjaHBvaW50IHx8IG9wKCkgPT0g
Tm90aWZ5UHV0R2xvYmFsVmFyOworICAgICAgICByZXR1cm4gb3AoKSA9PSBHZXRHbG9iYWxWYXIg
fHwgb3AoKSA9PSBQdXRHbG9iYWxWYXI7CiAgICAgfQogICAgIAogICAgIFdyaXRlQmFycmllcjxV
bmtub3duPiogcmVnaXN0ZXJQb2ludGVyKCkKQEAgLTk3Myw2ICs5NjIsMTYgQEAgc3RydWN0IE5v
ZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KHJlaW50
ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9vcEluZm8pKTsKICAgICB9CisgICAgCisgICAgYm9vbCBo
YXNWYXJpYWJsZVdhdGNocG9pbnRTZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0g
Tm90aWZ5V3JpdGUgfHwgb3AoKSA9PSBWYXJpYWJsZVdhdGNocG9pbnQ7CisgICAgfQorICAgIAor
ICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogdmFyaWFibGVXYXRjaHBvaW50U2V0KCkKKyAgICB7
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZhcmlhYmxlV2F0Y2hwb2ludFNldCo+
KG1fb3BJbmZvKTsKKyAgICB9CiAKICAgICBib29sIGhhc1N0cnVjdHVyZVRyYW5zaXRpb25EYXRh
KCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShy
ZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw4ICsxODQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0Q2xvc3VyZVZhciwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKEdldEdsb2JhbFZhciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0
R2xvYmFsVmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oTm90aWZ5UHV0R2xvYmFs
VmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oR2xvYmFsVmFyV2F0Y2hwb2ludCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKE5vdGlmeVdyaXRlLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCisgICAgbWFjcm8oVmFyaWFibGVXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oVmFySW5qZWN0aW9uV2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKENoZWNrRnVuY3Rpb24sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhB
bGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTU5
NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTk4LDEyICs5OTgsMTIgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25Td2l0Y2hTdHJpbgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oZXhlYy0+Y29k
ZUJsb2NrKCktPnN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlGb3JWYWx1ZShz
dHJpbmctPnZhbHVlKGV4ZWMpLmltcGwoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiB9CiAKLXZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFdh
dGNocG9pbnRTZXQqIHNldCkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbnZhbGlkYXRl
KEV4ZWNTdGF0ZSogZXhlYywgVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQpCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7CiAKLSAgICBzZXQtPm5vdGlmeVdyaXRlKCk7CisgICAgc2V0LT5pbnZhbGlkYXRlKCk7
CiB9CiAKIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkZNb2RPbkludHMoaW50MzJfdCBh
LCBpbnQzMl90IGIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTWFrZVJvcGUyCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTWFrZVJvcGUzKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgSlNTdHJpbmcqLCBKU1N0cmlu
ZyopOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0Rm9y
RG91YmxlKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBzaXplX3QgdGFibGVJbmRleCk7CiBj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaFN0cmluZyhFeGVjU3RhdGUqLCBzaXpl
X3QgdGFibGVJbmRleCwgSlNTdHJpbmcqKTsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
b3RpZnlXcml0ZShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0Kik7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW52YWxpZGF0ZShFeGVjU3RhdGUqLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQq
KTsKIAogI2lmIEVOQUJMRShGVExfSklUKQogLy8gRklYTUU6IE1ha2UgY2FsbHMgd29yayB3ZWxs
LiBDdXJyZW50bHkgdGhleSdyZSBhIHB1cmUgcmVncmVzc2lvbi4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc0
LDcgKzU3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246CiAg
ICAgICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDaGVja0FyZ3VtZW50
c05vdENyZWF0ZWQ6Ci0gICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAg
Y2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hw
b2ludDoKICAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgICAg
IGNhc2UgUGhhbnRvbToKQEAgLTU4Miw3ICs1ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IENoZWNrV2F0Y2hkb2dUaW1lcjoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAg
Y2FzZSBMb29wSGludDoKLSAgICAgICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6CisgICAgICAg
IGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
ICAgICAvLyBUaGlzIGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IGFscmVhZHkgaGFzIGEgcHJlZGlj
dGlvbi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6
CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgY2Fz
ZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAg
IGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKICAgICBjYXNlIENoZWNrRnVuY3Rpb246CiAg
ICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CkBAIC0yNDIsNyArMjQyLDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSW50NTJU
b0RvdWJsZToKICAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICBjYXNlIEludmFsaWRhdGlvblBv
aW50OgotICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFsVmFyOgorICAgIGNhc2UgTm90aWZ5V3JpdGU6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDcxLDMzICs0
MDcxLDY0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OiB7Ci0jaWYg
REZHX0VOQUJMRShKSVRfQVNTRVJUKQotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwotICAgICAgICBt
X2ppdC5sb2FkMzIobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCktPnRhZ1BvaW50ZXIoKSwgc2NyYXRj
aEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE9LID0gbV9qaXQuYnJhbmNoMzIo
Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsCi0gICAgICAg
ICAgICBUcnVzdGVkSW1tMzIobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCktPmdldCgpLnRhZygpKSk7
Ci0gICAgICAgIG1faml0LmxvYWQzMihub2RlLT5yZWdpc3RlclBvaW50ZXIoKS0+cGF5bG9hZFBv
aW50ZXIoKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG9rID0gbV9q
aXQuYnJhbmNoMzIoCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHNjcmF0Y2hHUFIs
Ci0gICAgICAgICAgICBUcnVzdGVkSW1tMzIobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCktPmdldCgp
LnBheWxvYWQoKSkpOwotICAgICAgICBub3RPSy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0
LmJyZWFrcG9pbnQoKTsKLSAgICAgICAgb2subGluaygmbV9qaXQpOwotI2VuZGlmCisgICAgY2Fz
ZSBOb3RpZnlXcml0ZTogeworICAgICAgICBWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHNldCA9IG5v
ZGUtPnZhcmlhYmxlV2F0Y2hwb2ludFNldCgpOworICAgIAorICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyB2YWx1ZVRhZ0dQ
UiA9IHZhbHVlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkR1BSID0gdmFs
dWUucGF5bG9hZEdQUigpOworICAgIAorICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgIAorICAgICAgICBtX2pp
dC5sb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHRlbXBHUFIpOworICAgIAorICAgICAgICBK
SVRDb21waWxlcjo6SnVtcExpc3QgcmVhZHk7CisgICAgCisgICAgICAgIHJlYWR5LmFwcGVuZCht
X2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihJ
c0ludmFsaWRhdGVkKSkpOworICAgIAorICAgICAgICBpZiAoc2V0LT5zdGF0ZSgpID09IENsZWFy
V2F0Y2hwb2ludCkgeworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNXYXRjaGVkID0K
KyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHRl
bXBHUFIsIFRydXN0ZWRJbW0zMihDbGVhcldhdGNocG9pbnQpKTsKICAgICAgICAgCi0gICAgICAg
IG5vUmVzdWx0KG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgICAgICAgICBtX2pp
dC5zdG9yZTMyKHZhbHVlVGFnR1BSLCAmc2V0LT5hZGRyZXNzT2ZJbmZlcnJlZFZhbHVlKCktPnUu
YXNCaXRzLnRhZyk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlUGF5bG9hZEdQUiwg
JnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0cy5wYXlsb2FkKTsKKyAgICAg
ICAgICAgIG1faml0LnN0b3JlOChUcnVzdGVkSW1tMzIoSXNXYXRjaGVkKSwgc2V0LT5hZGRyZXNz
T2ZTdGF0ZSgpKTsKKyAgICAgICAgICAgIHJlYWR5LmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAg
ICAgICAKKyAgICAgICAgICAgIGlzV2F0Y2hlZC5saW5rKCZtX2ppdCk7CisgICAgICAgIH0KIAot
ICAgIGNhc2UgTm90aWZ5UHV0R2xvYmFsVmFyOiB7Ci0gICAgICAgIGNvbXBpbGVOb3RpZnlQdXRH
bG9iYWxWYXIobm9kZSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlOb3RF
cXVhbCA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcygmc2V0LT5hZGRyZXNz
T2ZJbmZlcnJlZFZhbHVlKCktPnUuYXNCaXRzLnBheWxvYWQpLAorICAgICAgICAgICAgdmFsdWVQ
YXlsb2FkR1BSKTsKKyAgICAgICAgcmVhZHkuYXBwZW5kKG1faml0LmJyYW5jaDMyKAorICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYnNv
bHV0ZUFkZHJlc3MoJnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0cy50YWcp
LAorICAgICAgICAgICAgdmFsdWVUYWdHUFIpKTsKKyAgICAgICAgZGVmaW5pdGVseU5vdEVxdWFs
LmxpbmsoJm1faml0KTsKKyAgICAKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd0Nhc2Ug
PSBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCBK
SVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKHNldC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgp
KSk7CisgICAgICAgIG1faml0LnN0b3JlOChUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCksIHNl
dC0+YWRkcmVzc09mU3RhdGUoKSk7CisgICAgICAgIG1faml0LnN0b3JlMzIoCisgICAgICAgICAg
ICBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZyksCisgICAgICAgICAgICAmc2V0
LT5hZGRyZXNzT2ZJbmZlcnJlZFZhbHVlKCktPnUuYXNCaXRzLnRhZyk7CisgICAgICAgIG1faml0
LnN0b3JlMzIoCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIoMCksICZzZXQtPmFkZHJlc3NPZklu
ZmVycmVkVmFsdWUoKS0+dS5hc0JpdHMucGF5bG9hZCk7CisKKyAgICAgICAgcmVhZHkubGluaygm
bV9qaXQpOworICAgIAorICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbChzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uSW52YWxpZGF0ZSwgTm9SZXN1
bHQsIHNldCkpOworICAgIAorICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OiB7CisgICAgY2FzZSBW
YXJJbmplY3Rpb25XYXRjaHBvaW50OgorICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OiB7CiAg
ICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNTMsMjggKzQzNTMsNTMgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKLSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6IHsKLSNpZiBERkdfRU5BQkxFKEpJVF9B
U1NFUlQpCi0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAgIG1faml0LmxvYWQ2NChub2Rl
LT5yZWdpc3RlclBvaW50ZXIoKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIG9rID0gbV9qaXQuYnJhbmNoNjQoCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWws
IHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKG5v
ZGUtPnJlZ2lzdGVyUG9pbnRlcigpLT5nZXQoKSkpKTsKLSAgICAgICAgbV9qaXQuYnJlYWtwb2lu
dCgpOwotICAgICAgICBvay5saW5rKCZtX2ppdCk7Ci0jZW5kaWYKKyAgICBjYXNlIE5vdGlmeVdy
aXRlOiB7CisgICAgICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gbm9kZS0+dmFyaWFi
bGVXYXRjaHBvaW50U2V0KCk7CisgICAgCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3By
KCk7CisgICAgCisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJS
ZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgCisgICAgICAgIG1faml0LmxvYWQ4KHNldC0+
YWRkcmVzc09mU3RhdGUoKSwgdGVtcEdQUik7CisgICAgCisgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCByZWFkeTsKKyAgICAKKyAgICAgICAgcmVhZHkuYXBwZW5kKG1faml0LmJyYW5jaDMy
KEpJVENvbXBpbGVyOjpFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQp
KSk7CisgICAgCisgICAgICAgIGlmIChzZXQtPnN0YXRlKCkgPT0gQ2xlYXJXYXRjaHBvaW50KSB7
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1dhdGNoZWQgPQorICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3Rl
ZEltbTMyKENsZWFyV2F0Y2hwb2ludCkpOworICAgICAgICAKKyAgICAgICAgICAgIG1faml0LnN0
b3JlNjQodmFsdWVHUFIsIHNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpKTsKKyAgICAgICAg
ICAgIG1faml0LnN0b3JlOChUcnVzdGVkSW1tMzIoSXNXYXRjaGVkKSwgc2V0LT5hZGRyZXNzT2ZT
dGF0ZSgpKTsKKyAgICAgICAgICAgIHJlYWR5LmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAg
ICAKKyAgICAgICAgICAgIGlzV2F0Y2hlZC5saW5rKCZtX2ppdCk7CisgICAgICAgIH0KKyAgICAK
KyAgICAgICAgcmVhZHkuYXBwZW5kKG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgSklUQ29t
cGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3Mo
c2V0LT5hZGRyZXNzT2ZJbmZlcnJlZFZhbHVlKCkpLCB2YWx1ZUdQUikpOworICAgIAorICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3Mo
c2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmU4KFRy
dXN0ZWRJbW0zMihJc0ludmFsaWRhdGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCB0
ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQuc3RvcmU2NCh0ZW1wR1BSLCBzZXQtPmFkZHJlc3NPZklu
ZmVycmVkVmFsdWUoKSk7CisKKyAgICAgICAgcmVhZHkubGluaygmbV9qaXQpOworICAgIAorICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93
Q2FzZSwgdGhpcywgb3BlcmF0aW9uSW52YWxpZGF0ZSwgTm9SZXN1bHQsIHNldCkpOworICAgIAog
ICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAK
LSAgICBjYXNlIE5vdGlmeVB1dEdsb2JhbFZhcjogewotICAgICAgICBjb21waWxlTm90aWZ5UHV0
R2xvYmFsVmFyKG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9CiAKLSAgICBjYXNlIFZhcklu
amVjdGlvbldhdGNocG9pbnQ6IHsKKyAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6Cisg
ICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6IHsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUzOSw4ICszNTM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5v
ZAogICAgICAgICAKICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlLT5jaGlsZDIoKS5u
b2RlKCkpKSB7CiAgICAgICAgICAgICBpbnQzMl90IGRpdmlzb3IgPSB2YWx1ZU9mSW50MzJDb25z
dGFudChub2RlLT5jaGlsZDIoKS5ub2RlKCkpOwotICAgICAgICAgICAgaWYgKGRpdmlzb3IgPiAw
ICYmIGhhc09uZUJpdFNldChkaXZpc29yKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChkaXZp
c29yICE9IDEpOworICAgICAgICAgICAgaWYgKGRpdmlzb3IgPiAxICYmIGhhc09uZUJpdFNldChk
aXZpc29yKSkgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvZ2FyaXRobSA9IFdURjo6ZmFz
dExvZzIoZGl2aXNvcik7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGRpdmlkZW5kR1BSID0gb3Ax
LmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC01
NjAxLDQ0ICs1NjAwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaChOb2RlKiBu
bwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOb3RpZnlQdXRHbG9iYWxWYXIoTm9kZSogbm9kZSkKLXsKLSAgICBXYXRj
aHBvaW50U2V0KiBzZXQgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbikt
PnN5bWJvbFRhYmxlKCktPmdldCgKLSAgICAgICAgbV9qaXQuZ3JhcGgoKS5pZGVudGlmaWVycygp
W25vZGUtPmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpXSkud2F0Y2hwb2ludFNldCgpOwotICAg
IAotICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVt
cC5ncHIoKTsKLSAgICAKLSAgICBtX2ppdC5sb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHRl
bXBHUFIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCByZWFkeTsKLSAgICAKLSAg
ICByZWFkeS5hcHBlbmQobV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCB0ZW1wR1BS
LCBUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCkpKTsKLSAgICAKLSAgICBtX2ppdC5tZW1vcnlG
ZW5jZSgpOwotCi0gICAgaWYgKHNldC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKLSAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNXYXRjaGVkID0KLSAgICAgICAgICAgIG1faml0LmJy
YW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKENsZWFy
V2F0Y2hwb2ludCkpOwotICAgICAgICAKLSAgICAgICAgbV9qaXQuc3RvcmU4KFRydXN0ZWRJbW0z
MihJc1dhdGNoZWQpLCBzZXQtPmFkZHJlc3NPZlN0YXRlKCkpOwotICAgICAgICByZWFkeS5hcHBl
bmQobV9qaXQuanVtcCgpKTsKLSAgICAgICAgCi0gICAgICAgIGlzV2F0Y2hlZC5saW5rKCZtX2pp
dCk7Ci0gICAgfQotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQu
YnJhbmNoVGVzdDgoCi0gICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6
QWJzb2x1dGVBZGRyZXNzKHNldC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpKSk7Ci0gICAgbV9q
aXQuc3RvcmU4KFRydXN0ZWRJbW0zMihJc0ludmFsaWRhdGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0
ZSgpKTsKLQotICAgIHJlYWR5LmxpbmsoJm1faml0KTsKLSAgICAKLSAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcigKLSAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25O
b3RpZnlXcml0ZSwgTm9SZXN1bHQsIHNldCkpOwotICAgIAotICAgIG5vUmVzdWx0KG5vZGUpOwot
fQotCiB2b2lkIFNwZWN1bGF0aXZlSklUOjphZGRCcmFuY2goY29uc3QgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0JiBqdW1wLCBCYXNpY0Jsb2NrKiBkZXN0aW5hdGlvbikKIHsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBqdW1wLmp1bXBzKCkuc2l6ZSgpOyBpLS07KQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU5NzMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDg0LDcgKzEwODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQogCi0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FVyBvcGVyYXRpb24sIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FVndzIG9wZXJhdGlvbiwgVmFyaWFibGVXYXRjaHBvaW50
U2V0KiB3YXRjaHBvaW50U2V0KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwpAQCAtMjA0NSw4ICsyMDQ1LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uRXhwcmVzc2lvbihOb2RlKik7CiAgICAgYm9vbCBj
b21waWxlUmVnRXhwRXhlYyhOb2RlKik7CiAgICAgCi0gICAgdm9pZCBjb21waWxlTm90aWZ5UHV0
R2xvYmFsVmFyKE5vZGUqKTsKLSAgICAKICAgICAvLyBzaXplIGNhbiBiZSBhbiBpbW1lZGlhdGUg
b3IgYSByZWdpc3RlciwgYW5kIG11c3QgYmUgaW4gYnl0ZXMuIElmIHNpemUgaXMgYSByZWdpc3Rl
ciwKICAgICAvLyBpdCBtdXN0IGJlIGEgZGlmZmVyZW50IHJlZ2lzdGVyIHRoYW4gcmVzdWx0R1BS
LiBFbWl0cyBjb2RlIHRoYXQgcGxhY2UgYSBwb2ludGVyIHRvCiAgICAgLy8gdGhlIGVuZCBvZiB0
aGUgYWxsb2NhdGlvbi4gVGhlIHJldHVybmVkIGp1bXAgaXMgdGhlIGp1bXAgdG8gdGhlIHNsb3cg
cGF0aC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxl
Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDEwICsxMTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIG1fbm9kZS0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBHbG9iYWxWYXJXYXRj
aHBvaW50OgotICAgICAgICAgICAgYWRkTGF6aWx5KAotICAgICAgICAgICAgICAgIGdsb2JhbE9i
amVjdCgpLT5zeW1ib2xUYWJsZSgpLT5nZXQoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpXSkud2F0Y2hw
b2ludFNldCgpKTsKKyAgICAgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CisgICAgICAgICAg
ICBhZGRMYXppbHkobV9ub2RlLT52YXJpYWJsZVdhdGNocG9pbnRTZXQoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9p
bnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAg
ICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgY2FzZSBO
b3RpZnlQdXRHbG9iYWxWYXI6CiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRk
OgogICAgIGNhc2UgQXJpdGhTdWI6CkBAIC05Miw3ICs5MSw2IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIExvb3BIaW50OgogICAgIGNhc2UgQ2Fs
bDoKICAgICBjYXNlIENvbnN0cnVjdDoKLSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAg
ICAgY2FzZSBHZXRNeVNjb3BlOgogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0Q2xv
c3VyZVJlZ2lzdGVyczoKQEAgLTEwNCw2ICsxMDIsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVs
IGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgogICAgIGNhc2UgU3Ry
aW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgorICAgIGNh
c2UgVmFyaWFibGVXYXRjaHBvaW50OgorICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIC8v
IFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHZXRCeUlkOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJl
dmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsMTEgKzM5NCwxMCBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKICAgICAgICAgICAgIGNvbXBpbGVQdXRHbG9iYWxW
YXIoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5vdGlmeVB1dEdsb2JhbFZh
cjoKLSAgICAgICAgICAgIGNvbXBpbGVOb3RpZnlQdXRHbG9iYWxWYXIoKTsKKyAgICAgICAgY2Fz
ZSBOb3RpZnlXcml0ZToKKyAgICAgICAgICAgIGNvbXBpbGVOb3RpZnlXcml0ZSgpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKLSAgICAgICAg
ICAgIGNvbXBpbGVHbG9iYWxWYXJXYXRjaHBvaW50KCk7CisgICAgICAgIGNhc2UgVmFyaWFibGVX
YXRjaHBvaW50OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0TXlTY29wZToK
ICAgICAgICAgICAgIGNvbXBpbGVHZXRNeVNjb3BlKCk7CkBAIC0yMTE3LDE3ICsyMTE2LDIwIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291
dC5hYnNvbHV0ZShtX25vZGUtPnJlZ2lzdGVyUG9pbnRlcigpKSk7CiAgICAgfQogICAgIAotICAg
IHZvaWQgY29tcGlsZU5vdGlmeVB1dEdsb2JhbFZhcigpCisgICAgdm9pZCBjb21waWxlTm90aWZ5
V3JpdGUoKQogICAgIHsKICAgICAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5jb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKS0+Z2V0KAogICAg
ICAgICAgICAgbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlckZv
ckNoZWNrKCldKS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgIAotICAgICAgICBMQmFzaWNCbG9j
ayBpc05vdEludmFsaWRhdGVkID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOb3RpZnlQdXRHbG9i
YWxWYXIgbm90IGludmFsaWRhdGVkIGNhc2UiKSk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGlzQ2xl
YXIgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVB1dEdsb2JhbFZhciBjbGVhciBjYXNl
IikpOwotICAgICAgICBMQmFzaWNCbG9jayBpc1dhdGNoZWQgPSBGVExfTkVXX0JMT0NLKG1fb3V0
LCAoIk5vdGlmeVB1dEdsb2JhbFZhciB3YXRjaGVkIGNhc2UiKSk7Ci0gICAgICAgIExCYXNpY0Js
b2NrIGlzV2F0Y2hlZEZhc3QgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVB1dEdsb2Jh
bFZhciB3YXRjaGVkIGZhc3QgY2FzZSIpKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgaXNXYXRjaGVk
U2xvdyA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTm90aWZ5UHV0R2xvYmFsVmFyIHdhdGNoZWQg
c2xvdyBjYXNlIikpOwotICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVX
X0JMT0NLKG1fb3V0LCAoIk5vdGlmeVB1dEdsb2JhbFZhciBjb250aW51YXRpb24iKSk7CisgICAg
ICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAK
KyAgICAgICAgTEJhc2ljQmxvY2sgaXNOb3RJbnZhbGlkYXRlZCA9IEZUTF9ORVdfQkxPQ0sobV9v
dXQsICgiTm90aWZ5V3JpdGUgbm90IGludmFsaWRhdGVkIGNhc2UiKSk7CisgICAgICAgIExCYXNp
Y0Jsb2NrIGlzQ2xlYXIgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVdyaXRlIGNsZWFy
IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzV2F0Y2hlZCA9IEZUTF9ORVdfQkxPQ0so
bV9vdXQsICgiTm90aWZ5V3JpdGUgd2F0Y2hlZCBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9j
ayBpbnZhbGlkYXRlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOb3RpZnlXcml0ZSBpbnZhbGlk
YXRlIGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGludmFsaWRhdGVGYXN0ID0gRlRMX05F
V19CTE9DSyhtX291dCwgKCJOb3RpZnlXcml0ZSBpbnZhbGlkYXRlIGZhc3QgY2FzZSIpKTsKKyAg
ICAgICAgTEJhc2ljQmxvY2sgaW52YWxpZGF0ZVNsb3cgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
Ik5vdGlmeVdyaXRlIGludmFsaWRhdGUgc2xvdyBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVdyaXRlIGNvbnRp
bnVhdGlvbiIpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBzdGF0ZSA9IG1fb3V0LmxvYWQ4
KG1fb3V0LmFic29sdXRlKHNldC0+YWRkcmVzc09mU3RhdGUoKSkpOwogICAgICAgICAKQEAgLTIx
MzcsOCArMjEzOSw2IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzTm90SW52YWxpZGF0ZWQsIGlzQ2xlYXIpOwogCi0g
ICAgICAgIG1fb3V0LmZlbmNlQWNxUmVsKCk7Ci0gICAgICAgIAogICAgICAgICBMVmFsdWUgaXND
bGVhclZhbHVlOwogICAgICAgICBpZiAoc2V0LT5zdGF0ZSgpID09IENsZWFyV2F0Y2hwb2ludCkK
ICAgICAgICAgICAgIGlzQ2xlYXJWYWx1ZSA9IG1fb3V0LmVxdWFsKHN0YXRlLCBtX291dC5jb25z
dEludDgoQ2xlYXJXYXRjaHBvaW50KSk7CkBAIC0yMTQ4LDM0ICsyMTQ4LDM4IEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhpc0NsZWFyLCBpc1dhdGNoZWQpOwog
ICAgICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgbV9vdXQuYWJzb2x1dGUoc2V0
LT5hZGRyZXNzT2ZJbmZlcnJlZFZhbHVlKCkpKTsKICAgICAgICAgbV9vdXQuc3RvcmU4KG1fb3V0
LmNvbnN0SW50OChJc1dhdGNoZWQpLCBtX291dC5hYnNvbHV0ZShzZXQtPmFkZHJlc3NPZlN0YXRl
KCkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKLSAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oaXNXYXRjaGVkLCBpc1dhdGNoZWRGYXN0KTsKKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8oaXNXYXRjaGVkLCBpbnZhbGlkYXRlKTsKKyAgICAgICAgCisgICAgICAgIG1f
b3V0LmJyYW5jaDY0KAorICAgICAgICAgICAgbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmxvYWQ2
NChzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKSkpLAorICAgICAgICAgICAgY29udGludWF0
aW9uLCBpbnZhbGlkYXRlKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGludmFs
aWRhdGUsIGludmFsaWRhdGVGYXN0KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgK
ICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm84KG1fb3V0LmxvYWQ4KG1fb3V0LmFic29sdXRlKHNl
dC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpKSkpLAotICAgICAgICAgICAgaXNXYXRjaGVkU2xv
dywgaXNXYXRjaGVkRmFzdCk7CisgICAgICAgICAgICBpbnZhbGlkYXRlU2xvdywgaW52YWxpZGF0
ZUZhc3QpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNXYXRjaGVkRmFzdCwg
aXNXYXRjaGVkU2xvdyk7CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGludmFsaWRhdGVGYXN0LCBp
bnZhbGlkYXRlU2xvdyk7CiAgICAgICAgIAorICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKSksCisgICAg
ICAgICAgICBtX291dC5hYnNvbHV0ZShzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKSkpOwog
ICAgICAgICBtX291dC5zdG9yZTgobV9vdXQuY29uc3RJbnQ4KElzSW52YWxpZGF0ZWQpLCBtX291
dC5hYnNvbHV0ZShzZXQtPmFkZHJlc3NPZlN0YXRlKCkpKTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNXYXRjaGVk
U2xvdywgY29udGludWF0aW9uKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW52YWxpZGF0ZVNs
b3csIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAotICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbk5vdGlmeVdyaXRlKSwgbV9jYWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50UHRy
KHNldCkpOworICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkludmFsaWRh
dGUpLCBtX2NhbGxGcmFtZSwgbV9vdXQuY29uc3RJbnRQdHIoc2V0KSk7CiAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVHbG9i
YWxWYXJXYXRjaHBvaW50KCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbiBkZWJ1ZyBtb2Rl
IHdlIGNvdWxkIGVtaXQgc29tZSBhc3NlcnRpb24gY29kZSBoZXJlLgotICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDcxCi0gICAgfQotICAgIAog
ICAgIHZvaWQgY29tcGlsZUdldE15U2NvcGUoKQogICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5sb2FkUHRyKGFkZHJlc3NGb3IoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJl
dmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTYxOCw3ICs2MTgsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdEdldEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCk7CiAgICAgICAgIHZvaWQgZW1p
dEdldENsb3N1cmVWYXIoaW50IHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFuZCk7CiAgICAgICAgIHZv
aWQgZW1pdFB1dEdsb2JhbFByb3BlcnR5KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QsIGludCB2YWx1
ZSk7Ci0gICAgICAgIHZvaWQgZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50
IHZhbHVlLCBXYXRjaHBvaW50U2V0Kik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdm9p
ZCBlbWl0Tm90aWZ5V3JpdGUoUmVnaXN0ZXJJRCB2YWx1ZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBW
YXJpYWJsZVdhdGNocG9pbnRTZXQqKTsKKyNlbHNlCisgICAgICAgIHZvaWQgZW1pdE5vdGlmeVdy
aXRlKFJlZ2lzdGVySUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGVySUQgc2NyYXRj
aCwgVmFyaWFibGVXYXRjaHBvaW50U2V0Kik7CisjZW5kaWYKKyAgICAgICAgdm9pZCBlbWl0UHV0
R2xvYmFsVmFyKHVpbnRwdHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUsIFZhcmlhYmxlV2F0Y2hwb2lu
dFNldCopOwogICAgICAgICB2b2lkIGVtaXRQdXRDbG9zdXJlVmFyKGludCBzY29wZSwgdWludHB0
cl90IG9wZXJhbmQsIGludCB2YWx1ZSk7CiAKICAgICAgICAgdm9pZCBlbWl0SW5pdFJlZ2lzdGVy
KGludCBkc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
U3R1YkluZm8uaCIKLSNpbmNsdWRlICJXYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiVmFyaWFibGVX
YXRjaHBvaW50U2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03Niw3ICs3Niw3IEBAIGV4
dGVybiAiQyIgewogICAgIFN0OiBTdHJ1Y3R1cmUqCiAgICAgVjogdm9pZAogICAgIFZtOiBWTSoK
LSAgICBXOiBXYXRjaHBvaW50U2V0KgorICAgIFZ3czogVmFyaWFibGVXYXRjaHBvaW50U2V0Kgog
ICAgIFo6IGludDMyX3QKICovCiB0eXBlZGVmIENhbGxGcmFtZSogSklUX09QRVJBVElPTiAoKkZf
SklUT3BlcmF0aW9uX0VKSlopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgaW50MzJfdCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVS
QVRJT04gKCpWX0pJVE9wZXJhdAogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9w
ZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQz
Ml90LCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklU
T3BlcmF0aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKik7Ci10eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VXKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0
Kik7Cit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VWd3MpKEV4
ZWNTdGF0ZSosIFZhcmlhYmxlV2F0Y2hwb2ludFNldCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVS
QVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVm
IHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VWbSkoRXhlY1N0YXRlKiwgVk0q
KTsKIHR5cGVkZWYgY2hhciogSklUX09QRVJBVElPTiAoKlBfSklUT3BlcmF0aW9uX0UpKEV4ZWNT
dGF0ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MDcsMzcgKzgwNyw0OCBAQCB2b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFByb3BlcnR5KHVpbnRw
dHJfCiAgICAgc3RvcmUzMihyZWdUMiwgQmFzZUluZGV4KHJlZ1QwLCByZWdUMSwgVGltZXNFaWdo
dCwgKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsg
T0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkp
OwogfQogCi12b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50
IHZhbHVlLCBXYXRjaHBvaW50U2V0KiBzZXQpCit2b2lkIEpJVDo6ZW1pdE5vdGlmeVdyaXRlKFJl
Z2lzdGVySUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGVySUQgc2NyYXRjaCwgVmFy
aWFibGVXYXRjaHBvaW50U2V0KiBzZXQpCiB7Ci0gICAgaWYgKHNldCAmJiBzZXQtPnN0YXRlKCkg
IT0gSXNJbnZhbGlkYXRlZCkgewotICAgICAgICBsb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCks
IHJlZ1QyKTsKLSAgICAgICAgCi0gICAgICAgIEp1bXBMaXN0IHJlYWR5OwotICAgICAgICAKLSAg
ICAgICAgcmVhZHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKElz
SW52YWxpZGF0ZWQpKSk7CisgICAgaWYgKCFzZXQgfHwgc2V0LT5zdGF0ZSgpID09IElzSW52YWxp
ZGF0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBsb2FkOChzZXQtPmFkZHJlc3NPZlN0
YXRlKCksIHNjcmF0Y2gpOworICAgIAorICAgIEp1bXBMaXN0IHJlYWR5OworICAgIAorICAgIHJl
YWR5LmFwcGVuZChicmFuY2gzMihFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKElzSW52YWxp
ZGF0ZWQpKSk7CisgICAgCisgICAgaWYgKHNldC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQp
IHsKKyAgICAgICAgSnVtcCBpc1dhdGNoZWQgPSBicmFuY2gzMihOb3RFcXVhbCwgc2NyYXRjaCwg
VHJ1c3RlZEltbTMyKENsZWFyV2F0Y2hwb2ludCkpOwogICAgICAgICAKLSAgICAgICAgaWYgKHNl
dC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKLSAgICAgICAgICAgIEp1bXAgaXNXYXRj
aGVkID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQ2xlYXJXYXRjaHBv
aW50KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKElzV2F0
Y2hlZCksIHJlZ1QyKTsKLSAgICAgICAgICAgIHJlYWR5LmFwcGVuZChqdW1wKCkpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpc1dhdGNoZWQubGluayh0aGlzKTsKLSAgICAgICAgfQorICAg
ICAgICBzdG9yZTMyKHRhZywgJnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0
cy50YWcpOworICAgICAgICBzdG9yZTMyKHBheWxvYWQsICZzZXQtPmFkZHJlc3NPZkluZmVycmVk
VmFsdWUoKS0+dS5hc0JpdHMucGF5bG9hZCk7CisgICAgICAgIHN0b3JlOChUcnVzdGVkSW1tMzIo
SXNXYXRjaGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAgICAgICAgcmVhZHkuYXBwZW5k
KGp1bXAoKSk7CiAgICAgICAgIAotICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25a
ZXJvLCBBYnNvbHV0ZUFkZHJlc3Moc2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkpKSk7Ci0g
ICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpLCByZWdUMik7Ci0gICAgICAg
IHJlYWR5LmxpbmsodGhpcyk7CisgICAgICAgIGlzV2F0Y2hlZC5saW5rKHRoaXMpOwogICAgIH0K
KworICAgIEp1bXAgZGVmaW5pdGVseU5vdEVxdWFsID0gYnJhbmNoMzIoCisgICAgICAgIE5vdEVx
dWFsLCBBYnNvbHV0ZUFkZHJlc3MoJnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFz
Qml0cy5wYXlsb2FkKSwgcGF5bG9hZCk7CisgICAgcmVhZHkuYXBwZW5kKGJyYW5jaDMyKAorICAg
ICAgICBFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUo
KS0+dS5hc0JpdHMudGFnKSwgdGFnKSk7CisgICAgZGVmaW5pdGVseU5vdEVxdWFsLmxpbmsodGhp
cyk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNz
KHNldC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpKSkpOworICAgIHN0b3JlOChUcnVzdGVkSW1t
MzIoSXNJbnZhbGlkYXRlZCksIHNldC0+YWRkcmVzc09mU3RhdGUoKSk7CisgICAgc3RvcmUzMigK
KyAgICAgICAgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpLCAmc2V0LT5hZGRy
ZXNzT2ZJbmZlcnJlZFZhbHVlKCktPnUuYXNCaXRzLnRhZyk7CisgICAgc3RvcmUzMihUcnVzdGVk
SW1tMzIoMCksICZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKS0+dS5hc0JpdHMucGF5bG9h
ZCk7CiAgICAgCisgICAgcmVhZHkubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRQdXRH
bG9iYWxWYXIodWludHB0cl90IG9wZXJhbmQsIGludCB2YWx1ZSwgVmFyaWFibGVXYXRjaHBvaW50
U2V0KiBzZXQpCit7CiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CisgICAgZW1p
dE5vdGlmeVdyaXRlKHJlZ1QxLCByZWdUMCwgcmVnVDIsIHNldCk7CiAgICAgc3RvcmUzMihyZWdU
MSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ob3BlcmFuZCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwogICAgIHN0b3JlMzIocmVnVDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG9wZXJhbmQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7Ci0gICAgCi0gICAgaWYgKHNldCAmJiBz
ZXQtPnN0YXRlKCkgIT0gSXNJbnZhbGlkYXRlZCkgewotICAgICAgICBtZW1vcnlGZW5jZSgpOwot
ICAgICAgICBzdG9yZTgocmVnVDEsIHNldC0+YWRkcmVzc09mU3RhdGUoKSk7Ci0gICAgfQogfQog
CiB2b2lkIEpJVDo6ZW1pdFB1dENsb3N1cmVWYXIoaW50IHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFu
ZCwgaW50IHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzEsMzYg
Kzc3MSw0MSBAQCB2b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFByb3BlcnR5KHVpbnRwdHJfCiAgICAg
c3RvcmVQdHIocmVnVDIsIEJhc2VJbmRleChyZWdUMCwgcmVnVDEsIFRpbWVzRWlnaHQsIChmaXJz
dE91dE9mTGluZU9mZnNldCAtIDIpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwogfQogCi12
b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlLCBX
YXRjaHBvaW50U2V0KiBzZXQpCit2b2lkIEpJVDo6ZW1pdE5vdGlmeVdyaXRlKFJlZ2lzdGVySUQg
dmFsdWUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQpCiB7
Ci0gICAgaWYgKHNldCAmJiBzZXQtPnN0YXRlKCkgIT0gSXNJbnZhbGlkYXRlZCkgewotICAgICAg
ICBsb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHJlZ1QxKTsKLSAgICAgICAgCi0gICAgICAg
IEp1bXBMaXN0IHJlYWR5OwotICAgICAgICAKLSAgICAgICAgcmVhZHkuYXBwZW5kKGJyYW5jaDMy
KEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7CisgICAgaWYgKCFz
ZXQgfHwgc2V0LT5zdGF0ZSgpID09IElzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBsb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHNjcmF0Y2gpOworICAgIAorICAg
IEp1bXBMaXN0IHJlYWR5OworICAgIAorICAgIHJlYWR5LmFwcGVuZChicmFuY2gzMihFcXVhbCwg
c2NyYXRjaCwgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7CisgICAgCisgICAgaWYgKHNl
dC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKKyAgICAgICAgSnVtcCBpc1dhdGNoZWQg
PSBicmFuY2gzMihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKENsZWFyV2F0Y2hwb2lu
dCkpOwogICAgICAgICAKLSAgICAgICAgaWYgKHNldC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9p
bnQpIHsKLSAgICAgICAgICAgIEp1bXAgaXNXYXRjaGVkID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoQ2xlYXJXYXRjaHBvaW50KSk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKElzV2F0Y2hlZCksIHJlZ1QxKTsKLSAgICAgICAgICAg
IHJlYWR5LmFwcGVuZChqdW1wKCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpc1dhdGNo
ZWQubGluayh0aGlzKTsKLSAgICAgICAgfQorICAgICAgICBzdG9yZTY0KHZhbHVlLCBzZXQtPmFk
ZHJlc3NPZkluZmVycmVkVmFsdWUoKSk7CisgICAgICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoSXNX
YXRjaGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAgICAgICAgcmVhZHkuYXBwZW5kKGp1
bXAoKSk7CiAgICAgICAgIAotICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJv
LCBBYnNvbHV0ZUFkZHJlc3Moc2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkpKSk7Ci0gICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpLCByZWdUMSk7Ci0gICAgICAgIHJl
YWR5LmxpbmsodGhpcyk7CisgICAgICAgIGlzV2F0Y2hlZC5saW5rKHRoaXMpOwogICAgIH0KICAg
ICAKKyAgICByZWFkeS5hcHBlbmQoYnJhbmNoNjQoRXF1YWwsIEFic29sdXRlQWRkcmVzcyhzZXQt
PmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKSksIHZhbHVlKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNzKHNldC0+YWRkcmVzc09mU2V0SXNOb3RF
bXB0eSgpKSkpOworICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCksIHNldC0+
YWRkcmVzc09mU3RhdGUoKSk7CisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSkpLCBzY3JhdGNoKTsKKyAgICBzdG9yZTY0KHNjcmF0Y2gsIHNldC0+YWRkcmVz
c09mSW5mZXJyZWRWYWx1ZSgpKTsKKyAgICAKKyAgICByZWFkeS5saW5rKHRoaXMpOworfQorCit2
b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlLCBW
YXJpYWJsZVdhdGNocG9pbnRTZXQqIHNldCkKK3sKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHZhbHVlLCByZWdUMCk7CisgICAgZW1pdE5vdGlmeVdyaXRlKHJlZ1QwLCByZWdUMSwgc2V0KTsK
ICAgICBzdG9yZVB0cihyZWdUMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3BlcmFuZCkpOwot
ICAgIAotICAgIGlmIChzZXQgJiYgc2V0LT5zdGF0ZSgpICE9IElzSW52YWxpZGF0ZWQpIHsKLSAg
ICAgICAgbWVtb3J5RmVuY2UoKTsKLSAgICAgICAgc3RvcmU4KHJlZ1QxLCBzZXQtPmFkZHJlc3NP
ZlN0YXRlKCkpOwotICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRQdXRDbG9zdXJlVmFyKGludCBz
Y29wZSwgdWludHB0cl90IG9wZXJhbmQsIGludCB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjEzMiwyNSArMjEzMiwz
NSBAQCBtYWNybyBwdXRQcm9wZXJ0eSgpCiAgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDEsIHQwLCB0MiwgdDMpCiBlbmQKIAorbWFjcm8gbm90aWZ5V3JpdGUoc2V0LCB2YWx1ZVRh
ZywgdmFsdWVQYXlsb2FkLCBzY3JhdGNoLCBzbG93KQorICAgIGxvYWRiIFZhcmlhYmxlV2F0Y2hw
b2ludFNldDo6bV9zdGF0ZVtzZXRdLCBzY3JhdGNoCisgICAgYmllcSBzY3JhdGNoLCBJc0ludmFs
aWRhdGVkLCAuZG9uZQorICAgIGJpbmVxIHNjcmF0Y2gsIENsZWFyV2F0Y2hwb2ludCwgLm92ZXJ3
cml0ZQorICAgIHN0b3JlaSB2YWx1ZVRhZywgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX2luZmVy
cmVkVmFsdWUgKyBUYWdPZmZzZXRbc2V0XQorICAgIHN0b3JlaSB2YWx1ZVBheWxvYWQsIFZhcmlh
YmxlV2F0Y2hwb2ludFNldDo6bV9pbmZlcnJlZFZhbHVlICsgUGF5bG9hZE9mZnNldFtzZXRdCisg
ICAgc3RvcmViIElzV2F0Y2hlZCwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRlW3NldF0K
KyAgICBqbXAgLmRvbmUKKworLm92ZXJ3cml0ZToKKyAgICBiaW5lcSB2YWx1ZVBheWxvYWQsIFZh
cmlhYmxlV2F0Y2hwb2ludFNldDo6bV9pbmZlcnJlZFZhbHVlICsgUGF5bG9hZE9mZnNldFtzZXRd
LCAuZGVmaW5pdGVseURpZmZlcmVudAorICAgIGJpZXEgdmFsdWVUYWcsIFZhcmlhYmxlV2F0Y2hw
b2ludFNldDo6bV9pbmZlcnJlZFZhbHVlICsgVGFnT2Zmc2V0W3NldF0sIC5kb25lCisuZGVmaW5p
dGVseURpZmZlcmVudDoKKyAgICBidGJueiBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc2V0SXNO
b3RFbXB0eVtzZXRdLCBzbG93CisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFZhcmlhYmxlV2F0
Y2hwb2ludFNldDo6bV9pbmZlcnJlZFZhbHVlICsgVGFnT2Zmc2V0W3NldF0KKyAgICBzdG9yZWkg
MCwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX2luZmVycmVkVmFsdWUgKyBQYXlsb2FkT2Zmc2V0
W3NldF0KKyAgICBzdG9yZWIgSXNJbnZhbGlkYXRlZCwgVmFyaWFibGVXYXRjaHBvaW50U2V0Ojpt
X3N0YXRlW3NldF0KKworLmRvbmU6CitlbmQKKwogbWFjcm8gcHV0R2xvYmFsVmFyKCkKLSAgICBs
b2FkcEZyb21JbnN0cnVjdGlvbig1LCB0MikKLSAgICBsb2FkYiBXYXRjaHBvaW50U2V0OjptX3N0
YXRlW3QyXSwgdDMKLSAgICBiaWVxIHQzLCBJc0ludmFsaWRhdGVkLCAucmVhZHkKLSAgICBiaW5l
cSB0MywgQ2xlYXJXYXRjaHBvaW50LCAubmVlZFRvSW52YWxpZGF0ZQotICAgIG1vdmUgSXNXYXRj
aGVkLCB0MwotICAgIGptcCAucmVhZHkKLS5uZWVkVG9JbnZhbGlkYXRlOgotICAgIGJ0Ym56IFdh
dGNocG9pbnRTZXQ6Om1fc2V0SXNOb3RFbXB0eVt0Ml0sIC5wRHluYW1pYwotICAgIG1vdmUgSXNJ
bnZhbGlkYXRlZCwgdDMKLS5yZWFkeToKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDAp
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGxvYWRwRnJvbUlu
c3RydWN0aW9uKDUsIHQzKQorICAgIG5vdGlmeVdyaXRlKHQzLCB0MSwgdDIsIHQwLCAucER5bmFt
aWMpCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwgdDApCiAgICAgc3RvcmVpIHQxLCBUYWdP
ZmZzZXRbdDBdCiAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QwXQotICAgIG1lbWZlbmNl
Ci0gICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNSwgdDIpCi0gICAgc3RvcmViIHQzLCBXYXRjaHBv
aW50U2V0OjptX3N0YXRlW3QyXQogZW5kCiAKIG1hY3JvIHB1dENsb3N1cmVWYXIoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUyLDIzICsx
OTUyLDMwIEBAIG1hY3JvIHB1dFByb3BlcnR5KCkKICAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJs
ZU9mZnNldCh0MSwgdDAsIHQyKQogZW5kCiAKK21hY3JvIG5vdGlmeVdyaXRlKHNldCwgdmFsdWUs
IHNjcmF0Y2gsIHNsb3cpCisgICAgbG9hZGIgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRl
W3NldF0sIHNjcmF0Y2gKKyAgICBiaWVxIHNjcmF0Y2gsIElzSW52YWxpZGF0ZWQsIC5kb25lCisg
ICAgYmluZXEgc2NyYXRjaCwgQ2xlYXJXYXRjaHBvaW50LCAub3ZlcndyaXRlCisgICAgc3RvcmVx
IHZhbHVlLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1faW5mZXJyZWRWYWx1ZVtzZXRdCisgICAg
c3RvcmViIElzV2F0Y2hlZCwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRlW3NldF0KKyAg
ICBqbXAgLmRvbmUKKworLm92ZXJ3cml0ZToKKyAgICBicWVxIHZhbHVlLCBWYXJpYWJsZVdhdGNo
cG9pbnRTZXQ6Om1faW5mZXJyZWRWYWx1ZVtzZXRdLCAuZG9uZQorICAgIGJ0Ym56IFZhcmlhYmxl
V2F0Y2hwb2ludFNldDo6bV9zZXRJc05vdEVtcHR5W3NldF0sIHNsb3cKKyAgICBzdG9yZXEgMCwg
VmFyaWFibGVXYXRjaHBvaW50U2V0OjptX2luZmVycmVkVmFsdWVbc2V0XQorICAgIHN0b3JlYiBJ
c0ludmFsaWRhdGVkLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc3RhdGVbc2V0XQorCisuZG9u
ZTogICAgCitlbmQKKwogbWFjcm8gcHV0R2xvYmFsVmFyKCkKLSAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbig1LCB0MikKLSAgICBsb2FkYiBXYXRjaHBvaW50U2V0OjptX3N0YXRlW3QyXSwgdDMKLSAg
ICBiaWVxIHQzLCBJc0ludmFsaWRhdGVkLCAucmVhZHkKLSAgICBiaW5lcSB0MywgQ2xlYXJXYXRj
aHBvaW50LCAubmVlZFRvSW52YWxpZGF0ZQotICAgIG1vdmUgSXNXYXRjaGVkLCB0MwotICAgIGpt
cCAucmVhZHkKLS5uZWVkVG9JbnZhbGlkYXRlOgotICAgIGJ0Ym56IFdhdGNocG9pbnRTZXQ6Om1f
c2V0SXNOb3RFbXB0eVt0Ml0sIC5wRHluYW1pYwotICAgIG1vdmUgSXNJbnZhbGlkYXRlZCwgdDMK
LS5yZWFkeToKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MCwgdDEpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNSwgdDIpCisg
ICAgbm90aWZ5V3JpdGUodDIsIHQxLCB0MCwgLnBEeW5hbWljKQogICAgIGxvYWRwRnJvbUluc3Ry
dWN0aW9uKDYsIHQwKQogICAgIHN0b3JlcSB0MSwgW3QwXQotICAgIG1lbWZlbmNlCi0gICAgc3Rv
cmViIHQzLCBXYXRjaHBvaW50U2V0OjptX3N0YXRlW3QyXQogZW5kCiAKIG1hY3JvIHB1dENsb3N1
cmVWYXIoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTU5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2
LDcgQEAgSlNHbG9iYWxPYmplY3Q6Ok5ld0dsb2JhbFZhciBKU0dsb2JhbE9iagogICAgIGludCBp
bmRleCA9IHN5bWJvbFRhYmxlKCktPnNpemUobG9ja2VyKTsKICAgICBTeW1ib2xUYWJsZUVudHJ5
IG5ld0VudHJ5KGluZGV4LCAoY29uc3RhbnRNb2RlID09IElzQ29uc3RhbnQpID8gUmVhZE9ubHkg
OiAwKTsKICAgICBpZiAoY29uc3RhbnRNb2RlID09IElzVmFyaWFibGUpCi0gICAgICAgIG5ld0Vu
dHJ5LnByZXBhcmVUb1dhdGNoKFN5bWJvbFRhYmxlRW50cnk6Ok5vdEluaXRpYWxpemVkKTsKKyAg
ICAgICAgbmV3RW50cnkucHJlcGFyZVRvV2F0Y2goKTsKICAgICBTeW1ib2xUYWJsZTo6TWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS0+YWRkKGxvY2tlciwgaWRlbnQuaW1wbCgp
LCBuZXdFbnRyeSk7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBhZGRSZWdp
c3RlcnMoMSk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6YWRkRnVu
Y3Rpb24oRXhlY1N0YQogICAgIE5ld0dsb2JhbFZhciB2YXIgPSBhZGRHbG9iYWxWYXIocHJvcGVy
dHlOYW1lLCBJc1ZhcmlhYmxlKTsKICAgICByZWdpc3RlckF0KHZhci5yZWdpc3Rlck51bWJlciku
c2V0KGV4ZWMtPnZtKCksIHRoaXMsIHZhbHVlKTsKICAgICBpZiAodmFyLnNldCkKLSAgICAgICAg
dmFyLnNldC0+bm90aWZ5V3JpdGUoKTsKKyAgICAgICAgdmFyLnNldC0+bm90aWZ5V3JpdGUodmFs
dWUpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTT2JqZWN0KiBsYXN0SW5Qcm90b3R5cGVDaGFpbihK
U09iamVjdCogb2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNyAr
MjkxLDcgQEAgcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RhbnRNb2RlIHsgSXNDb25zdGFudCwg
SXNWYXJpYWJsZSB9OwogICAgIHN0cnVjdCBOZXdHbG9iYWxWYXIgewogICAgICAgICBpbnQgcmVn
aXN0ZXJOdW1iZXI7Ci0gICAgICAgIFdhdGNocG9pbnRTZXQqIHNldDsKKyAgICAgICAgVmFyaWFi
bGVXYXRjaHBvaW50U2V0KiBzZXQ7CiAgICAgfTsKICAgICBOZXdHbG9iYWxWYXIgYWRkR2xvYmFs
VmFyKGNvbnN0IElkZW50aWZpZXImLCBDb25zdGFudE1vZGUpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCShyZXZpc2lvbiAxNTk3MzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7Ci1j
bGFzcyBXYXRjaHBvaW50U2V0OworY2xhc3MgVmFyaWFibGVXYXRjaHBvaW50U2V0OwogCiBlbnVt
IFJlc29sdmVNb2RlIHsKICAgICBUaHJvd0lmTm90Rm91bmQsCkBAIC05Niw3ICs5Niw3IEBAIGlu
bGluZSBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc28KIH0KIAogc3RydWN0IFJlc29s
dmVPcCB7Ci0gICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJf
dCBvcGVyYW5kKQorICAgIFJlc29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRT
ZXQsIHVpbnRwdHJfdCBvcGVyYW5kKQogICAgICAgICA6IHR5cGUodHlwZSkKICAgICAgICAgLCBk
ZXB0aChkZXB0aCkKICAgICAgICAgLCBzdHJ1Y3R1cmUoc3RydWN0dXJlKQpAQCAtMTA4LDcgKzEw
OCw3IEBAIHN0cnVjdCBSZXNvbHZlT3AgewogICAgIFJlc29sdmVUeXBlIHR5cGU7CiAgICAgc2l6
ZV90IGRlcHRoOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwotICAgIFdhdGNocG9pbnRTZXQq
IHdhdGNocG9pbnRTZXQ7CisgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0
OwogICAgIHVpbnRwdHJfdCBvcGVyYW5kOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkocmV2aXNpb24gMTU5
NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDYgQEAgaW5saW5lIGJvb2wgc3ltYm9s
VGFibGVQdXQoCiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZh
bHVlKSA9PSBIZWFwOjpoZWFwKG9iamVjdCkpOwogICAgIAogICAgIFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIHJlZzsKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSAwOwogICAgIHsKICAgICAg
ICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAg
ICAgICAgR0NTYWZlQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2Nr
LCBleGVjLT52bSgpLmhlYXApOwpAQCAtMTM4LDE1ICsxMzcsMTQgQEAgaW5saW5lIGJvb2wgc3lt
Ym9sVGFibGVQdXQoCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9Ci0gICAgICAgIHNldCA9IGl0ZXItPnZhbHVlLndhdGNocG9pbnRTZXQoKTsK
KyAgICAgICAgaWYgKFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gaXRlci0+dmFsdWUud2F0
Y2hwb2ludFNldCgpKQorICAgICAgICAgICAgc2V0LT5ub3RpZnlXcml0ZSh2YWx1ZSk7CiAgICAg
ICAgIHJlZyA9ICZvYmplY3QtPnJlZ2lzdGVyQXQoZmFzdEVudHJ5LmdldEluZGV4KCkpOwogICAg
IH0KICAgICAvLyBJJ2QgcHJlZmVyIHdlIG5vdCBob2xkIGxvY2sgd2hpbGUgZXhlY3V0aW5nIGJh
cnJpZXJzLCBzaW5jZSBJIHByZWZlciB0byByZXNlcnZlCiAgICAgLy8gdGhlIHJpZ2h0IGZvciBi
YXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJIGRvbid0IHdhbnQgdG8gaG9s
ZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4KICAgICByZWctPnNldCh2bSwgb2JqZWN0
LCB2YWx1ZSk7Ci0gICAgaWYgKHNldCkKLSAgICAgICAgc2V0LT5ub3RpZnlXcml0ZSgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xNTgsNyArMTU2LDYgQEAgaW5saW5lIGJvb2wgc3ltYm9s
VGFibGVQdXRXaXRoQXR0cmlidXRlcwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwg
SGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKIAogICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIHJlZzsKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSAwOwogICAg
IHsKICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFi
bGUoKTsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9s
b2NrKTsKQEAgLTE2NywxMyArMTY0LDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0
aEF0dHJpYnV0ZXMKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFi
bGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051
bGwoKSk7Ci0gICAgICAgIHNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgaWYg
KFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpKQorICAg
ICAgICAgICAgc2V0LT5ub3RpZnlXcml0ZSh2YWx1ZSk7CiAgICAgICAgIGVudHJ5LnNldEF0dHJp
YnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgICAgIHJlZyA9ICZvYmplY3QtPnJlZ2lzdGVyQXQoZW50
cnkuZ2V0SW5kZXgoKSk7CiAgICAgfQogICAgIHJlZy0+c2V0KHZtLCBvYmplY3QsIHZhbHVlKTsK
LSAgICBpZiAoc2V0KQotICAgICAgICBzZXQtPm5vdGlmeVdyaXRlKCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5jcHAJKHJldmlzaW9uIDE1OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMzcgKzU4LDMyIEBAIHZv
aWQgU3ltYm9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5U2xvdygKICAgICBkZWxldGUgZmF0RW50
cnkoKTsKIH0KIAotYm9vbCBTeW1ib2xUYWJsZUVudHJ5Ojpjb3VsZEJlV2F0Y2hlZCgpCitKU1Zh
bHVlIFN5bWJvbFRhYmxlRW50cnk6OmluZmVycmVkVmFsdWUoKQogewogICAgIGlmICghaXNGYXQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRz
ID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKLSAgICBpZiAoIXdhdGNocG9pbnRz
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHdhdGNocG9pbnRzLT5zdGF0ZSgp
ID09IElzV2F0Y2hlZDsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICByZXR1cm4gZmF0
RW50cnkoKS0+bV93YXRjaHBvaW50cy0+aW5mZXJyZWRWYWx1ZSgpOwogfQogCi12b2lkIFN5bWJv
bFRhYmxlRW50cnk6OnByZXBhcmVUb1dhdGNoKFdhdGNoU3RhdGUgc3RhdGUpCit2b2lkIFN5bWJv
bFRhYmxlRW50cnk6OnByZXBhcmVUb1dhdGNoKCkKIHsKICAgICBGYXRFbnRyeSogZW50cnkgPSBp
bmZsYXRlKCk7CiAgICAgQVNTRVJUKCFlbnRyeS0+bV93YXRjaHBvaW50cyk7Ci0gICAgZW50cnkt
Pm1fd2F0Y2hwb2ludHMgPSBhZG9wdFJlZigKLSAgICAgICAgbmV3IFdhdGNocG9pbnRTZXQoc3Rh
dGUgPT0gQWxyZWFkeUluaXRpYWxpemVkID8gSXNXYXRjaGVkIDogQ2xlYXJXYXRjaHBvaW50KSk7
CisgICAgZW50cnktPm1fd2F0Y2hwb2ludHMgPSBhZG9wdFJlZihuZXcgVmFyaWFibGVXYXRjaHBv
aW50U2V0KCkpOwogfQogCiB2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmFkZFdhdGNocG9pbnQoV2F0
Y2hwb2ludCogd2F0Y2hwb2ludCkKIHsKLSAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7CiAg
ICAgZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkKHdhdGNocG9pbnQpOwogfQogCi12b2lk
IFN5bWJvbFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlU2xvdygpCit2b2lkIFN5bWJvbFRhYmxlRW50
cnk6Om5vdGlmeVdyaXRlU2xvdyhKU1ZhbHVlIHZhbHVlKQogewotICAgIFdhdGNocG9pbnRTZXQq
IHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICBWYXJp
YWJsZVdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50
cy5nZXQoKTsKICAgICBpZiAoIXdhdGNocG9pbnRzKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgd2F0Y2hwb2ludHMtPm5vdGlmeVdyaXRlKCk7CisgICAgd2F0Y2hwb2ludHMtPm5vdGlmeVdy
aXRlKHZhbHVlKTsKIH0KIAogU3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnkqIFN5bWJvbFRhYmxl
RW50cnk6OmluZmxhdGVTbG93KCkKQEAgLTEwOSw1ICsxMDQsMzMgQEAgU3ltYm9sVGFibGU6OlN5
bWJvbFRhYmxlKFZNJiB2bSkKIAogU3ltYm9sVGFibGU6On5TeW1ib2xUYWJsZSgpIHsgfQogCit2
b2lkIFN5bWJvbFRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogdGhpc0NlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIFN5bWJvbFRhYmxlKiB0aGlzU3ltYm9sVGFibGUgPSBqc0Nh
c3Q8U3ltYm9sVGFibGUqPih0aGlzQ2VsbCk7CisgICAgaWYgKCF0aGlzU3ltYm9sVGFibGUtPm1f
d2F0Y2hwb2ludENsZWFudXApIHsKKyAgICAgICAgdGhpc1N5bWJvbFRhYmxlLT5tX3dhdGNocG9p
bnRDbGVhbnVwID0KKyAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8V2F0Y2hwb2ludENsZWFu
dXA+KHRoaXNTeW1ib2xUYWJsZSk7CisgICAgfQorICAgIAorICAgIHZpc2l0b3IuYWRkVW5jb25k
aXRpb25hbEZpbmFsaXplcih0aGlzU3ltYm9sVGFibGUtPm1fd2F0Y2hwb2ludENsZWFudXAuZ2V0
KCkpOworfQorCitTeW1ib2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OldhdGNocG9pbnRDbGVh
bnVwKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICA6IG1fc3ltYm9sVGFibGUoc3ltYm9s
VGFibGUpCit7Cit9CisKK1N5bWJvbFRhYmxlOjpXYXRjaHBvaW50Q2xlYW51cDo6fldhdGNocG9p
bnRDbGVhbnVwKCkgeyB9CisKK3ZvaWQgU3ltYm9sVGFibGU6OldhdGNocG9pbnRDbGVhbnVwOjpm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpCit7CisgICAgTWFwOjppdGVyYXRvciBpdGVyID0gbV9z
eW1ib2xUYWJsZS0+bV9tYXAuYmVnaW4oKTsKKyAgICBNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fc3lt
Ym9sVGFibGUtPm1fbWFwLmVuZCgpOworICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CisgICAgICAgIGlmIChWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHNldCA9IGl0ZXItPnZhbHVlLndh
dGNocG9pbnRTZXQoKSkKKyAgICAgICAgICAgIHNldC0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE1OTczMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDE2ICszMSwxMyBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKICNp
bmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJW
YXJpYWJsZVdhdGNocG9pbnRTZXQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCi1jbGFzcyBXYXRjaHBvaW50OwotY2xhc3MgV2F0Y2hwb2ludFNldDsKLQog
c3RydWN0IFNsb3dBcmd1bWVudCB7CiAgICAgZW51bSBTdGF0dXMgewogICAgICAgICBOb3JtYWwg
PSAwLApAQCAtNzksMTEgKzc2LDExIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGludCBtaXNzaW5n
U3ltYm9sTWEKIC8vIGNvdW50ZWQgcG9pbnRlciB0byBhIHNoYXJlZCBXYXRjaHBvaW50U2V0LiBU
aHVzLCBpbi1wbGFjZSBlZGl0cyBvZiB0aGUKIC8vIFdhdGNocG9pbnRTZXQgd2lsbCBtYW5pZmVz
dCBpbiBhbGwgY29waWVzLiBIZXJlJ3MgYSBwaWN0dXJlOgogLy8KLS8vIFN5bWJvbFRhYmxlRW50
cnkgLS0+IEZhdEVudHJ5IC0tPiBXYXRjaHBvaW50U2V0CisvLyBTeW1ib2xUYWJsZUVudHJ5IC0t
PiBGYXRFbnRyeSAtLT4gVmFyaWFibGVXYXRjaHBvaW50U2V0CiAvLwogLy8gSWYgeW91IG1ha2Ug
YSBjb3B5IG9mIGEgU3ltYm9sVGFibGVFbnRyeSwgeW91IHdpbGwgaGF2ZToKIC8vCi0vLyBvcmln
aW5hbDogU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKy8v
IG9yaWdpbmFsOiBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gVmFyaWFibGVXYXRj
aHBvaW50U2V0CiAvLyBjb3B5OiAgICAgU3ltYm9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0t
LS1eCiAKIHN0cnVjdCBTeW1ib2xUYWJsZUVudHJ5IHsKQEAgLTIxOCwyNSArMjE1LDI0IEBAIHN0
cnVjdCBTeW1ib2xUYWJsZUVudHJ5IHsKICAgICAgICAgcmV0dXJuIGJpdHMoKSAmIFJlYWRPbmx5
RmxhZzsKICAgICB9CiAgICAgCi0gICAgYm9vbCBjb3VsZEJlV2F0Y2hlZCgpOworICAgIEpTVmFs
dWUgaW5mZXJyZWRWYWx1ZSgpOwogICAgIAotICAgIGVudW0gV2F0Y2hTdGF0ZSB7IE5vdEluaXRp
YWxpemVkLCBBbHJlYWR5SW5pdGlhbGl6ZWQgfTsKLSAgICB2b2lkIHByZXBhcmVUb1dhdGNoKFdh
dGNoU3RhdGUpOworICAgIHZvaWQgcHJlcGFyZVRvV2F0Y2goKTsKICAgICAKICAgICB2b2lkIGFk
ZFdhdGNocG9pbnQoV2F0Y2hwb2ludCopOwogICAgIAotICAgIFdhdGNocG9pbnRTZXQqIHdhdGNo
cG9pbnRTZXQoKQorICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCgpCiAg
ICAgewogICAgICAgICBpZiAoIWlzRmF0KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fd2F0Y2hwb2ludHMuZ2V0KCk7CiAgICAgfQogICAgIAot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBub3RpZnlXcml0ZSgpCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIG5vdGlmeVdyaXRlKEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoTElLRUxZ
KCFpc0ZhdCgpKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbm90aWZ5V3JpdGVTbG93
KCk7CisgICAgICAgIG5vdGlmeVdyaXRlU2xvdyh2YWx1ZSk7CiAgICAgfQogICAgIAogcHJpdmF0
ZToKQEAgLTI1NiwxMSArMjUyLDExIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBpbnRw
dHJfdCBtX2JpdHM7IC8vIGFsd2F5cyBoYXMgRmF0RmxhZyBzZXQgYW5kIGV4YWN0bHkgbWF0Y2hl
cyB3aGF0IHRoZSBiaXRzIHdvdWxkIGhhdmUgYmVlbiBpZiB0aGlzIHdhc24ndCBmYXQuCiAgICAg
ICAgIAotICAgICAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV93YXRjaHBvaW50czsKKyAgICAg
ICAgUmVmUHRyPFZhcmlhYmxlV2F0Y2hwb2ludFNldD4gbV93YXRjaHBvaW50czsKICAgICB9Owog
ICAgIAogICAgIFN5bWJvbFRhYmxlRW50cnkmIGNvcHlTbG93KGNvbnN0IFN5bWJvbFRhYmxlRW50
cnkmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIG5vdGlmeVdyaXRlU2xvdygpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbm90aWZ5V3JpdGVTbG93KEpTVmFsdWUpOwogICAgIAog
ICAgIGJvb2wgaXNGYXQoKSBjb25zdAogICAgIHsKQEAgLTQ2Niw5ICs0NjIsMjMgQEAgcHVibGlj
OgogICAgIGNvbnN0IFNsb3dBcmd1bWVudCogc2xvd0FyZ3VtZW50cygpIHsgcmV0dXJuIG1fc2xv
d0FyZ3VtZW50cy5nZXQoKTsgfQogICAgIHZvaWQgc2V0U2xvd0FyZ3VtZW50cyhzdGQ6OnVuaXF1
ZV9wdHI8U2xvd0FyZ3VtZW50W10+IHNsb3dBcmd1bWVudHMpIHsgbV9zbG93QXJndW1lbnRzID0g
c3RkOjptb3ZlKHNsb3dBcmd1bWVudHMpOyB9CiAKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
CiBwcml2YXRlOgorICAgIGNsYXNzIFdhdGNocG9pbnRDbGVhbnVwIDogcHVibGljIFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgV2F0Y2hwb2ludENsZWFudXAo
U3ltYm9sVGFibGUqKTsKKyAgICAgICAgdmlydHVhbCB+V2F0Y2hwb2ludENsZWFudXAoKTsKKyAg
ICAgICAgCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoKSBPVkVSUklERTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFN5bWJvbFRh
YmxlKiBtX3N5bWJvbFRhYmxlOworICAgIH07CisgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
U3ltYm9sVGFibGUoVk0mKTsKICAgICB+U3ltYm9sVGFibGUoKTsKIApAQCAtNDgxLDYgKzQ5MSw4
IEBAIHByaXZhdGU6CiAgICAgaW50IG1fY2FwdHVyZUVuZDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG93QXJndW1lbnRbXT4gbV9zbG93QXJndW1lbnRzOworICAgIAorICAgIHN0ZDo6dW5pcXVl
X3B0cjxXYXRjaHBvaW50Q2xlYW51cD4gbV93YXRjaHBvaW50Q2xlYW51cDsKIAogcHVibGljOgog
ICAgIG11dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwo=
</data>
<flag name="review"
          id="241114"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217912</attachid>
            <date>2013-11-26 17:21:51 -0800</date>
            <delta_ts>2013-11-26 17:21:51 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>70055</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5Nzk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MiBA
QAorMjAxMy0xMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlc3RydWN0dXJlIGdsb2JhbCB2YXJpYWJsZSBjb25zdGFudCBpbmZlcmVuY2Ugc28gdGhhdCBp
dCBjb3VsZCB3b3JrIGZvciBhbnkga2luZCBvZiBzeW1ib2wgdGFibGUgdmFyaWFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFu
Z2VzIHRoZSB3YXkgZ2xvYmFsIHZhcmlhYmxlIGNvbnN0YW50IGluZmVyZW5jZSB3b3JrcyBzbyB0
aGF0IGl0IGNhbiBiZSByZXVzZWQKKyAgICAgICAgZm9yIGNsb3N1cmUgdmFyaWFibGUgY29uc3Rh
bnQgaW5mZXJlbmNlLiBTb21lIG9mIHRoZSBwcmVtaXNlcyB0aGF0IG9yaWdpbmFsbHkgbW90aXZh
dGVkCisgICAgICAgIHRoaXMgcGF0Y2ggYXJlIHNvbWV3aGF0IHdyb25nLCBidXQgaXQgbGVkIHRv
IHNvbWUgc2ltcGxpZmljYXRpb25zIGFueXdheSBhbmQgSSBzdXNwZWN0CisgICAgICAgIHRoYXQg
d2UnbGwgYmUgYWJsZSB0byBmaXggdGhvc2UgcHJlbWlzZXMgaW4gdGhlIGZ1dHVyZS4gVGhlIG1h
aW4gcG9pbnQgb2YgdGhpcyBwYXRjaCBpcworICAgICAgICB0byBtYWtlIGl0IGVhc3kgdG8gcmV1
c2UgZ2xvYmFsIHZhcmlhYmxlIGNvbnN0YW50IGluZmVyZW5jZSBmb3IgY2xvc3VyZSB2YXJpYWJs
ZQorICAgICAgICBjb25zdGFudCBpbmZlcmVuY2UsIGFuZCB0aGlzIHdpbGwgYmUgcG9zc2libGUg
cHJvdmlkZWQgd2UgY2FuIGFsc28gZWl0aGVyIChhKSBpbmZlcgorICAgICAgICBvbmUtc2hvdCBj
bG9zdXJlcyAoZWFzeSkgb3IgKGIpIGluZmVyIGNsb3N1cmUgdmFyaWFibGVzIHRoYXQgYXJlIGFs
d2F5cyBhc3NpZ25lZCBwcmlvcgorICAgICAgICB0byBmaXJzdCB1c2UuCisgICAgICAgIAorICAg
ICAgICBPbmUgb2YgdGhlIHRoaW5ncyB0aGF0IHRoaXMgcGF0Y2ggaXMgbWVhbnQgdG8gZW5hYmxl
IGlzIGNvbnN0YW50IGluZmVyZW5jZSBmb3IgY2xvc3VyZQorICAgICAgICB2YXJpYWJsZXMgdGhh
dCBtYXkgYmUgcGFydCBvZiBhIG11bHRpLXNob3QgY2xvc3VyZS4gQ2xvc3VyZSB2YXJpYWJsZXMg
bWF5IGJlCisgICAgICAgIGluc3RhbnRpYXRlZCBtdWx0aXBsZSB0aW1lcywgbGlrZToKKyAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAgICAgICAgICAgdmFyIFdJ
RFRIID0gNDU7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gYmFyKCkgeworICAgICAgICAgICAg
ICAgICAgICAuLi4gdXNlIFdJRFRIIC4uLgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAuLi4KKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEV2ZW4gaWYgZm9vKCkg
aXMgY2FsbGVkIG1hbnkgdGltZXMgYW5kIFdJRFRIIGlzIGFzc2lnbmVkIHRvIG11bHRpcGxlIHRp
bWVzLCB0aGF0CisgICAgICAgIGRvZXNuJ3QgY2hhbmdlIHRoZSBmYWN0IHRoYXQgaXQncyBhIGNv
bnN0YW50LiBUaGUgZ29hbCBvZiBjbG9zdXJlIHZhcmlhYmxlIGNvbnN0YW50CisgICAgICAgIGlu
ZmVyZW5jZSBpcyB0byBjYXRjaCBhbnkgY2FzZSB3aGVyZSBhIGNsb3N1cmUgdmFyaWFibGUgaGFz
IGJlZW4gYXNzaWduZWQgYXQgbGVhc3Qgb25jZQorICAgICAgICBhbmQgaXRzIHZhbHVlIGhhcyBu
ZXZlciBjaGFuZ2VkLiBUaGlzIHBhdGNoIGRvZXNuJ3QgaW1wbGVtZW50IHRoYXQsIGJ1dCBpdCBk
b2VzIGNoYW5nZQorICAgICAgICBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgaW5mZXJlbmNlIHRv
IGhhdmUgbW9zdCBvZiB0aGUgcG93ZXJzIG5lZWRlZCB0byBkbyB0aGF0LiBOb3RlCisgICAgICAg
IHRoYXQgbW9zdCBsaWtlbHkgd2Ugd2lsbCB1c2UgdGhpcyBmdW5jdGlvbmFsaXR5IG9ubHkgdG8g
aW1wbGVtZW50IGNvbnN0YW50IGluZmVyZW5jZQorICAgICAgICBmb3Igb25lLXNob3QgY2xvc3Vy
ZXMsIGJ1dCB0aGUgcmVzdWx0aW5nIG1hY2hpbmVyeSBpcyBzdGlsbCBzaW1wbGVyIHRoYW4gd2hh
dCB3ZSBoYWQKKyAgICAgICAgYmVmb3JlLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpbnZvbHZl
cyB0aHJlZSBjaGFuZ2VzOgorICAgICAgICAKKyAgICAgICAgICAgIC0gVGhlIHdhdGNocG9pbnQg
b2JqZWN0IG5vdyBjb250YWlucyB0aGUgaW5mZXJyZWQgdmFsdWUuIFRoaXMgaW52b2x2ZXMgY3Jl
YXRpbmcgYQorICAgICAgICAgICAgICBuZXcga2luZCBvZiB3YXRjaHBvaW50IHNldCwgdGhlIFZh
cmlhYmxlV2F0Y2hwb2ludFNldC4gV2Ugd2lsbCByZXVzZSB0aGlzIG9iamVjdAorICAgICAgICAg
ICAgICBmb3IgY2xvc3VyZSB2YXJpYWJsZXMuCisgICAgICAgIAorICAgICAgICAgICAgLSBXcml0
aW5nIHRvIGEgdmFyaWFibGUgdGhhdCBpcyB3YXRjaHBvaW50ZWQgc3RpbGwgaW52b2x2ZXMgdGhl
c2UgdGhyZWUgc3RhdGVzIHRoYXQKKyAgICAgICAgICAgICAgd2UgcHJvY2VlZCB0aHJvdWdoIG1v
bm90b25pY2FsbHkgKFVuaW5pdGlhbGl6ZWQtPkluaXRpYWxpemVkLT5JbnZhbGlkYXRlZCkgYnV0
CisgICAgICAgICAgICAgIG5vdywgdGhlIEluaXRpYWxpemVkLT5JbnZhbGlkYXRlZCBzdGF0ZSB0
cmFuc2l0aW9uIG9ubHkgaGFwcGVucyBpZiB3ZSBjaGFuZ2UgdGhlCisgICAgICAgICAgICAgIHZh
cmlhYmxlJ3MgdmFsdWUsIHJhdGhlciB0aGFuIHN0b3JlIHRvIHRoZSB2YXJpYWJsZS4gUmVwZWF0
ZWRseSBzdG9yaW5nIHRoZSBzYW1lCisgICAgICAgICAgICAgIHZhbHVlIHdvbid0IGNoYW5nZSB0
aGUgdmFyaWFibGUncyBzdGF0ZS4KKyAgICAgICAgCisgICAgICAgICAgICAtIE9uIDY0LWJpdCBz
eXN0ZW1zICh0aGUgb25seSBzeXN0ZW1zIG9uIHdoaWNoIHdlIGRvIGNvbmN1cnJlbnQgSklUKSwg
eW91IG5vIGxvbmdlcgorICAgICAgICAgICAgICBuZWVkIGZhbmN5IGZlbmNpbmcgdG8gZ2V0IGEg
Y29uc2lzdGVudCB2aWV3IG9mIHRoZSB3YXRjaHBvaW50IGluIHRoZSBKSVQuIFRoZQorICAgICAg
ICAgICAgICBzdGF0ZSBvZiB0aGUgVmFyaWFibGVXYXRjaHBvaW50U2V0IGZvciB0aGUgcHVycG9z
ZXMgb2YgY29uc3RhbnQgZm9sZGluZyBpcworICAgICAgICAgICAgICBlbnRpcmVseSBlbmNhcHN1
bGF0ZWQgaW4gdGhlIFZhcmlhYmxlV2F0Y2hwb2ludFNldDo6bV9pbmZlcnJlZFZhbHVlLiBJZiB0
aGF0IGlzCisgICAgICAgICAgICAgIEpTVmFsdWUoKSB0aGVuIHlvdSBjYW5ub3QgZm9sZCAoZWl0
aGVyIGJlY2F1c2UgdGhlIHNldCBpcyB1bmluaXRpYWxpemVkIG9yCisgICAgICAgICAgICAgIGJl
Y2F1c2UgaXQncyBpbnZhbGlkYXRlZCAtIGRvZXNuJ3QgbWF0dGVyIHdoaWNoKTsgb24gdGhlIG90
aGVyIGhhbmQgaWYgdGhlIHZhbHVlCisgICAgICAgICAgICAgIGlzIGFueXRoaW5nIG90aGVyIHRo
YW4gSlNWYWx1ZSgpIHRoZW4geW91IGNhbiBmb2xkLCBhbmQgdGhhdCdzIHRoZSB2YWx1ZSB5b3Ug
Zm9sZAorICAgICAgICAgICAgICB0by4gU2ltcGxlIQorICAgICAgICAKKyAgICAgICAgVGhpcyBh
bHNvIGNoYW5nZXMgdGhlIHdheSB0aGF0IERGRyBJUiBkZWFscyB3aXRoIHZhcmlhYmxlIHdhdGNo
cG9pbnRzLiBJdCdzIG5vdworICAgICAgICBvYmxpdmlvdXMgdG8gZ2xvYmFsIHZhcmlhYmxlcy4g
WW91IGluc3RhbGwgYSB3YXRjaHBvaW50IHVzaW5nIFZhcmlhYmxlV2F0Y2hwb2ludCBhbmQKKyAg
ICAgICAgeW91IG5vdGlmeSB3cml0ZSB1c2luZyBOb3RpZnlXcml0ZS4gRWFzeSEKKyAgICAgICAg
CisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmVxdWlyZXMgc29tZSBtb3JlIHR3ZWFrcyBi
ZWNhdXNlIG9mIHRoZSBmYWN0IHRoYXQgb3BfZW50ZXIgd2lsbAorICAgICAgICBzdG9yZSBVbmRl
ZmluZWQgaW50byBldmVyeSBjYXB0dXJlZCB2YXJpYWJsZS4gSGVuY2UgaXQgd29uJ3QgZXZlbiB3
b3JrIGZvciBvbmUtc2hvdAorICAgICAgICBjbG9zdXJlcy4gT25lLXNob3QgY2xvc3VyZXMgYXJl
IGVhc2lseSBmaXhlZCBieSBpbnRyb2R1Y2luZyBhbm90aGVyIHN0YXRlIChzbyB3ZSdsbAorICAg
ICAgICBoYXZlIFVuaW5pdGlhbGl6ZWQtPlVuZGVmaW5lZC0+SW5pdGlhbGl6ZWQtPkludmFsaWRh
dGVkKS4gTXVsdGktc2hvdCBjbG9zdXJlcyB3aWxsCisgICAgICAgIHJlcXVpcmUgc3RhdGljIGFu
YWx5c2lzLiBPbmUtc2hvdCBjbG9zdXJlcyBhcmUgY2xlYXJseSBhIGhpZ2hlciBwcmlvcml0eS4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaDoKKyAgICAgICAgKiBieXRlY29kZS9WYXJpYWJsZVdhdGNocG9pbnRTZXQuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0Y2hwb2ludFNldDo6VmFyaWFibGVXYXRjaHBv
aW50U2V0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBvaW50U2V0Ojp+VmFyaWFibGVX
YXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBvaW50U2V0OjppbmZl
cnJlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVXYXRjaHBvaW50U2V0Ojpub3RpZnlX
cml0ZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0Y2hwb2ludFNldDo6aW52YWxpZGF0ZSk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlV2F0Y2hwb2ludFNldDo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZVdhdGNocG9pbnRTZXQ6OmFkZHJlc3NPZklu
ZmVycmVkVmFsdWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuaDoKKyAgICAgICAg
KiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZH
Ojo6OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpw
ZXJmb3JtTm9kZUNTRSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBk
ZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1JlZ2lzdGVyUG9pbnRl
cik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzVmFyaWFibGVXYXRjaHBvaW50U2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp2YXJpYWJsZVdhdGNocG9pbnRTZXQpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQXJpdGhNb2QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OldhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAgICog
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpjb21waWxlTm90aWZ5V3JpdGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5vdGlmeVdyaXRlKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0UHV0R2xvYmFsVmFyKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5vdGlmeVdyaXRlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0UHV0R2xvYmFsVmFyKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphZGRHbG9iYWxWYXIpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuaDoKKyAgICAgICAgKEpTQzo6UmVz
b2x2ZU9wOjpSZXNvbHZlT3ApOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJv
bFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjppbmZlcnJlZFZhbHVlKToKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGVFbnRyeTo6cHJlcGFyZVRvV2F0Y2gpOgorICAgICAgICAo
SlNDOjpTeW1ib2xUYWJsZUVudHJ5OjphZGRXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6U3lt
Ym9sVGFibGVFbnRyeTo6bm90aWZ5V3JpdGVTbG93KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFi
bGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6V2F0Y2hwb2lu
dENsZWFudXA6OldhdGNocG9pbnRDbGVhbnVwKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6
OldhdGNocG9pbnRDbGVhbnVwOjp+V2F0Y2hwb2ludENsZWFudXApOgorICAgICAgICAoSlNDOjpT
eW1ib2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToK
KyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChKU0M6OlN5bWJvbFRh
YmxlRW50cnk6OndhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5
Ojpub3RpZnlXcml0ZSk6CisKIDIwMTMtMTEtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBDcmVhdGUgYSBuZXcgU3ltYm9sVGFibGUgZXZlcnkgdGltZSBjb2Rl
IGlzIGxvYWRlZCBzbyB0aGF0IHRoZSB3YXRjaHBvaW50cyBkb24ndCBnZXQgcmV1c2VkCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU5
Nzk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtp
bmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV2F0Y2hwb2ludFNldC5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1dhdGNocG9pbnQuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oJKHJldmlzaW9uIDE1OTc5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTc5NSw2ICs3OTUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
VW5saW5rZWRDb2RlQmxvY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXFZhbHVlUHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcVmFsdWVSZWNvdmVyeS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcVmFyaWFibGVXYXRjaHBvaW50U2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxWaXJ0dWFsUmVnaXN0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXFdhdGNocG9pbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJ5dGVjb21waWxlclxCeXRlY29kZUdlbmVyYXRvci5oIiAvPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1OTc5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDAsNiArMzAwLDcgQEAKIAkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVU
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
OEY5NDNGMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAgKi87IH07CiAJCTBGOEY5NDQ0
MTY2NzYzNTQwMEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDQzMTY2NzYzNTIwMEQ2MTk3MSAvKiBKSVRDb2Rl
LmNwcCAqLzsgfTsKIAkJMEY4Rjk0NDYxNjY3NjRGMTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4Rjk0NDUx
NjY3NjRFRTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwICovOyB9OworCQkwRjkxODFDNzE4NDE1
Q0E1MDA1N0I2NjkgLyogVmFyaWFibGVXYXRjaHBvaW50U2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxODFDNjE4NDE1Q0E1MDA1N0I2NjkgLyog
VmFyaWFibGVXYXRjaHBvaW50U2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY5MTlEMEMxNTdFRTA5RjAwNEE0RTdEIC8qIEpTU3ltYm9sVGFi
bGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY5MTlEMDkxNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICov
OyB9OwogCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEEx
NTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRF
N0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgKi87IH07CkBAIC0xNTkzLDYgKzE1OTQsNyBAQAog
CQkwRjhGOTQzRjE2Njc2MzJEMDBENjE5NzEgLyogQ29kZVR5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29kZVR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjhGOTQ0MzE2Njc2MzUyMDBENjE5NzEgLyogSklUQ29kZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRDb2RlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4Rjk0NDUxNjY3NjRFRTAwRDYxOTcxIC8qIENvZGVPcmlnaW4u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29kZU9yaWdpbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTE4MUM2MTg0MTVDQTUwMDU3QjY2OSAv
KiBWYXJpYWJsZVdhdGNocG9pbnRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmFyaWFibGVXYXRjaHBvaW50U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOTE5RDA5MTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3ltYm9sVGFibGVPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkxOUQwQTE1N0VFMDlEMDA0QTRFN0Qg
LyogSlNTeW1ib2xUYWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1N5bWJvbFRhYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDEzMiw2ICs0MTM0LDcg
QEAKIAkJCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8sCiAJ
CQkJMEYyNEU1NTcxN0Y3NEVEQjAwQUJCMjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwICovLAogCQkJ
CTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8sCisJCQkJMEY5
MTgxQzYxODQxNUNBNTAwNTdCNjY5IC8qIFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oICovLAogCQkJ
CTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCAqLywKIAkJCQkw
RjkxOUQyMjE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgKi8sCiAJCQkJMEY5MTlE
MjMxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLywKQEAgLTQzNzUsNiArNDM3OCw3
IEBACiAJCQkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5q
ZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzJBMTdENTFGNTcwMENBMkM0
MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY5MTgxQzcxODQxNUNBNTAwNTdCNjY5IC8qIFZhcmlhYmxlV2F0Y2hwb2ludFNldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMkMxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRM
Rm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNjM5NDNGMTVDNzVGMTkwMDZBNTk3QyAvKiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NzE2QzFEQjEyMDA4MkM1RTggLyogREZHVW5p
ZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTU5Nzk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlOwogY2xhc3MgQXJyYXlQcm9maWxlOwogY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7
CitjbGFzcyBWYXJpYWJsZVdhdGNocG9pbnRTZXQ7CiBzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm87
CiBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCkBAIC0xMTUsNyArMTE2LDcgQEAgc3RydWN0IEluc3Ry
dWN0aW9uIHsKICAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGU7CiAgICAgICAgIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqIGFycmF5QWxsb2NhdGlvblByb2ZpbGU7CiAgICAgICAgIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlKiBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKLSAgICAgICAg
V2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldDsKKyAgICAgICAgVmFyaWFibGVXYXRjaHBvaW50
U2V0KiB3YXRjaHBvaW50U2V0OwogICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICBib29s
KiBwcmVkaWNhdGVQb2ludGVyOwogICAgIH0gdTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9WYXJpYWJsZVdhdGNocG9pbnRTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFyaWFibGVXYXRjaHBvaW50U2V0LmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFyaWFibGVXYXRjaHBvaW50
U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBWYXJpYWJsZVdhdGNo
cG9pbnRTZXRfaAorI2RlZmluZSBWYXJpYWJsZVdhdGNocG9pbnRTZXRfaAorCisjaW5jbHVkZSAi
V2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgVmFyaWFibGVXYXRjaHBvaW50U2V0IDogcHVibGljIFdhdGNocG9pbnRTZXQg
eworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAg
VmFyaWFibGVXYXRjaHBvaW50U2V0KCkKKyAgICAgICAgOiBXYXRjaHBvaW50U2V0KENsZWFyV2F0
Y2hwb2ludCkKKyAgICB7CisgICAgfQorICAgIAorICAgIH5WYXJpYWJsZVdhdGNocG9pbnRTZXQo
KSB7IH0KKyAgICAKKyAgICAvLyBGb3IgdGhlIHB1cnBvc2Ugb2YgZGVjaWRpbmcgd2hldGhlciBv
ciBub3QgdG8gd2F0Y2ggdGhpcyB2YXJpYWJsZSwgeW91IG9ubHkgbmVlZAorICAgIC8vIHRvIGlu
c3BlY3QgaW5mZXJyZWRWYWx1ZSgpLiBJZiB0aGlzIHJldHVybnMgc29tZXRoaW5nIG90aGVyIHRo
YW4gdGhlIGVtcHR5CisgICAgLy8gdmFsdWUsIHRoZW4gaXQgbWVhbnMgdGhhdCBhdCBhbGwgZnV0
dXJlIHNhZmVwb2ludHMsIHRoaXMgd2F0Y2hwb2ludCBzZXQgd2lsbCBiZQorICAgIC8vIGluIG9u
ZSBvZiB0aGVzZSBzdGF0ZXM6CisgICAgLy8KKyAgICAvLyAgICBJc1dhdGNoZWQ6IGluIHRoaXMg
Y2FzZSwgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgbXVzdCBzdGlsbCBiZSB0aGUKKyAgICAvLyAgICAg
ICAgaW5mZXJyZWRWYWx1ZS4KKyAgICAvLworICAgIC8vICAgIElzSW52YWxpZGF0ZWQ6IGluIHRo
aXMgY2FzZSB0aGUgdmFyaWFibGUncyB2YWx1ZSBtYXkgYmUgYW55dGhpbmcgYnV0IHlvdSdsbAor
ICAgIC8vICAgICAgICBlaXRoZXIgbm90aWNlIHRoYXQgaXQncyBpbnZhbGlkYXRlZCBhbmQgbm90
IGluc3RhbGwgdGhlIHdhdGNocG9pbnQsIG9yCisgICAgLy8gICAgICAgIHlvdSB3aWxsIGhhdmUg
YmVlbiBub3RpZmllZCB0aGF0IHRoZSB3YXRjaHBvaW50IHdhcyBmaXJlZC4KKyAgICBKU1ZhbHVl
IGluZmVycmVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luZmVycmVkVmFsdWU7IH0KKyAgICAK
KyAgICB2b2lkIG5vdGlmeVdyaXRlKEpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBBU1NF
UlQoISF2YWx1ZSk7CisgICAgICAgIHN3aXRjaCAoc3RhdGUoKSkgeworICAgICAgICBjYXNlIENs
ZWFyV2F0Y2hwb2ludDoKKyAgICAgICAgICAgIG1faW5mZXJyZWRWYWx1ZSA9IHZhbHVlOworICAg
ICAgICAgICAgc3RhcnRXYXRjaGluZygpOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGNhc2UgSXNXYXRjaGVkOgorICAgICAgICAgICAgQVNTRVJUKCEhbV9pbmZlcnJlZFZhbHVlKTsK
KyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBtX2luZmVycmVkVmFsdWUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgSXNJbnZhbGlkYXRlZDoKKyAgICAgICAgICAg
IEFTU0VSVCghbV9pbmZlcnJlZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgaW52YWxpZGF0ZSgpCisgICAgeworICAgICAgICBBU1NFUlQoISFtX2luZmVycmVk
VmFsdWUpOworICAgICAgICBBU1NFUlQoc3RhdGUoKSA9PSBJc1dhdGNoZWQpOworICAgICAgICBt
X2luZmVycmVkVmFsdWUgPSBKU1ZhbHVlKCk7CisgICAgICAgIGZpcmVBbGwoKTsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpCisgICAgeworICAgICAgICBB
U1NFUlQoISFtX2luZmVycmVkVmFsdWUgPT0gKHN0YXRlKCkgPT0gSXNXYXRjaGVkKSk7CisgICAg
ICAgIGlmICghbV9pbmZlcnJlZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAoIW1faW5mZXJyZWRWYWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgSlNDZWxsKiBjZWxsID0gbV9pbmZlcnJlZFZhbHVlLmFzQ2VsbCgpOworICAgICAgICBpZiAo
SGVhcDo6aXNNYXJrZWQoY2VsbCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGludmFs
aWRhdGUoKTsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZSogYWRkcmVzc09mSW5mZXJyZWRWYWx1
ZSgpIHsgcmV0dXJuICZtX2luZmVycmVkVmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBKU1ZhbHVl
IG1faW5mZXJyZWRWYWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
VmFyaWFibGVXYXRjaHBvaW50U2V0X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1dhdGNocG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAxNTk3OTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMTQg
KzEwOCw2IEBAIHB1YmxpYzoKICAgICAgICAgZmlyZUFsbFNsb3coKTsKICAgICB9CiAgICAgCi0g
ICAgdm9pZCBub3RpZnlXcml0ZSgpCi0gICAgewotICAgICAgICBpZiAoc3RhdGUoKSA9PSBDbGVh
cldhdGNocG9pbnQpCi0gICAgICAgICAgICBzdGFydFdhdGNoaW5nKCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGZpcmVBbGwoKTsKLSAgICB9Ci0gICAgCiAgICAgaW50OF90KiBhZGRyZXNz
T2ZTdGF0ZSgpIHsgcmV0dXJuICZtX3N0YXRlOyB9CiAgICAgaW50OF90KiBhZGRyZXNzT2ZTZXRJ
c05vdEVtcHR5KCkgeyByZXR1cm4gJm1fc2V0SXNOb3RFbXB0eTsgfQogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAkocmV2aXNpb24gMTU5Nzk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTA1LDEzICsxNTA1LDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsK
ICAgICAgICAgCi0gICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAgIGNhc2UgVmFyaWFi
bGVXYXRjaHBvaW50OgogICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKICAgICAgICAg
bm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICBjYXNlIFB1dEdsb2JhbFZhcjoKLSAgICBjYXNlIE5vdGlmeVB1dEdsb2JhbFZhcjoKKyAgICBj
YXNlIE5vdGlmeVdyaXRlOgogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2Ug
Q2hlY2tIYXNJbnN0YW5jZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNTk3OTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5
NCwxMyArMzA5NCwxNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChWaXJ0dWFsUmVnaXN0ZXIoc2Nv
cGUpKSk7CiAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbE9i
amVjdC0+c3ltYm9sVGFibGUoKS0+Z2V0KHVpZCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbnRy
eS5jb3VsZEJlV2F0Y2hlZCgpIHx8ICFtX2dyYXBoLndhdGNocG9pbnRzKCkuaXNTdGlsbFZhbGlk
KGVudHJ5LndhdGNocG9pbnRTZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBWYXJpYWJsZVdhdGNo
cG9pbnRTZXQqIHdhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CisgICAgICAg
ICAgICAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0KKyAgICAgICAgICAgICAgICAgICAgd2F0
Y2hwb2ludFNldCA/IHdhdGNocG9pbnRTZXQtPmluZmVycmVkVmFsdWUoKSA6IEpTVmFsdWUoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXNwZWNpZmljVmFsdWUpIHsKICAgICAgICAgICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCBhZGRUb0dyYXBoKEdldEdsb2JhbFZhciwgT3BJ
bmZvKG9wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbikpKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaChH
bG9iYWxWYXJXYXRjaHBvaW50LCBPcEluZm8ob3BlcmFuZCksIE9wSW5mbyhpZGVudGlmaWVyTnVt
YmVyKSk7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gZ2xvYmFsT2Jq
ZWN0LT5yZWdpc3RlckF0KGVudHJ5LmdldEluZGV4KCkpLmdldCgpOworICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoVmFyaWFibGVXYXRjaHBvaW50LCBPcEluZm8od2F0Y2hwb2ludFNldCkpOwog
ICAgICAgICAgICAgICAgIGlmIChzcGVjaWZpY1ZhbHVlLmlzQ2VsbCgpKQogICAgICAgICAgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIGNlbGxDb25zdGFudChzcGVjaWZpY1Zh
bHVlLmFzQ2VsbCgpKSk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMzEyOCw3ICszMTMwLDcg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
U3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJd
OwogCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDA7Ci0gICAgICAgICAgICBX
YXRjaHBvaW50U2V0KiB3YXRjaHBvaW50cyA9IDA7CisgICAgICAgICAgICBWYXJpYWJsZVdhdGNo
cG9pbnRTZXQqIHdhdGNocG9pbnRzID0gMDsKICAgICAgICAgICAgIHVpbnRwdHJfdCBvcGVyYW5k
OwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKQEAgLTMxNjAs
OSArMzE2MiwxMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAg
ICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFsT2JqZWN0LT5zeW1ib2xU
YWJsZSgpLT5nZXQodWlkKTsKICAgICAgICAgICAgICAgICBBU1NFUlQod2F0Y2hwb2ludHMgPT0g
ZW50cnkud2F0Y2hwb2ludFNldCgpKTsKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEds
b2JhbFZhciwgT3BJbmZvKG9wZXJhbmQpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKHZhbHVlKSkpOwor
ICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlTm9kZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIodmFs
dWUpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEdsb2JhbFZhciwgT3BJbmZvKG9w
ZXJhbmQpLCB2YWx1ZU5vZGUpOwogICAgICAgICAgICAgICAgIGlmICh3YXRjaHBvaW50cy0+c3Rh
dGUoKSAhPSBJc0ludmFsaWRhdGVkKQotICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKE5v
dGlmeVB1dEdsb2JhbFZhciwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8oaWRlbnRpZmllck51bWJl
cikpOworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKE5vdGlmeVdyaXRlLCBPcEluZm8o
d2F0Y2hwb2ludHMpLCB2YWx1ZU5vZGUpOwogICAgICAgICAgICAgICAgIC8vIEtlZXAgc2NvcGUg
YWxpdmUgdW50aWwgYWZ0ZXIgcHV0LgogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRv
bSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lv
biAxNTk3OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYwLDI4ICsyNjAsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBnbG9iYWxWYXJXYXRjaHBvaW50RWxpbWluYXRp
b24oV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50ZXIpCi0gICAgewotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4SW5CbG9jazsgaS0tOykgewotICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgotICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5yZWdpc3RlclBvaW50ZXIoKSA9PSByZWdpc3RlclBvaW50
ZXIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgICAgICAgICAgICAgaWYg
KG5vZGUtPnJlZ2lzdGVyUG9pbnRlcigpID09IHJlZ2lzdGVyUG9pbnRlcikKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChtX2dyYXBoLmNsb2JiZXJzV29ybGQobm9kZSkpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIGJv
b2wgdmFySW5qZWN0aW9uV2F0Y2hwb2ludEVsaW1pbmF0aW9uKCkKICAgICB7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CkBAIC0xMjI5LDEzICsxMjA3
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
Y2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgotICAgICAgICAgICAgaWYgKGNzZU1vZGUgPT0gU3Rv
cmVFbGltaW5hdGlvbikKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChn
bG9iYWxWYXJXYXRjaHBvaW50RWxpbWluYXRpb24obm9kZS0+cmVnaXN0ZXJQb2ludGVyKCkpKQot
ICAgICAgICAgICAgICAgIGVsaW1pbmF0ZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgogICAgICAgICAgICAg
aWYgKGNzZU1vZGUgPT0gU3RvcmVFbGltaW5hdGlvbikKICAgICAgICAgICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lv
biAxNTk3OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQzLDggKzE0MywxMyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCi0gICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6CisgICAgY2FzZSBW
YXJpYWJsZVdhdGNocG9pbnQ6CisgICAgICAgIHJlYWQoV2F0Y2hwb2ludF9maXJlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgICAgICAKKyAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgICAgICB3cml0
ZShXYXRjaHBvaW50X2ZpcmUpOworICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICBy
ZXR1cm47CiAKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CkBAIC01MjAsNyArNTI1LDYgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICByZXR1cm47
CiAgICAgICAgIAogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgotICAgIGNhc2UgR2xvYmFsVmFyV2F0
Y2hwb2ludDoKICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoQWJzb2x1dGUsIG5vZGUtPnJlZ2lz
dGVyUG9pbnRlcigpKSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE1OTc5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkxOCw4ICs5MTgsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldENsb3N1
cmVWYXI6CiAgICAgICAgIGNhc2UgR2V0R2xvYmFsVmFyOgogICAgICAgICBjYXNlIFB1dEdsb2Jh
bFZhcjoKLSAgICAgICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6Ci0gICAgICAgIGNhc2UgR2xv
YmFsVmFyV2F0Y2hwb2ludDoKKyAgICAgICAgY2FzZSBOb3RpZnlXcml0ZToKKyAgICAgICAgY2Fz
ZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2lu
dDoKICAgICAgICAgY2FzZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ6CiAgICAgICAgIGNh
c2UgQ2FsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAx
NTk3OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNzQ4LDIwICs3NDgsOSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBt
X29wSW5mbzsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNJZGVudGlmaWVyTnVtYmVyRm9yQ2hl
Y2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gR2xvYmFsVmFyV2F0Y2hwb2ludCB8
fCBvcCgpID09IE5vdGlmeVB1dEdsb2JhbFZhcjsKLSAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlckZvckNoZWNrKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNJZGVu
dGlmaWVyTnVtYmVyRm9yQ2hlY2soKSk7Ci0gICAgICAgIHJldHVybiBtX29wSW5mbzI7Ci0gICAg
fQotICAgIAogICAgIGJvb2wgaGFzUmVnaXN0ZXJQb2ludGVyKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBvcCgpID09IEdldEdsb2JhbFZhciB8fCBvcCgpID09IFB1dEdsb2JhbFZhciB8fCBvcCgp
ID09IEdsb2JhbFZhcldhdGNocG9pbnQgfHwgb3AoKSA9PSBOb3RpZnlQdXRHbG9iYWxWYXI7Cisg
ICAgICAgIHJldHVybiBvcCgpID09IEdldEdsb2JhbFZhciB8fCBvcCgpID09IFB1dEdsb2JhbFZh
cjsKICAgICB9CiAgICAgCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlclBvaW50
ZXIoKQpAQCAtOTczLDYgKzk2MiwxNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBy
ZXR1cm4ganNDYXN0PEV4ZWN1dGFibGVCYXNlKj4ocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPiht
X29wSW5mbykpOwogICAgIH0KKyAgICAKKyAgICBib29sIGhhc1ZhcmlhYmxlV2F0Y2hwb2ludFNl
dCgpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBOb3RpZnlXcml0ZSB8fCBvcCgpID09
IFZhcmlhYmxlV2F0Y2hwb2ludDsKKyAgICB9CisgICAgCisgICAgVmFyaWFibGVXYXRjaHBvaW50
U2V0KiB2YXJpYWJsZVdhdGNocG9pbnRTZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VmFyaWFibGVXYXRjaHBvaW50U2V0Kj4obV9vcEluZm8pOworICAgIH0KIAog
ICAgIGJvb2wgaGFzU3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE1OTc5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTg0LDggKzE4NCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhQdXRDbG9zdXJlVmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0R2xvYmFs
VmFyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXRHbG9iYWxWYXIsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKLSAgICBtYWNybyhOb3RpZnlQdXRHbG9iYWxWYXIsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKLSAgICBtYWNybyhHbG9iYWxWYXJXYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oTm90aWZ5V3JpdGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhWYXJp
YWJsZVdhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhWYXJJbmplY3Rp
b25XYXRjaHBvaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tGdW5jdGlv
biwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNTk3OTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTgsMTIg
Kzk5OCwxMiBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaFN0cmluCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihleGVjLT5jb2RlQmxvY2soKS0+c3RyaW5nU3dpdGNo
SnVtcFRhYmxlKHRhYmxlSW5kZXgpLmN0aUZvclZhbHVlKHN0cmluZy0+dmFsdWUoZXhlYykuaW1w
bCgpKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5vdGlmeVdyaXRlKEV4ZWNTdGF0ZSogZXhlYywgV2F0Y2hwb2ludFNldCogc2V0KQordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkludmFsaWRhdGUoRXhlY1N0YXRlKiBleGVjLCBWYXJp
YWJsZVdhdGNocG9pbnRTZXQqIHNldCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIHNldC0+bm90
aWZ5V3JpdGUoKTsKKyAgICBzZXQtPmludmFsaWRhdGUoKTsKIH0KIAogZG91YmxlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRk1vZE9uSW50cyhpbnQzMl90IGEsIGludDMyX3QgYikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNTk3OTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25N
YWtlUm9wZTIKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYWtlUm9wZTMoRXhlY1N0
YXRlKiwgSlNTdHJpbmcqLCBKU1N0cmluZyosIEpTU3RyaW5nKik7CiBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkZpbmRTd2l0Y2hJbW1UYXJnZXRGb3JEb3VibGUoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIHNpemVfdCB0YWJsZUluZGV4KTsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uU3dpdGNoU3RyaW5nKEV4ZWNTdGF0ZSosIHNpemVfdCB0YWJsZUluZGV4LCBKU1N0cmlu
ZyopOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5vdGlmeVdyaXRlKEV4ZWNTdGF0ZSos
IFdhdGNocG9pbnRTZXQqKTsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbnZhbGlkYXRl
KEV4ZWNTdGF0ZSosIFZhcmlhYmxlV2F0Y2hwb2ludFNldCopOwogCiAjaWYgRU5BQkxFKEZUTF9K
SVQpCiAvLyBGSVhNRTogTWFrZSBjYWxscyB3b3JrIHdlbGwuIEN1cnJlbnRseSB0aGV5J3JlIGEg
cHVyZSByZWdyZXNzaW9uLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1
OTc5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzQsNyArNTc0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJn
dW1lbnRzOgogICAgICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKLSAgICAgICAg
Y2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgorICAgICAgICBjYXNlIFZhcmlhYmxlV2F0Y2hwb2lu
dDoKICAgICAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgogICAgICAgICBjYXNlIEFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtNTgy
LDcgKzU4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tXYXRjaGRvZ1RpbWVyOgog
ICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNlIExvb3BIaW50OgotICAgICAg
ICBjYXNlIE5vdGlmeVB1dEdsb2JhbFZhcjoKKyAgICAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25v
cmVkIGJlY2F1c2UgaXQgYWxyZWFkeSBoYXMgYSBwcmVkaWN0aW9uLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE1OTc5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3Rh
dGVUeXBlJiBzdAogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIEdldEdsb2JhbFZh
cjoKICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKLSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6
CisgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CiAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRj
aHBvaW50OgogICAgIGNhc2UgQ2hlY2tGdW5jdGlvbjoKICAgICBjYXNlIEFsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludDoKQEAgLTI0Miw3ICsyNDIsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBJbnQ1MlRvRG91YmxlOgogICAgIGNhc2UgSW50
NTJUb1ZhbHVlOgogICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6Ci0gICAgY2FzZSBOb3RpZnlQ
dXRHbG9iYWxWYXI6CisgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIAogICAgIGNhc2UgR2V0QnlWYWw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE1
OTc5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNzEsMzMgKzQwNzEsNjQgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAg
ICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6IHsKLSNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQp
Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICBHUFJSZWcgc2Ny
YXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAgIG1faml0LmxvYWQzMihub2RlLT5yZWdp
c3RlclBvaW50ZXIoKS0+dGFnUG9pbnRlcigpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgbm90T0sgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwKLSAgICAgICAgICAgIFRydXN0ZWRJbW0zMihub2Rl
LT5yZWdpc3RlclBvaW50ZXIoKS0+Z2V0KCkudGFnKCkpKTsKLSAgICAgICAgbV9qaXQubG9hZDMy
KG5vZGUtPnJlZ2lzdGVyUG9pbnRlcigpLT5wYXlsb2FkUG9pbnRlcigpLCBzY3JhdGNoR1BSKTsK
LSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgb2sgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgc2NyYXRjaEdQUiwKLSAgICAgICAgICAgIFRydXN0ZWRJ
bW0zMihub2RlLT5yZWdpc3RlclBvaW50ZXIoKS0+Z2V0KCkucGF5bG9hZCgpKSk7Ci0gICAgICAg
IG5vdE9LLmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwotICAgICAg
ICBvay5saW5rKCZtX2ppdCk7Ci0jZW5kaWYKKyAgICBjYXNlIE5vdGlmeVdyaXRlOiB7CisgICAg
ICAgIFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gbm9kZS0+dmFyaWFibGVXYXRjaHBvaW50
U2V0KCk7CisgICAgCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gdmFsdWUudGFnR1BSKCk7Cisg
ICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisgICAg
CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQ
UiA9IHRlbXAuZ3ByKCk7CisgICAgCisgICAgICAgIG1faml0LmxvYWQ4KHNldC0+YWRkcmVzc09m
U3RhdGUoKSwgdGVtcEdQUik7CisgICAgCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBy
ZWFkeTsKKyAgICAKKyAgICAgICAgcmVhZHkuYXBwZW5kKG1faml0LmJyYW5jaDMyKEpJVENvbXBp
bGVyOjpFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7CisgICAg
CisgICAgICAgIGlmIChzZXQtPnN0YXRlKCkgPT0gQ2xlYXJXYXRjaHBvaW50KSB7CisgICAgICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1dhdGNoZWQgPQorICAgICAgICAgICAgICAgIG1faml0
LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKENs
ZWFyV2F0Y2hwb2ludCkpOwogICAgICAgICAKLSAgICAgICAgbm9SZXN1bHQobm9kZSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWVUYWdHUFIs
ICZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKS0+dS5hc0JpdHMudGFnKTsKKyAgICAgICAg
ICAgIG1faml0LnN0b3JlMzIodmFsdWVQYXlsb2FkR1BSLCAmc2V0LT5hZGRyZXNzT2ZJbmZlcnJl
ZFZhbHVlKCktPnUuYXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgbV9qaXQuc3RvcmU4KFRy
dXN0ZWRJbW0zMihJc1dhdGNoZWQpLCBzZXQtPmFkZHJlc3NPZlN0YXRlKCkpOworICAgICAgICAg
ICAgcmVhZHkuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgIAorICAgICAgICAgICAgaXNX
YXRjaGVkLmxpbmsoJm1faml0KTsKKyAgICAgICAgfQogCi0gICAgY2FzZSBOb3RpZnlQdXRHbG9i
YWxWYXI6IHsKLSAgICAgICAgY29tcGlsZU5vdGlmeVB1dEdsb2JhbFZhcihub2RlKTsKKyAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZGVmaW5pdGVseU5vdEVxdWFsID0gbV9qaXQuYnJhbmNoMzIo
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICBKSVRDb21w
aWxlcjo6QWJzb2x1dGVBZGRyZXNzKCZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKS0+dS5h
c0JpdHMucGF5bG9hZCksCisgICAgICAgICAgICB2YWx1ZVBheWxvYWRHUFIpOworICAgICAgICBy
ZWFkeS5hcHBlbmQobV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1
YWwsIAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcygmc2V0LT5hZGRy
ZXNzT2ZJbmZlcnJlZFZhbHVlKCktPnUuYXNCaXRzLnRhZyksCisgICAgICAgICAgICB2YWx1ZVRh
Z0dQUikpOworICAgICAgICBkZWZpbml0ZWx5Tm90RXF1YWwubGluaygmbV9qaXQpOworICAgIAor
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0LmJyYW5jaFRlc3Q4KAor
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFk
ZHJlc3Moc2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkpKTsKKyAgICAgICAgbV9qaXQuc3Rv
cmU4KFRydXN0ZWRJbW0zMihJc0ludmFsaWRhdGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsK
KyAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpFbXB0eVZhbHVlVGFnKSwKKyAgICAgICAgICAgICZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFs
dWUoKS0+dS5hc0JpdHMudGFnKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgICAg
IFRydXN0ZWRJbW0zMigwKSwgJnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0
cy5wYXlsb2FkKTsKKworICAgICAgICByZWFkeS5saW5rKCZtX2ppdCk7CisgICAgCisgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNl
LCB0aGlzLCBvcGVyYXRpb25JbnZhbGlkYXRlLCBOb1Jlc3VsdCwgc2V0KSk7CisgICAgCisgICAg
ICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIFZh
ckluamVjdGlvbldhdGNocG9pbnQ6IHsKKyAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6
CisgICAgY2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6IHsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTU5Nzk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDM1MywyOCArNDM1Myw1MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgR2xvYmFsVmFy
V2F0Y2hwb2ludDogewotI2lmIERGR19FTkFCTEUoSklUX0FTU0VSVCkKLSAgICAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRj
aC5ncHIoKTsKLSAgICAgICAgbV9qaXQubG9hZDY0KG5vZGUtPnJlZ2lzdGVyUG9pbnRlcigpLCBz
Y3JhdGNoR1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgb2sgPSBtX2ppdC5icmFuY2g2
NCgKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgc2NyYXRjaEdQUiwKLSAgICAgICAg
ICAgIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUobm9kZS0+cmVnaXN0ZXJQb2ludGVyKCkt
PmdldCgpKSkpOwotICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7Ci0gICAgICAgIG9rLmxpbmso
Jm1faml0KTsKLSNlbmRpZgorICAgIGNhc2UgTm90aWZ5V3JpdGU6IHsKKyAgICAgICAgVmFyaWFi
bGVXYXRjaHBvaW50U2V0KiBzZXQgPSBub2RlLT52YXJpYWJsZVdhdGNocG9pbnRTZXQoKTsKKyAg
ICAKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIo
KTsKKyAgICAKKyAgICAgICAgbV9qaXQubG9hZDgoc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpLCB0ZW1w
R1BSKTsKKyAgICAKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHJlYWR5OworICAgIAor
ICAgICAgICByZWFkeS5hcHBlbmQobV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCB0
ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCkpKTsKKyAgICAKKyAgICAgICAgaWYg
KHNldC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKKyAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzV2F0Y2hlZCA9CisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoQ2xlYXJXYXRjaHBvaW50
KSk7CisgICAgICAgIAorICAgICAgICAgICAgbV9qaXQuc3RvcmU2NCh2YWx1ZUdQUiwgc2V0LT5h
ZGRyZXNzT2ZJbmZlcnJlZFZhbHVlKCkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmU4KFRydXN0
ZWRJbW0zMihJc1dhdGNoZWQpLCBzZXQtPmFkZHJlc3NPZlN0YXRlKCkpOworICAgICAgICAgICAg
cmVhZHkuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIAorICAgICAgICAgICAgaXNXYXRj
aGVkLmxpbmsoJm1faml0KTsKKyAgICAgICAgfQorICAgIAorICAgICAgICByZWFkeS5hcHBlbmQo
bV9qaXQuYnJhbmNoNjQoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyhzZXQtPmFkZHJlc3NPZkluZmVycmVk
VmFsdWUoKSksIHZhbHVlR1BSKSk7CisgICAgCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dDYXNlID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9u
WmVybywgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyhzZXQtPmFkZHJlc3NPZlNldElzTm90
RW1wdHkoKSkpOworICAgICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0
ZWQpLCBzZXQtPmFkZHJlc3NPZlN0YXRlKCkpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKSksIHRlbXBHUFIpOworICAgICAgICBtX2pp
dC5zdG9yZTY0KHRlbXBHUFIsIHNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpKTsKKworICAg
ICAgICByZWFkeS5saW5rKCZtX2ppdCk7CisgICAgCisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25J
bnZhbGlkYXRlLCBOb1Jlc3VsdCwgc2V0KSk7CisgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgTm90aWZ5UHV0R2xv
YmFsVmFyOiB7Ci0gICAgICAgIGNvbXBpbGVOb3RpZnlQdXRHbG9iYWxWYXIobm9kZSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KIAotICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDogewor
ICAgIGNhc2UgVmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKKyAgICBjYXNlIFZhcmlhYmxlV2F0Y2hw
b2ludDogewogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHJldmlzaW9uIDE1OTc5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjAwLDQ0ICs1NjAwLDYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaChOb2RlKiBubwogICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOb3RpZnlQ
dXRHbG9iYWxWYXIoTm9kZSogbm9kZSkKLXsKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBtX2pp
dC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCktPmdldCgK
LSAgICAgICAgbV9qaXQuZ3JhcGgoKS5pZGVudGlmaWVycygpW25vZGUtPmlkZW50aWZpZXJOdW1i
ZXJGb3JDaGVjaygpXSkud2F0Y2hwb2ludFNldCgpOwotICAgIAotICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOwotICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAKLSAgICBt
X2ppdC5sb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHRlbXBHUFIpOwotICAgIAotICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCByZWFkeTsKLSAgICAKLSAgICByZWFkeS5hcHBlbmQobV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSXNJbnZh
bGlkYXRlZCkpKTsKLSAgICAKLSAgICBtX2ppdC5tZW1vcnlGZW5jZSgpOwotCi0gICAgaWYgKHNl
dC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNXYXRjaGVkID0KLSAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKENsZWFyV2F0Y2hwb2ludCkpOwotICAgICAg
ICAKLSAgICAgICAgbV9qaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihJc1dhdGNoZWQpLCBzZXQtPmFk
ZHJlc3NPZlN0YXRlKCkpOwotICAgICAgICByZWFkeS5hcHBlbmQobV9qaXQuanVtcCgpKTsKLSAg
ICAgICAgCi0gICAgICAgIGlzV2F0Y2hlZC5saW5rKCZtX2ppdCk7Ci0gICAgfQotICAgIAotICAg
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoVGVzdDgoCi0gICAgICAg
IEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKHNldC0+
YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpKSk7Ci0gICAgbV9qaXQuc3RvcmU4KFRydXN0ZWRJbW0z
MihJc0ludmFsaWRhdGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKLQotICAgIHJlYWR5Lmxp
bmsoJm1faml0KTsKLSAgICAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgc2xv
d1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25Ob3RpZnlXcml0ZSwgTm9SZXN1bHQs
IHNldCkpOwotICAgIAotICAgIG5vUmVzdWx0KG5vZGUpOwotfQotCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjphZGRCcmFuY2goY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wLCBCYXNp
Y0Jsb2NrKiBkZXN0aW5hdGlvbikKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBqdW1wLmp1bXBz
KCkuc2l6ZSgpOyBpLS07KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTU5Nzk1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg0LDcgKzEw
ODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKG9wZXJhdGlvbik7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0pJVE9wZXJhdGlvbl9FVyBvcGVyYXRpb24sIFdhdGNocG9pbnRTZXQqIHdhdGNocG9p
bnRTZXQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlv
bl9FVndzIG9wZXJhdGlvbiwgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0KQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIod2F0Y2hwb2ludFNldCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOwpAQCAtMjA0NSw4ICsyMDQ1LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU5ld0Z1
bmN0aW9uRXhwcmVzc2lvbihOb2RlKik7CiAgICAgYm9vbCBjb21waWxlUmVnRXhwRXhlYyhOb2Rl
Kik7CiAgICAgCi0gICAgdm9pZCBjb21waWxlTm90aWZ5UHV0R2xvYmFsVmFyKE5vZGUqKTsKLSAg
ICAKICAgICAvLyBzaXplIGNhbiBiZSBhbiBpbW1lZGlhdGUgb3IgYSByZWdpc3RlciwgYW5kIG11
c3QgYmUgaW4gYnl0ZXMuIElmIHNpemUgaXMgYSByZWdpc3RlciwKICAgICAvLyBpdCBtdXN0IGJl
IGEgZGlmZmVyZW50IHJlZ2lzdGVyIHRoYW4gcmVzdWx0R1BSLiBFbWl0cyBjb2RlIHRoYXQgcGxh
Y2UgYSBwb2ludGVyIHRvCiAgICAgLy8gdGhlIGVuZCBvZiB0aGUgYWxsb2NhdGlvbi4gVGhlIHJl
dHVybmVkIGp1bXAgaXMgdGhlIGp1bXAgdG8gdGhlIHNsb3cgcGF0aC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMTU5Nzk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4
LDEwICsxMTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fbm9kZS0+c3RydWN0dXJl
KCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKLSAgICAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgotICAgICAgICAgICAg
YWRkTGF6aWx5KAotICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdCgpLT5zeW1ib2xUYWJsZSgp
LT5nZXQoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUt
PmlkZW50aWZpZXJOdW1iZXJGb3JDaGVjaygpXSkud2F0Y2hwb2ludFNldCgpKTsKKyAgICAgICAg
Y2FzZSBWYXJpYWJsZVdhdGNocG9pbnQ6CisgICAgICAgICAgICBhZGRMYXppbHkobV9ub2RlLT52
YXJpYWJsZVdhdGNocG9pbnRTZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNTk3OTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIAogICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6
CiAgICAgY2FzZSBQdXRHbG9iYWxWYXI6Ci0gICAgY2FzZSBOb3RpZnlQdXRHbG9iYWxWYXI6CiAg
ICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgogICAgIGNhc2UgQXJpdGhTdWI6
CkBAIC05Miw3ICs5MSw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICBjYXNlIExvb3BIaW50OgogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNlIENvbnN0cnVj
dDoKLSAgICBjYXNlIEdsb2JhbFZhcldhdGNocG9pbnQ6CiAgICAgY2FzZSBHZXRNeVNjb3BlOgog
ICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0Q2xvc3VyZVJlZ2lzdGVyczoKQEAgLTEw
NCw2ICsxMDIsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAg
ICAgY2FzZSBDaGVja0Z1bmN0aW9uOgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBj
YXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgorICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50
OgorICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBHZXRCeUlkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDE1OTc5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
RlRMIHsKICAgICBtYWNybyhQX0pJVE9wZXJhdGlvbl9FU3RaLCBmdW5jdGlvblR5cGUoaW50UHRy
LCBpbnRQdHIsIGludFB0ciwgaW50MzIpKSBcCiAgICAgbWFjcm8oVl9KSVRPcGVyYXRpb25fRU9a
RCwgZnVuY3Rpb25UeXBlKHZvaWRUeXBlLCBpbnRQdHIsIGludFB0ciwgaW50MzIsIGRvdWJsZVR5
cGUpKSBcCiAgICAgbWFjcm8oVl9KSVRPcGVyYXRpb25fRU9aSiwgZnVuY3Rpb25UeXBlKHZvaWRU
eXBlLCBpbnRQdHIsIGludFB0ciwgaW50MzIsIGludDY0KSkgXAotICAgIG1hY3JvKFZfSklUT3Bl
cmF0aW9uX0VXLCBmdW5jdGlvblR5cGUodm9pZFR5cGUsIGludFB0ciwgaW50UHRyKSkgXAorICAg
IG1hY3JvKFZfSklUT3BlcmF0aW9uX0VWd3MsIGZ1bmN0aW9uVHlwZSh2b2lkVHlwZSwgaW50UHRy
LCBpbnRQdHIpKSBcCiAgICAgbWFjcm8oWl9KSVRPcGVyYXRpb25fRCwgZnVuY3Rpb25UeXBlKGlu
dDMyLCBkb3VibGVUeXBlKSkKIAogY2xhc3MgSW50cmluc2ljUmVwb3NpdG9yeSA6IHB1YmxpYyBD
b21tb25WYWx1ZXMgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE1OTc5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsMTEg
KzM5NCwxMCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjoKICAgICAgICAg
ICAgIGNvbXBpbGVQdXRHbG9iYWxWYXIoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE5vdGlmeVB1dEdsb2JhbFZhcjoKLSAgICAgICAgICAgIGNvbXBpbGVOb3RpZnlQdXRHbG9i
YWxWYXIoKTsKKyAgICAgICAgY2FzZSBOb3RpZnlXcml0ZToKKyAgICAgICAgICAgIGNvbXBpbGVO
b3RpZnlXcml0ZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR2xvYmFsVmFy
V2F0Y2hwb2ludDoKLSAgICAgICAgICAgIGNvbXBpbGVHbG9iYWxWYXJXYXRjaHBvaW50KCk7Cisg
ICAgICAgIGNhc2UgVmFyaWFibGVXYXRjaHBvaW50OgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgR2V0TXlTY29wZToKICAgICAgICAgICAgIGNvbXBpbGVHZXRNeVNjb3BlKCk7CkBA
IC0yMTE3LDE3ICsyMTE2LDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQxKCkpLCBtX291dC5hYnNvbHV0ZShtX25vZGUtPnJlZ2lzdGVyUG9pbnRlcigp
KSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZU5vdGlmeVB1dEdsb2JhbFZhcigpCisg
ICAgdm9pZCBjb21waWxlTm90aWZ5V3JpdGUoKQogICAgIHsKLSAgICAgICAgV2F0Y2hwb2ludFNl
dCogc2V0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5jb2RlT3JpZ2luKS0+c3lt
Ym9sVGFibGUoKS0+Z2V0KAotICAgICAgICAgICAgbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9k
ZS0+aWRlbnRpZmllck51bWJlckZvckNoZWNrKCldKS53YXRjaHBvaW50U2V0KCk7CisgICAgICAg
IFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gbV9ub2RlLT52YXJpYWJsZVdhdGNocG9pbnRT
ZXQoKTsKICAgICAgICAgCi0gICAgICAgIExCYXNpY0Jsb2NrIGlzTm90SW52YWxpZGF0ZWQgPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVB1dEdsb2JhbFZhciBub3QgaW52YWxpZGF0ZWQg
Y2FzZSIpKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgaXNDbGVhciA9IEZUTF9ORVdfQkxPQ0sobV9v
dXQsICgiTm90aWZ5UHV0R2xvYmFsVmFyIGNsZWFyIGNhc2UiKSk7Ci0gICAgICAgIExCYXNpY0Js
b2NrIGlzV2F0Y2hlZCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTm90aWZ5UHV0R2xvYmFsVmFy
IHdhdGNoZWQgY2FzZSIpKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgaXNXYXRjaGVkRmFzdCA9IEZU
TF9ORVdfQkxPQ0sobV9vdXQsICgiTm90aWZ5UHV0R2xvYmFsVmFyIHdhdGNoZWQgZmFzdCBjYXNl
IikpOwotICAgICAgICBMQmFzaWNCbG9jayBpc1dhdGNoZWRTbG93ID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJOb3RpZnlQdXRHbG9iYWxWYXIgd2F0Y2hlZCBzbG93IGNhc2UiKSk7Ci0gICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTm90aWZ5
UHV0R2xvYmFsVmFyIGNvbnRpbnVhdGlvbiIpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgCisgICAgICAgIExCYXNpY0Jsb2Nr
IGlzTm90SW52YWxpZGF0ZWQgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVdyaXRlIG5v
dCBpbnZhbGlkYXRlZCBjYXNlIikpOworICAgICAgICBMQmFzaWNCbG9jayBpc0NsZWFyID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJOb3RpZnlXcml0ZSBjbGVhciBjYXNlIikpOworICAgICAgICBM
QmFzaWNCbG9jayBpc1dhdGNoZWQgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5vdGlmeVdyaXRl
IHdhdGNoZWQgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaW52YWxpZGF0ZSA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgiTm90aWZ5V3JpdGUgaW52YWxpZGF0ZSBjYXNlIikpOworICAgICAg
ICBMQmFzaWNCbG9jayBpbnZhbGlkYXRlRmFzdCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTm90
aWZ5V3JpdGUgaW52YWxpZGF0ZSBmYXN0IGNhc2UiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlu
dmFsaWRhdGVTbG93ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOb3RpZnlXcml0ZSBpbnZhbGlk
YXRlIHNsb3cgY2FzZSIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJOb3RpZnlXcml0ZSBjb250aW51YXRpb24iKSk7CiAgICAgICAg
IAogICAgICAgICBMVmFsdWUgc3RhdGUgPSBtX291dC5sb2FkOChtX291dC5hYnNvbHV0ZShzZXQt
PmFkZHJlc3NPZlN0YXRlKCkpKTsKICAgICAgICAgCkBAIC0yMTM3LDggKzIxMzgsNiBAQCBwcml2
YXRlOgogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBl
bmRUbyhpc05vdEludmFsaWRhdGVkLCBpc0NsZWFyKTsKIAotICAgICAgICBtX291dC5mZW5jZUFj
cVJlbCgpOwotICAgICAgICAKICAgICAgICAgTFZhbHVlIGlzQ2xlYXJWYWx1ZTsKICAgICAgICAg
aWYgKHNldC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpCiAgICAgICAgICAgICBpc0NsZWFy
VmFsdWUgPSBtX291dC5lcXVhbChzdGF0ZSwgbV9vdXQuY29uc3RJbnQ4KENsZWFyV2F0Y2hwb2lu
dCkpOwpAQCAtMjE0OCwzNCArMjE0NywzOCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oaXNDbGVhciwgaXNXYXRjaGVkKTsKICAgICAgICAgCisgICAgICAgIG1f
b3V0LnN0b3JlNjQodmFsdWUsIG1fb3V0LmFic29sdXRlKHNldC0+YWRkcmVzc09mSW5mZXJyZWRW
YWx1ZSgpKSk7CiAgICAgICAgIG1fb3V0LnN0b3JlOChtX291dC5jb25zdEludDgoSXNXYXRjaGVk
KSwgbV9vdXQuYWJzb2x1dGUoc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKSk7CiAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKGlz
V2F0Y2hlZCwgaXNXYXRjaGVkRmFzdCk7CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzV2F0Y2hl
ZCwgaW52YWxpZGF0ZSk7CisgICAgICAgIAorICAgICAgICBtX291dC5icmFuY2goCisgICAgICAg
ICAgICBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQubG9hZDY0KG1fb3V0LmFic29sdXRlKHNldC0+
YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpKSkpLAorICAgICAgICAgICAgY29udGludWF0aW9uLCBp
bnZhbGlkYXRlKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGludmFsaWRhdGUs
IGludmFsaWRhdGVGYXN0KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAg
ICAgICAgIG1fb3V0Lm5vdFplcm84KG1fb3V0LmxvYWQ4KG1fb3V0LmFic29sdXRlKHNldC0+YWRk
cmVzc09mU2V0SXNOb3RFbXB0eSgpKSkpLAotICAgICAgICAgICAgaXNXYXRjaGVkU2xvdywgaXNX
YXRjaGVkRmFzdCk7CisgICAgICAgICAgICBpbnZhbGlkYXRlU2xvdywgaW52YWxpZGF0ZUZhc3Qp
OwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNXYXRjaGVkRmFzdCwgaXNXYXRj
aGVkU2xvdyk7CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGludmFsaWRhdGVGYXN0LCBpbnZhbGlk
YXRlU2xvdyk7CiAgICAgICAgIAorICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKSksCisgICAgICAgICAg
ICBtX291dC5hYnNvbHV0ZShzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKSkpOwogICAgICAg
ICBtX291dC5zdG9yZTgobV9vdXQuY29uc3RJbnQ4KElzSW52YWxpZGF0ZWQpLCBtX291dC5hYnNv
bHV0ZShzZXQtPmFkZHJlc3NPZlN0YXRlKCkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNXYXRjaGVkU2xvdywg
Y29udGludWF0aW9uKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaW52YWxpZGF0ZVNsb3csIGNv
bnRpbnVhdGlvbik7CiAgICAgICAgIAotICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5vdGlmeVdyaXRlKSwgbV9jYWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKHNldCkp
OworICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkludmFsaWRhdGUpLCBt
X2NhbGxGcmFtZSwgbV9vdXQuY29uc3RJbnRQdHIoc2V0KSk7CiAgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVHbG9iYWxWYXJX
YXRjaHBvaW50KCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbiBkZWJ1ZyBtb2RlIHdlIGNv
dWxkIGVtaXQgc29tZSBhc3NlcnRpb24gY29kZSBoZXJlLgotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDcxCi0gICAgfQotICAgIAogICAgIHZv
aWQgY29tcGlsZUdldE15U2NvcGUoKQogICAgIHsKICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5s
b2FkUHRyKGFkZHJlc3NGb3IoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9u
IDE1OTc5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYxOCw3ICs2MTgsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dEdldEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCk7CiAgICAgICAgIHZvaWQgZW1pdEdldENs
b3N1cmVWYXIoaW50IHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFuZCk7CiAgICAgICAgIHZvaWQgZW1p
dFB1dEdsb2JhbFByb3BlcnR5KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QsIGludCB2YWx1ZSk7Ci0g
ICAgICAgIHZvaWQgZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVl
LCBXYXRjaHBvaW50U2V0Kik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdm9pZCBlbWl0
Tm90aWZ5V3JpdGUoUmVnaXN0ZXJJRCB2YWx1ZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBWYXJpYWJs
ZVdhdGNocG9pbnRTZXQqKTsKKyNlbHNlCisgICAgICAgIHZvaWQgZW1pdE5vdGlmeVdyaXRlKFJl
Z2lzdGVySUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGVySUQgc2NyYXRjaCwgVmFy
aWFibGVXYXRjaHBvaW50U2V0Kik7CisjZW5kaWYKKyAgICAgICAgdm9pZCBlbWl0UHV0R2xvYmFs
VmFyKHVpbnRwdHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUsIFZhcmlhYmxlV2F0Y2hwb2ludFNldCop
OwogICAgICAgICB2b2lkIGVtaXRQdXRDbG9zdXJlVmFyKGludCBzY29wZSwgdWludHB0cl90IG9w
ZXJhbmQsIGludCB2YWx1ZSk7CiAKICAgICAgICAgdm9pZCBlbWl0SW5pdFJlZ2lzdGVyKGludCBk
c3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJl
dmlzaW9uIDE1OTc5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1Yklu
Zm8uaCIKLSNpbmNsdWRlICJXYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiVmFyaWFibGVXYXRjaHBv
aW50U2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03Niw3ICs3Niw3IEBAIGV4dGVybiAi
QyIgewogICAgIFN0OiBTdHJ1Y3R1cmUqCiAgICAgVjogdm9pZAogICAgIFZtOiBWTSoKLSAgICBX
OiBXYXRjaHBvaW50U2V0KgorICAgIFZ3czogVmFyaWFibGVXYXRjaHBvaW50U2V0KgogICAgIFo6
IGludDMyX3QKICovCiB0eXBlZGVmIENhbGxGcmFtZSogSklUX09QRVJBVElPTiAoKkZfSklUT3Bl
cmF0aW9uX0VKSlopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
aW50MzJfdCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04g
KCpWX0pJVE9wZXJhdAogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlv
bl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJB
VElPTiAoKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQzMl90LCBF
bmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0
aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKik7Ci10eXBlZGVmIHZvaWQgSklUX09QRVJB
VElPTiAoKlZfSklUT3BlcmF0aW9uX0VXKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0Kik7Cit0
eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VWd3MpKEV4ZWNTdGF0
ZSosIFZhcmlhYmxlV2F0Y2hwb2ludFNldCopOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04g
KCpWX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIHZvaWQg
SklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VWbSkoRXhlY1N0YXRlKiwgVk0qKTsKIHR5
cGVkZWYgY2hhciogSklUX09QRVJBVElPTiAoKlBfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxNTk3OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDcs
MzcgKzgwNyw0OCBAQCB2b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFByb3BlcnR5KHVpbnRwdHJfCiAg
ICAgc3RvcmUzMihyZWdUMiwgQmFzZUluZGV4KHJlZ1QwLCByZWdUMSwgVGltZXNFaWdodCwgKGZp
cnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVl
LCBXYXRjaHBvaW50U2V0KiBzZXQpCit2b2lkIEpJVDo6ZW1pdE5vdGlmeVdyaXRlKFJlZ2lzdGVy
SUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGVySUQgc2NyYXRjaCwgVmFyaWFibGVX
YXRjaHBvaW50U2V0KiBzZXQpCiB7Ci0gICAgaWYgKHNldCAmJiBzZXQtPnN0YXRlKCkgIT0gSXNJ
bnZhbGlkYXRlZCkgewotICAgICAgICBsb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHJlZ1Qy
KTsKLSAgICAgICAgCi0gICAgICAgIEp1bXBMaXN0IHJlYWR5OwotICAgICAgICAKLSAgICAgICAg
cmVhZHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKElzSW52YWxp
ZGF0ZWQpKSk7CisgICAgaWYgKCFzZXQgfHwgc2V0LT5zdGF0ZSgpID09IElzSW52YWxpZGF0ZWQp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBsb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCks
IHNjcmF0Y2gpOworICAgIAorICAgIEp1bXBMaXN0IHJlYWR5OworICAgIAorICAgIHJlYWR5LmFw
cGVuZChicmFuY2gzMihFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQp
KSk7CisgICAgCisgICAgaWYgKHNldC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKKyAg
ICAgICAgSnVtcCBpc1dhdGNoZWQgPSBicmFuY2gzMihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3Rl
ZEltbTMyKENsZWFyV2F0Y2hwb2ludCkpOwogICAgICAgICAKLSAgICAgICAgaWYgKHNldC0+c3Rh
dGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKLSAgICAgICAgICAgIEp1bXAgaXNXYXRjaGVkID0g
YnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQ2xlYXJXYXRjaHBvaW50KSk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKElzV2F0Y2hlZCks
IHJlZ1QyKTsKLSAgICAgICAgICAgIHJlYWR5LmFwcGVuZChqdW1wKCkpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpc1dhdGNoZWQubGluayh0aGlzKTsKLSAgICAgICAgfQorICAgICAgICBz
dG9yZTMyKHRhZywgJnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0cy50YWcp
OworICAgICAgICBzdG9yZTMyKHBheWxvYWQsICZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUo
KS0+dS5hc0JpdHMucGF5bG9hZCk7CisgICAgICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoSXNXYXRj
aGVkKSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAgICAgICAgcmVhZHkuYXBwZW5kKGp1bXAo
KSk7CiAgICAgICAgIAotICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBB
YnNvbHV0ZUFkZHJlc3Moc2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkpKSk7Ci0gICAgICAg
IG1vdmUoVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpLCByZWdUMik7Ci0gICAgICAgIHJlYWR5
LmxpbmsodGhpcyk7CisgICAgICAgIGlzV2F0Y2hlZC5saW5rKHRoaXMpOwogICAgIH0KKworICAg
IEp1bXAgZGVmaW5pdGVseU5vdEVxdWFsID0gYnJhbmNoMzIoCisgICAgICAgIE5vdEVxdWFsLCBB
YnNvbHV0ZUFkZHJlc3MoJnNldC0+YWRkcmVzc09mSW5mZXJyZWRWYWx1ZSgpLT51LmFzQml0cy5w
YXlsb2FkKSwgcGF5bG9hZCk7CisgICAgcmVhZHkuYXBwZW5kKGJyYW5jaDMyKAorICAgICAgICBF
cXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKS0+dS5h
c0JpdHMudGFnKSwgdGFnKSk7CisgICAgZGVmaW5pdGVseU5vdEVxdWFsLmxpbmsodGhpcyk7Cisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNzKHNldC0+
YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpKSkpOworICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoSXNJ
bnZhbGlkYXRlZCksIHNldC0+YWRkcmVzc09mU3RhdGUoKSk7CisgICAgc3RvcmUzMigKKyAgICAg
ICAgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpLCAmc2V0LT5hZGRyZXNzT2ZJ
bmZlcnJlZFZhbHVlKCktPnUuYXNCaXRzLnRhZyk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIo
MCksICZzZXQtPmFkZHJlc3NPZkluZmVycmVkVmFsdWUoKS0+dS5hc0JpdHMucGF5bG9hZCk7CiAg
ICAgCisgICAgcmVhZHkubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRQdXRHbG9iYWxW
YXIodWludHB0cl90IG9wZXJhbmQsIGludCB2YWx1ZSwgVmFyaWFibGVXYXRjaHBvaW50U2V0KiBz
ZXQpCit7CiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CisgICAgZW1pdE5vdGlm
eVdyaXRlKHJlZ1QxLCByZWdUMCwgcmVnVDIsIHNldCk7CiAgICAgc3RvcmUzMihyZWdUMSwgcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4ob3BlcmFuZCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwogICAgIHN0b3JlMzIocmVnVDAsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KG9wZXJhbmQpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7Ci0gICAgCi0gICAgaWYgKHNldCAmJiBzZXQtPnN0
YXRlKCkgIT0gSXNJbnZhbGlkYXRlZCkgewotICAgICAgICBtZW1vcnlGZW5jZSgpOwotICAgICAg
ICBzdG9yZTgocmVnVDEsIHNldC0+YWRkcmVzc09mU3RhdGUoKSk7Ci0gICAgfQogfQogCiB2b2lk
IEpJVDo6ZW1pdFB1dENsb3N1cmVWYXIoaW50IHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFuZCwgaW50
IHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE1OTc5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzEsMzYgKzc3MSw0
MSBAQCB2b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFByb3BlcnR5KHVpbnRwdHJfCiAgICAgc3RvcmVQ
dHIocmVnVDIsIEJhc2VJbmRleChyZWdUMCwgcmVnVDEsIFRpbWVzRWlnaHQsIChmaXJzdE91dE9m
TGluZU9mZnNldCAtIDIpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlLCBXYXRjaHBv
aW50U2V0KiBzZXQpCit2b2lkIEpJVDo6ZW1pdE5vdGlmeVdyaXRlKFJlZ2lzdGVySUQgdmFsdWUs
IFJlZ2lzdGVySUQgc2NyYXRjaCwgVmFyaWFibGVXYXRjaHBvaW50U2V0KiBzZXQpCiB7Ci0gICAg
aWYgKHNldCAmJiBzZXQtPnN0YXRlKCkgIT0gSXNJbnZhbGlkYXRlZCkgewotICAgICAgICBsb2Fk
OChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHJlZ1QxKTsKLSAgICAgICAgCi0gICAgICAgIEp1bXBM
aXN0IHJlYWR5OwotICAgICAgICAKLSAgICAgICAgcmVhZHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFs
LCByZWdUMSwgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7CisgICAgaWYgKCFzZXQgfHwg
c2V0LT5zdGF0ZSgpID09IElzSW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBsb2FkOChzZXQtPmFkZHJlc3NPZlN0YXRlKCksIHNjcmF0Y2gpOworICAgIAorICAgIEp1bXBM
aXN0IHJlYWR5OworICAgIAorICAgIHJlYWR5LmFwcGVuZChicmFuY2gzMihFcXVhbCwgc2NyYXRj
aCwgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7CisgICAgCisgICAgaWYgKHNldC0+c3Rh
dGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsKKyAgICAgICAgSnVtcCBpc1dhdGNoZWQgPSBicmFu
Y2gzMihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKENsZWFyV2F0Y2hwb2ludCkpOwog
ICAgICAgICAKLSAgICAgICAgaWYgKHNldC0+c3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpIHsK
LSAgICAgICAgICAgIEp1bXAgaXNXYXRjaGVkID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBU
cnVzdGVkSW1tMzIoQ2xlYXJXYXRjaHBvaW50KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbTMyKElzV2F0Y2hlZCksIHJlZ1QxKTsKLSAgICAgICAgICAgIHJlYWR5
LmFwcGVuZChqdW1wKCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpc1dhdGNoZWQubGlu
ayh0aGlzKTsKLSAgICAgICAgfQorICAgICAgICBzdG9yZTY0KHZhbHVlLCBzZXQtPmFkZHJlc3NP
ZkluZmVycmVkVmFsdWUoKSk7CisgICAgICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoSXNXYXRjaGVk
KSwgc2V0LT5hZGRyZXNzT2ZTdGF0ZSgpKTsKKyAgICAgICAgcmVhZHkuYXBwZW5kKGp1bXAoKSk7
CiAgICAgICAgIAotICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBYnNv
bHV0ZUFkZHJlc3Moc2V0LT5hZGRyZXNzT2ZTZXRJc05vdEVtcHR5KCkpKSk7Ci0gICAgICAgIG1v
dmUoVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpLCByZWdUMSk7Ci0gICAgICAgIHJlYWR5Lmxp
bmsodGhpcyk7CisgICAgICAgIGlzV2F0Y2hlZC5saW5rKHRoaXMpOwogICAgIH0KICAgICAKKyAg
ICByZWFkeS5hcHBlbmQoYnJhbmNoNjQoRXF1YWwsIEFic29sdXRlQWRkcmVzcyhzZXQtPmFkZHJl
c3NPZkluZmVycmVkVmFsdWUoKSksIHZhbHVlKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVz
dDgoTm9uWmVybywgQWJzb2x1dGVBZGRyZXNzKHNldC0+YWRkcmVzc09mU2V0SXNOb3RFbXB0eSgp
KSkpOworICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCksIHNldC0+YWRkcmVz
c09mU3RhdGUoKSk7CisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoKSkpLCBzY3JhdGNoKTsKKyAgICBzdG9yZTY0KHNjcmF0Y2gsIHNldC0+YWRkcmVzc09mSW5m
ZXJyZWRWYWx1ZSgpKTsKKyAgICAKKyAgICByZWFkeS5saW5rKHRoaXMpOworfQorCit2b2lkIEpJ
VDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgaW50IHZhbHVlLCBWYXJpYWJs
ZVdhdGNocG9pbnRTZXQqIHNldCkKK3sKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVl
LCByZWdUMCk7CisgICAgZW1pdE5vdGlmeVdyaXRlKHJlZ1QwLCByZWdUMSwgc2V0KTsKICAgICBz
dG9yZVB0cihyZWdUMCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3BlcmFuZCkpOwotICAgIAot
ICAgIGlmIChzZXQgJiYgc2V0LT5zdGF0ZSgpICE9IElzSW52YWxpZGF0ZWQpIHsKLSAgICAgICAg
bWVtb3J5RmVuY2UoKTsKLSAgICAgICAgc3RvcmU4KHJlZ1QxLCBzZXQtPmFkZHJlc3NPZlN0YXRl
KCkpOwotICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRQdXRDbG9zdXJlVmFyKGludCBzY29wZSwg
dWludHB0cl90IG9wZXJhbmQsIGludCB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZp
c2lvbiAxNTk3OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjEzMiwyNSArMjEzMiwzNSBAQCBt
YWNybyBwdXRQcm9wZXJ0eSgpCiAgICAgc3RvcmVQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEs
IHQwLCB0MiwgdDMpCiBlbmQKIAorbWFjcm8gbm90aWZ5V3JpdGUoc2V0LCB2YWx1ZVRhZywgdmFs
dWVQYXlsb2FkLCBzY3JhdGNoLCBzbG93KQorICAgIGxvYWRiIFZhcmlhYmxlV2F0Y2hwb2ludFNl
dDo6bV9zdGF0ZVtzZXRdLCBzY3JhdGNoCisgICAgYmllcSBzY3JhdGNoLCBJc0ludmFsaWRhdGVk
LCAuZG9uZQorICAgIGJpbmVxIHNjcmF0Y2gsIENsZWFyV2F0Y2hwb2ludCwgLm92ZXJ3cml0ZQor
ICAgIHN0b3JlaSB2YWx1ZVRhZywgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX2luZmVycmVkVmFs
dWUgKyBUYWdPZmZzZXRbc2V0XQorICAgIHN0b3JlaSB2YWx1ZVBheWxvYWQsIFZhcmlhYmxlV2F0
Y2hwb2ludFNldDo6bV9pbmZlcnJlZFZhbHVlICsgUGF5bG9hZE9mZnNldFtzZXRdCisgICAgc3Rv
cmViIElzV2F0Y2hlZCwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRlW3NldF0KKyAgICBq
bXAgLmRvbmUKKworLm92ZXJ3cml0ZToKKyAgICBiaW5lcSB2YWx1ZVBheWxvYWQsIFZhcmlhYmxl
V2F0Y2hwb2ludFNldDo6bV9pbmZlcnJlZFZhbHVlICsgUGF5bG9hZE9mZnNldFtzZXRdLCAuZGVm
aW5pdGVseURpZmZlcmVudAorICAgIGJpZXEgdmFsdWVUYWcsIFZhcmlhYmxlV2F0Y2hwb2ludFNl
dDo6bV9pbmZlcnJlZFZhbHVlICsgVGFnT2Zmc2V0W3NldF0sIC5kb25lCisuZGVmaW5pdGVseURp
ZmZlcmVudDoKKyAgICBidGJueiBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc2V0SXNOb3RFbXB0
eVtzZXRdLCBzbG93CisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFZhcmlhYmxlV2F0Y2hwb2lu
dFNldDo6bV9pbmZlcnJlZFZhbHVlICsgVGFnT2Zmc2V0W3NldF0KKyAgICBzdG9yZWkgMCwgVmFy
aWFibGVXYXRjaHBvaW50U2V0OjptX2luZmVycmVkVmFsdWUgKyBQYXlsb2FkT2Zmc2V0W3NldF0K
KyAgICBzdG9yZWIgSXNJbnZhbGlkYXRlZCwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRl
W3NldF0KKworLmRvbmU6CitlbmQKKwogbWFjcm8gcHV0R2xvYmFsVmFyKCkKLSAgICBsb2FkcEZy
b21JbnN0cnVjdGlvbig1LCB0MikKLSAgICBsb2FkYiBXYXRjaHBvaW50U2V0OjptX3N0YXRlW3Qy
XSwgdDMKLSAgICBiaWVxIHQzLCBJc0ludmFsaWRhdGVkLCAucmVhZHkKLSAgICBiaW5lcSB0Mywg
Q2xlYXJXYXRjaHBvaW50LCAubmVlZFRvSW52YWxpZGF0ZQotICAgIG1vdmUgSXNXYXRjaGVkLCB0
MwotICAgIGptcCAucmVhZHkKLS5uZWVkVG9JbnZhbGlkYXRlOgotICAgIGJ0Ym56IFdhdGNocG9p
bnRTZXQ6Om1fc2V0SXNOb3RFbXB0eVt0Ml0sIC5wRHluYW1pYwotICAgIG1vdmUgSXNJbnZhbGlk
YXRlZCwgdDMKLS5yZWFkeToKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGxvYWRwRnJvbUluc3RydWN0
aW9uKDUsIHQzKQorICAgIG5vdGlmeVdyaXRlKHQzLCB0MSwgdDIsIHQwLCAucER5bmFtaWMpCiAg
ICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwgdDApCiAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
dDBdCiAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QwXQotICAgIG1lbWZlbmNlCi0gICAg
bG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNSwgdDIpCi0gICAgc3RvcmViIHQzLCBXYXRjaHBvaW50U2V0
OjptX3N0YXRlW3QyXQogZW5kCiAKIG1hY3JvIHB1dENsb3N1cmVWYXIoKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20JKHJldmlzaW9uIDE1OTc5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUyLDIzICsxOTUyLDMw
IEBAIG1hY3JvIHB1dFByb3BlcnR5KCkKICAgICBzdG9yZVByb3BlcnR5QXRWYXJpYWJsZU9mZnNl
dCh0MSwgdDAsIHQyKQogZW5kCiAKK21hY3JvIG5vdGlmeVdyaXRlKHNldCwgdmFsdWUsIHNjcmF0
Y2gsIHNsb3cpCisgICAgbG9hZGIgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRlW3NldF0s
IHNjcmF0Y2gKKyAgICBiaWVxIHNjcmF0Y2gsIElzSW52YWxpZGF0ZWQsIC5kb25lCisgICAgYmlu
ZXEgc2NyYXRjaCwgQ2xlYXJXYXRjaHBvaW50LCAub3ZlcndyaXRlCisgICAgc3RvcmVxIHZhbHVl
LCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1faW5mZXJyZWRWYWx1ZVtzZXRdCisgICAgc3RvcmVi
IElzV2F0Y2hlZCwgVmFyaWFibGVXYXRjaHBvaW50U2V0OjptX3N0YXRlW3NldF0KKyAgICBqbXAg
LmRvbmUKKworLm92ZXJ3cml0ZToKKyAgICBicWVxIHZhbHVlLCBWYXJpYWJsZVdhdGNocG9pbnRT
ZXQ6Om1faW5mZXJyZWRWYWx1ZVtzZXRdLCAuZG9uZQorICAgIGJ0Ym56IFZhcmlhYmxlV2F0Y2hw
b2ludFNldDo6bV9zZXRJc05vdEVtcHR5W3NldF0sIHNsb3cKKyAgICBzdG9yZXEgMCwgVmFyaWFi
bGVXYXRjaHBvaW50U2V0OjptX2luZmVycmVkVmFsdWVbc2V0XQorICAgIHN0b3JlYiBJc0ludmFs
aWRhdGVkLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQ6Om1fc3RhdGVbc2V0XQorCisuZG9uZTogICAg
CitlbmQKKwogbWFjcm8gcHV0R2xvYmFsVmFyKCkKLSAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig1
LCB0MikKLSAgICBsb2FkYiBXYXRjaHBvaW50U2V0OjptX3N0YXRlW3QyXSwgdDMKLSAgICBiaWVx
IHQzLCBJc0ludmFsaWRhdGVkLCAucmVhZHkKLSAgICBiaW5lcSB0MywgQ2xlYXJXYXRjaHBvaW50
LCAubmVlZFRvSW52YWxpZGF0ZQotICAgIG1vdmUgSXNXYXRjaGVkLCB0MwotICAgIGptcCAucmVh
ZHkKLS5uZWVkVG9JbnZhbGlkYXRlOgotICAgIGJ0Ym56IFdhdGNocG9pbnRTZXQ6Om1fc2V0SXNO
b3RFbXB0eVt0Ml0sIC5wRHluYW1pYwotICAgIG1vdmUgSXNJbnZhbGlkYXRlZCwgdDMKLS5yZWFk
eToKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MCwgdDEpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNSwgdDIpCisgICAgbm90
aWZ5V3JpdGUodDIsIHQxLCB0MCwgLnBEeW5hbWljKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9u
KDYsIHQwKQogICAgIHN0b3JlcSB0MSwgW3QwXQotICAgIG1lbWZlbmNlCi0gICAgc3RvcmViIHQz
LCBXYXRjaHBvaW50U2V0OjptX3N0YXRlW3QyXQogZW5kCiAKIG1hY3JvIHB1dENsb3N1cmVWYXIo
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTU5Nzk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAg
SlNHbG9iYWxPYmplY3Q6Ok5ld0dsb2JhbFZhciBKU0dsb2JhbE9iagogICAgIGludCBpbmRleCA9
IHN5bWJvbFRhYmxlKCktPnNpemUobG9ja2VyKTsKICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0Vu
dHJ5KGluZGV4LCAoY29uc3RhbnRNb2RlID09IElzQ29uc3RhbnQpID8gUmVhZE9ubHkgOiAwKTsK
ICAgICBpZiAoY29uc3RhbnRNb2RlID09IElzVmFyaWFibGUpCi0gICAgICAgIG5ld0VudHJ5LnBy
ZXBhcmVUb1dhdGNoKFN5bWJvbFRhYmxlRW50cnk6Ok5vdEluaXRpYWxpemVkKTsKKyAgICAgICAg
bmV3RW50cnkucHJlcGFyZVRvV2F0Y2goKTsKICAgICBTeW1ib2xUYWJsZTo6TWFwOjpBZGRSZXN1
bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS0+YWRkKGxvY2tlciwgaWRlbnQuaW1wbCgpLCBuZXdF
bnRyeSk7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBhZGRSZWdpc3RlcnMo
MSk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6YWRkRnVuY3Rpb24o
RXhlY1N0YQogICAgIE5ld0dsb2JhbFZhciB2YXIgPSBhZGRHbG9iYWxWYXIocHJvcGVydHlOYW1l
LCBJc1ZhcmlhYmxlKTsKICAgICByZWdpc3RlckF0KHZhci5yZWdpc3Rlck51bWJlcikuc2V0KGV4
ZWMtPnZtKCksIHRoaXMsIHZhbHVlKTsKICAgICBpZiAodmFyLnNldCkKLSAgICAgICAgdmFyLnNl
dC0+bm90aWZ5V3JpdGUoKTsKKyAgICAgICAgdmFyLnNldC0+bm90aWZ5V3JpdGUodmFsdWUpOwog
fQogCiBzdGF0aWMgaW5saW5lIEpTT2JqZWN0KiBsYXN0SW5Qcm90b3R5cGVDaGFpbihKU09iamVj
dCogb2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCShyZXZpc2lvbiAxNTk3OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNyArMjkxLDcg
QEAgcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RhbnRNb2RlIHsgSXNDb25zdGFudCwgSXNWYXJp
YWJsZSB9OwogICAgIHN0cnVjdCBOZXdHbG9iYWxWYXIgewogICAgICAgICBpbnQgcmVnaXN0ZXJO
dW1iZXI7Ci0gICAgICAgIFdhdGNocG9pbnRTZXQqIHNldDsKKyAgICAgICAgVmFyaWFibGVXYXRj
aHBvaW50U2V0KiBzZXQ7CiAgICAgfTsKICAgICBOZXdHbG9iYWxWYXIgYWRkR2xvYmFsVmFyKGNv
bnN0IElkZW50aWZpZXImLCBDb25zdGFudE1vZGUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5oCShyZXZpc2lvbiAxNTk3OTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7Ci1jbGFzcyBX
YXRjaHBvaW50U2V0OworY2xhc3MgVmFyaWFibGVXYXRjaHBvaW50U2V0OwogCiBlbnVtIFJlc29s
dmVNb2RlIHsKICAgICBUaHJvd0lmTm90Rm91bmQsCkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSBi
b29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc28KIH0KIAogc3RydWN0IFJlc29sdmVPcCB7
Ci0gICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBvcGVy
YW5kKQorICAgIFJlc29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVp
bnRwdHJfdCBvcGVyYW5kKQogICAgICAgICA6IHR5cGUodHlwZSkKICAgICAgICAgLCBkZXB0aChk
ZXB0aCkKICAgICAgICAgLCBzdHJ1Y3R1cmUoc3RydWN0dXJlKQpAQCAtMTA4LDcgKzEwOCw3IEBA
IHN0cnVjdCBSZXNvbHZlT3AgewogICAgIFJlc29sdmVUeXBlIHR5cGU7CiAgICAgc2l6ZV90IGRl
cHRoOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwotICAgIFdhdGNocG9pbnRTZXQqIHdhdGNo
cG9pbnRTZXQ7CisgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0OwogICAg
IHVpbnRwdHJfdCBvcGVyYW5kOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkocmV2aXNpb24gMTU5Nzk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDYgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQ
dXQoCiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9
PSBIZWFwOjpoZWFwKG9iamVjdCkpOwogICAgIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIHJlZzsKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSAwOwogICAgIHsKICAgICAgICAgU3lt
Ym9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAg
R0NTYWZlQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrLCBleGVj
LT52bSgpLmhlYXApOwpAQCAtMTM4LDE1ICsxMzcsMTQgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFi
bGVQdXQoCiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9Ci0gICAgICAgIHNldCA9IGl0ZXItPnZhbHVlLndhdGNocG9pbnRTZXQoKTsKKyAgICAg
ICAgaWYgKFZhcmlhYmxlV2F0Y2hwb2ludFNldCogc2V0ID0gaXRlci0+dmFsdWUud2F0Y2hwb2lu
dFNldCgpKQorICAgICAgICAgICAgc2V0LT5ub3RpZnlXcml0ZSh2YWx1ZSk7CiAgICAgICAgIHJl
ZyA9ICZvYmplY3QtPnJlZ2lzdGVyQXQoZmFzdEVudHJ5LmdldEluZGV4KCkpOwogICAgIH0KICAg
ICAvLyBJJ2QgcHJlZmVyIHdlIG5vdCBob2xkIGxvY2sgd2hpbGUgZXhlY3V0aW5nIGJhcnJpZXJz
LCBzaW5jZSBJIHByZWZlciB0byByZXNlcnZlCiAgICAgLy8gdGhlIHJpZ2h0IGZvciBiYXJyaWVy
cyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJIGRvbid0IHdhbnQgdG8gaG9sZCBWTQog
ICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4KICAgICByZWctPnNldCh2bSwgb2JqZWN0LCB2YWx1
ZSk7Ci0gICAgaWYgKHNldCkKLSAgICAgICAgc2V0LT5ub3RpZnlXcml0ZSgpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xNTgsNyArMTU2LDYgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlcwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6
aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcChvYmplY3QpKTsKIAogICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIHJlZzsKLSAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSAwOwogICAgIHsKICAg
ICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsK
ICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsK
QEAgLTE2NywxMyArMTY0LDEyIEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJp
YnV0ZXMKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRy
eSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7
Ci0gICAgICAgIHNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKKyAgICAgICAgaWYgKFZhcmlh
YmxlV2F0Y2hwb2ludFNldCogc2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpKQorICAgICAgICAg
ICAgc2V0LT5ub3RpZnlXcml0ZSh2YWx1ZSk7CiAgICAgICAgIGVudHJ5LnNldEF0dHJpYnV0ZXMo
YXR0cmlidXRlcyk7CiAgICAgICAgIHJlZyA9ICZvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0
SW5kZXgoKSk7CiAgICAgfQogICAgIHJlZy0+c2V0KHZtLCBvYmplY3QsIHZhbHVlKTsKLSAgICBp
ZiAoc2V0KQotICAgICAgICBzZXQtPm5vdGlmeVdyaXRlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5j
cHAJKHJldmlzaW9uIDE1OTc5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMzcgKzU4LDMyIEBAIHZvaWQgU3lt
Ym9sVGFibGVFbnRyeTo6ZnJlZUZhdEVudHJ5U2xvdygKICAgICBkZWxldGUgZmF0RW50cnkoKTsK
IH0KIAotYm9vbCBTeW1ib2xUYWJsZUVudHJ5Ojpjb3VsZEJlV2F0Y2hlZCgpCitKU1ZhbHVlIFN5
bWJvbFRhYmxlRW50cnk6OmluZmVycmVkVmFsdWUoKQogewogICAgIGlmICghaXNGYXQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0
RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKLSAgICBpZiAoIXdhdGNocG9pbnRzKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHdhdGNocG9pbnRzLT5zdGF0ZSgpID09IElz
V2F0Y2hlZDsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICByZXR1cm4gZmF0RW50cnko
KS0+bV93YXRjaHBvaW50cy0+aW5mZXJyZWRWYWx1ZSgpOwogfQogCi12b2lkIFN5bWJvbFRhYmxl
RW50cnk6OnByZXBhcmVUb1dhdGNoKFdhdGNoU3RhdGUgc3RhdGUpCit2b2lkIFN5bWJvbFRhYmxl
RW50cnk6OnByZXBhcmVUb1dhdGNoKCkKIHsKICAgICBGYXRFbnRyeSogZW50cnkgPSBpbmZsYXRl
KCk7CiAgICAgQVNTRVJUKCFlbnRyeS0+bV93YXRjaHBvaW50cyk7Ci0gICAgZW50cnktPm1fd2F0
Y2hwb2ludHMgPSBhZG9wdFJlZigKLSAgICAgICAgbmV3IFdhdGNocG9pbnRTZXQoc3RhdGUgPT0g
QWxyZWFkeUluaXRpYWxpemVkID8gSXNXYXRjaGVkIDogQ2xlYXJXYXRjaHBvaW50KSk7CisgICAg
ZW50cnktPm1fd2F0Y2hwb2ludHMgPSBhZG9wdFJlZihuZXcgVmFyaWFibGVXYXRjaHBvaW50U2V0
KCkpOwogfQogCiB2b2lkIFN5bWJvbFRhYmxlRW50cnk6OmFkZFdhdGNocG9pbnQoV2F0Y2hwb2lu
dCogd2F0Y2hwb2ludCkKIHsKLSAgICBBU1NFUlQoY291bGRCZVdhdGNoZWQoKSk7CiAgICAgZmF0
RW50cnkoKS0+bV93YXRjaHBvaW50cy0+YWRkKHdhdGNocG9pbnQpOwogfQogCi12b2lkIFN5bWJv
bFRhYmxlRW50cnk6Om5vdGlmeVdyaXRlU2xvdygpCit2b2lkIFN5bWJvbFRhYmxlRW50cnk6Om5v
dGlmeVdyaXRlU2xvdyhKU1ZhbHVlIHZhbHVlKQogewotICAgIFdhdGNocG9pbnRTZXQqIHdhdGNo
cG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKKyAgICBWYXJpYWJsZVdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQo
KTsKICAgICBpZiAoIXdhdGNocG9pbnRzKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgd2F0
Y2hwb2ludHMtPm5vdGlmeVdyaXRlKCk7CisgICAgd2F0Y2hwb2ludHMtPm5vdGlmeVdyaXRlKHZh
bHVlKTsKIH0KIAogU3ltYm9sVGFibGVFbnRyeTo6RmF0RW50cnkqIFN5bWJvbFRhYmxlRW50cnk6
OmluZmxhdGVTbG93KCkKQEAgLTEwOSw2ICsxMDQsMzQgQEAgU3ltYm9sVGFibGU6OlN5bWJvbFRh
YmxlKFZNJiB2bSkKIAogU3ltYm9sVGFibGU6On5TeW1ib2xUYWJsZSgpIHsgfQogCit2b2lkIFN5
bWJvbFRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogdGhpc0NlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIFN5bWJvbFRhYmxlKiB0aGlzU3ltYm9sVGFibGUgPSBqc0Nhc3Q8U3lt
Ym9sVGFibGUqPih0aGlzQ2VsbCk7CisgICAgaWYgKCF0aGlzU3ltYm9sVGFibGUtPm1fd2F0Y2hw
b2ludENsZWFudXApIHsKKyAgICAgICAgdGhpc1N5bWJvbFRhYmxlLT5tX3dhdGNocG9pbnRDbGVh
bnVwID0KKyAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8V2F0Y2hwb2ludENsZWFudXA+KHRo
aXNTeW1ib2xUYWJsZSk7CisgICAgfQorICAgIAorICAgIHZpc2l0b3IuYWRkVW5jb25kaXRpb25h
bEZpbmFsaXplcih0aGlzU3ltYm9sVGFibGUtPm1fd2F0Y2hwb2ludENsZWFudXAuZ2V0KCkpOwor
fQorCitTeW1ib2xUYWJsZTo6V2F0Y2hwb2ludENsZWFudXA6OldhdGNocG9pbnRDbGVhbnVwKFN5
bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICA6IG1fc3ltYm9sVGFibGUoc3ltYm9sVGFibGUp
Cit7Cit9CisKK1N5bWJvbFRhYmxlOjpXYXRjaHBvaW50Q2xlYW51cDo6fldhdGNocG9pbnRDbGVh
bnVwKCkgeyB9CisKK3ZvaWQgU3ltYm9sVGFibGU6OldhdGNocG9pbnRDbGVhbnVwOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseSgpCit7CisgICAgTWFwOjppdGVyYXRvciBpdGVyID0gbV9zeW1ib2xU
YWJsZS0+bV9tYXAuYmVnaW4oKTsKKyAgICBNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fc3ltYm9sVGFi
bGUtPm1fbWFwLmVuZCgpOworICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAg
ICAgIGlmIChWYXJpYWJsZVdhdGNocG9pbnRTZXQqIHNldCA9IGl0ZXItPnZhbHVlLndhdGNocG9p
bnRTZXQoKSkKKyAgICAgICAgICAgIHNldC0+ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKKyAg
ICB9Cit9CisKIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmUoVk0mIHZtKQogewogICAg
IFN5bWJvbFRhYmxlKiByZXN1bHQgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKHZtKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTU5
Nzk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDEzIEBACiAKICNpbmNsdWRlICJDb25jdXJyZW50SklU
TG9jay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgor
I2luY2x1ZGUgIlZhcmlhYmxlV2F0Y2hwb2ludFNldC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIFdhdGNocG9pbnQ7Ci1jbGFzcyBXYXRjaHBv
aW50U2V0OwotCiBzdHJ1Y3QgU2xvd0FyZ3VtZW50IHsKICAgICBlbnVtIFN0YXR1cyB7CiAgICAg
ICAgIE5vcm1hbCA9IDAsCkBAIC03OSwxMSArNzYsMTEgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUg
aW50IG1pc3NpbmdTeW1ib2xNYQogLy8gY291bnRlZCBwb2ludGVyIHRvIGEgc2hhcmVkIFdhdGNo
cG9pbnRTZXQuIFRodXMsIGluLXBsYWNlIGVkaXRzIG9mIHRoZQogLy8gV2F0Y2hwb2ludFNldCB3
aWxsIG1hbmlmZXN0IGluIGFsbCBjb3BpZXMuIEhlcmUncyBhIHBpY3R1cmU6CiAvLwotLy8gU3lt
Ym9sVGFibGVFbnRyeSAtLT4gRmF0RW50cnkgLS0+IFdhdGNocG9pbnRTZXQKKy8vIFN5bWJvbFRh
YmxlRW50cnkgLS0+IEZhdEVudHJ5IC0tPiBWYXJpYWJsZVdhdGNocG9pbnRTZXQKIC8vCiAvLyBJ
ZiB5b3UgbWFrZSBhIGNvcHkgb2YgYSBTeW1ib2xUYWJsZUVudHJ5LCB5b3Ugd2lsbCBoYXZlOgog
Ly8KLS8vIG9yaWdpbmFsOiBTeW1ib2xUYWJsZUVudHJ5IC0tPiBGYXRFbnRyeSAtLT4gV2F0Y2hw
b2ludFNldAorLy8gb3JpZ2luYWw6IFN5bWJvbFRhYmxlRW50cnkgLS0+IEZhdEVudHJ5IC0tPiBW
YXJpYWJsZVdhdGNocG9pbnRTZXQKIC8vIGNvcHk6ICAgICBTeW1ib2xUYWJsZUVudHJ5IC0tPiBG
YXRFbnRyeSAtLS0tLV4KIAogc3RydWN0IFN5bWJvbFRhYmxlRW50cnkgewpAQCAtMjE4LDI1ICsy
MTUsMjQgQEAgc3RydWN0IFN5bWJvbFRhYmxlRW50cnkgewogICAgICAgICByZXR1cm4gYml0cygp
ICYgUmVhZE9ubHlGbGFnOwogICAgIH0KICAgICAKLSAgICBib29sIGNvdWxkQmVXYXRjaGVkKCk7
CisgICAgSlNWYWx1ZSBpbmZlcnJlZFZhbHVlKCk7CiAgICAgCi0gICAgZW51bSBXYXRjaFN0YXRl
IHsgTm90SW5pdGlhbGl6ZWQsIEFscmVhZHlJbml0aWFsaXplZCB9OwotICAgIHZvaWQgcHJlcGFy
ZVRvV2F0Y2goV2F0Y2hTdGF0ZSk7CisgICAgdm9pZCBwcmVwYXJlVG9XYXRjaCgpOwogICAgIAog
ICAgIHZvaWQgYWRkV2F0Y2hwb2ludChXYXRjaHBvaW50Kik7CiAgICAgCi0gICAgV2F0Y2hwb2lu
dFNldCogd2F0Y2hwb2ludFNldCgpCisgICAgVmFyaWFibGVXYXRjaHBvaW50U2V0KiB3YXRjaHBv
aW50U2V0KCkKICAgICB7CiAgICAgICAgIGlmICghaXNGYXQoKSkKICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICByZXR1cm4gZmF0RW50cnkoKS0+bV93YXRjaHBvaW50cy5nZXQoKTsKICAg
ICB9CiAgICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIG5vdGlmeVdyaXRlKCkKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbm90aWZ5V3JpdGUoSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAg
IGlmIChMSUtFTFkoIWlzRmF0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBub3Rp
ZnlXcml0ZVNsb3coKTsKKyAgICAgICAgbm90aWZ5V3JpdGVTbG93KHZhbHVlKTsKICAgICB9CiAg
ICAgCiBwcml2YXRlOgpAQCAtMjU2LDExICsyNTIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgIGludHB0cl90IG1fYml0czsgLy8gYWx3YXlzIGhhcyBGYXRGbGFnIHNldCBhbmQgZXhh
Y3RseSBtYXRjaGVzIHdoYXQgdGhlIGJpdHMgd291bGQgaGF2ZSBiZWVuIGlmIHRoaXMgd2Fzbid0
IGZhdC4KICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX3dhdGNocG9p
bnRzOworICAgICAgICBSZWZQdHI8VmFyaWFibGVXYXRjaHBvaW50U2V0PiBtX3dhdGNocG9pbnRz
OwogICAgIH07CiAgICAgCiAgICAgU3ltYm9sVGFibGVFbnRyeSYgY29weVNsb3coY29uc3QgU3lt
Ym9sVGFibGVFbnRyeSYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbm90aWZ5V3JpdGVT
bG93KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBub3RpZnlXcml0ZVNsb3coSlNWYWx1
ZSk7CiAgICAgCiAgICAgYm9vbCBpc0ZhdCgpIGNvbnN0CiAgICAgewpAQCAtNDY4LDkgKzQ2NCwy
MyBAQCBwdWJsaWM6CiAgICAgCiAgICAgU3ltYm9sVGFibGUqIGNsb25lKFZNJik7CiAKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKICAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOwogCiBwcml2YXRlOgorICAgIGNsYXNzIFdhdGNocG9pbnRDbGVh
bnVwIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgV2F0Y2hwb2ludENsZWFudXAoU3ltYm9sVGFibGUqKTsKKyAgICAgICAgdmlydHVhbCB+V2F0
Y2hwb2ludENsZWFudXAoKTsKKyAgICAgICAgCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0
dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKSBPVkVSUklERTsKKworICAgIHByaXZh
dGU6CisgICAgICAgIFN5bWJvbFRhYmxlKiBtX3N5bWJvbFRhYmxlOworICAgIH07CisgICAgCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgU3ltYm9sVGFibGUoVk0mKTsKICAgICB+U3ltYm9sVGFibGUo
KTsKIApAQCAtNDgzLDYgKzQ5Myw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1fY2FwdHVyZUVuZDsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93QXJndW1lbnRbXT4gbV9zbG93QXJndW1lbnRzOwor
ICAgIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBvaW50Q2xlYW51cD4gbV93YXRjaHBvaW50
Q2xlYW51cDsKIAogcHVibGljOgogICAgIG11dGFibGUgQ29uY3VycmVudEpJVExvY2sgbV9sb2Nr
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>