<?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>141915</bug_id>
          
          <creation_ts>2015-02-23 10:33:03 -0800</creation_ts>
          <short_desc>Scopes should always be created with a previously-created symbol table rather than creating one on the fly</short_desc>
          <delta_ts>2015-02-24 06:15:30 -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>141921</dependson>
    
    <dependson>141953</dependson>
          <blocked>141174</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1071239</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-23 10:33:03 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071252</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-23 10:55:25 -0800</bug_when>
    <thetext>Ossy: this will have some new callOperation() overloads in JIT.h.  Expect breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071262</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-23 11:27:09 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Ossy: this will have some new callOperation() overloads in JIT.h.  Expect
&gt; breakage.

Actually, we might get lucky.  The new overloads seem to bottom out in existing setupArgumentsXYZ overloads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071268</commentid>
    <comment_count>3</comment_count>
      <attachid>247131</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-23 11:41:51 -0800</bug_when>
    <thetext>Created attachment 247131
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071269</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-23 11:42:51 -0800</bug_when>
    <thetext>Attachment 247131 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSNameScope.h:52:  The parameter name &quot;symbolTable&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071272</commentid>
    <comment_count>5</comment_count>
      <attachid>247131</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-23 12:00:19 -0800</bug_when>
    <thetext>Comment on attachment 247131
the patch

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

r=me

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:71
&gt; +    // FIXME: This won&apos;t work if this operation is called from the DFG or FTL.
&gt; +    // This should be changed to pass in the new scope.

I see that this came from pre-existing code, but can you add a debug ASSERT to ensure that the current exec/frame is not a DFG/FTL frame so that we&apos;ll catch this if someone unwittingly uses this in the DFG/FTL without seeing this FIXME?

&gt; Source/JavaScriptCore/runtime/JSSymbolTableObject.h:64
&gt; +    

nit: unneeded white space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071276</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-23 12:05:09 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 247131 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247131&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JITOperations.cpp:71
&gt; &gt; +    // FIXME: This won&apos;t work if this operation is called from the DFG or FTL.
&gt; &gt; +    // This should be changed to pass in the new scope.
&gt; 
&gt; I see that this came from pre-existing code, but can you add a debug ASSERT
&gt; to ensure that the current exec/frame is not a DFG/FTL frame so that we&apos;ll
&gt; catch this if someone unwittingly uses this in the DFG/FTL without seeing
&gt; this FIXME?

Sure.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSSymbolTableObject.h:64
&gt; &gt; +    
&gt; 
&gt; nit: unneeded white space.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071281</commentid>
    <comment_count>7</comment_count>
      <attachid>247134</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-23 12:16:05 -0800</bug_when>
    <thetext>Created attachment 247134
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071294</commentid>
    <comment_count>8</comment_count>
      <attachid>247137</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-23 12:53:17 -0800</bug_when>
    <thetext>Created attachment 247137
fix 32-bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071316</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-23 13:54:55 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/180514</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071322</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-23 14:03:30 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Ossy: this will have some new callOperation() overloads in JIT.h.  Expect
&gt; breakage.

Thanks for the notice, fix landed in http://trac.webkit.org/changeset/180515</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247131</attachid>
            <date>2015-02-23 11:41:51 -0800</date>
            <delta_ts>2015-02-23 12:16:05 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30156</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgwNTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDE1LTAyLTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U2NvcGVzIHNob3VsZCBhbHdheXMgYmUgY3JlYXRlZCB3aXRoIGEgcHJldmlvdXNseS1jcmVhdGVk
IHN5bWJvbCB0YWJsZSByYXRoZXIgdGhhbiBjcmVhdGluZyBvbmUgb24gdGhlIGZseQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxOTE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGUgbWFp
biBlZmZlY3Qgb2YgdGhpcyBjaGFuZ2UgaXMgdGhhdCBwdXNoaW5nIG5hbWUgc2NvcGVzIG5vIGxv
bmdlciByZXF1aXJlcyBjcmVhdGluZyBzeW1ib2wKKyAgICAgICAgdGFibGVzIG9uIHRoZSBmbHku
CisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gbWFrZXMgaXQgc28gdGhhdCBKU0Vudmlyb25t
ZW50UmVjb3JkcyBtdXN0IGFsd2F5cyBoYXZlIGFuIGEgcHJpb3Igc3ltYm9sIHRhYmxlLgorICAg
ICAgICAKKyAgICAgICAgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCBzdGlsbCBkb2VzIGEgaGFj
ayB3aGVyZSBpdCBjcmVhdGVzIGEgYmxhbmsgc3ltYm9sIHRhYmxlIG9uLWRlbWFuZC4KKyAgICAg
ICAgVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGF0J3Mgd2hhdCBKU0dsb2JhbE9iamVjdCBhbmQg
YWxsIG9mIGl0cyBtYW55IHN1YmNsYXNzZXMgd2FudC4gVGhhdCdzCisgICAgICAgIGhhcm1sZXNz
OyBJIG1haW5seSBuZWVkZWQgYSBwcmlvciBzeW1ib2wgdGFibGVzIGZvciBKU0Vudmlyb25tZW50
UmVjb3JkcyBhbnl3YXkuCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaENhdGNoU2NvcGUpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1c2hfbmFtZV9zY29wZSk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXNoX25h
bWVfc2NvcGUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6cHVzaE5hbWVTY29wZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElO
VF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2Ny
aXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2F0
Y2hTY29wZS5oOgorICAgICAgICAoSlNDOjpKU0NhdGNoU2NvcGU6OkpTQ2F0Y2hTY29wZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2F0Y2hTY29wZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pT
RW52aXJvbm1lbnRSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6SlNFbnZpcm9ubWVudFJlY29yZDo6
SlNFbnZpcm9ubWVudFJlY29yZCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uTmFtZVNj
b3BlLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb25OYW1lU2NvcGU6OkpTRnVuY3Rpb25OYW1l
U2NvcGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uTmFtZVNjb3BlOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNOYW1lU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU05hbWVTY29w
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTTmFtZVNjb3BlLmg6CisgICAgICAgIChK
U0M6OkpTTmFtZVNjb3BlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU05hbWVTY29wZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU05hbWVTY29wZTo6SlNOYW1lU2NvcGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0OjpKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdDo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0OjpKU1N5bWJvbFRhYmxlT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6
OmNyZWF0ZU5hbWVTY29wZVRhYmxlKToKKwogMjAxNS0wMi0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGNvbW1lbnQgdG8gY2xhcmlmeSB0aGF0IHRo
ZSB0ZXN0IHdhcyB0YWtlbiBmcm9tIHRoZSBidWcgcmVwb3J0LCBpbiByZXNwb25zZSB0bwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgkocmV2aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF90b19zY29wZSIsICJsZW5ndGgiIDogNyB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfcHVzaF93aXRoX3Njb3BlIiwgImxlbmd0aCIgOiAzIH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wb3Bfc2NvcGUiLCAibGVuZ3RoIiA6IDIgfSwK
LSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1c2hfbmFtZV9zY29wZSIsICJsZW5ndGgiIDog
NiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHVzaF9uYW1lX3Njb3BlIiwgImxlbmd0
aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYXRjaCIsICJsZW5ndGgiIDog
MiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3ciLCAibGVuZ3RoIiA6IDIgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Rocm93X3N0YXRpY19lcnJvciIsICJsZW5ndGgi
IDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzk0LDkgKzIzOTQsOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHVzaEZ1bmN0aW9uCiB7CiAgICAgZW1pdE9wY29kZShvcF9wdXNoX25hbWVfc2NvcGUpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCh2YWx1ZS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGF0dHJpYnV0
ZXMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKFN5bWJvbFRh
YmxlOjpjcmVhdGVOYW1lU2NvcGVUYWJsZSgqdm0oKSwgcHJvcGVydHksIGF0dHJpYnV0ZXMpKS0+
aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEpTTmFtZVNjb3BlOjpGdW5jdGlv
bk5hbWVTY29wZSk7CiB9CiAKQEAgLTI0MDksOSArMjQwOCw4IEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXNoQ2F0Y2hTY28KIAogICAgIGVtaXRPcGNvZGUob3BfcHVzaF9uYW1lX3Nj
b3BlKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKLSAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChh
dHRyaWJ1dGVzKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShT
eW1ib2xUYWJsZTo6Y3JlYXRlTmFtZVNjb3BlVGFibGUoKnZtKCksIHByb3BlcnR5LCBhdHRyaWJ1
dGVzKSktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChKU05hbWVTY29wZTo6
Q2F0Y2hTY29wZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24g
MTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzE3LDExICs3MTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQs
IFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VDSUNDLCBSZWdpc3RlcklELCBjb25zdCBJZGVudGlmaWVyKiwgUmVn
aXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUUsIFJlZ2lzdGVySUQpOwotI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRVpJZEpaWiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgUmVnaXN0ZXJJRCwgaW50MzJf
dCwgaW50MzJfdCk7Ci0jZWxzZQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfSklUT3BlcmF0aW9uX0VaSWRKWiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgUmVn
aXN0ZXJJRCwgaW50MzJfdCk7Ci0jZW5kaWYKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWlN5bXRhYkosIGludCwgU3ltYm9sVGFibGUq
LCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0ZXJJRCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2so
Vl9KSVRPcGVyYXRpb25fRUosIFJlZ2lzdGVySUQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00NjAsOSArNDYwLDkgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBK
SVQ6OgogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CiB9CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0
aW9uKFZfSklUT3BlcmF0aW9uX0VaSWRKWlogb3BlcmF0aW9uLCBpbnQgb3AxLCBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudE9wMiwgUmVnaXN0ZXJJRCByZWdPcDMsIGludDMyX3Qgb3A0LCBpbnQzMl90
IG9wNSkKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0
aW9uKFZfSklUT3BlcmF0aW9uX0VaU3ltdGFiSiBvcGVyYXRpb24sIGludCBvcDEsIFN5bWJvbFRh
YmxlKiBzeW1ib2xUYWJsZSwgUmVnaXN0ZXJJRCByZWdPcDMpCiB7Ci0gICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihvcDEpLCBUcnVzdGVkSW1tUHRyKGlkZW50T3Ay
KSwgcmVnT3AzLCBUcnVzdGVkSW1tMzIob3A0KSwgVHJ1c3RlZEltbTMyKG9wNSkpOworICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIob3AxKSwgVHJ1c3RlZEltbVB0
cihzeW1ib2xUYWJsZSksIHJlZ09wMyk7CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIApAQCAtNTk0LDkgKzU5NCw5IEBAIEFMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWklkSlogb3BlcmF0
aW9uLCBpbnQzMl90IG9wMSwgY29uc3QgSWRlbnRpZmllciogaWRlbnRPcDIsIFJlZ2lzdGVySUQg
cmVnT3AzVGFnLCBSZWdpc3RlcklEIHJlZ09wM1BheWxvYWQsIGludDMyX3Qgb3A0KQorQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRVpTeW10YWJKIG9wZXJhdGlvbiwgaW50MzJfdCBvcDEsIFN5bWJvbFRhYmxlKiBpZGVu
dE9wMiwgUmVnaXN0ZXJJRCByZWdPcDNUYWcsIFJlZ2lzdGVySUQgcmVnT3AzUGF5bG9hZCkKIHsK
LSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKG9wMSksIFRydXN0
ZWRJbW1QdHIoaWRlbnRPcDIpLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyByZWdPcDNQYXlsb2FkLCBy
ZWdPcDNUYWcsIFRydXN0ZWRJbW0zMihvcDQpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbTMyKG9wMSksIFRydXN0ZWRJbW1QdHIoc3ltYm9sVGFibGUpLCBFQUJJ
XzMyQklUX0RVTU1ZX0FSRyByZWdPcDNQYXlsb2FkLCByZWdPcDNUYWcpOwogICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE4
MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzc5LDE0ICs3NzksMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3RvX251bWJlcihJbnN0cnVjdAogdm9pZCBKSVQ6OmVtaXRfb3BfcHVzaF9uYW1lX3Njb3BlKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgZW1pdExvYWQoY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCwgcmVnVDEsIHJlZ1QwKTsKLSAgICBpZiAoY3VycmVudEluc3RydWN0aW9u
WzVdLnUub3BlcmFuZCA9PSBKU05hbWVTY29wZTo6Q2F0Y2hTY29wZSkgewotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblB1c2hDYXRjaFNjb3BlLCBkc3QsICZtX2NvZGVCbG9jay0+aWRl
bnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSwgcmVnVDEsIHJlZ1QwLCBj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICBlbWl0TG9hZChjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMSwgcmVnVDApOworICAgIGlmIChjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kID09IEpTTmFtZVNjb3BlOjpDYXRjaFNjb3BlKSB7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHVzaENhdGNoU2NvcGUsIGRzdCwganNDYXN0PFN5
bWJvbFRhYmxlKj4oZ2V0Q29uc3RhbnRPcGVyYW5kKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQpKSwgcmVnVDEsIHJlZ1QwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJF
TEVBU0VfQVNTRVJUKGN1cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPT0gSlNOYW1lU2Nv
cGU6OkZ1bmN0aW9uTmFtZVNjb3BlKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hG
dW5jdGlvbk5hbWVTY29wZSwgZHN0LCAmbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCksIHJlZ1QxLCByZWdUMCwgY3VycmVudEluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudEluc3RydWN0aW9uWzRd
LnUub3BlcmFuZCA9PSBKU05hbWVTY29wZTo6RnVuY3Rpb25OYW1lU2NvcGUpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUHVzaEZ1bmN0aW9uTmFtZVNjb3BlLCBkc3QsIGpzQ2FzdDxTeW1i
b2xUYWJsZSo+KGdldENvbnN0YW50T3BlcmFuZChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKSksIHJlZ1QxLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCkBAIC00ODYsOCArNDg3LDE0IEBAIHZvaWQg
SklUOjplbWl0X29wX3RvX251bWJlcihJbnN0cnVjdGlvbioKIHZvaWQgSklUOjplbWl0X29wX3B1
c2hfbmFtZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCwgcmVnVDApOwotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHVzaE5hbWVTY29wZSwgZHN0LCAmbV9jb2RlQmxvY2st
PmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCksIHJlZ1QwLCBjdXJy
ZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5vcGVy
YW5kKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICBpZiAoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZCA9PSBKU05hbWVTY29wZTo6Q2F0Y2hTY29wZSkgeworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblB1c2hDYXRjaFNjb3BlLCBkc3QsIGpzQ2FzdDxTeW1ib2xUYWJsZSo+KGdldENvbnN0
YW50T3BlcmFuZChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSksIHJlZ1QwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRJbnN0cnVj
dGlvbls0XS51Lm9wZXJhbmQgPT0gSlNOYW1lU2NvcGU6OkZ1bmN0aW9uTmFtZVNjb3BlKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hGdW5jdGlvbk5hbWVTY29wZSwgZHN0LCBqc0Nh
c3Q8U3ltYm9sVGFibGUqPihnZXRDb25zdGFudE9wZXJhbmQoY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZCkpLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDggQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NhdGNoU2NvcGUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uTmFtZVNjb3BlLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgog
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpAQCAtNTksNiArNjEsMjIgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFNjb3BlVHlwZT4KK3ZvaWQg
cHVzaE5hbWVTY29wZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZHN0LCBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgaWYgdGhpcyBvcGVyYXRpb24gaXMg
Y2FsbGVkIGZyb20gdGhlIERGRyBvciBGVEwuCisgICAgLy8gVGhpcyBzaG91bGQgYmUgY2hhbmdl
ZCB0byBwYXNzIGluIHRoZSBuZXcgc2NvcGUuCisgICAgSlNTY29wZSogY3VycmVudFNjb3BlID0g
ZXhlYy0+dW5jaGVja2VkUihkc3QpLlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEpTTmFtZVNjb3Bl
KiBzY29wZSA9IFNjb3BlVHlwZTo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgaWYgdGhpcyBvcGVyYXRpb24g
aXMgY2FsbGVkIGZyb20gdGhlIERGRyBvciBGVEwuCisgICAgLy8gVGhpcyBzaG91bGQgYmUgY2hh
bmdlZCB0byByZXR1cm4gdGhlIG5ldyBzY29wZS4KKyAgICBleGVjLT51bmNoZWNrZWRSKGRzdCkg
PSBzY29wZTsKK30KKwogZXh0ZXJuICJDIiB7CiAKICNpZiBDT01QSUxFUihNU1ZDKQpAQCAtMTI2
OSwzMyArMTI4NywxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyU2V0
CiB9CiAjZW5kaWYKIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hOYW1lU2NvcGUo
RXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IGRzdCwgSWRlbnRpZmllciogaWRlbnRpZmllciwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBpbnQzMl90IGF0dGlidXRlcywgaW50MzJfdCB0eXBl
KQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hDYXRjaFNjb3BlKEV4ZWNTdGF0ZSog
ZXhlYywgaW50MzJfdCBkc3QsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotCi0gICAgLy8gRklYTUU6IFRoaXMg
d29uJ3Qgd29yayBpZiB0aGlzIG9wZXJhdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgREZHIG9yIEZU
TC4KLSAgICAvLyBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIHRvIHBhc3MgaW4gdGhlIG5ldyBzY29w
ZS4KLSAgICBKU1Njb3BlKiBjdXJyZW50U2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKGRzdCkuUmVn
aXN0ZXI6OnNjb3BlKCk7Ci0gICAgSlNOYW1lU2NvcGU6OlR5cGUgc2NvcGVUeXBlID0gc3RhdGlj
X2Nhc3Q8SlNOYW1lU2NvcGU6OlR5cGU+KHR5cGUpOwotICAgIEpTTmFtZVNjb3BlKiBzY29wZSA9
IEpTTmFtZVNjb3BlOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgY3Vy
cmVudFNjb3BlLCAqaWRlbnRpZmllciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0
dGlidXRlcywgc2NvcGVUeXBlKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgaWYg
dGhpcyBvcGVyYXRpb24gaXMgY2FsbGVkIGZyb20gdGhlIERGRyBvciBGVEwuCi0gICAgLy8gVGhp
cyBzaG91bGQgYmUgY2hhbmdlZCB0byByZXR1cm4gdGhlIG5ldyBzY29wZS4KLSAgICBleGVjLT51
bmNoZWNrZWRSKGRzdCkgPSBzY29wZTsKLX0KLQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi12b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaENhdGNoU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBp
bnQzMl90IGRzdCwgSWRlbnRpZmllciogaWRlbnRpZmllciwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBpbnQzMl90IGF0dGlidXRlcykKLXsKLSAgICBvcGVyYXRpb25QdXNoTmFtZVNjb3Bl
KGV4ZWMsIGRzdCwgaWRlbnRpZmllciwgZW5jb2RlZFZhbHVlLCBhdHRpYnV0ZXMsIEpTTmFtZVNj
b3BlOjpDYXRjaFNjb3BlKTsKKyAgICBwdXNoTmFtZVNjb3BlPEpTQ2F0Y2hTY29wZT4oZXhlYywg
ZHN0LCBzeW1ib2xUYWJsZSwgZW5jb2RlZFZhbHVlKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1c2hGdW5jdGlvbk5hbWVTY29wZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3Qg
ZHN0LCBJZGVudGlmaWVyKiBpZGVudGlmaWVyLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IGludDMyX3QgYXR0aWJ1dGVzKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hGdW5j
dGlvbk5hbWVTY29wZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZHN0LCBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBvcGVyYXRp
b25QdXNoTmFtZVNjb3BlKGV4ZWMsIGRzdCwgaWRlbnRpZmllciwgZW5jb2RlZFZhbHVlLCBhdHRp
YnV0ZXMsIEpTTmFtZVNjb3BlOjpGdW5jdGlvbk5hbWVTY29wZSk7CisgICAgcHVzaE5hbWVTY29w
ZTxKU0Z1bmN0aW9uTmFtZVNjb3BlPihleGVjLCBkc3QsIHN5bWJvbFRhYmxlLCBlbmNvZGVkVmFs
dWUpOwogfQotI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNj
b3BlKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBkc3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAxODA1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgxLDYgKzgxLDcgQEAgZXh0ZXJuICJDIiB7CiAg
ICAgU3BydDogU2xvd1BhdGhSZXR1cm5UeXBlCiAgICAgU3NpOiBTdHJ1Y3R1cmVTdHViSW5mbyoK
ICAgICBTdDogU3RydWN0dXJlKgorICAgIFN5bXRhYjogU3ltYm9sVGFibGUqCiAgICAgVjogdm9p
ZAogICAgIFZtOiBWTSoKICAgICBWd3M6IFZhcmlhYmxlV2F0Y2hwb2ludFNldCoKQEAgLTE3MCwx
MSArMTcxLDcgQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdAogdHlw
ZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FQ1BTUFMpKEV4ZWNTdGF0
ZSosIEpTQ2VsbCosIHZvaWQqLCBzaXplX3QsIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiB2b2lk
IEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FQ1opKEV4ZWNTdGF0ZSosIEpTQ2VsbCos
IGludDMyX3QpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9F
Q0MpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopOwotI2lmIFVTRShKU1ZBTFVFNjQpCi10
eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VaSWRKWlopKEV4ZWNT
dGF0ZSosIGludCwgSWRlbnRpZmllciosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBpbnQzMl90
KTsKLSNlbHNlCi10eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0Va
SWRKWikoRXhlY1N0YXRlKiwgaW50LCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUsIGludDMy
X3QpOwotI2VuZGlmCit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9u
X0VaU3ltdGFiSikoRXhlY1N0YXRlKiwgaW50MzJfdCwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNW
YWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKKShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAo
KlZfSklUT3BlcmF0aW9uX0VKQ0kpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwq
LCBTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0
aW9uX0VKSWRKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwpAQCAtMjg4LDEwICsyODUsOSBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFCiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0R2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlm
aWVyKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiAjZWxz
ZQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlclNldHRlcihFeGVjU3RhdGUq
LCBKU0NlbGwqLCBJZGVudGlmaWVyKiwgSlNDZWxsKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwot
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hDYXRjaFNjb3BlKEV4ZWNTdGF0ZSosIGlu
dDMyX3QsIElkZW50aWZpZXIqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkgV1RGX0lOVEVSTkFM
Owotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hGdW5jdGlvbk5hbWVTY29wZShFeGVj
U3RhdGUqLCBpbnQzMl90LCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdU
Rl9JTlRFUk5BTDsKICNlbmRpZgotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hOYW1l
U2NvcGUoRXhlY1N0YXRlKiwgaW50MzJfdCwgSWRlbnRpZmllciosIEVuY29kZWRKU1ZhbHVlLCBp
bnQzMl90LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHVzaENhdGNoU2NvcGUoRXhlY1N0YXRlKiwgaW50MzJfdCwgU3ltYm9sVGFibGUqLCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
c2hGdW5jdGlvbk5hbWVTY29wZShFeGVjU3RhdGUqLCBpbnQzMl90LCBTeW1ib2xUYWJsZSosIEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHVzaFdpdGhTY29wZShFeGVjU3RhdGUqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcFNjb3BlKEV4ZWNTdGF0ZSos
IGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9m
aWxlRGlkQ2FsbChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAxODA1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg2LDExICsxMjg2LDEyIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3Bfc2NvcGUKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXNoX25hbWVfc2NvcGUpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIGludCBzY29wZVJlZyA9
IHBjWzFdLnUub3BlcmFuZDsKICAgICBKU1Njb3BlKiBjdXJyZW50U2NvcGUgPSBleGVjLT51bmNo
ZWNrZWRSKHNjb3BlUmVnKS5SZWdpc3Rlcjo6c2NvcGUoKTsKLSAgICBKU05hbWVTY29wZTo6VHlw
ZSB0eXBlID0gc3RhdGljX2Nhc3Q8SlNOYW1lU2NvcGU6OlR5cGU+KHBjWzVdLnUub3BlcmFuZCk7
Ci0gICAgSlNOYW1lU2NvcGUqIHNjb3BlID0gSlNOYW1lU2NvcGU6OmNyZWF0ZSh2bSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjdXJyZW50U2NvcGUsIGNvZGVCbG9jay0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFu
ZCwgdHlwZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwor
ICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGpzQ2FzdDxTeW1ib2xUYWJsZSo+KExMSU5U
X09QX0MoMykuanNWYWx1ZSgpKTsKKyAgICBKU05hbWVTY29wZTo6VHlwZSB0eXBlID0gc3RhdGlj
X2Nhc3Q8SlNOYW1lU2NvcGU6OlR5cGU+KHBjWzRdLnUub3BlcmFuZCk7CisgICAgSlNOYW1lU2Nv
cGUqIHNjb3BlID0gSlNOYW1lU2NvcGU6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlLCB2YWx1ZSwgdHlwZSk7CiAgICAgZXhl
Yy0+dW5jaGVja2VkUihzY29wZVJlZykgPSBzY29wZTsKICAgICBMTElOVF9FTkQoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTI1Niw3ICsxMjU2
LDcgQEAgX2xsaW50X29wX3BvcF9zY29wZToKIF9sbGludF9vcF9wdXNoX25hbWVfc2NvcGU6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1
c2hfbmFtZV9zY29wZSkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRpc3BhdGNoKDUpCiAKIAogX2xs
aW50X29wX3Rocm93OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsOCArMjUzLDEwIEBA
IFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxlOjoKICAgICAgICAgLy8gV2Ug
c2hvdWxkbid0IGhhdmUgdG8gZG8gdGhpcy4gQnV0IHdlIGRvLCBiZWNhdXNlIGJ5dGVjb2RlIGxp
bmtpbmcgcmVxdWlyZXMgYSByZWFsIHNjb3BlCiAgICAgICAgIC8vIGNoYWluLgogICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTg4NQor
ICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPQorICAgICAgICAgICAgU3ltYm9sVGFi
bGU6OmNyZWF0ZU5hbWVTY29wZVRhYmxlKCp2bSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBSZWFkT25s
eSB8IERvbnREZWxldGUpOwogICAgICAgICBzY29wZSA9IEpTRnVuY3Rpb25OYW1lU2NvcGU6OmNy
ZWF0ZSgKLSAgICAgICAgICAgICp2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLCBzY29wZSwgZXhl
Y3V0YWJsZS0+bmFtZSgpLCBmdW5jdGlvbiwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAg
ICAgICAgICp2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLCBzY29wZSwgc3ltYm9sVGFibGUsIGZ1
bmN0aW9uKTsKICAgICB9CiAgICAgCiAgICAgU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gZXhl
Y3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2F0Y2hTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2F0Y2hTY29wZS5oCShyZXZpc2lvbiAxODA1MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhdGNoU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsMTUgKzM3LDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEpTTmFt
ZVNjb3BlOwogICAgIAotICAgIEpTQ2F0Y2hTY29wZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU2NvcGUqIG5leHQpCi0gICAgICAgIDogQmFzZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT5jYXRjaFNjb3BlU3RydWN0dXJlKCksIG5leHQpCisgICAgSlNDYXRjaFNjb3BlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogbmV4dCwgU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlKQorICAgICAgICA6IEJhc2Uodm0sIGdsb2JhbE9iamVjdC0+Y2F0Y2hT
Y29wZVN0cnVjdHVyZSgpLCBuZXh0LCBzeW1ib2xUYWJsZSkKICAgICB7CiAgICAgfQogICAgIAog
cHVibGljOgotICAgIHN0YXRpYyBKU0NhdGNoU2NvcGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKKyAg
ICBzdGF0aWMgSlNDYXRjaFNjb3BlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjpjcmVhdGU8SlND
YXRjaFNjb3BlPih2bSwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50U2NvcGUsIGlkZW50aWZpZXIsIHZh
bHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmNyZWF0ZTxKU0NhdGNoU2Nv
cGU+KHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUsIHZhbHVlKTsK
ICAgICB9CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3Jk
LmgJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RW52aXJvbm1lbnRSZWNvcmQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEyLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjIsNyArNjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
LAogICAgICAgICBSZWdpc3RlciogcmVnaXN0ZXJzLAogICAgICAgICBKU1Njb3BlKiBzY29wZSwK
LSAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gMCkKKyAgICAgICAgU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgc2NvcGUsIHN5
bWJvbFRhYmxlKQogICAgICAgICAsIG1fcmVnaXN0ZXJzKHJlaW50ZXJwcmV0X2Nhc3Q8V3JpdGVC
YXJyaWVyQmFzZTxVbmtub3duPio+KHJlZ2lzdGVycykpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbk5hbWVTY29wZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25OYW1lU2NvcGUuaAkocmV2
aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bk5hbWVTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNSArMzcsMTUgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSlNOYW1lU2NvcGU7CiAgICAgCi0gICAgSlNGdW5j
dGlvbk5hbWVTY29wZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2Nv
cGUqIG5leHQpCi0gICAgICAgIDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LT5jYXRjaFNjb3BlU3Ry
dWN0dXJlKCksIG5leHQpCisgICAgSlNGdW5jdGlvbk5hbWVTY29wZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIG5leHQsIFN5bWJvbFRhYmxlKiBzeW1ib2xU
YWJsZSkKKyAgICAgICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3QtPmNhdGNoU2NvcGVTdHJ1Y3R1
cmUoKSwgbmV4dCwgc3ltYm9sVGFibGUpCiAgICAgewogICAgIH0KICAgICAKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgSlNGdW5jdGlvbk5hbWVTY29wZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3VycmVudFNjb3BlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIHN0
YXRpYyBKU0Z1bmN0aW9uTmFtZVNjb3BlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xU
YWJsZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjpjcmVhdGU8
SlNGdW5jdGlvbk5hbWVTY29wZT4odm0sIGdsb2JhbE9iamVjdCwgY3VycmVudFNjb3BlLCBpZGVu
dGlmaWVyLCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgICAgIHJldHVybiBCYXNlOjpjcmVhdGU8
SlNGdW5jdGlvbk5hbWVTY29wZT4odm0sIGdsb2JhbE9iamVjdCwgY3VycmVudFNjb3BlLCBzeW1i
b2xUYWJsZSwgdmFsdWUpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNj
b3BlLmNwcAkocmV2aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOYW1lU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMyArMzUsMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU05hbWVTY29wZTo6c19pbmZvID0geyAi
TmFtZVNjb3BlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU05hbWVT
Y29wZSkgfTsKIAotSlNOYW1lU2NvcGUqIEpTTmFtZVNjb3BlOjpjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IFR5cGUgdHlwZSkKK0pTTmFtZVNjb3BlKiBKU05hbWVTY29wZTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUgdmFsdWUsIFR5cGUgdHlwZSkKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIENhdGNoU2NvcGU6Ci0gICAgICAgIHJldHVybiBKU0NhdGNo
U2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50U2NvcGUsIGlkZW50aWZpZXIs
IHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuIEpTQ2F0Y2hTY29wZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUsIHZhbHVlKTsKICAg
ICBjYXNlIEZ1bmN0aW9uTmFtZVNjb3BlOgotICAgICAgICByZXR1cm4gSlNGdW5jdGlvbk5hbWVT
Y29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgaWRlbnRpZmllciwg
dmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gSlNGdW5jdGlvbk5hbWVTY29wZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUsIHZhbHVl
KTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3Bl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2Nv
cGUuaAkocmV2aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNOYW1lU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTQgKzQyLDE0IEBAIHB1YmxpYzoK
ICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgVCogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3VycmVudFNj
b3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQorICAgIHN0YXRpYyBUKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1i
b2xUYWJsZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIFQqIHNjb3BlT2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VD4odm0uaGVhcCkpIFQodm0sIGdsb2JhbE9iamVj
dCwgY3VycmVudFNjb3BlKTsKLSAgICAgICAgc2NvcGVPYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
LCBpZGVudGlmaWVyLCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgICAgIFQqIHNjb3BlT2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VD4odm0uaGVhcCkpIFQodm0sIGdsb2JhbE9i
amVjdCwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSk7CisgICAgICAgIHNjb3BlT2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSwgdmFsdWUpOwogICAgICAgICByZXR1cm4gc2NvcGVPYmplY3Q7CiAg
ICAgfQogICAgIAotICAgIHN0YXRpYyBKU05hbWVTY29wZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBUeXBlKTsKKyAgICBzdGF0aWMgSlNOYW1lU2NvcGUqIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUsIFR5cGUpOwogCiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBKU1ZhbHVlIHRv
VGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSk7CkBAIC02MSwyMiArNjEsMTYgQEAg
cHVibGljOgogICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyU3Rv
cmUuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBtX3Jl
Z2lzdGVyU3RvcmUuc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlKCkt
PmFkZChpZGVudGlmaWVyLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeSgtMSwgYXR0cmlidXRlcykp
OwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAg
SlNOYW1lU2NvcGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogbmV4dCkK
LSAgICAgICAgOiBCYXNlKAotICAgICAgICAgICAgdm0sCi0gICAgICAgICAgICBzdHJ1Y3R1cmUs
Ci0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oJm1fcmVnaXN0ZXJTdG9y
ZSArIDEpLAotICAgICAgICAgICAgbmV4dAotICAgICAgICApCisgICAgSlNOYW1lU2NvcGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogbmV4dCwgU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgcmVpbnRlcnByZXRfY2Fz
dDxSZWdpc3Rlcio+KCZtX3JlZ2lzdGVyU3RvcmUgKyAxKSwgbmV4dCwgc3ltYm9sVGFibGUpCiAg
ICAgewogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTgwNTA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Nyw2ICs4Nyw3IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgbV9zeW1ib2xUYWJsZS5zZXQodm0sIHRoaXMsIFN5
bWJvbFRhYmxlOjpjcmVhdGUodm0pKTsKICAgICB9CiAgICAgCiAgICAgU2VnbWVudGVkVmVjdG9y
PFdyaXRlQmFycmllcjxVbmtub3duPiwgMTY+IG1fcmVnaXN0ZXJzOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkocmV2
aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwyMCArNTAsMTggQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IElzRW52aXJvbm1lbnRSZWNvcmQgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgCi0gICAgSlNTeW1ib2xUYWJsZU9iamVjdChWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBzY29wZSwgU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlID0gMCkKKyAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSwgc2NvcGUpCiAgICAgewotICAgICAgICBpZiAoc3ltYm9sVGFibGUpCi0gICAgICAgICAgICBt
X3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgc3ltYm9sVGFibGUpOwogICAgIH0KLQotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorICAgIAorICAgIEpTU3ltYm9sVGFibGVPYmplY3Qo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxl
KiBzeW1ib2xUYWJsZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIHNjb3BlKQogICAg
IHsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBpZiAoIW1fc3lt
Ym9sVGFibGUpCi0gICAgICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgU3ltYm9s
VGFibGU6OmNyZWF0ZSh2bSkpOworICAgICAgICBBU1NFUlQoc3ltYm9sVGFibGUpOworICAgICAg
ICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgc3ltYm9sVGFibGUpOwogICAgIH0KLQorICAg
IAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
IAogICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTgw
NTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQ3LDYgKzM0NywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHN5bWJvbFRh
YmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBzeW1ib2xUYWJsZTsKICAg
ICB9CisgICAgCisgICAgc3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGVOYW1lU2NvcGVUYWJsZShW
TSYgdm0sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAg
IHsKKyAgICAgICAgU3ltYm9sVGFibGUqIHJlc3VsdCA9IGNyZWF0ZSh2bSk7CisgICAgICAgIHJl
c3VsdC0+YWRkKGlkZW50LmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeSgtMSwgYXR0cmlidXRlcykp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJ
bW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsK
</data>
<flag name="review"
          id="272072"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247134</attachid>
            <date>2015-02-23 12:16:05 -0800</date>
            <delta_ts>2015-02-23 12:53:17 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>31089</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgwNTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDE1LTAyLTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U2NvcGVzIHNob3VsZCBhbHdheXMgYmUgY3JlYXRlZCB3aXRoIGEgcHJldmlvdXNseS1jcmVhdGVk
IHN5bWJvbCB0YWJsZSByYXRoZXIgdGhhbiBjcmVhdGluZyBvbmUgb24gdGhlIGZseQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxOTE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisgICAgICAgIAorICAgICAgICBUaGUgbWFpbiBlZmZl
Y3Qgb2YgdGhpcyBjaGFuZ2UgaXMgdGhhdCBwdXNoaW5nIG5hbWUgc2NvcGVzIG5vIGxvbmdlciBy
ZXF1aXJlcyBjcmVhdGluZyBzeW1ib2wKKyAgICAgICAgdGFibGVzIG9uIHRoZSBmbHkuCisgICAg
ICAgIAorICAgICAgICBUaGlzIGFsc28gbWFrZXMgaXQgc28gdGhhdCBKU0Vudmlyb25tZW50UmVj
b3JkcyBtdXN0IGFsd2F5cyBoYXZlIGFuIGEgcHJpb3Igc3ltYm9sIHRhYmxlLgorICAgICAgICAK
KyAgICAgICAgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCBzdGlsbCBkb2VzIGEgaGFjayB3aGVy
ZSBpdCBjcmVhdGVzIGEgYmxhbmsgc3ltYm9sIHRhYmxlIG9uLWRlbWFuZC4KKyAgICAgICAgVGhp
cyBpcyBuZWVkZWQgYmVjYXVzZSB0aGF0J3Mgd2hhdCBKU0dsb2JhbE9iamVjdCBhbmQgYWxsIG9m
IGl0cyBtYW55IHN1YmNsYXNzZXMgd2FudC4gVGhhdCdzCisgICAgICAgIGhhcm1sZXNzOyBJIG1h
aW5seSBuZWVkZWQgYSBwcmlvciBzeW1ib2wgdGFibGVzIGZvciBKU0Vudmlyb25tZW50UmVjb3Jk
cyBhbnl3YXkuCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaENhdGNoU2NvcGUpOgorICAgICAgICAqIGpp
dC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6
OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1c2hfbmFtZV9zY29wZSk6CisgICAgICAgICogaml0L0pJVE9w
Y29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXNoX25hbWVfc2Nv
cGUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHVz
aE5hbWVTY29wZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBs
bGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206Cisg
ICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhl
Y3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2F0Y2hTY29w
ZS5oOgorICAgICAgICAoSlNDOjpKU0NhdGNoU2NvcGU6OkpTQ2F0Y2hTY29wZSk6CisgICAgICAg
IChKU0M6OkpTQ2F0Y2hTY29wZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRW52aXJv
bm1lbnRSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6SlNFbnZpcm9ubWVudFJlY29yZDo6SlNFbnZp
cm9ubWVudFJlY29yZCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uTmFtZVNjb3BlLmg6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb25OYW1lU2NvcGU6OkpTRnVuY3Rpb25OYW1lU2NvcGUp
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uTmFtZVNjb3BlOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNOYW1lU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU05hbWVTY29wZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTTmFtZVNjb3BlLmg6CisgICAgICAgIChKU0M6OkpT
TmFtZVNjb3BlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU05hbWVTY29wZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpKU05hbWVTY29wZTo6SlNOYW1lU2NvcGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0OjpKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U1N5bWJvbFRhYmxlT2JqZWN0OjpKU1N5bWJvbFRhYmxlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNTeW1ib2xUYWJsZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNyZWF0
ZU5hbWVTY29wZVRhYmxlKToKKwogMjAxNS0wMi0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBhIGNvbW1lbnQgdG8gY2xhcmlmeSB0aGF0IHRoZSB0ZXN0
IHdhcyB0YWtlbiBmcm9tIHRoZSBidWcgcmVwb3J0LCBpbiByZXNwb25zZSB0bwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkocmV2
aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX3B1dF90b19zY29wZSIsICJsZW5ndGgiIDogNyB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHVzaF93aXRoX3Njb3BlIiwgImxlbmd0aCIgOiAzIH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9wb3Bfc2NvcGUiLCAibGVuZ3RoIiA6IDIgfSwKLSAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3B1c2hfbmFtZV9zY29wZSIsICJsZW5ndGgiIDogNiB9LAor
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHVzaF9uYW1lX3Njb3BlIiwgImxlbmd0aCIgOiA1
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYXRjaCIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3ciLCAibGVuZ3RoIiA6IDIgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3Rocm93X3N0YXRpY19lcnJvciIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzk0LDkgKzIzOTQsOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVz
aEZ1bmN0aW9uCiB7CiAgICAgZW1pdE9wY29kZShvcF9wdXNoX25hbWVfc2NvcGUpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2
YWx1ZS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGF0dHJpYnV0ZXMpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKFN5bWJvbFRhYmxlOjpj
cmVhdGVOYW1lU2NvcGVUYWJsZSgqdm0oKSwgcHJvcGVydHksIGF0dHJpYnV0ZXMpKS0+aW5kZXgo
KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEpTTmFtZVNjb3BlOjpGdW5jdGlvbk5hbWVT
Y29wZSk7CiB9CiAKQEAgLTI0MDksOSArMjQwOCw4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXNoQ2F0Y2hTY28KIAogICAgIGVtaXRPcGNvZGUob3BfcHVzaF9uYW1lX3Njb3BlKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQodmFsdWUtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhdHRyaWJ1
dGVzKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShTeW1ib2xU
YWJsZTo6Y3JlYXRlTmFtZVNjb3BlVGFibGUoKnZtKCksIHByb3BlcnR5LCBhdHRyaWJ1dGVzKSkt
PmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChKU05hbWVTY29wZTo6Q2F0Y2hT
Y29wZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTgwNTA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzE3LDExICs3MTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lz
dGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VDSUNDLCBSZWdpc3RlcklELCBjb25zdCBJZGVudGlmaWVyKiwgUmVnaXN0ZXJJ
RCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRUUsIFJlZ2lzdGVySUQpOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RVpJZEpaWiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgUmVnaXN0ZXJJRCwgaW50MzJfdCwgaW50
MzJfdCk7Ci0jZWxzZQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VaSWRKWiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgUmVnaXN0ZXJJ
RCwgaW50MzJfdCk7Ci0jZW5kaWYKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWlN5bXRhYkosIGludCwgU3ltYm9sVGFibGUqLCBSZWdp
c3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FSiwgUmVnaXN0ZXJJRCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2soVl9KSVRP
cGVyYXRpb25fRUosIFJlZ2lzdGVySUQpOwpAQCAtNzU0LDcgKzc1MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3Bl
cmF0aW9uX0VKUywgR1BSUmVnLCBHUFJSZWcsIHNpemVfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUosIFJlZ2lzdGVySUQsIFJl
Z2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNf
SklUT3BlcmF0aW9uX0VKSiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVn
aXN0ZXJJRCk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRVpJZEpaLCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBSZWdpc3RlcklELCBS
ZWdpc3RlcklELCBpbnQzMl90KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWlN5bXRhYkosIGludCwgY29uc3QgSWRlbnRpZmllcios
IFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklELCBSZWdp
c3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FSkpKLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdp
c3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSlosIFJlZ2lzdGVySUQsIFJlZ2lz
dGVySUQsIGludDMyX3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NjAsOSArNDYw
LDkgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKLUFMV0FZU19J
TkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VaSWRKWlogb3BlcmF0aW9uLCBpbnQgb3AxLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudE9w
MiwgUmVnaXN0ZXJJRCByZWdPcDMsIGludDMyX3Qgb3A0LCBpbnQzMl90IG9wNSkKK0FMV0FZU19J
TkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VaU3ltdGFiSiBvcGVyYXRpb24sIGludCBvcDEsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSwgUmVnaXN0ZXJJRCByZWdPcDMpCiB7Ci0gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMihvcDEpLCBUcnVzdGVkSW1tUHRyKGlkZW50T3AyKSwgcmVnT3AzLCBUcnVz
dGVkSW1tMzIob3A0KSwgVHJ1c3RlZEltbTMyKG9wNSkpOworICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIob3AxKSwgVHJ1c3RlZEltbVB0cihzeW1ib2xUYWJsZSks
IHJlZ09wMyk7CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0
aW9uKTsKIH0KIApAQCAtNTk0LDkgKzU5NCw5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOwogfQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FWklkSlogb3BlcmF0aW9uLCBpbnQzMl90IG9w
MSwgY29uc3QgSWRlbnRpZmllciogaWRlbnRPcDIsIFJlZ2lzdGVySUQgcmVnT3AzVGFnLCBSZWdp
c3RlcklEIHJlZ09wM1BheWxvYWQsIGludDMyX3Qgb3A0KQorQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVpTeW10YWJK
IG9wZXJhdGlvbiwgaW50MzJfdCBvcDEsIFN5bWJvbFRhYmxlKiBpZGVudE9wMiwgUmVnaXN0ZXJJ
RCByZWdPcDNUYWcsIFJlZ2lzdGVySUQgcmVnT3AzUGF5bG9hZCkKIHsKLSAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKG9wMSksIFRydXN0ZWRJbW1QdHIoaWRlbnRP
cDIpLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyByZWdPcDNQYXlsb2FkLCByZWdPcDNUYWcsIFRydXN0
ZWRJbW0zMihvcDQpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyKG9wMSksIFRydXN0ZWRJbW1QdHIoc3ltYm9sVGFibGUpLCBFQUJJXzMyQklUX0RVTU1ZX0FS
RyByZWdPcDNQYXlsb2FkLCByZWdPcDNUYWcpOwogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzc5LDE0ICs3NzksMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX251bWJlcihJbnN0
cnVjdAogdm9pZCBKSVQ6OmVtaXRfb3BfcHVzaF9uYW1lX3Njb3BlKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7Ci0gICAgZW1pdExvYWQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCwg
cmVnVDEsIHJlZ1QwKTsKLSAgICBpZiAoY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZCA9
PSBKU05hbWVTY29wZTo6Q2F0Y2hTY29wZSkgewotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblB1c2hDYXRjaFNjb3BlLCBkc3QsICZtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSwgcmVnVDEsIHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kKTsKKyAgICBlbWl0TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kLCByZWdUMSwgcmVnVDApOworICAgIGlmIChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kID09IEpTTmFtZVNjb3BlOjpDYXRjaFNjb3BlKSB7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uUHVzaENhdGNoU2NvcGUsIGRzdCwganNDYXN0PFN5bWJvbFRhYmxlKj4oZ2V0
Q29uc3RhbnRPcGVyYW5kKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSwgcmVnVDEs
IHJlZ1QwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJFTEVBU0VfQVNTRVJUKGN1
cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPT0gSlNOYW1lU2NvcGU6OkZ1bmN0aW9uTmFt
ZVNjb3BlKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hGdW5jdGlvbk5hbWVTY29w
ZSwgZHN0LCAmbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCksIHJlZ1QxLCByZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7
CisgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9PSBK
U05hbWVTY29wZTo6RnVuY3Rpb25OYW1lU2NvcGUpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uUHVzaEZ1bmN0aW9uTmFtZVNjb3BlLCBkc3QsIGpzQ2FzdDxTeW1ib2xUYWJsZSo+KGdldENv
bnN0YW50T3BlcmFuZChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSksIHJlZ1QxLCBy
ZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9y
U2xvd1BhdGhDYWxsLmgiCkBAIC00ODYsOCArNDg3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3Rv
X251bWJlcihJbnN0cnVjdGlvbioKIHZvaWQgSklUOjplbWl0X29wX3B1c2hfbmFtZV9zY29wZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUHVzaE5hbWVTY29wZSwgZHN0LCAmbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCksIHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5vcGVyYW5kLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kKTsKKyAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1Qw
KTsKKyAgICBpZiAoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9PSBKU05hbWVTY29w
ZTo6Q2F0Y2hTY29wZSkgeworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hDYXRj
aFNjb3BlLCBkc3QsIGpzQ2FzdDxTeW1ib2xUYWJsZSo+KGdldENvbnN0YW50T3BlcmFuZChjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSksIHJlZ1QwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJh
bmQgPT0gSlNOYW1lU2NvcGU6OkZ1bmN0aW9uTmFtZVNjb3BlKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblB1c2hGdW5jdGlvbk5hbWVTY29wZSwgZHN0LCBqc0Nhc3Q8U3ltYm9sVGFibGUq
PihnZXRDb25zdGFudE9wZXJhbmQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpLCBy
ZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NhdGNoU2NvcGUuaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lRW51bWVyYXRvci5oIgpAQCAtNTksNiArNjEsMjQgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFNjb3BlVHlwZT4KK3ZvaWQgcHVzaE5hbWVTY29wZShF
eGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZHN0LCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICAKKyAgICBB
U1NFUlQoIUpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChleGVjLT5jb2RlQmxvY2soKS0+aml0VHlw
ZSgpKSk7CisKKyAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGlmIHRoaXMgb3BlcmF0aW9u
IGlzIGNhbGxlZCBmcm9tIHRoZSBERkcgb3IgRlRMLgorICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNo
YW5nZWQgdG8gcGFzcyBpbiB0aGUgbmV3IHNjb3BlLgorICAgIEpTU2NvcGUqIGN1cnJlbnRTY29w
ZSA9IGV4ZWMtPnVuY2hlY2tlZFIoZHN0KS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBKU05hbWVT
Y29wZSogc2NvcGUgPSBTY29wZVR5cGU6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7CisKKyAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGlmIHRoaXMgb3BlcmF0
aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBERkcgb3IgRlRMLgorICAgIC8vIFRoaXMgc2hvdWxkIGJl
IGNoYW5nZWQgdG8gcmV0dXJuIHRoZSBuZXcgc2NvcGUuCisgICAgZXhlYy0+dW5jaGVja2VkUihk
c3QpID0gc2NvcGU7Cit9CisKIGV4dGVybiAiQyIgewogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAg
LTEyNjksMzQgKzEyODksMTYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRl
clNldAogfQogI2VuZGlmCiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoTmFtZVNj
b3BlKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBkc3QsIElkZW50aWZpZXIqIGlkZW50aWZpZXIs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRpYnV0ZXMsIGludDMyX3Qg
dHlwZSkKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoQ2F0Y2hTY29wZShFeGVjU3Rh
dGUqIGV4ZWMsIGludDMyX3QgZHN0LCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLQotICAgIC8vIEZJWE1FOiBU
aGlzIHdvbid0IHdvcmsgaWYgdGhpcyBvcGVyYXRpb24gaXMgY2FsbGVkIGZyb20gdGhlIERGRyBv
ciBGVEwuCi0gICAgLy8gVGhpcyBzaG91bGQgYmUgY2hhbmdlZCB0byBwYXNzIGluIHRoZSBuZXcg
c2NvcGUuCi0gICAgSlNTY29wZSogY3VycmVudFNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihkc3Qp
LlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIEpTTmFtZVNjb3BlOjpUeXBlIHNjb3BlVHlwZSA9IHN0
YXRpY19jYXN0PEpTTmFtZVNjb3BlOjpUeXBlPih0eXBlKTsKLSAgICBKU05hbWVTY29wZSogc2Nv
cGUgPSBKU05hbWVTY29wZTo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IGN1cnJlbnRTY29wZSwgKmlkZW50aWZpZXIsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
LCBhdHRpYnV0ZXMsIHNjb3BlVHlwZSk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3Jr
IGlmIHRoaXMgb3BlcmF0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBERkcgb3IgRlRMLgotICAgIC8v
IFRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgdG8gcmV0dXJuIHRoZSBuZXcgc2NvcGUuCi0gICAgZXhl
Yy0+dW5jaGVja2VkUihkc3QpID0gc2NvcGU7CisgICAgcHVzaE5hbWVTY29wZTxKU0NhdGNoU2Nv
cGU+KGV4ZWMsIGRzdCwgc3ltYm9sVGFibGUsIGVuY29kZWRWYWx1ZSk7CiB9CiAKLSNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hDYXRjaFNjb3Bl
KEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBkc3QsIElkZW50aWZpZXIqIGlkZW50aWZpZXIsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRpYnV0ZXMpCit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHVzaEZ1bmN0aW9uTmFtZVNjb3BlKEV4ZWNTdGF0ZSogZXhlYywg
aW50MzJfdCBkc3QsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIG9wZXJhdGlvblB1c2hOYW1lU2NvcGUoZXhlYywgZHN0LCBpZGVu
dGlmaWVyLCBlbmNvZGVkVmFsdWUsIGF0dGlidXRlcywgSlNOYW1lU2NvcGU6OkNhdGNoU2NvcGUp
OworICAgIHB1c2hOYW1lU2NvcGU8SlNGdW5jdGlvbk5hbWVTY29wZT4oZXhlYywgZHN0LCBzeW1i
b2xUYWJsZSwgZW5jb2RlZFZhbHVlKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1c2hGdW5jdGlvbk5hbWVTY29wZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZHN0LCBJZGVu
dGlmaWVyKiBpZGVudGlmaWVyLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3Qg
YXR0aWJ1dGVzKQotewotICAgIG9wZXJhdGlvblB1c2hOYW1lU2NvcGUoZXhlYywgZHN0LCBpZGVu
dGlmaWVyLCBlbmNvZGVkVmFsdWUsIGF0dGlidXRlcywgSlNOYW1lU2NvcGU6OkZ1bmN0aW9uTmFt
ZVNjb3BlKTsKLX0KLSNlbmRpZgotCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdp
dGhTY29wZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZHN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxODA1MDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTgxLDYgKzgxLDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgU3BydDogU2xvd1BhdGhSZXR1cm5UeXBl
CiAgICAgU3NpOiBTdHJ1Y3R1cmVTdHViSW5mbyoKICAgICBTdDogU3RydWN0dXJlKgorICAgIFN5
bXRhYjogU3ltYm9sVGFibGUqCiAgICAgVjogdm9pZAogICAgIFZtOiBWTSoKICAgICBWd3M6IFZh
cmlhYmxlV2F0Y2hwb2ludFNldCoKQEAgLTE3MCwxMSArMTcxLDcgQEAgdHlwZWRlZiB2b2lkIEpJ
VF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdAogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpW
X0pJVE9wZXJhdGlvbl9FQ1BTUFMpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIHZvaWQqLCBzaXplX3Qs
IHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJh
dGlvbl9FQ1opKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGludDMyX3QpOwogdHlwZWRlZiB2b2lkIEpJ
VF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpT
Q2VsbCopOwotI2lmIFVTRShKU1ZBTFVFNjQpCi10eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAo
KlZfSklUT3BlcmF0aW9uX0VaSWRKWlopKEV4ZWNTdGF0ZSosIGludCwgSWRlbnRpZmllciosIEVu
Y29kZWRKU1ZhbHVlLCBpbnQzMl90LCBpbnQzMl90KTsKLSNlbHNlCi10eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VaSWRKWikoRXhlY1N0YXRlKiwgaW50LCBJZGVu
dGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwotI2VuZGlmCit0eXBlZGVmIHZvaWQg
SklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VaU3ltdGFiSikoRXhlY1N0YXRlKiwgaW50
MzJfdCwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09Q
RVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7
CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKQ0kpKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwqLCBTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZv
aWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKSWRKSikoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIElkZW50aWZpZXIqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUp
OwpAQCAtMjg4LDEwICsyODUsOSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
bmRleChFCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiAjZWxzZQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEdldHRlclNldHRlcihFeGVjU3RhdGUqLCBKU0NlbGwqLCBJZGVudGlmaWVyKiwgSlND
ZWxsKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1c2hDYXRjaFNjb3BlKEV4ZWNTdGF0ZSosIGludDMyX3QsIElkZW50aWZpZXIqLCBFbmNvZGVk
SlNWYWx1ZSwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1c2hGdW5jdGlvbk5hbWVTY29wZShFeGVjU3RhdGUqLCBpbnQzMl90LCBJZGVudGlmaWVy
KiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNlbmRpZgotdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hOYW1lU2NvcGUoRXhlY1N0YXRlKiwgaW50MzJfdCwg
SWRlbnRpZmllciosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBpbnQzMl90KSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaENhdGNoU2NvcGUoRXhlY1N0YXRl
KiwgaW50MzJfdCwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hGdW5jdGlvbk5hbWVTY29wZShFeGVjU3Rh
dGUqLCBpbnQzMl90LCBTeW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShFeGVjU3RhdGUqLCBp
bnQzMl90LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblBvcFNjb3BlKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9maWxlRGlkQ2FsbChFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxODA1MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjg2LDExICsxMjg2LDEyIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3Bf
c2NvcGUKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXNoX25hbWVfc2NvcGUpCiB7
CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOwogICAgIGludCBzY29wZVJlZyA9IHBjWzFdLnUub3BlcmFuZDsKICAgICBKU1Nj
b3BlKiBjdXJyZW50U2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHNjb3BlUmVnKS5SZWdpc3Rlcjo6
c2NvcGUoKTsKLSAgICBKU05hbWVTY29wZTo6VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8SlNOYW1l
U2NvcGU6OlR5cGU+KHBjWzVdLnUub3BlcmFuZCk7Ci0gICAgSlNOYW1lU2NvcGUqIHNjb3BlID0g
SlNOYW1lU2NvcGU6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjdXJy
ZW50U2NvcGUsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9P
UCgzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCwgdHlwZSk7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSA9IGpzQ2FzdDxTeW1ib2xUYWJsZSo+KExMSU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAgICBK
U05hbWVTY29wZTo6VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8SlNOYW1lU2NvcGU6OlR5cGU+KHBj
WzRdLnUub3BlcmFuZCk7CisgICAgSlNOYW1lU2NvcGUqIHNjb3BlID0gSlNOYW1lU2NvcGU6OmNy
ZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjdXJyZW50U2NvcGUsIHN5bWJv
bFRhYmxlLCB2YWx1ZSwgdHlwZSk7CiAgICAgZXhlYy0+dW5jaGVja2VkUihzY29wZVJlZykgPSBz
Y29wZTsKICAgICBMTElOVF9FTkQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE4MDUwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQko
d29ya2luZyBjb3B5KQpAQCAtMTI1Niw3ICsxMjU2LDcgQEAgX2xsaW50X29wX3BvcF9zY29wZToK
IF9sbGludF9vcF9wdXNoX25hbWVfc2NvcGU6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1c2hfbmFtZV9zY29wZSkKLSAgICBkaXNwYXRj
aCg2KQorICAgIGRpc3BhdGNoKDUpCiAKIAogX2xsaW50X29wX3Rocm93OgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDE4MDUw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTMsOCArMjUzLDEwIEBAIFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBTY3Jp
cHRFeGVjdXRhYmxlOjoKICAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8gdGhpcy4g
QnV0IHdlIGRvLCBiZWNhdXNlIGJ5dGVjb2RlIGxpbmtpbmcgcmVxdWlyZXMgYSByZWFsIHNjb3Bl
CiAgICAgICAgIC8vIGNoYWluLgogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTg4NQorICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9s
VGFibGUgPQorICAgICAgICAgICAgU3ltYm9sVGFibGU6OmNyZWF0ZU5hbWVTY29wZVRhYmxlKCp2
bSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgICAgICBz
Y29wZSA9IEpTRnVuY3Rpb25OYW1lU2NvcGU6OmNyZWF0ZSgKLSAgICAgICAgICAgICp2bSwgc2Nv
cGUtPmdsb2JhbE9iamVjdCgpLCBzY29wZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBmdW5jdGlvbiwg
UmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgICAgICp2bSwgc2NvcGUtPmdsb2JhbE9i
amVjdCgpLCBzY29wZSwgc3ltYm9sVGFibGUsIGZ1bmN0aW9uKTsKICAgICB9CiAgICAgCiAgICAg
U291cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2F0Y2hTY29wZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2F0Y2hTY29wZS5o
CShyZXZpc2lvbiAxODA1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nh
dGNoU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTUgKzM3LDE1IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEpTTmFtZVNjb3BlOwogICAgIAotICAgIEpTQ2F0Y2hT
Y29wZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIG5leHQp
Ci0gICAgICAgIDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LT5jYXRjaFNjb3BlU3RydWN0dXJlKCks
IG5leHQpCisgICAgSlNDYXRjaFNjb3BlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNTY29wZSogbmV4dCwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgICAgICA6
IEJhc2Uodm0sIGdsb2JhbE9iamVjdC0+Y2F0Y2hTY29wZVN0cnVjdHVyZSgpLCBuZXh0LCBzeW1i
b2xUYWJsZSkKICAgICB7CiAgICAgfQogICAgIAogcHVibGljOgotICAgIHN0YXRpYyBKU0NhdGNo
U2NvcGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2Nv
cGUqIGN1cnJlbnRTY29wZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKKyAgICBzdGF0aWMgSlNDYXRjaFNjb3BlKiBjcmVh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50
U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBCYXNlOjpjcmVhdGU8SlNDYXRjaFNjb3BlPih2bSwgZ2xvYmFsT2JqZWN0
LCBjdXJyZW50U2NvcGUsIGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAg
cmV0dXJuIEJhc2U6OmNyZWF0ZTxKU0NhdGNoU2NvcGU+KHZtLCBnbG9iYWxPYmplY3QsIGN1cnJl
bnRTY29wZSwgc3ltYm9sVGFibGUsIHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90bykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRW52aXJvbm1lbnRSZWNvcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Vudmlyb25tZW50UmVjb3JkLmgJKHJldmlzaW9uIDE4MDUwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4LCAyMDEyLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIsNyArNjIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLAogICAgICAgICBSZWdpc3RlciogcmVnaXN0
ZXJzLAogICAgICAgICBKU1Njb3BlKiBzY29wZSwKLSAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJv
bFRhYmxlID0gMCkKKyAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQogICAgICAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSwgc2NvcGUsIHN5bWJvbFRhYmxlKQogICAgICAgICAsIG1fcmVn
aXN0ZXJzKHJlaW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KHJlZ2lz
dGVycykpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbk5hbWVTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb25OYW1lU2NvcGUuaAkocmV2aXNpb24gMTgwNTA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbk5hbWVTY29wZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywxNSArMzcsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
SlNOYW1lU2NvcGU7CiAgICAgCi0gICAgSlNGdW5jdGlvbk5hbWVTY29wZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIG5leHQpCi0gICAgICAgIDogQmFzZSh2
bSwgZ2xvYmFsT2JqZWN0LT5jYXRjaFNjb3BlU3RydWN0dXJlKCksIG5leHQpCisgICAgSlNGdW5j
dGlvbk5hbWVTY29wZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2Nv
cGUqIG5leHQsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICAgICAgOiBCYXNlKHZtLCBn
bG9iYWxPYmplY3QtPmNhdGNoU2NvcGVTdHJ1Y3R1cmUoKSwgbmV4dCwgc3ltYm9sVGFibGUpCiAg
ICAgewogICAgIH0KICAgICAKIHB1YmxpYzoKLSAgICBzdGF0aWMgSlNGdW5jdGlvbk5hbWVTY29w
ZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSog
Y3VycmVudFNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIHN0YXRpYyBKU0Z1bmN0aW9uTmFtZVNjb3BlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJy
ZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBCYXNlOjpjcmVhdGU8SlNGdW5jdGlvbk5hbWVTY29wZT4odm0sIGds
b2JhbE9iamVjdCwgY3VycmVudFNjb3BlLCBpZGVudGlmaWVyLCB2YWx1ZSwgYXR0cmlidXRlcyk7
CisgICAgICAgIHJldHVybiBCYXNlOjpjcmVhdGU8SlNGdW5jdGlvbk5hbWVTY29wZT4odm0sIGds
b2JhbE9iamVjdCwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSwgdmFsdWUpOwogICAgIH0KICAg
ICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmNwcAkocmV2aXNpb24gMTgwNTA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSwxMyArMzUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNz
SW5mbyBKU05hbWVTY29wZTo6c19pbmZvID0geyAiTmFtZVNjb3BlIiwgJkJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU05hbWVTY29wZSkgfTsKIAotSlNOYW1lU2NvcGUqIEpT
TmFtZVNjb3BlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1Njb3BlKiBjdXJyZW50U2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFR5cGUgdHlwZSkKK0pTTmFtZVNjb3BlKiBK
U05hbWVTY29wZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUg
dmFsdWUsIFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIENhdGNo
U2NvcGU6Ci0gICAgICAgIHJldHVybiBKU0NhdGNoU2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBjdXJyZW50U2NvcGUsIGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgcmV0dXJuIEpTQ2F0Y2hTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRT
Y29wZSwgc3ltYm9sVGFibGUsIHZhbHVlKTsKICAgICBjYXNlIEZ1bmN0aW9uTmFtZVNjb3BlOgot
ICAgICAgICByZXR1cm4gSlNGdW5jdGlvbk5hbWVTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIGN1cnJlbnRTY29wZSwgaWRlbnRpZmllciwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAg
ICByZXR1cm4gSlNGdW5jdGlvbk5hbWVTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1
cnJlbnRTY29wZSwgc3ltYm9sVGFibGUsIHZhbHVlKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuaAkocmV2aXNpb24gMTgwNTA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsMTQgKzQyLDE0IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLSAgICBzdGF0aWMgVCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNTY29wZSogY3VycmVudFNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIHN0YXRpYyBU
KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBj
dXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIFQqIHNjb3BlT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
VD4odm0uaGVhcCkpIFQodm0sIGdsb2JhbE9iamVjdCwgY3VycmVudFNjb3BlKTsKLSAgICAgICAg
c2NvcGVPYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBpZGVudGlmaWVyLCB2YWx1ZSwgYXR0cmli
dXRlcyk7CisgICAgICAgIFQqIHNjb3BlT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VD4odm0uaGVhcCkpIFQodm0sIGdsb2JhbE9iamVjdCwgY3VycmVudFNjb3BlLCBzeW1ib2xU
YWJsZSk7CisgICAgICAgIHNjb3BlT2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgdmFsdWUpOwog
ICAgICAgICByZXR1cm4gc2NvcGVPYmplY3Q7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBKU05h
bWVTY29wZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Njb3BlKiBjdXJyZW50U2Nv
cGUsIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBUeXBl
KTsKKyAgICBzdGF0aWMgSlNOYW1lU2NvcGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSosIEpTVmFsdWUsIFR5cGUpOwogCiAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAg
IHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSk7CkBA
IC02MSwyMiArNjEsMTYgQEAgcHVibGljOgogICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ2lzdGVyU3RvcmUuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgICAgICBtX3JlZ2lzdGVyU3RvcmUuc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAg
ICAgIHN5bWJvbFRhYmxlKCktPmFkZChpZGVudGlmaWVyLmltcGwoKSwgU3ltYm9sVGFibGVFbnRy
eSgtMSwgYXR0cmlidXRlcykpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOwogCi0gICAgSlNOYW1lU2NvcGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNTY29wZSogbmV4dCkKLSAgICAgICAgOiBCYXNlKAotICAgICAgICAgICAgdm0sCi0gICAg
ICAgICAgICBzdHJ1Y3R1cmUsCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PFJlZ2lzdGVy
Kj4oJm1fcmVnaXN0ZXJTdG9yZSArIDEpLAotICAgICAgICAgICAgbmV4dAotICAgICAgICApCisg
ICAgSlNOYW1lU2NvcGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogbmV4
dCwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSwgcmVpbnRlcnByZXRfY2FzdDxSZWdpc3Rlcio+KCZtX3JlZ2lzdGVyU3RvcmUgKyAxKSwgbmV4
dCwgc3ltYm9sVGFibGUpCiAgICAgewogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaAko
cmV2aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Nyw2ICs4
Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7
CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgbV9zeW1ib2xUYWJs
ZS5zZXQodm0sIHRoaXMsIFN5bWJvbFRhYmxlOjpjcmVhdGUodm0pKTsKICAgICB9CiAgICAgCiAg
ICAgU2VnbWVudGVkVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPiwgMTY+IG1fcmVnaXN0ZXJz
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuaAkocmV2aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01MCwxOCArNTAsMTYgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IElzRW52aXJvbm1lbnRSZWNvcmQgfCBPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgCi0gICAgSlNTeW1i
b2xUYWJsZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBzY29w
ZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gMCkKKyAgICBKU1N5bWJvbFRhYmxlT2JqZWN0
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSwgc2NvcGUpCiAgICAgewotICAgICAgICBpZiAoc3ltYm9sVGFi
bGUpCi0gICAgICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgc3ltYm9sVGFibGUp
OwogICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorICAgIAorICAgIEpT
U3ltYm9sVGFibGVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSog
c2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUsIHNjb3BlKQogICAgIHsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwot
ICAgICAgICBpZiAoIW1fc3ltYm9sVGFibGUpCi0gICAgICAgICAgICBtX3N5bWJvbFRhYmxlLnNl
dCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOworICAgICAgICBBU1NFUlQoc3lt
Ym9sVGFibGUpOworICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgc3ltYm9sVGFi
bGUpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuaAkocmV2aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ3LDYgKzM0NywxNCBAQCBwdWJs
aWM6CiAgICAgICAgIHN5bWJvbFRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJl
dHVybiBzeW1ib2xUYWJsZTsKICAgICB9CisgICAgCisgICAgc3RhdGljIFN5bWJvbFRhYmxlKiBj
cmVhdGVOYW1lU2NvcGVUYWJsZShWTSYgdm0sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgU3ltYm9sVGFibGUqIHJlc3VsdCA9IGNy
ZWF0ZSh2bSk7CisgICAgICAgIHJlc3VsdC0+YWRkKGlkZW50LmltcGwoKSwgU3ltYm9sVGFibGVF
bnRyeSgtMSwgYXR0cmlidXRlcykpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
ICAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBz
dGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247137</attachid>
            <date>2015-02-23 12:53:17 -0800</date>
            <delta_ts>2015-02-23 12:53:17 -0800</delta_ts>
            <desc>fix 32-bit</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>32445</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgwNTExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBA
CisyMDE1LTAyLTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U2NvcGVzIHNob3VsZCBhbHdheXMgYmUgY3JlYXRlZCB3aXRoIGEgcHJldmlvdXNseS1jcmVhdGVk
IHN5bWJvbCB0YWJsZSByYXRoZXIgdGhhbiBjcmVhdGluZyBvbmUgb24gdGhlIGZseQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxOTE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisgICAgICAgIAorICAgICAgICBUaGUgbWFpbiBlZmZl
Y3Qgb2YgdGhpcyBjaGFuZ2UgaXMgdGhhdCBwdXNoaW5nIG5hbWUgc2NvcGVzIG5vIGxvbmdlciBy
ZXF1aXJlcyBjcmVhdGluZyBzeW1ib2wKKyAgICAgICAgdGFibGVzIG9uIHRoZSBmbHkuCisgICAg
ICAgIAorICAgICAgICBUaGlzIGFsc28gbWFrZXMgaXQgc28gdGhhdCBKU0Vudmlyb25tZW50UmVj
b3JkcyBtdXN0IGFsd2F5cyBoYXZlIGFuIGEgcHJpb3Igc3ltYm9sIHRhYmxlLgorICAgICAgICAK
KyAgICAgICAgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCBzdGlsbCBkb2VzIGEgaGFjayB3aGVy
ZSBpdCBjcmVhdGVzIGEgYmxhbmsgc3ltYm9sIHRhYmxlIG9uLWRlbWFuZC4KKyAgICAgICAgVGhp
cyBpcyBuZWVkZWQgYmVjYXVzZSB0aGF0J3Mgd2hhdCBKU0dsb2JhbE9iamVjdCBhbmQgYWxsIG9m
IGl0cyBtYW55IHN1YmNsYXNzZXMgd2FudC4gVGhhdCdzCisgICAgICAgIGhhcm1sZXNzOyBJIG1h
aW5seSBuZWVkZWQgYSBwcmlvciBzeW1ib2wgdGFibGVzIGZvciBKU0Vudmlyb25tZW50UmVjb3Jk
cyBhbnl3YXkuCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaENhdGNoU2NvcGUpOgorICAgICAgICAqIGpp
dC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1c2hf
bmFtZV9zY29wZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXNoX25hbWVfc2NvcGUpOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHVzaE5hbWVTY29wZSk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9FeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9y
KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2F0Y2hTY29wZS5oOgorICAgICAgICAoSlNDOjpKU0Nh
dGNoU2NvcGU6OkpTQ2F0Y2hTY29wZSk6CisgICAgICAgIChKU0M6OkpTQ2F0Y2hTY29wZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuaDoKKyAgICAgICAg
KEpTQzo6SlNFbnZpcm9ubWVudFJlY29yZDo6SlNFbnZpcm9ubWVudFJlY29yZCk6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uTmFtZVNjb3BlLmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rp
b25OYW1lU2NvcGU6OkpTRnVuY3Rpb25OYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uTmFtZVNjb3BlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNOYW1lU2NvcGUuY3Bw
OgorICAgICAgICAoSlNDOjpKU05hbWVTY29wZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L0pTTmFtZVNjb3BlLmg6CisgICAgICAgIChKU0M6OkpTTmFtZVNjb3BlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU05hbWVTY29wZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpK
U05hbWVTY29wZTo6SlNOYW1lU2NvcGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OkpTU3ltYm9sVGFibGVPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpKU1N5bWJvbFRhYmxlT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZTo6Y3JlYXRlTmFtZVNjb3BlVGFibGUpOgorCiAyMDE1LTAyLTIzICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgY29tbWVudCB0byBj
bGFyaWZ5IHRoYXQgdGhlIHRlc3Qgd2FzIHRha2VuIGZyb20gdGhlIGJ1ZyByZXBvcnQsIGluIHJl
c3BvbnNlIHRvCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAxODA1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsx
MDksNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0X3RvX3Njb3BlIiwgImxlbmd0
aCIgOiA3IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX3dpdGhfc2NvcGUiLCAi
bGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3BvcF9zY29wZSIsICJs
ZW5ndGgiIDogMiB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHVzaF9uYW1lX3Njb3Bl
IiwgImxlbmd0aCIgOiA2IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX25hbWVf
c2NvcGUiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhdGNo
IiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJs
ZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vy
cm9yIiwgImxlbmd0aCIgOiAzIH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTgw
NTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOTQsOSArMjM5NCw4IEBAIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXNoRnVuY3Rpb24KIHsKICAgICBlbWl0T3Bjb2RlKG9wX3B1c2hf
bmFtZV9zY29wZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoYXR0cmlidXRlcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
VmFsdWUoU3ltYm9sVGFibGU6OmNyZWF0ZU5hbWVTY29wZVRhYmxlKCp2bSgpLCBwcm9wZXJ0eSwg
YXR0cmlidXRlcykpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoSlNOYW1l
U2NvcGU6OkZ1bmN0aW9uTmFtZVNjb3BlKTsKIH0KIApAQCAtMjQwOSw5ICsyNDA4LDggQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hDYXRjaFNjbwogCiAgICAgZW1pdE9wY29kZShv
cF9wdXNoX25hbWVfc2NvcGUpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGF0dHJpYnV0ZXMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRD
b25zdGFudFZhbHVlKFN5bWJvbFRhYmxlOjpjcmVhdGVOYW1lU2NvcGVUYWJsZSgqdm0oKSwgcHJv
cGVydHksIGF0dHJpYnV0ZXMpKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KEpTTmFtZVNjb3BlOjpDYXRjaFNjb3BlKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAxODA1MDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzYsNiArNDM2
LDE2IEBAIHB1YmxpYzoKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOwogICAgIH0KIAor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0
KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxB
cmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICB9
CisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcg
YXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCiAgICAgewogICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKQEAgLTE2MTksNiArMTYyOSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcx
LCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7Cisg
ICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIg
YXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIFRydXN0
ZWRJbW0zMiBhcmc1KQogICAgIHsKICAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09G
RlNFVCArIDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxODA1MDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MTcsMTEgKzcxNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDQywgUmVnaXN0ZXJJRCwgUmVnaXN0
ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRUNJQ0MsIFJlZ2lzdGVySUQsIGNvbnN0IElkZW50aWZpZXIqLCBSZWdpc3RlcklE
LCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FRSwgUmVnaXN0ZXJJRCk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
WklkSlpaLCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBSZWdpc3RlcklELCBpbnQzMl90LCBpbnQz
Ml90KTsKLSNlbHNlCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRVpJZEpaLCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBSZWdpc3RlcklE
LCBpbnQzMl90KTsKLSNlbmRpZgorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfSklUT3BlcmF0aW9uX0VaU3ltdGFiSiwgaW50LCBTeW1ib2xUYWJsZSosIFJlZ2lz
dGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uTm9FeGNlcHRpb25DaGVjayhWX0pJVE9w
ZXJhdGlvbl9FSiwgUmVnaXN0ZXJJRCk7CkBAIC03NTQsNyArNzUwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVy
YXRpb25fRUpTLCBHUFJSZWcsIEdQUlJlZywgc2l6ZV90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0ZXJJRCwgUmVn
aXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19K
SVRPcGVyYXRpb25fRUpKLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdp
c3RlcklEKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FWklkSlosIGludCwgY29uc3QgSWRlbnRpZmllciosIFJlZ2lzdGVySUQsIFJl
Z2lzdGVySUQsIGludDMyX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfSklUT3BlcmF0aW9uX0VaU3ltdGFiSiwgaW50LCBTeW1ib2xUYWJsZSosIFJlZ2lz
dGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSkpK
LCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3Rl
cklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0pJVE9wZXJhdGlvbl9FSlosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIGludDMyX3Qp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDE4
MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NjAsOSArNDYwLDkgQEAgQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VaSWRKWlogb3Bl
cmF0aW9uLCBpbnQgb3AxLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudE9wMiwgUmVnaXN0ZXJJRCBy
ZWdPcDMsIGludDMyX3Qgb3A0LCBpbnQzMl90IG9wNSkKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VaU3ltdGFiSiBv
cGVyYXRpb24sIGludCBvcDEsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgUmVnaXN0ZXJJRCBy
ZWdPcDMpCiB7Ci0gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihv
cDEpLCBUcnVzdGVkSW1tUHRyKGlkZW50T3AyKSwgcmVnT3AzLCBUcnVzdGVkSW1tMzIob3A0KSwg
VHJ1c3RlZEltbTMyKG9wNSkpOworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tMzIob3AxKSwgVHJ1c3RlZEltbVB0cihzeW1ib2xUYWJsZSksIHJlZ09wMyk7CiAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIApAQCAt
NTk0LDkgKzU5NCw5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoK
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQog
Ci1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihW
X0pJVE9wZXJhdGlvbl9FWklkSlogb3BlcmF0aW9uLCBpbnQzMl90IG9wMSwgY29uc3QgSWRlbnRp
ZmllciogaWRlbnRPcDIsIFJlZ2lzdGVySUQgcmVnT3AzVGFnLCBSZWdpc3RlcklEIHJlZ09wM1Bh
eWxvYWQsIGludDMyX3Qgb3A0KQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBK
SVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVpTeW10YWJKIG9wZXJhdGlvbiwgaW50
MzJfdCBvcDEsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgUmVnaXN0ZXJJRCByZWdPcDNUYWcs
IFJlZ2lzdGVySUQgcmVnT3AzUGF5bG9hZCkKIHsKLSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbTMyKG9wMSksIFRydXN0ZWRJbW1QdHIoaWRlbnRPcDIpLCBFQUJJXzMy
QklUX0RVTU1ZX0FSRyByZWdPcDNQYXlsb2FkLCByZWdPcDNUYWcsIFRydXN0ZWRJbW0zMihvcDQp
KTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKG9wMSksIFRy
dXN0ZWRJbW1QdHIoc3ltYm9sVGFibGUpLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyByZWdPcDNQYXls
b2FkLCByZWdPcDNUYWcpOwogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc5LDE0ICs3
NzksMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX251bWJlcihJbnN0cnVjdAogdm9pZCBK
SVQ6OmVtaXRfb3BfcHVzaF9uYW1lX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0g
ICAgZW1pdExvYWQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCwgcmVnVDEsIHJlZ1Qw
KTsKLSAgICBpZiAoY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZCA9PSBKU05hbWVTY29w
ZTo6Q2F0Y2hTY29wZSkgewotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hDYXRj
aFNjb3BlLCBkc3QsICZtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSwgcmVnVDEsIHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVy
YW5kKTsKKyAgICBlbWl0TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdU
MSwgcmVnVDApOworICAgIGlmIChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kID09IEpT
TmFtZVNjb3BlOjpDYXRjaFNjb3BlKSB7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
UHVzaENhdGNoU2NvcGUsIGRzdCwganNDYXN0PFN5bWJvbFRhYmxlKj4oZ2V0Q29uc3RhbnRPcGVy
YW5kKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSwgcmVnVDEsIHJlZ1QwKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRJbnN0cnVj
dGlvbls1XS51Lm9wZXJhbmQgPT0gSlNOYW1lU2NvcGU6OkZ1bmN0aW9uTmFtZVNjb3BlKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hGdW5jdGlvbk5hbWVTY29wZSwgZHN0LCAmbV9j
b2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCksIHJl
Z1QxLCByZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9PSBKU05hbWVTY29wZTo6
RnVuY3Rpb25OYW1lU2NvcGUpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHVzaEZ1bmN0
aW9uTmFtZVNjb3BlLCBkc3QsIGpzQ2FzdDxTeW1ib2xUYWJsZSo+KGdldENvbnN0YW50T3BlcmFu
ZChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSksIHJlZ1QxLCByZWdUMCk7CiB9CiAK
IHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9u
IDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5j
bHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTTmFt
ZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
LmgiCkBAIC00ODYsOCArNDg3LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251bWJlcihJbnN0
cnVjdGlvbioKIHZvaWQgSklUOjplbWl0X29wX3B1c2hfbmFtZV9zY29wZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHVz
aE5hbWVTY29wZSwgZHN0LCAmbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCksIHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5k
LCBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kKTsKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKKyAgICBpZiAo
Y3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9PSBKU05hbWVTY29wZTo6Q2F0Y2hTY29w
ZSkgeworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hDYXRjaFNjb3BlLCBkc3Qs
IGpzQ2FzdDxTeW1ib2xUYWJsZSo+KGdldENvbnN0YW50T3BlcmFuZChjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kKSksIHJlZ1QwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPT0gSlNOYW1l
U2NvcGU6OkZ1bmN0aW9uTmFtZVNjb3BlKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1
c2hGdW5jdGlvbk5hbWVTY29wZSwgZHN0LCBqc0Nhc3Q8U3ltYm9sVGFibGUqPihnZXRDb25zdGFu
dE9wZXJhbmQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpLCByZWdUMCk7CiB9CiAK
IHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NhdGNoU2NvcGUuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
aCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oIgpAQCAtNTksNiArNjEsMjQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIFNjb3BlVHlwZT4KK3ZvaWQgcHVzaE5hbWVTY29wZShFeGVjU3RhdGUqIGV4
ZWMsIGludDMyX3QgZHN0LCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICAKKyAgICBBU1NFUlQoIUpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChleGVjLT5jb2RlQmxvY2soKS0+aml0VHlwZSgpKSk7CisKKyAg
ICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGlmIHRoaXMgb3BlcmF0aW9uIGlzIGNhbGxlZCBm
cm9tIHRoZSBERkcgb3IgRlRMLgorICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgdG8gcGFz
cyBpbiB0aGUgbmV3IHNjb3BlLgorICAgIEpTU2NvcGUqIGN1cnJlbnRTY29wZSA9IGV4ZWMtPnVu
Y2hlY2tlZFIoZHN0KS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBKU05hbWVTY29wZSogc2NvcGUg
PSBTY29wZVR5cGU6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjdXJy
ZW50U2NvcGUsIHN5bWJvbFRhYmxlLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CisK
KyAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGlmIHRoaXMgb3BlcmF0aW9uIGlzIGNhbGxl
ZCBmcm9tIHRoZSBERkcgb3IgRlRMLgorICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgdG8g
cmV0dXJuIHRoZSBuZXcgc2NvcGUuCisgICAgZXhlYy0+dW5jaGVja2VkUihkc3QpID0gc2NvcGU7
Cit9CisKIGV4dGVybiAiQyIgewogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTEyNjksMzQgKzEy
ODksMTYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlclNldAogfQogI2Vu
ZGlmCiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoTmFtZVNjb3BlKEV4ZWNTdGF0
ZSogZXhlYywgaW50MzJfdCBkc3QsIElkZW50aWZpZXIqIGlkZW50aWZpZXIsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRpYnV0ZXMsIGludDMyX3QgdHlwZSkKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoQ2F0Y2hTY29wZShFeGVjU3RhdGUqIGV4ZWMsIGlu
dDMyX3QgZHN0LCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHdvbid0IHdv
cmsgaWYgdGhpcyBvcGVyYXRpb24gaXMgY2FsbGVkIGZyb20gdGhlIERGRyBvciBGVEwuCi0gICAg
Ly8gVGhpcyBzaG91bGQgYmUgY2hhbmdlZCB0byBwYXNzIGluIHRoZSBuZXcgc2NvcGUuCi0gICAg
SlNTY29wZSogY3VycmVudFNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihkc3QpLlJlZ2lzdGVyOjpz
Y29wZSgpOwotICAgIEpTTmFtZVNjb3BlOjpUeXBlIHNjb3BlVHlwZSA9IHN0YXRpY19jYXN0PEpT
TmFtZVNjb3BlOjpUeXBlPih0eXBlKTsKLSAgICBKU05hbWVTY29wZSogc2NvcGUgPSBKU05hbWVT
Y29wZTo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGN1cnJlbnRTY29w
ZSwgKmlkZW50aWZpZXIsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRpYnV0ZXMs
IHNjb3BlVHlwZSk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGlmIHRoaXMgb3Bl
cmF0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBERkcgb3IgRlRMLgotICAgIC8vIFRoaXMgc2hvdWxk
IGJlIGNoYW5nZWQgdG8gcmV0dXJuIHRoZSBuZXcgc2NvcGUuCi0gICAgZXhlYy0+dW5jaGVja2Vk
Uihkc3QpID0gc2NvcGU7CisgICAgcHVzaE5hbWVTY29wZTxKU0NhdGNoU2NvcGU+KGV4ZWMsIGRz
dCwgc3ltYm9sVGFibGUsIGVuY29kZWRWYWx1ZSk7CiB9CiAKLSNpZiBVU0UoSlNWQUxVRTMyXzY0
KQotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hDYXRjaFNjb3BlKEV4ZWNTdGF0ZSog
ZXhlYywgaW50MzJfdCBkc3QsIElkZW50aWZpZXIqIGlkZW50aWZpZXIsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRpYnV0ZXMpCit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHVzaEZ1bmN0aW9uTmFtZVNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBkc3Qs
IFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIG9wZXJhdGlvblB1c2hOYW1lU2NvcGUoZXhlYywgZHN0LCBpZGVudGlmaWVyLCBlbmNv
ZGVkVmFsdWUsIGF0dGlidXRlcywgSlNOYW1lU2NvcGU6OkNhdGNoU2NvcGUpOworICAgIHB1c2hO
YW1lU2NvcGU8SlNGdW5jdGlvbk5hbWVTY29wZT4oZXhlYywgZHN0LCBzeW1ib2xUYWJsZSwgZW5j
b2RlZFZhbHVlKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hGdW5jdGlv
bk5hbWVTY29wZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZHN0LCBJZGVudGlmaWVyKiBpZGVu
dGlmaWVyLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0aWJ1dGVzKQot
ewotICAgIG9wZXJhdGlvblB1c2hOYW1lU2NvcGUoZXhlYywgZHN0LCBpZGVudGlmaWVyLCBlbmNv
ZGVkVmFsdWUsIGF0dGlidXRlcywgSlNOYW1lU2NvcGU6OkZ1bmN0aW9uTmFtZVNjb3BlKTsKLX0K
LSNlbmRpZgotCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShFeGVj
U3RhdGUqIGV4ZWMsIGludDMyX3QgZHN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxODA1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgxLDYgKzgxLDcg
QEAgZXh0ZXJuICJDIiB7CiAgICAgU3BydDogU2xvd1BhdGhSZXR1cm5UeXBlCiAgICAgU3NpOiBT
dHJ1Y3R1cmVTdHViSW5mbyoKICAgICBTdDogU3RydWN0dXJlKgorICAgIFN5bXRhYjogU3ltYm9s
VGFibGUqCiAgICAgVjogdm9pZAogICAgIFZtOiBWTSoKICAgICBWd3M6IFZhcmlhYmxlV2F0Y2hw
b2ludFNldCoKQEAgLTE3MCwxMSArMTcxLDcgQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04g
KCpWX0pJVE9wZXJhdAogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlv
bl9FQ1BTUFMpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIHZvaWQqLCBzaXplX3QsIHZvaWQqLCBzaXpl
X3QpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FQ1opKEV4
ZWNTdGF0ZSosIEpTQ2VsbCosIGludDMyX3QpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04g
KCpWX0pJVE9wZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopOwotI2lm
IFVTRShKU1ZBTFVFNjQpCi10eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0
aW9uX0VaSWRKWlopKEV4ZWNTdGF0ZSosIGludCwgSWRlbnRpZmllciosIEVuY29kZWRKU1ZhbHVl
LCBpbnQzMl90LCBpbnQzMl90KTsKLSNlbHNlCi10eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAo
KlZfSklUT3BlcmF0aW9uX0VaSWRKWikoRXhlY1N0YXRlKiwgaW50LCBJZGVudGlmaWVyKiwgRW5j
b2RlZEpTVmFsdWUsIGludDMyX3QpOwotI2VuZGlmCit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElP
TiAoKlZfSklUT3BlcmF0aW9uX0VaU3ltdGFiSikoRXhlY1N0YXRlKiwgaW50MzJfdCwgU3ltYm9s
VGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZf
SklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZv
aWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKQ0kpKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBKU0NlbGwqLCBTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJB
VElPTiAoKlZfSklUT3BlcmF0aW9uX0VKSWRKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IElkZW50aWZpZXIqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwpAQCAtMjg4LDEw
ICsyODUsOSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBJZGVudGlmaWVyKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7CiAjZWxzZQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRl
clNldHRlcihFeGVjU3RhdGUqLCBKU0NlbGwqLCBJZGVudGlmaWVyKiwgSlNDZWxsKiwgSlNDZWxs
KikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hDYXRjaFNj
b3BlKEV4ZWNTdGF0ZSosIGludDMyX3QsIElkZW50aWZpZXIqLCBFbmNvZGVkSlNWYWx1ZSwgaW50
MzJfdCkgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hGdW5j
dGlvbk5hbWVTY29wZShFeGVjU3RhdGUqLCBpbnQzMl90LCBJZGVudGlmaWVyKiwgRW5jb2RlZEpT
VmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNlbmRpZgotdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1c2hOYW1lU2NvcGUoRXhlY1N0YXRlKiwgaW50MzJfdCwgSWRlbnRpZmllcios
IEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaENhdGNoU2NvcGUoRXhlY1N0YXRlKiwgaW50MzJfdCwg
U3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1c2hGdW5jdGlvbk5hbWVTY29wZShFeGVjU3RhdGUqLCBpbnQzMl90
LCBTeW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShFeGVjU3RhdGUqLCBpbnQzMl90LCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBv
cFNjb3BlKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Qcm9maWxlRGlkQ2FsbChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxODA1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg2LDExICsx
Mjg2LDEyIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3Bfc2NvcGUKIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXNoX25hbWVfc2NvcGUpCiB7CiAgICAgTExJTlRf
QkVHSU4oKTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwog
ICAgIGludCBzY29wZVJlZyA9IHBjWzFdLnUub3BlcmFuZDsKICAgICBKU1Njb3BlKiBjdXJyZW50
U2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHNjb3BlUmVnKS5SZWdpc3Rlcjo6c2NvcGUoKTsKLSAg
ICBKU05hbWVTY29wZTo6VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8SlNOYW1lU2NvcGU6OlR5cGU+
KHBjWzVdLnUub3BlcmFuZCk7Ci0gICAgSlNOYW1lU2NvcGUqIHNjb3BlID0gSlNOYW1lU2NvcGU6
OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjdXJyZW50U2NvcGUsIGNv
ZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVl
KCksIHBjWzRdLnUub3BlcmFuZCwgdHlwZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpOworICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGpzQ2FzdDxT
eW1ib2xUYWJsZSo+KExMSU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAgICBKU05hbWVTY29wZTo6
VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8SlNOYW1lU2NvcGU6OlR5cGU+KHBjWzRdLnUub3BlcmFu
ZCk7CisgICAgSlNOYW1lU2NvcGUqIHNjb3BlID0gSlNOYW1lU2NvcGU6OmNyZWF0ZSh2bSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlLCB2YWx1
ZSwgdHlwZSk7CiAgICAgZXhlYy0+dW5jaGVja2VkUihzY29wZVJlZykgPSBzY29wZTsKICAgICBM
TElOVF9FTkQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5
KQpAQCAtMTI1Niw3ICsxMjU2LDcgQEAgX2xsaW50X29wX3BvcF9zY29wZToKIF9sbGludF9vcF9w
dXNoX25hbWVfc2NvcGU6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3B1c2hfbmFtZV9zY29wZSkKLSAgICBkaXNwYXRjaCg2KQorICAgIGRp
c3BhdGNoKDUpCiAKIAogX2xsaW50X29wX3Rocm93OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTMsOCArMjUzLDEwIEBAIFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBTY3JpcHRFeGVjdXRhYmxl
OjoKICAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8gdGhpcy4gQnV0IHdlIGRvLCBi
ZWNhdXNlIGJ5dGVjb2RlIGxpbmtpbmcgcmVxdWlyZXMgYSByZWFsIHNjb3BlCiAgICAgICAgIC8v
IGNoYWluLgogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MTg4NQorICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPQorICAg
ICAgICAgICAgU3ltYm9sVGFibGU6OmNyZWF0ZU5hbWVTY29wZVRhYmxlKCp2bSwgZXhlY3V0YWJs
ZS0+bmFtZSgpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwogICAgICAgICBzY29wZSA9IEpTRnVu
Y3Rpb25OYW1lU2NvcGU6OmNyZWF0ZSgKLSAgICAgICAgICAgICp2bSwgc2NvcGUtPmdsb2JhbE9i
amVjdCgpLCBzY29wZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBmdW5jdGlvbiwgUmVhZE9ubHkgfCBE
b250RGVsZXRlKTsKKyAgICAgICAgICAgICp2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLCBzY29w
ZSwgc3ltYm9sVGFibGUsIGZ1bmN0aW9uKTsKICAgICB9CiAgICAgCiAgICAgU291cmNlUHJvdmlk
ZXIqIHByb3ZpZGVyID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2F0Y2hTY29wZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2F0Y2hTY29wZS5oCShyZXZpc2lvbiAx
ODA1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhdGNoU2NvcGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsMTUgKzM3LDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIEpTTmFtZVNjb3BlOwogICAgIAotICAgIEpTQ2F0Y2hTY29wZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIG5leHQpCi0gICAgICAgIDog
QmFzZSh2bSwgZ2xvYmFsT2JqZWN0LT5jYXRjaFNjb3BlU3RydWN0dXJlKCksIG5leHQpCisgICAg
SlNDYXRjaFNjb3BlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29w
ZSogbmV4dCwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgICAgICA6IEJhc2Uodm0sIGds
b2JhbE9iamVjdC0+Y2F0Y2hTY29wZVN0cnVjdHVyZSgpLCBuZXh0LCBzeW1ib2xUYWJsZSkKICAg
ICB7CiAgICAgfQogICAgIAogcHVibGljOgotICAgIHN0YXRpYyBKU0NhdGNoU2NvcGUqIGNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIGN1cnJlbnRT
Y29wZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKKyAgICBzdGF0aWMgSlNDYXRjaFNjb3BlKiBjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJv
bFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBCYXNlOjpjcmVhdGU8SlNDYXRjaFNjb3BlPih2bSwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50U2Nv
cGUsIGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuIEJhc2U6
OmNyZWF0ZTxKU0NhdGNoU2NvcGU+KHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgc3lt
Ym9sVGFibGUsIHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90bykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRW52aXJvbm1l
bnRSZWNvcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Vudmlyb25tZW50UmVjb3JkLmgJKHJldmlzaW9uIDE4MDUwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRW52aXJvbm1lbnRSZWNvcmQuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAy
MDEyLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjIsNyArNjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlLAogICAgICAgICBSZWdpc3RlciogcmVnaXN0ZXJzLAogICAgICAg
ICBKU1Njb3BlKiBzY29wZSwKLSAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gMCkK
KyAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQogICAgICAgICA6IEJhc2Uodm0sIHN0
cnVjdHVyZSwgc2NvcGUsIHN5bWJvbFRhYmxlKQogICAgICAgICAsIG1fcmVnaXN0ZXJzKHJlaW50
ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KHJlZ2lzdGVycykpCiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbk5hbWVTY29w
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b25OYW1lU2NvcGUuaAkocmV2aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbk5hbWVTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNSAr
MzcsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSlNOYW1lU2NvcGU7
CiAgICAgCi0gICAgSlNGdW5jdGlvbk5hbWVTY29wZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU2NvcGUqIG5leHQpCi0gICAgICAgIDogQmFzZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT5jYXRjaFNjb3BlU3RydWN0dXJlKCksIG5leHQpCisgICAgSlNGdW5jdGlvbk5hbWVTY29w
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIG5leHQsIFN5
bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICAgICAgOiBCYXNlKHZtLCBnbG9iYWxPYmplY3Qt
PmNhdGNoU2NvcGVTdHJ1Y3R1cmUoKSwgbmV4dCwgc3ltYm9sVGFibGUpCiAgICAgewogICAgIH0K
ICAgICAKIHB1YmxpYzoKLSAgICBzdGF0aWMgSlNGdW5jdGlvbk5hbWVTY29wZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3VycmVudFNjb3Bl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQorICAgIHN0YXRpYyBKU0Z1bmN0aW9uTmFtZVNjb3BlKiBjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5
bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBCYXNlOjpjcmVhdGU8SlNGdW5jdGlvbk5hbWVTY29wZT4odm0sIGdsb2JhbE9iamVjdCwg
Y3VycmVudFNjb3BlLCBpZGVudGlmaWVyLCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgICAgIHJl
dHVybiBCYXNlOjpjcmVhdGU8SlNGdW5jdGlvbk5hbWVTY29wZT4odm0sIGdsb2JhbE9iamVjdCwg
Y3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSwgdmFsdWUpOwogICAgIH0KICAgICAKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNOYW1lU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTmFtZVNjb3BlLmNwcAkocmV2aXNpb24gMTgwNTA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSwxMyArMzUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU05hbWVT
Y29wZTo6c19pbmZvID0geyAiTmFtZVNjb3BlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU05hbWVTY29wZSkgfTsKIAotSlNOYW1lU2NvcGUqIEpTTmFtZVNjb3BlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJy
ZW50U2NvcGUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIFR5cGUgdHlwZSkKK0pTTmFtZVNjb3BlKiBKU05hbWVTY29wZTo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3Vy
cmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUgdmFsdWUsIFR5cGUg
dHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIENhdGNoU2NvcGU6Ci0gICAg
ICAgIHJldHVybiBKU0NhdGNoU2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBjdXJyZW50
U2NvcGUsIGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuIEpT
Q2F0Y2hTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwgc3ltYm9s
VGFibGUsIHZhbHVlKTsKICAgICBjYXNlIEZ1bmN0aW9uTmFtZVNjb3BlOgotICAgICAgICByZXR1
cm4gSlNGdW5jdGlvbk5hbWVTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRT
Y29wZSwgaWRlbnRpZmllciwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gSlNG
dW5jdGlvbk5hbWVTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGN1cnJlbnRTY29wZSwg
c3ltYm9sVGFibGUsIHZhbHVlKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTmFtZVNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNOYW1lU2NvcGUuaAkocmV2aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTQg
KzQyLDE0IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICBzdGF0aWMgVCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNTY29wZSogY3VycmVudFNjb3BlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIHN0YXRpYyBUKiBjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUs
IFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IFQqIHNjb3BlT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VD4odm0uaGVhcCkp
IFQodm0sIGdsb2JhbE9iamVjdCwgY3VycmVudFNjb3BlKTsKLSAgICAgICAgc2NvcGVPYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtLCBpZGVudGlmaWVyLCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAg
ICAgIFQqIHNjb3BlT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VD4odm0uaGVh
cCkpIFQodm0sIGdsb2JhbE9iamVjdCwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSk7CisgICAg
ICAgIHNjb3BlT2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgdmFsdWUpOwogICAgICAgICByZXR1
cm4gc2NvcGVPYmplY3Q7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBKU05hbWVTY29wZSogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIGNvbnN0IElk
ZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBUeXBlKTsKKyAgICBzdGF0
aWMgSlNOYW1lU2NvcGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNTY29wZSogY3Vy
cmVudFNjb3BlLCBTeW1ib2xUYWJsZSosIEpTVmFsdWUsIFR5cGUpOwogCiAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBKU1Zh
bHVlIHRvVGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSk7CkBAIC02MSwyMiArNjEs
MTYgQEAgcHVibGljOgogICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lz
dGVyU3RvcmUuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVl
IHZhbHVlKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAg
ICBtX3JlZ2lzdGVyU3RvcmUuc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgIHN5bWJvbFRh
YmxlKCktPmFkZChpZGVudGlmaWVyLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeSgtMSwgYXR0cmli
dXRlcykpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwog
Ci0gICAgSlNOYW1lU2NvcGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSog
bmV4dCkKLSAgICAgICAgOiBCYXNlKAotICAgICAgICAgICAgdm0sCi0gICAgICAgICAgICBzdHJ1
Y3R1cmUsCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oJm1fcmVnaXN0
ZXJTdG9yZSArIDEpLAotICAgICAgICAgICAgbmV4dAotICAgICAgICApCisgICAgSlNOYW1lU2Nv
cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogbmV4dCwgU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgcmVpbnRlcnBy
ZXRfY2FzdDxSZWdpc3Rlcio+KCZtX3JlZ2lzdGVyU3RvcmUgKyAxKSwgbmV4dCwgc3ltYm9sVGFi
bGUpCiAgICAgewogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTgw
NTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Nyw2ICs4Nyw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CiAgICAgICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgbV9zeW1ib2xUYWJsZS5zZXQodm0sIHRo
aXMsIFN5bWJvbFRhYmxlOjpjcmVhdGUodm0pKTsKICAgICB9CiAgICAgCiAgICAgU2VnbWVudGVk
VmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPiwgMTY+IG1fcmVnaXN0ZXJzOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aAkocmV2aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwxOCArNTAs
MTYgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IElzRW52aXJvbm1lbnRSZWNvcmQgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5h
bWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgCi0gICAgSlNTeW1ib2xUYWJsZU9iamVj
dChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBzY29wZSwgU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlID0gMCkKKyAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICA6IEJhc2Uodm0sIHN0
cnVjdHVyZSwgc2NvcGUpCiAgICAgewotICAgICAgICBpZiAoc3ltYm9sVGFibGUpCi0gICAgICAg
ICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgc3ltYm9sVGFibGUpOwogICAgIH0KLQot
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorICAgIAorICAgIEpTU3ltYm9sVGFibGVP
YmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJv
bFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIHNjb3Bl
KQogICAgIHsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICBpZiAo
IW1fc3ltYm9sVGFibGUpCi0gICAgICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywg
U3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOworICAgICAgICBBU1NFUlQoc3ltYm9sVGFibGUpOwor
ICAgICAgICBtX3N5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgc3ltYm9sVGFibGUpOwogICAgIH0K
IAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2
aXNpb24gMTgwNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ3LDYgKzM0NywxNCBAQCBwdWJsaWM6CiAgICAgICAg
IHN5bWJvbFRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBzeW1ib2xU
YWJsZTsKICAgICB9CisgICAgCisgICAgc3RhdGljIFN5bWJvbFRhYmxlKiBjcmVhdGVOYW1lU2Nv
cGVUYWJsZShWTSYgdm0sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKQorICAgIHsKKyAgICAgICAgU3ltYm9sVGFibGUqIHJlc3VsdCA9IGNyZWF0ZSh2bSk7Cisg
ICAgICAgIHJlc3VsdC0+YWRkKGlkZW50LmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeSgtMSwgYXR0
cmlidXRlcykpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKICAgICBzdGF0
aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>