<?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>18774</bug_id>
          
          <creation_ts>2008-04-27 12:39:04 -0700</creation_ts>
          <short_desc>SQUIRRELFISH: print meaningful error messages</short_desc>
          <delta_ts>2008-07-18 18:46:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>oliver</cc>
    
    <cc>rik</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>79054</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-04-27 12:39:04 -0700</bug_when>
    <thetext>Currently, many error messages include a textual representation of the expression being evaluated. This doesn&apos;t happen with SquirrelFish, which is the cause of the vast majority of the layout test failures. We currently intercept thrown exceptions and add line and sourceURL information, which is not used when printing the exception. Maciej suggested that we use this information when printing the exception and add column information as well. This will require tracking columns in the parser and storing them in the nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79554</commentid>
    <comment_count>1</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-05-03 01:25:11 -0700</bug_when>
    <thetext>This is causing the following failures:

  dom/* (116 of them)
  editing/selection/contenteditable-click-inside.html
  editing/selection/contenteditable-click-outside.html
  fast/forms/selected-index-assert.html
  fast/xpath/nsresolver-exception.xhtml
  platform/mac/fast/AppleScript/001.html
  tables/mozilla_expected_failures/core/captions1.html
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79649</commentid>
    <comment_count>2</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-05-04 21:25:54 -0700</bug_when>
    <thetext>I&apos;m assigning this to myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79792</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-06 21:15:34 -0700</bug_when>
    <thetext>The error message that was popular in the dom/* tests was

&quot;TypeError: Value undefined (result of expression acronymElem.setIdAttributeNS) is not object.&quot;

This happens when converting a value to object, usually for the sake of a function call.

Trunk provides many other sorts of contextual decompilation, though. The best way to see them all is probably to peruse nodes.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79793</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-06 21:17:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/5916152&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79795</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-06 21:23:06 -0700</bug_when>
    <thetext>Not a SquirrelFishBlocker, since we can land on trunk without great exception messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82084</commentid>
    <comment_count>6</comment_count>
    <who name="Anthony Ricaud">rik</who>
    <bug_when>2008-06-01 15:37:43 -0700</bug_when>
    <thetext>For reference, Firefox says things like that :
&gt;&gt;&gt; document.querySelectorAll(&apos;a&apos;).forEach()
TypeError: document.querySelectorAll is not a function
&gt;&gt;&gt; document.getElementsByTagName(&apos;a&apos;).forEach()
TypeError: document.getElementsByTagName(&quot;a&quot;).forEach is not a function

while WebKit r34271 says:
document.querySelectorAll(&apos;a&apos;).forEach()
TypeError: Value undefined does not allow function calls. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86314</commentid>
    <comment_count>7</comment_count>
      <attachid>22359</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-18 06:30:58 -0700</bug_when>
    <thetext>Created attachment 22359
Patch o&apos; doom

Here we go, error messages that Do Not Suck (tm)

A few issues -- I haven&apos;t yet fixed all the error messages so some, particularly syntax errors, still do not produce awe inspiring messages, but hey have all the information required to do so.

All the standard errors are now good and wonderful, and all have the additional character position information attached.

The error messages are currently of the form
&gt; undefined.b++
TypeError: Result of expression &apos;undefined&apos; [undefined] is not an object.
&gt; undefined[0]
TypeError: Result of expression &apos;undefined&apos; [undefined] is not an object.
&gt; undefined()
TypeError: Result of expression &apos;undefined&apos; [undefined] is not a function.
&gt; new undefined()
TypeError: Result of expression &apos;undefined&apos; [undefined] is not a constructor.
&gt; 1 in undefined
TypeError: Result of expression &apos;undefined&apos; [undefined] is not a valid argument for &apos;in&apos;.
&gt; 1 instanceof undefined
TypeError: Result of expression &apos;undefined&apos; [undefined] is not a valid argument for &apos;instanceof&apos;.
&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86315</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-18 06:32:43 -0700</bug_when>
    <thetext>OH, and this effects a nmber of layout tests that are looking at what the error messages are, however until  i get the go ahead on the current template i won&apos;t update the test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86316</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-18 06:37:36 -0700</bug_when>
    <thetext>Additional foo:
&gt; var foo
undefined
&gt; foo.b++
TypeError: Result of expression &apos;foo&apos; [undefined] is not an object.
&gt; ++foo.b
TypeError: Result of expression &apos;foo&apos; [undefined] is not an object.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86317</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-18 06:38:55 -0700</bug_when>
    <thetext>&gt; &quot;someString&quot;()
TypeError: Result of expression &apos;&quot;someString&quot;&apos; [someString] is not a function.
&gt; new &quot;someString&quot;()
TypeError: Result of expression &apos;&quot;someString&quot;&apos; [someString] is not a constructor.
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86350</commentid>
    <comment_count>11</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-07-18 11:46:28 -0700</bug_when>
    <thetext>I&apos;ll review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86370</commentid>
    <comment_count>12</comment_count>
      <attachid>22359</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-07-18 14:02:18 -0700</bug_when>
    <thetext>Comment on attachment 22359
Patch o&apos; doom

+int CodeBlock::lineNumberForVPC(const Instruction* vPC) {

The opening brace should be on the next line.

+        * kjs/SourceRange.h:

This is in the wrong position of the header list.

+                divot = 0; // Overflow has occurred, we can only give line number info for errors for this region

Might as well put the comment on its own line(s) like all the others in this if-else statement.

+    JSObject* exception = Error::create(exec, TypeError, createErrorMessage(exec, codeBlock, line, divotPoint, divotPoint + endOffset, value, message), line, codeBlock-&gt;ownerNode-&gt;sourceId(), codeBlock-&gt;ownerNode-&gt;sourceURL());

Maybe it would be better to break off the createErrorMessage() call into its own line, because this line is already quite long. This goes for the other creations of errors as well.

+        int32_t m_startOffset;
+        

I don&apos;t think you want the extra line here.

Other than that, it looks good, so r=me with those changes. Do you have any tests for your new exception messages and line/column info?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86396</commentid>
    <comment_count>13</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-18 18:46:25 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	JavaScriptCore/ChangeLog
	M	JavaScriptCore/JavaScriptCore.exp
	M	JavaScriptCore/VM/CodeBlock.cpp
	M	JavaScriptCore/VM/CodeBlock.h
	M	JavaScriptCore/VM/CodeGenerator.cpp
	M	JavaScriptCore/VM/CodeGenerator.h
	M	JavaScriptCore/VM/ExceptionHelpers.cpp
	M	JavaScriptCore/VM/ExceptionHelpers.h
	M	JavaScriptCore/VM/Machine.cpp
	M	JavaScriptCore/VM/Machine.h
	M	JavaScriptCore/kjs/DebuggerCallFrame.cpp
	M	JavaScriptCore/kjs/Error.cpp
	M	JavaScriptCore/kjs/Error.h
	M	JavaScriptCore/kjs/JSGlobalObjectFunctions.cpp
	M	JavaScriptCore/kjs/JSImmediate.cpp
	M	JavaScriptCore/kjs/JSNotAnObject.h
	M	JavaScriptCore/kjs/JSObject.h
	M	JavaScriptCore/kjs/Parser.h
	M	JavaScriptCore/kjs/SourceRange.h
	M	JavaScriptCore/kjs/grammar.y
	M	JavaScriptCore/kjs/lexer.cpp
	M	JavaScriptCore/kjs/lexer.h
	M	JavaScriptCore/kjs/nodes.cpp
	M	JavaScriptCore/kjs/nodes.h
	M	LayoutTests/ChangeLog
	M	LayoutTests/fast/css/resources/font-face-descriptor-multiple-values-parsing.js
	M	LayoutTests/fast/dom/SelectorAPI/dumpNodeList-expected.txt
	M	LayoutTests/fast/forms/select-namedItem-expected.txt
	A	LayoutTests/fast/js/exception-expression-offset.html
	A	LayoutTests/fast/js/resources/exception-expression-offset.js
	M	LayoutTests/fast/xsl/transform-xhr-doc-expected.txt
	M	LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-document-write-expected.txt
	M	LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-javascript-url-expected.txt
	M	LayoutTests/http/tests/security/aboutBlank/xss-DENIED-set-opener-expected.txt
	M	LayoutTests/http/tests/security/cross-frame-access-call.html
	M	LayoutTests/platform/mac/fast/events/updateLayoutForHitTest-expected.txt
	M	LayoutTests/platform/mac/svg/custom/createelement-expected.txt
	M	LayoutTests/platform/mac/tables/mozilla/bugs/bug53690-1-expected.txt
	M	LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug92868_1-expected.txt
Committed r35245

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22359</attachid>
            <date>2008-07-18 06:30:58 -0700</date>
            <delta_ts>2008-07-18 14:02:18 -0700</delta_ts>
            <desc>Patch o&apos; doom</desc>
            <filename>errorMessages.patch</filename>
            <type>text/plain</type>
            <size>162536</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA5NjI1YTczLi4zZDg1NzY0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM3
IEBACisyMDA4LTA3LTE4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU3NjkzNTM+IFNRVUlSUkVMRklTSDogSmF2YVNjcmlwdCBlcnJvciBtZXNzYWdlcyBhcmUgbWlz
c2luZyBpbmZvcm1hdGl2ZSB0ZXh0CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRlY2VudCBl
cnJvciBtZXNzYWdlcyBpbiBKYXZhU2NyaXB0LiAgVGhpcyBwYXRjaCBhY2hpZXZlcyB0aGlzIGJ5
IHByb3ZpZGluZworICAgICAgICBlbnN1cmluZyB0aGUgY29tbW9uIGVycm9ycyBhbmQgZXhjZXB0
aW9ucyBoYXZlIG1lc3NhZ2VzIHRoYXQgcHJvdmlkZSB0aGUgdGV4dCBvZiBleHByZXNzaW9uCisg
ICAgICAgIHRoYXQgdHJpZ2dlciB0aGUgZXhjZXB0aW9uLiAgSW4gYWRkaXRpb24gaXQgYXR0YWNo
ZXMgYSBudW1iZXIgb2YgcHJvcGVydGllcyB0byB0aGUgZXhjZXB0aW9uCisgICAgICAgIG9iamVj
dCBkZXRhaWxpbmcgd2hlcmUgaW4gdGhlIHNvdXJjZSB0aGUgZXhwcmVzc2lvbiBjYW1lIGZyb20u
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogVk0vQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEtKUzo6Q29kZUJsb2NrOjpsaW5lTnVtYmVyRm9yVlBDKToKKyAgICAg
ICAgKEtKUzo6Q29kZUJsb2NrOjpleHByZXNzaW9uUmFuZ2VGb3JWUEMpOiAKKyAgICAgICAgICAg
IEZ1bmN0aW9uIHRvIHJlY292ZXIgdGhlIGV4cHJlc3Npb24gcmFuZ2UgZm9yIGFuIGluc3RydWN0
aW9uCisgICAgICAgICAgICB0aGF0IHRyaWdnZXJlZCBhbiBleGNlcHRpb24uCisgICAgICAgICog
Vk0vQ29kZUJsb2NrLmg6CisgICAgICAgIChLSlM6OkV4cHJlc3Npb25SYW5nZUluZm86Oik6Cisg
ICAgICAgIChLSlM6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKiBWTS9Db2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEtKUzo6Q29kZUdlbmVyYXRvcjo6ZW1pdENhbGwpOgorICAg
ICAgICAoS0pTOjpDb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEV2YWwpOgorICAgICAgICAgICAgRW1p
dCBjYWxsIG5lZWRlZCB0byBiZSBtb2RpZmllZCBzbyB0byBwbGFjZSB0aGUgZXhwcmVzc2lvbiBy
YW5nZSBpbmZvIGludGVybmFsbHksCisgICAgICAgICAgICBhcyB0aGUgQ29kZUdlbmVyYXRvciBl
bWl0cyB0aGUgYXJndW1lbnRzIG5vZGVzIGl0c2VsZiwgcmF0aGVyIHRoYW4gdGhlIHZhcmlvdXMg
Y2FsbAorICAgICAgICAgICAgbm9kZXMuCisgICAgICAgICogVk0vQ29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAoS0pTOjpDb2RlR2VuZXJhdG9yOjplbWl0RXhwcmVzc2lvbkluZm8pOgorICAgICAg
ICAgICAgUmVjb3JkIHRoZSBleHByZXNzaW9uIHJhbmdlIGluZm8uCisgICAgICAgICogVk0vRXhj
ZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChLSlM6OmNyZWF0ZUVycm9yTWVzc2FnZSk6Cisg
ICAgICAgIChLSlM6OmNyZWF0ZUludmFsaWRQYXJhbUVycm9yKToKKyAgICAgICAgKEtKUzo6Y3Jl
YXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAgIChLSlM6OmNyZWF0ZU5vdEFDb25z
dHJ1Y3RvckVycm9yKToKKyAgICAgICAgKEtKUzo6Y3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IpOgor
ICAgICAgICAoS0pTOjpjcmVhdGVOb3RBbk9iamVjdEVycm9yU3R1Yik6CisgICAgICAgIChLSlM6
OmNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IpOgorICAgICAgICAgICAgUmV3cml0ZSBhbGwgdGhlIGNv
ZGUgZm9yIHRoZSBlcnJvciBtZXNzYWdlcyBzbyB0aGF0IHRoZXkgbWFrZSB1c2Ugb2YgdGhlIG5l
d2x5IGF2YWlsYWJsZQorICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICogVk0vRXhj
ZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIFZNL01hY2hpbmUuY3BwOgorICAgICAgICAoS0pT
Ojppc05vdE9iamVjdCk6ICBOb3cgbmVlZHMgdlBDIGFuZCBjb2RlQmxvY2sKKyAgICAgICAgKEtK
Uzo6TWFjaGluZTo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAgICAgTmV3IGxvZ2ljIHRvIGhh
bmRsZSB0aGUgTm90QW5PYmplY3RFcnJvclN0dWIgYW5kIHRvIGhhbmRsZSB0aGUgYWJzdXJkICJu
byBkZWZhdWx0IHZhbHVlIiBlZGdlIGNhc2UKKyAgICAgICAgKEtKUzo6TWFjaGluZTo6cHJpdmF0
ZUV4ZWN1dGUpOgorICAgICAgICAqIFZNL01hY2hpbmUuaDoKKyAgICAgICAgKiBranMvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAoS0pTOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVh
dGUpOgorICAgICAgICAqIGtqcy9FcnJvci5jcHA6CisgICAgICAgIChLSlM6OkVycm9yOjpjcmVh
dGUpOgorICAgICAgICAqIGtqcy9FcnJvci5oOgorICAgICAgICAqIGtqcy9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgICoga2pzL0pTSW1tZWRpYXRlLmNwcDoKKyAgICAgICAg
KEtKUzo6SlNJbW1lZGlhdGU6OnRvT2JqZWN0KToKKyAgICAgICAgKEtKUzo6SlNJbW1lZGlhdGU6
OnByb3RvdHlwZSk6CisgICAgICAgICAgICBNeSBjaGFuZ2VzIHRvIHRoZSBKU05vdEFuT2JqZWN0
IGNvbnN0cnVjdG9yIG5lZWRlZCB0byBiZSBoYW5kbGVkIGhlcmUuCisgICAgICAgICoga2pzL0pT
Tm90QW5PYmplY3QuaDoKKyAgICAgICAgKEtKUzo6SlNOb3RBbk9iamVjdEVycm9yU3R1Yjo6SlNO
b3RBbk9iamVjdEVycm9yU3R1Yik6CisgICAgICAgIChLSlM6OkpTTm90QW5PYmplY3RFcnJvclN0
dWI6OmlzTnVsbCk6CisgICAgICAgIChLSlM6OkpTTm90QW5PYmplY3RFcnJvclN0dWI6OmlzTm90
QW5PYmplY3RFcnJvclN0dWIpOgorICAgICAgICAgICAgQWRkZWQgYSBKU05vdEFuT2JqZWN0RXJy
b3JTdHViIGNsYXNzIHRvIGVhc2UgdGhlIGhhbmRsaW5nIG9mIHRvT2JqZWN0IGZhaWx1cmUgZXhj
ZXB0aW9ucywKKyAgICAgICAgICAgIGFuZCBwb3RlbnRpYWxseSBhbGxvdyBldmVuIG1vcmUgZGV0
YWlsZWQgZXJyb3IgbWVzc2FnZXMgaW4gZnV0dXJlLgorICAgICAgICAqIGtqcy9KU09iamVjdC5o
OgorICAgICAgICAqIGtqcy9QYXJzZXIuaDoKKyAgICAgICAgKEtKUzo6UGFyc2VyOjpwYXJzZSk6
CisgICAgICAgICoga2pzL1NvdXJjZVJhbmdlLmg6CisgICAgICAgICoga2pzL2dyYW1tYXIueToK
KyAgICAgICAgICAgIExhcmdlIGFtb3VudHMgb2YgcG9zaXRpb24gcHJvcGFnYXRpb24uCisgICAg
ICAgICoga2pzL2xleGVyLmNwcDoKKyAgICAgICAgKEtKUzo6TGV4ZXI6OkxleGVyKToKKyAgICAg
ICAgKEtKUzo6TGV4ZXI6OnNoaWZ0KToKKyAgICAgICAgKEtKUzo6TGV4ZXI6OmxleCk6CisgICAg
ICAgICAgICBUaGUgbGV4ZXIgbmVlZGVkIGEgZmV3IGNoYW5nZXMgdG8gYmUgYWJsZSB0byBjb3Jy
ZWN0bHkgdHJhY2sgdG9rZW4gY2hhcmFjdGVyIHBvc2l0aW9ucy4KKyAgICAgICAgKiBranMvbGV4
ZXIuaDoKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoS0pTOjpUaHJvd2FibGVF
eHByZXNzaW9uRGF0YTo6ZW1pdFRocm93RXJyb3IpOgorICAgICAgICAoS0pTOjpTdGF0ZW1lbnRO
b2RlOjpTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEtKUzo6UmVzb2x2ZU5vZGU6OmVtaXRDb2Rl
KToKKyAgICAgICAgKEtKUzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdENvZGUpOgorICAgICAg
ICAoS0pTOjpEb3RBY2Nlc3Nvck5vZGU6OmVtaXRDb2RlKToKKyAgICAgICAgKEtKUzo6TmV3RXhw
ck5vZGU6OmVtaXRDb2RlKToKKyAgICAgICAgKEtKUzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVt
aXRDb2RlKToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Q29kZSk6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Q29kZSk6CisgICAg
ICAgIChLSlM6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Q29kZSk6CisgICAgICAgIChL
SlM6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRDb2RlKToKKyAgICAgICAgKEtKUzo6UG9zdGZp
eFJlc29sdmVOb2RlOjplbWl0Q29kZSk6CisgICAgICAgIChLSlM6OlBvc3RmaXhCcmFja2V0Tm9k
ZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpQb3N0Zml4RG90Tm9kZTo6ZW1pdENvZGUpOgor
ICAgICAgICAoS0pTOjpEZWxldGVSZXNvbHZlTm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pT
OjpEZWxldGVCcmFja2V0Tm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpEZWxldGVEb3RO
b2RlOjplbWl0Q29kZSk6CisgICAgICAgIChLSlM6OlByZWZpeFJlc29sdmVOb2RlOjplbWl0Q29k
ZSk6CisgICAgICAgIChLSlM6OlByZWZpeEJyYWNrZXROb2RlOjplbWl0Q29kZSk6CisgICAgICAg
IChLSlM6OlByZWZpeERvdE5vZGU6OmVtaXRDb2RlKToKKyAgICAgICAgKEtKUzo6VGhyb3dhYmxl
QmluYXJ5T3BOb2RlOjplbWl0Q29kZSk6CisgICAgICAgIChLSlM6OlJlYWRNb2RpZnlSZXNvbHZl
Tm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdENv
ZGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25Eb3ROb2RlOjplbWl0Q29kZSk6CisgICAgICAgIChL
SlM6OlJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Q29kZSk6CisgICAgICAgIChLSlM6OkFzc2lnbkJy
YWNrZXROb2RlOjplbWl0Q29kZSk6CisgICAgICAgIChLSlM6OlJlYWRNb2RpZnlCcmFja2V0Tm9k
ZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpGb3JJbk5vZGU6OkZvckluTm9kZSk6CisgICAg
ICAgIChLSlM6OkZvckluTm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpXaXRoTm9kZTo6
ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpMYWJlbE5vZGU6OmVtaXRDb2RlKToKKyAgICAgICAg
KEtKUzo6VGhyb3dOb2RlOjplbWl0Q29kZSk6CisgICAgICAgIChLSlM6OlByb2dyYW1Ob2RlOjpQ
cm9ncmFtTm9kZSk6CisgICAgICAgIChLSlM6OlByb2dyYW1Ob2RlOjpjcmVhdGUpOgorICAgICAg
ICAoS0pTOjpFdmFsTm9kZTo6Z2VuZXJhdGVDb2RlKToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25C
b2R5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Z2VuZXJh
dGVDb2RlKToKKyAgICAgICAgKEtKUzo6UHJvZ3JhbU5vZGU6OmdlbmVyYXRlQ29kZSk6CisgICAg
ICAgICAgICBBbGwgb2YgdGhlc2UgbWV0aG9kcyB3ZXJlIGhhbmRsaW5nIHRoZSBwb3NpdGlvbiBp
bmZvcm1hdGlvbi4gIAorICAgICAgICAgICAgQ29uc3RydWN0b3JzIGFuZCBjcmVhdGUgbWV0aG9k
cyB3ZXJlIG1vZGlmaWVkIHRvIHN0b3JlIHRoZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIEFs
bCB0aGUgZW1pdENhbGwgaW1wbGVtZW50YXRpb25zIGxpc3RlZCBuZWVkZWQgdG8gYmUgdXBkYXRl
ZCB0byBhY3R1YWxseQorICAgICAgICAgICAgcmVjb3JkIHRoZSBwb3NpdGlvbiBpbmZvcm1hdGlv
biB3ZSBoYXZlIHNvIGNhcmVmdWxseSBjb2xsZWN0ZWQuCisgICAgICAgICoga2pzL25vZGVzLmg6
CisgICAgICAgIChLSlM6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSk6CisgICAgICAgIChLSlM6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpzZXRFeGNl
cHRpb25Tb3VyY2VSYW5nZSk6CisgICAgICAgIChLSlM6OlRocm93YWJsZUV4cHJlc3Npb25EYXRh
OjpkaXZvdCk6CisgICAgICAgIChLSlM6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjpzdGFydE9m
ZnNldCk6CisgICAgICAgIChLSlM6OlRocm93YWJsZUV4cHJlc3Npb25EYXRhOjplbmRPZmZzZXQp
OgorICAgICAgICAoS0pTOjpUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YTo6VGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEpOgorICAgICAgICAoS0pTOjpUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0
YTo6c2V0U3ViZXhwcmVzc2lvbkluZm8pOgorICAgICAgICAoS0pTOjpUaHJvd2FibGVQcmVmaXhl
ZFN1YkV4cHJlc3Npb25EYXRhOjpUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKToK
KyAgICAgICAgKEtKUzo6VGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YTo6c2V0U3Vi
ZXhwcmVzc2lvbkluZm8pOgorICAgICAgICAgICAgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgaXMg
anVzdCBhIHVuaWZvcm0gbWVjaGFuaXNtIGZvciBzdG9yaW5nIHRoZSBwb3NpdGlvbgorICAgICAg
ICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgIChLSlM6OlJlc29sdmVOb2RlOjopOgorICAgICAg
ICAoS0pTOjpQcmVQb3N0UmVzb2x2ZU5vZGU6Oik6CisgICAgICAgIChLSlM6OlRocm93YWJsZUJp
bmFyeU9wTm9kZTo6KToKKyAgICAgICAgKEtKUzo6V2l0aE5vZGU6Oik6CisKIDIwMDgtMDctMTcg
IEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBiMjI1YWFlLi5m
ZTllYmM4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysr
IGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC05Miw3ICs5Miw3IEBAIF9f
Wk4zS0pTMTFKU0ltbWVkaWF0ZTh0b09iamVjdEVQS05TXzdKU1ZhbHVlRVBOU185RXhlY1N0YXRl
RQogX19aTjNLSlMxMUpTSW1tZWRpYXRlOHRvU3RyaW5nRVBLTlNfN0pTVmFsdWVFCiBfX1pOM0tK
UzExSlNJbW1lZGlhdGU5cHJvdG90eXBlRVBLTlNfN0pTVmFsdWVFUE5TXzlFeGVjU3RhdGVFCiBf
X1pOM0tKUzExUHJvZmlsZU5vZGU0c29ydEVQRmJSS04zV1RGNlJlZlB0cklTMF9FRVM1X0UKLV9f
Wk4zS0pTMTFQcm9ncmFtTm9kZTZjcmVhdGVFUE5TXzEySlNHbG9iYWxEYXRhRVBOU18xNFNvdXJj
ZUVsZW1lbnRzRVBOM1dURjZWZWN0b3JJU3Q0cGFpcklOU18xMElkZW50aWZpZXJFakVMbTE2RUVF
UE5TNl9JTlM1XzZSZWZQdHJJTlNfMTJGdW5jRGVjbE5vZGVFRUVMbTE2RUVFYmIKK19fWk4zS0pT
MTFQcm9ncmFtTm9kZTZjcmVhdGVFUE5TXzEySlNHbG9iYWxEYXRhRVBOU18xNFNvdXJjZUVsZW1l
bnRzRVBOM1dURjZWZWN0b3JJU3Q0cGFpcklOU18xMElkZW50aWZpZXJFakVMbTE2RUVFUE5TNl9J
TlM1XzZSZWZQdHJJTlNfMTJGdW5jRGVjbE5vZGVFRUVMbTE2RUVFUE5TXzE0U291cmNlUHJvdmlk
ZXJFYmIKIF9fWk4zS0pTMTFQcm9wZXJ0eU1hcDExZ2V0TG9jYXRpb25FUktOU18xMElkZW50aWZp
ZXJFCiBfX1pOM0tKUzExUHJvcGVydHlNYXAxMWdldExvY2F0aW9uRVJLTlNfMTBJZGVudGlmaWVy
RVJiCiBfX1pOM0tKUzExUHJvcGVydHlNYXAzcHV0RVJLTlNfMTBJZGVudGlmaWVyRVBOU183SlNW
YWx1ZUVqYgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmNwcCBiL0ph
dmFTY3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5jcHAKaW5kZXggMGQ3MDJkMS4uYTA1MmQ2MSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9WTS9Db2RlQmxvY2suY3BwCkBAIC02NTIsOCArNjUyLDggQEAgYm9vbCBDb2RlQmxvY2s6
OmdldEhhbmRsZXJGb3JWUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQywgSW5zdHJ1Y3Rpb24qJiB0
YXJnZXQsIGkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWludCBDb2RlQmxvY2s6OmxpbmVOdW1i
ZXJGb3JWUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQykKLXsKK2ludCBDb2RlQmxvY2s6OmxpbmVO
dW1iZXJGb3JWUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQykgeworICAgIEFTU0VSVChsaW5lSW5m
by5zaXplKCkpOyAgICAKICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbk9mZnNldCA9IHZQQyAtIGlu
c3RydWN0aW9ucy5iZWdpbigpOwogICAgIEFTU0VSVChpbnN0cnVjdGlvbk9mZnNldCA8IGluc3Ry
dWN0aW9ucy5zaXplKCkpOwogCkBAIC02NjksOCArNjY5LDQ0IEBAIGludCBDb2RlQmxvY2s6Omxp
bmVOdW1iZXJGb3JWUEMoY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQykKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgaGlnaCA9IG1pZDsKICAgICB9Ci0KICAgICByZXR1cm4gbGluZUluZm9bbG93IC0g
MV0ubGluZU51bWJlcjsKIH0KIAoraW50IENvZGVCbG9jazo6ZXhwcmVzc2lvblJhbmdlRm9yVlBD
KGNvbnN0IEluc3RydWN0aW9uKiB2UEMsIGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQsIGlu
dCYgZW5kT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGluc3RydWN0aW9uT2Zmc2V0ID0gdlBDIC0g
aW5zdHJ1Y3Rpb25zLmJlZ2luKCk7CisgICAgQVNTRVJUKGluc3RydWN0aW9uT2Zmc2V0IDwgaW5z
dHJ1Y3Rpb25zLnNpemUoKSk7CisKKyAgICBpZiAoIWV4cHJlc3Npb25JbmZvLnNpemUoKSkgewor
ICAgICAgICAvLyBXZSBkaWRuJ3QgdGhpbmsgYW55dGhpbmcgY291bGQgdGhyb3cuICBBcHBhcmVu
dGx5IHdlIHdlcmUgd3JvbmcuCisgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKKyAgICAgICAgZW5k
T2Zmc2V0ID0gMDsKKyAgICAgICAgZGl2b3QgPSAwOworICAgICAgICByZXR1cm4gbGluZU51bWJl
ckZvclZQQyh2UEMpOworICAgIH0KKworICAgIGludCBsb3cgPSAwOworICAgIGludCBoaWdoID0g
ZXhwcmVzc2lvbkluZm8uc2l6ZSgpOworICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7CisgICAgICAg
IGludCBtaWQgPSBsb3cgKyAoaGlnaCAtIGxvdykgLyAyOworICAgICAgICBpZiAoZXhwcmVzc2lv
bkluZm9bbWlkXS5pbnN0cnVjdGlvbk9mZnNldCA8PSBpbnN0cnVjdGlvbk9mZnNldCkKKyAgICAg
ICAgICAgIGxvdyA9IG1pZCArIDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGhpZ2ggPSBt
aWQ7CisgICAgfQorICAgIAorICAgIEFTU0VSVChsb3cpOworICAgIGlmICghbG93KSB7CisgICAg
ICAgIHN0YXJ0T2Zmc2V0ID0gMDsKKyAgICAgICAgZW5kT2Zmc2V0ID0gMDsKKyAgICAgICAgZGl2
b3QgPSAwOworICAgICAgICByZXR1cm4gbGluZU51bWJlckZvclZQQyh2UEMpOworICAgIH0KKwor
ICAgIHN0YXJ0T2Zmc2V0ID0gZXhwcmVzc2lvbkluZm9bbG93IC0gMV0uc3RhcnRPZmZzZXQ7Cisg
ICAgZW5kT2Zmc2V0ID0gZXhwcmVzc2lvbkluZm9bbG93IC0gMV0uZW5kT2Zmc2V0OworICAgIGRp
dm90ID0gZXhwcmVzc2lvbkluZm9bbG93IC0gMV0uZGl2b3RQb2ludCArIHNvdXJjZU9mZnNldDsK
KyAgICByZXR1cm4gbGluZU51bWJlckZvclZQQyh2UEMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBL
SlMKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5oIGIvSmF2YVNjcmlw
dENvcmUvVk0vQ29kZUJsb2NrLmgKaW5kZXggODBhZGI5YS4uNmJkYmU3MyAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvVk0vQ29k
ZUJsb2NrLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAibm9kZXMuaCIKKyNpbmNsdWRlICJT
b3VyY2VSYW5nZS5oIgogI2luY2x1ZGUgInVzdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDQsMTkgKzQ1LDI5IEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGludCBtaXNzaW5nVGhpc09iamVjdE1h
cmtlcigpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7IH0KIAogICAg
IHN0cnVjdCBIYW5kbGVySW5mbyB7Ci0gICAgICAgIHVuc2lnbmVkIHN0YXJ0OwotICAgICAgICB1
bnNpZ25lZCBlbmQ7Ci0gICAgICAgIHVuc2lnbmVkIHRhcmdldDsKLSAgICAgICAgdW5zaWduZWQg
c2NvcGVEZXB0aDsKKyAgICAgICAgdWludDMyX3Qgc3RhcnQ7CisgICAgICAgIHVpbnQzMl90IGVu
ZDsKKyAgICAgICAgdWludDMyX3QgdGFyZ2V0OworICAgICAgICB1aW50MzJfdCBzY29wZURlcHRo
OworICAgIH07CisKKyAgICBzdHJ1Y3QgRXhwcmVzc2lvblJhbmdlSW5mbyB7CisgICAgICAgIGVu
dW0geyBNYXhPZmZzZXQgPSAoMSA8PCA3KSAtIDEsIAorICAgICAgICAgICAgICAgTWF4RGl2b3Qg
PSAoMSA8PCAyNSkgLSAxCisgICAgICAgIH07CisgICAgICAgIHVpbnQzMl90IGluc3RydWN0aW9u
T2Zmc2V0IDogMjU7CisgICAgICAgIHVpbnQzMl90IGRpdm90UG9pbnQgOiAyNTsKKyAgICAgICAg
dWludDMyX3Qgc3RhcnRPZmZzZXQgOiA3OworICAgICAgICB1aW50MzJfdCBlbmRPZmZzZXQgOiA3
OwogICAgIH07CiAKICAgICBzdHJ1Y3QgTGluZUluZm8gewotICAgICAgICB1bnNpZ25lZCBpbnN0
cnVjdGlvbk9mZnNldDsKLSAgICAgICAgaW50IGxpbmVOdW1iZXI7CisgICAgICAgIHVpbnQzMl90
IGluc3RydWN0aW9uT2Zmc2V0OworICAgICAgICBpbnQzMl90IGxpbmVOdW1iZXI7CiAgICAgfTsK
IAogICAgIHN0cnVjdCBDb2RlQmxvY2sgewotICAgICAgICBDb2RlQmxvY2soU2NvcGVOb2RlKiBv
d25lck5vZGVfLCBDb2RlVHlwZSBjb2RlVHlwZV8pCisgICAgICAgIENvZGVCbG9jayhTY29wZU5v
ZGUqIG93bmVyTm9kZV8sIENvZGVUeXBlIGNvZGVUeXBlXywgUGFzc1JlZlB0cjxTb3VyY2VQcm92
aWRlcj4gc291cmNlXywgdW5zaWduZWQgc291cmNlT2Zmc2V0XykKICAgICAgICAgICAgIDogb3du
ZXJOb2RlKG93bmVyTm9kZV8pCiAgICAgICAgICAgICAsIG51bVRlbXBvcmFyaWVzKDApCiAgICAg
ICAgICAgICAsIG51bVZhcnMoMCkKQEAgLTY1LDExICs3NiwxNCBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgICAgICAgICwgbmVlZHNGdWxsU2NvcGVDaGFpbihvd25lck5vZGVfLT51c2VzRXZhbCgp
IHx8IG93bmVyTm9kZV8tPm5lZWRzQ2xvc3VyZSgpKQogICAgICAgICAgICAgLCB1c2VzRXZhbChv
d25lck5vZGVfLT51c2VzRXZhbCgpKQogICAgICAgICAgICAgLCBjb2RlVHlwZShjb2RlVHlwZV8p
CisgICAgICAgICAgICAsIHNvdXJjZShzb3VyY2VfKQorICAgICAgICAgICAgLCBzb3VyY2VPZmZz
ZXQoc291cmNlT2Zmc2V0XykKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBk
dW1wKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBpbnQgbGluZU51bWJlckZvclZQQyhjb25z
dCBJbnN0cnVjdGlvbiopOworICAgICAgICBpbnQgZXhwcmVzc2lvblJhbmdlRm9yVlBDKGNvbnN0
IEluc3RydWN0aW9uKiwgaW50JiBkaXZvdCwgaW50JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZz
ZXQpOworICAgICAgICBpbnQgbGluZU51bWJlckZvclZQQyhjb25zdCBJbnN0cnVjdGlvbiogdlBD
KTsKICAgICAgICAgYm9vbCBnZXRIYW5kbGVyRm9yVlBDKGNvbnN0IEluc3RydWN0aW9uKiB2UEMs
IEluc3RydWN0aW9uKiYgdGFyZ2V0LCBpbnQmIHNjb3BlRGVwdGgpOwogICAgICAgICB2b2lkIG1h
cmsoKTsKIApAQCAtODMsNiArOTcsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgYm9vbCBu
ZWVkc0Z1bGxTY29wZUNoYWluOwogICAgICAgICBib29sIHVzZXNFdmFsOwogICAgICAgICBDb2Rl
VHlwZSBjb2RlVHlwZTsKKyAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2U7Cisg
ICAgICAgIHVuc2lnbmVkIHNvdXJjZU9mZnNldDsKIAogICAgICAgICBWZWN0b3I8SW5zdHJ1Y3Rp
b24+IGluc3RydWN0aW9uczsKIApAQCAtOTMsNiArMTA5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgICAgIFZlY3RvcjxSZWdpc3Rlcj4gcmVnaXN0ZXJzOwogICAgICAgICBWZWN0b3I8UmVmUHRy
PFJlZ0V4cD4gPiByZWdleHBzOwogICAgICAgICBWZWN0b3I8SGFuZGxlckluZm8+IGV4Y2VwdGlv
bkhhbmRsZXJzOworICAgICAgICBWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbz4gZXhwcmVzc2lv
bkluZm87CiAgICAgICAgIFZlY3RvcjxMaW5lSW5mbz4gbGluZUluZm87CiAKICAgICBwcml2YXRl
OgpAQCAtMTAzLDggKzEyMCw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIC8vIHJlc3BvbnNpYmxl
IGZvciBtYXJraW5nIGl0LgogCiAgICAgc3RydWN0IFByb2dyYW1Db2RlQmxvY2sgOiBwdWJsaWMg
Q29kZUJsb2NrIHsKLSAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayhTY29wZU5vZGUqIG93bmVyTm9k
ZV8sIENvZGVUeXBlIGNvZGVUeXBlXywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdF8pCi0g
ICAgICAgICAgICA6IENvZGVCbG9jayhvd25lck5vZGVfLCBjb2RlVHlwZV8pCisgICAgICAgIFBy
b2dyYW1Db2RlQmxvY2soU2NvcGVOb2RlKiBvd25lck5vZGVfLCBDb2RlVHlwZSBjb2RlVHlwZV8s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RfLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiBzb3VyY2VfKQorICAgICAgICAgICAgOiBDb2RlQmxvY2sob3duZXJOb2RlXywgY29kZVR5cGVf
LCBzb3VyY2VfLCAwKQogICAgICAgICAgICAgLCBnbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0XykK
ICAgICAgICAgewogICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5jb2RlQmxvY2tzKCkuYWRkKHRo
aXMpOwpAQCAtMTIwLDggKzEzNyw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIH07CiAKICAgICBz
dHJ1Y3QgRXZhbENvZGVCbG9jayA6IHB1YmxpYyBQcm9ncmFtQ29kZUJsb2NrIHsKLSAgICAgICAg
RXZhbENvZGVCbG9jayhTY29wZU5vZGUqIG93bmVyTm9kZV8sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3RfKQotICAgICAgICAgICAgOiBQcm9ncmFtQ29kZUJsb2NrKG93bmVyTm9kZV8sIEV2
YWxDb2RlLCBnbG9iYWxPYmplY3RfKQorICAgICAgICBFdmFsQ29kZUJsb2NrKFNjb3BlTm9kZSog
b3duZXJOb2RlXywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdF8sIFBhc3NSZWZQdHI8U291
cmNlUHJvdmlkZXI+IHNvdXJjZV8pCisgICAgICAgICAgICA6IFByb2dyYW1Db2RlQmxvY2sob3du
ZXJOb2RlXywgRXZhbENvZGUsIGdsb2JhbE9iamVjdF8sIHNvdXJjZV8pCiAgICAgICAgIHsKICAg
ICAgICAgfQogICAgIH07CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJh
dG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDc2OGVj
NDcuLjA3Y2I4NzMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3BwCkBAIC04NDksMTcg
Kzg0OSwxNyBAQCBSZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHBy
ZXNzaW9uKFJlZ2lzdGVySUQqIHIwLCBGdW5jRXhwck5vZAogICAgIHJldHVybiByMDsKIH0KIAot
UmVnaXN0ZXJJRCogQ29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiBiYXNlLCBBcmd1bWVudHNOb2RlKiBhcmd1bWVudHNO
b2RlKQorUmVnaXN0ZXJJRCogQ29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiBiYXNlLCBBcmd1bWVudHNOb2RlKiBhcmd1
bWVudHNOb2RlLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKIHsKLSAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBi
YXNlLCBhcmd1bWVudHNOb2RlKTsKKyAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBm
dW5jLCBiYXNlLCBhcmd1bWVudHNOb2RlLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7
CiB9CiAKLVJlZ2lzdGVySUQqIENvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRXZhbChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIGJhc2UsIEFyZ3VtZW50c05vZGUq
IGFyZ3VtZW50c05vZGUpCitSZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEV2YWwo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiBiYXNlLCBBcmd1
bWVudHNOb2RlKiBhcmd1bWVudHNOb2RlLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKIHsKLSAgICByZXR1cm4gZW1pdENhbGwob3BfY2Fs
bF9ldmFsLCBkc3QsIGZ1bmMsIGJhc2UsIGFyZ3VtZW50c05vZGUpOworICAgIHJldHVybiBlbWl0
Q2FsbChvcF9jYWxsX2V2YWwsIGRzdCwgZnVuYywgYmFzZSwgYXJndW1lbnRzTm9kZSwgZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwogfQogCi1SZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9y
OjplbWl0Q2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBSZWdpc3RlcklEKiBiYXNlLCBBcmd1bWVudHNOb2RlKiBhcmd1bWVudHNOb2RlKQor
UmVnaXN0ZXJJRCogQ29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogYmFzZSwgQXJndW1l
bnRzTm9kZSogYXJndW1lbnRzTm9kZSwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCiB7CiAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX2Nh
bGwgfHwgb3Bjb2RlSUQgPT0gb3BfY2FsbF9ldmFsKTsKICAgICAKQEAgLTg4Miw2ICs4ODIsNyBA
QCBSZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChPcGNvZGVJRCBvcGNvZGVJRCwg
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcgogICAgICAgICBlbWl0Tm9kZShhcmd2Lmxhc3QoKS5n
ZXQoKSwgbik7CiAgICAgfQogCisgICAgZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90LCBzdGFydE9m
ZnNldCwgZW5kT2Zmc2V0KTsKICAgICBlbWl0T3Bjb2RlKG9wY29kZUlEKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZnVuYy0+aW5kZXgoKSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJh
dG9yLmggYi9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmgKaW5kZXggMTMzYmQ2OS4u
NDJkNTA5ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuaApAQCAtMTgyLDYgKzE4MiwzNCBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgICAgIHJldHVybiBlbWl0Tm9kZSgwLCBuKTsKICAg
ICAgICAgfQogCisgICAgICAgIHZvaWQgZW1pdEV4cHJlc3Npb25JbmZvKHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICB7IAor
ICAgICAgICAgICAgZGl2b3QgLT0gbV9jb2RlQmxvY2stPnNvdXJjZU9mZnNldDsKKyAgICAgICAg
ICAgIGlmIChkaXZvdCA+IEV4cHJlc3Npb25SYW5nZUluZm86Ok1heERpdm90KSB7CisgICAgICAg
ICAgICAgICAgZGl2b3QgPSAwOyAvLyBPdmVyZmxvdyBoYXMgb2NjdXJyZWQsIHdlIGNhbiBvbmx5
IGdpdmUgbGluZSBudW1iZXIgaW5mbyBmb3IgZXJyb3JzIGZvciB0aGlzIHJlZ2lvbgorICAgICAg
ICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKKyAgICAgICAgICAgICAgICBlbmRPZmZzZXQgPSAw
OworICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydE9mZnNldCA+IEV4cHJlc3Npb25SYW5nZUlu
Zm86Ok1heE9mZnNldCkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzdGFydCBvZmZzZXQg
aXMgb3V0IG9mIGJvdW5kcyB3ZSBjbGVhciBib3RoIG9mZnNldHMKKyAgICAgICAgICAgICAgICAv
LyBzbyB3ZSBvbmx5IGdldCB0aGUgZGl2b3QgbWFya2VyLiAgRXJyb3IgbWVzc2FnZSB3aWxsIGhh
dmUgdG8gYmUgcmVkdWNlZAorICAgICAgICAgICAgICAgIC8vIHRvIGxpbmUgYW5kIGNvbHVtbiBu
dW1iZXIuCisgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOworICAgICAgICAgICAgICAg
IGVuZE9mZnNldCA9IDA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVuZE9mZnNldCA+IEV4cHJl
c3Npb25SYW5nZUluZm86Ok1heE9mZnNldCkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBlbmQg
b2Zmc2V0IGlzIG9ubHkgdXNlZCBmb3IgYWRkaXRpb25hbCBjb250ZXh0LCBhbmQgaXMgbXVjaCBt
b3JlIGxpa2VseQorICAgICAgICAgICAgICAgIC8vIHRvIG92ZXJmbG93IChlZy4gZnVuY3Rpb24g
Y2FsbCBhcmd1bWVudHMpIHNvIHdlIGFyZSB3aWxsaW5nIHRvIGRyb3AgaXQgd2l0aG91dAorICAg
ICAgICAgICAgICAgIC8vIGRyb3BwaW5nIHRoZSByZXN0IG9mIHRoZSByYW5nZS4KKyAgICAgICAg
ICAgICAgICBlbmRPZmZzZXQgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICBFeHByZXNzaW9uUmFuZ2VJbmZvIGluZm87CisgICAgICAgICAgICBpbmZvLmluc3Ry
dWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOworICAgICAgICAgICAgaW5mby5k
aXZvdFBvaW50ID0gZGl2b3Q7CisgICAgICAgICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gc3RhcnRP
ZmZzZXQ7CisgICAgICAgICAgICBpbmZvLmVuZE9mZnNldCA9IGVuZE9mZnNldDsKKyAgICAgICAg
ICAgIG1fY29kZUJsb2NrLT5leHByZXNzaW9uSW5mby5hcHBlbmQoaW5mbyk7CisgICAgICAgIH0K
KyAgICAgICAgCiAgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBsZWZ0SGFuZFNpZGVOZWVkc0Nv
cHkoYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SXNQdXJlKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gKG1fY29kZVR5cGUgIT0gRnVuY3Rpb25Db2RlIHx8IG1fY29k
ZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluIHx8IHJpZ2h0SGFzQXNzaWdubWVudHMpICYmICFy
aWdodElzUHVyZTsKQEAgLTI0NCw4ICsyNzIsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFB1dEdldHRlcihSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0UHV0U2V0dGVyKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiBiYXNlLCBBcmd1bWVu
dHNOb2RlKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsRXZhbChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIGJhc2UsIEFyZ3VtZW50c05vZGUqKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBSZWdpc3RlcklEKiBiYXNlLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Q2FsbEV2YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBS
ZWdpc3RlcklEKiBiYXNlLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlOb0RzdE9wKG9w
X3JldCwgc3JjKTsgfSAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEVuZChSZWdpc3RlcklEKiBz
cmMpIHsgcmV0dXJuIGVtaXRVbmFyeU5vRHN0T3Aob3BfZW5kLCBzcmMpOyB9CkBAIC0zMTIsNyAr
MzQwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxVU3RyaW5nOjpSZXA+LCBpbnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0
cjxVU3RyaW5nOjpSZXA+ID4sIElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+IElkZW50aWZp
ZXJNYXA7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoT3Bjb2RlSUQsIFJlZ2lzdGVy
SUQqLCBSZWdpc3RlcklEKiwgUmVnaXN0ZXJJRCosIEFyZ3VtZW50c05vZGUqKTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdENhbGwoT3Bjb2RlSUQsIFJlZ2lzdGVySUQqLCBSZWdpc3RlcklEKiwg
UmVnaXN0ZXJJRCosIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICAgICAgLy8gTWFwcyBhIHJlZ2lz
dGVyIGluZGV4IGluIHRoZSBzeW1ib2wgdGFibGUgdG8gYSBSZWdpc3RlcklEIGluZGV4IGluIG1f
bG9jYWxzLgogICAgICAgICBpbnQgbG9jYWxzSW5kZXgoaW50IHJlZ2lzdGVySW5kZXgpIHsgcmV0
dXJuIC1yZWdpc3RlckluZGV4IC0gMTsgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvVk0v
RXhjZXB0aW9uSGVscGVycy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9WTS9FeGNlcHRpb25IZWxwZXJz
LmNwcAppbmRleCA4MWQ5N2Q5Li5hZWU1MDBkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9W
TS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9WTS9FeGNlcHRpb25I
ZWxwZXJzLmNwcApAQCAtMjksOSArMjksMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJub2Rlcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogCiBuYW1lc3BhY2UgS0pTIHsKIApAQCAt
NjcsMTUgKzY5LDYgQEAgSlNWYWx1ZSogY3JlYXRlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBFcnJv
clR5cGUgZSwgY29uc3QgY2hhciogbXNnLCBjb25zdCBJZGVudGkKICAgICByZXR1cm4gRXJyb3I6
OmNyZWF0ZShleGVjLCBlLCBtZXNzYWdlLCAtMSwgLTEsIDApOwogfQogCi1KU1ZhbHVlKiBjcmVh
dGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yVHlwZSBlLCBjb25zdCBjaGFyKiBtc2csIEpT
VmFsdWUqIHYsIE5vZGUqIGV4cHIpCi17Ci0gICAgVVN0cmluZyBtZXNzYWdlID0gbXNnOwotICAg
IHN1YnN0aXR1dGUobWVzc2FnZSwgdi0+dG9TdHJpbmcoZXhlYykpOwotICAgIGlmIChleHByKQot
ICAgICAgICBzdWJzdGl0dXRlKG1lc3NhZ2UsIGV4cHItPnRvU3RyaW5nKCkpOwotICAgIHJldHVy
biBFcnJvcjo6Y3JlYXRlKGV4ZWMsIGUsIG1lc3NhZ2UsIC0xLCAtMSwgMCk7Ci19Ci0KIEpTVmFs
dWUqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgRXJyb3JUeXBlIGUsIGNvbnN0IGNoYXIq
IG1zZywgSlNWYWx1ZSogdikKIHsKICAgICBVU3RyaW5nIG1lc3NhZ2UgPSBtc2c7CkBAIC04OCwz
MSArODEsMTMzIEBAIEpTVmFsdWUqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIFJhbmdlRXJyb3IsICJNYXhpbXVt
IGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKTsKIH0KIAotSlNWYWx1ZSogY3JlYXRlVW5kZWZp
bmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
KQorSlNWYWx1ZSogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBjb25zdCBJbnN0cnVjdGlvbiogdlBDLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKK3sKKyAgICBpbnQgc3RhcnRPZmZzZXQgPSAwOworICAgIGludCBlbmRP
ZmZzZXQgPSAwOworICAgIGludCBkaXZvdFBvaW50ID0gMDsKKyAgICBpbnQgbGluZSA9IGNvZGVC
bG9jay0+ZXhwcmVzc2lvblJhbmdlRm9yVlBDKHZQQywgZGl2b3RQb2ludCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCk7CisgICAgVVN0cmluZyBtZXNzYWdlID0gIkNhbid0IGZpbmQgdmFyaWFibGU6
ICI7CisgICAgbWVzc2FnZS5hcHBlbmQoaWRlbnQudXN0cmluZygpKTsKKyAgICBKU09iamVjdCog
ZXhjZXB0aW9uID0gRXJyb3I6OmNyZWF0ZShleGVjLCBUeXBlRXJyb3IsIG1lc3NhZ2UsIGxpbmUs
IGNvZGVCbG9jay0+b3duZXJOb2RlLT5zb3VyY2VJZCgpLCBjb2RlQmxvY2stPm93bmVyTm9kZS0+
c291cmNlVVJMKCkpOworICAgIGV4Y2VwdGlvbi0+cHV0V2l0aEF0dHJpYnV0ZXMoZXhlYywgSWRl
bnRpZmllcihleGVjLCBleHByZXNzaW9uQmVnaW5PZmZzZXRQcm9wZXJ0eU5hbWUpLCBqc051bWJl
cihleGVjLCBkaXZvdFBvaW50IC0gc3RhcnRPZmZzZXQpLCBSZWFkT25seSB8IERvbnREZWxldGUp
OworICAgIGV4Y2VwdGlvbi0+cHV0V2l0aEF0dHJpYnV0ZXMoZXhlYywgSWRlbnRpZmllcihleGVj
LCBleHByZXNzaW9uQ2FyZXRPZmZzZXRQcm9wZXJ0eU5hbWUpLCBqc051bWJlcihleGVjLCBkaXZv
dFBvaW50KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICBleGNlcHRpb24tPnB1dFdpdGhB
dHRyaWJ1dGVzKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhwcmVzc2lvbkVuZE9mZnNldFByb3Bl
cnR5TmFtZSksIGpzTnVtYmVyKGV4ZWMsIGRpdm90UG9pbnQgKyBlbmRPZmZzZXQpLCBSZWFkT25s
eSB8IERvbnREZWxldGUpOworICAgIHJldHVybiBleGNlcHRpb247Cit9CisgICAgCitib29sIGlz
U3RyV2hpdGVTcGFjZShVQ2hhciBjKTsKKworc3RhdGljIFVTdHJpbmcgY3JlYXRlRXJyb3JNZXNz
YWdlKEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCwgaW50IGV4cHJl
c3Npb25TdGFydCwgaW50IGV4cHJlc3Npb25TdG9wLCBKU1ZhbHVlKiB2YWx1ZSwgVVN0cmluZyBl
cnJvcikKK3sKKyAgICBpZiAoIWV4cHJlc3Npb25TdG9wIHx8IGV4cHJlc3Npb25TdGFydCA+IGNv
ZGVCbG9jay0+c291cmNlLT5sZW5ndGgoKSkgeworICAgICAgICBVU3RyaW5nIGVycm9yVGV4dCA9
IHZhbHVlLT50b1N0cmluZyhleGVjKTsKKyAgICAgICAgZXJyb3JUZXh0LmFwcGVuZCgiIGlzICIp
OworICAgICAgICBlcnJvclRleHQuYXBwZW5kKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIGVycm9y
VGV4dDsKKyAgICB9CisKKyAgICBVU3RyaW5nIGVycm9yVGV4dCA9ICJSZXN1bHQgb2YgZXhwcmVz
c2lvbiAiOworICAgIAorICAgIGlmIChleHByZXNzaW9uU3RhcnQgPCBleHByZXNzaW9uU3RvcCkg
eworICAgICAgICBlcnJvclRleHQuYXBwZW5kKCdcJycpOworICAgICAgICBlcnJvclRleHQuYXBw
ZW5kKGNvZGVCbG9jay0+c291cmNlLT5nZXRSYW5nZShleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Np
b25TdG9wKSk7CisgICAgICAgIGVycm9yVGV4dC5hcHBlbmQoIicgWyIpOworICAgICAgICBlcnJv
clRleHQuYXBwZW5kKHZhbHVlLT50b1N0cmluZyhleGVjKSk7CisgICAgICAgIGVycm9yVGV4dC5h
cHBlbmQoIl0gaXMgIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gTm8gcmFuZ2UgaW5mb3Jt
YXRpb24sIHNvIGdpdmUgYSBmZXcgY2hhcmFjdGVycyBvZiBjb250ZXh0CisgICAgICAgIGNvbnN0
IFVDaGFyKiBkYXRhID0gY29kZUJsb2NrLT5zb3VyY2UtPmRhdGEoKTsKKyAgICAgICAgaW50IGRh
dGFMZW5ndGggPSBjb2RlQmxvY2stPnNvdXJjZS0+bGVuZ3RoKCk7CisgICAgICAgIGludCBzdGFy
dCA9IGV4cHJlc3Npb25TdGFydDsKKyAgICAgICAgaW50IHN0b3AgPSBleHByZXNzaW9uU3RhcnQ7
CisgICAgICAgIC8vIEdldCB1cCB0byAyMCBjaGFyYWN0ZXJzIG9mIGNvbnRleHQgdG8gdGhlIGxl
ZnQgYW5kIHJpZ2h0IG9mIHRoZSBkaXZvdCwgY2xhbXBpbmcgdG8gdGhlIGxpbmUuCisgICAgICAg
IC8vIHRoZW4gc3RyaXAgd2hpdGVzcGFjZS4KKyAgICAgICAgd2hpbGUgKHN0YXJ0ID4gMCAmJiAo
ZXhwcmVzc2lvblN0YXJ0IC0gc3RhcnQgPCAyMCkgJiYgZGF0YVtzdGFydCAtIDFdICE9ICdcbicp
CisgICAgICAgICAgICBzdGFydC0tOworICAgICAgICB3aGlsZSAoc3RhcnQgPCAoZXhwcmVzc2lv
blN0YXJ0IC0gMSkgJiYgaXNTdHJXaGl0ZVNwYWNlKGRhdGFbc3RhcnRdKSkKKyAgICAgICAgICAg
IHN0YXJ0Kys7CisgICAgICAgIHdoaWxlIChzdG9wIDwgZGF0YUxlbmd0aCAmJiAoc3RvcCAtIGV4
cHJlc3Npb25TdGFydCA8IDIwKSAmJiBkYXRhW3N0b3BdICE9ICdcbicpCisgICAgICAgICAgICBz
dG9wKys7CisgICAgICAgIHdoaWxlIChzdG9wID4gZXhwcmVzc2lvblN0YXJ0ICYmIGlzU3RyV2hp
dGVTcGFjZShkYXRhW3N0b3BdKSkKKyAgICAgICAgICAgIHN0b3AtLTsKKyAgICAgICAgZXJyb3JU
ZXh0LmFwcGVuZCgibmVhciAnLi4uIik7CisgICAgICAgIGVycm9yVGV4dC5hcHBlbmQoY29kZUJs
b2NrLT5zb3VyY2UtPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSk7CisgICAgICAgIGVycm9yVGV4dC5h
cHBlbmQoIi4uLicgWyIpOworICAgICAgICBlcnJvclRleHQuYXBwZW5kKHZhbHVlLT50b1N0cmlu
ZyhleGVjKSk7CisgICAgICAgIGVycm9yVGV4dC5hcHBlbmQoIl0gaXMgIik7CisgICAgfQorICAg
IGVycm9yVGV4dC5hcHBlbmQoZXJyb3IpOworICAgIGVycm9yVGV4dC5hcHBlbmQoIi4iKTsKKyAg
ICByZXR1cm4gZXJyb3JUZXh0OworfQorCitKU1ZhbHVlKiBjcmVhdGVJbnZhbGlkUGFyYW1FcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIG9wLCBKU1ZhbHVlKiB2YWx1ZSwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHZQQywgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgVVN0cmluZyBt
ZXNzYWdlID0gIm5vdCBhIHZhbGlkIGFyZ3VtZW50IGZvciAnIjsKKyAgICBtZXNzYWdlLmFwcGVu
ZChvcCk7CisgICAgbWVzc2FnZS5hcHBlbmQoIiciKTsKKyAgICAKKyAgICBpbnQgc3RhcnRPZmZz
ZXQgPSAwOworICAgIGludCBlbmRPZmZzZXQgPSAwOworICAgIGludCBkaXZvdFBvaW50ID0gMDsK
KyAgICBpbnQgbGluZSA9IGNvZGVCbG9jay0+ZXhwcmVzc2lvblJhbmdlRm9yVlBDKHZQQywgZGl2
b3RQb2ludCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CisKKyAgICBKU09iamVjdCogZXhjZXB0
aW9uID0gRXJyb3I6OmNyZWF0ZShleGVjLCBUeXBlRXJyb3IsIGNyZWF0ZUVycm9yTWVzc2FnZShl
eGVjLCBjb2RlQmxvY2ssIGxpbmUsIGRpdm90UG9pbnQsIGRpdm90UG9pbnQgKyBlbmRPZmZzZXQs
IHZhbHVlLCBtZXNzYWdlKSwgbGluZSwgY29kZUJsb2NrLT5vd25lck5vZGUtPnNvdXJjZUlkKCks
IGNvZGVCbG9jay0+b3duZXJOb2RlLT5zb3VyY2VVUkwoKSk7CisgICAgZXhjZXB0aW9uLT5wdXRX
aXRoQXR0cmlidXRlcyhleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4cHJlc3Npb25CZWdpbk9mZnNl
dFByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGV4ZWMsIGRpdm90UG9pbnQgLSBzdGFydE9mZnNldCks
IFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgZXhjZXB0aW9uLT5wdXRXaXRoQXR0cmlidXRl
cyhleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4cHJlc3Npb25DYXJldE9mZnNldFByb3BlcnR5TmFt
ZSksIGpzTnVtYmVyKGV4ZWMsIGRpdm90UG9pbnQpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwor
ICAgIGV4Y2VwdGlvbi0+cHV0V2l0aEF0dHJpYnV0ZXMoZXhlYywgSWRlbnRpZmllcihleGVjLCBl
eHByZXNzaW9uRW5kT2Zmc2V0UHJvcGVydHlOYW1lKSwganNOdW1iZXIoZXhlYywgZGl2b3RQb2lu
dCArIGVuZE9mZnNldCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgcmV0dXJuIGV4Y2Vw
dGlvbjsKK30KKworSlNWYWx1ZSogY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlKiB2YWx1ZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQywgQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIFJlZmVyZW5jZUVy
cm9yLCAiQ2FuJ3QgZmluZCB2YXJpYWJsZTogJXMiLCBpZGVudCk7CisgICAgaW50IHN0YXJ0T2Zm
c2V0ID0gMDsKKyAgICBpbnQgZW5kT2Zmc2V0ID0gMDsKKyAgICBpbnQgZGl2b3RQb2ludCA9IDA7
CisgICAgaW50IGxpbmUgPSBjb2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvclZQQyh2UEMsIGRp
dm90UG9pbnQsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworCisgICAgLy8gV2UncmUgaW4gYSAi
bmV3IiBleHByZXNzaW9uLCBzbyB3ZSBuZWVkIHRvIHNraXAgb3ZlciB0aGUgIm5ldy4uIiBwYXJ0
CisgICAgaW50IHN0YXJ0UG9pbnQgPSBkaXZvdFBvaW50IC0gKHN0YXJ0T2Zmc2V0ID8gc3RhcnRP
ZmZzZXQgLSA0IDogMCk7IC8vIC00IGZvciAibmV3ICIKKyAgICBjb25zdCBVQ2hhciogZGF0YSA9
IGNvZGVCbG9jay0+c291cmNlLT5kYXRhKCk7CisgICAgd2hpbGUgKHN0YXJ0UG9pbnQgPCBkaXZv
dFBvaW50ICYmIGlzU3RyV2hpdGVTcGFjZShkYXRhW3N0YXJ0UG9pbnRdKSkKKyAgICAgICAgc3Rh
cnRQb2ludCsrOworICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBFcnJvcjo6Y3JlYXRlKGV4ZWMs
IFR5cGVFcnJvciwgY3JlYXRlRXJyb3JNZXNzYWdlKGV4ZWMsIGNvZGVCbG9jaywgbGluZSwgc3Rh
cnRQb2ludCwgZGl2b3RQb2ludCwgdmFsdWUsICJub3QgYSBjb25zdHJ1Y3RvciIpLCBsaW5lLCBj
b2RlQmxvY2stPm93bmVyTm9kZS0+c291cmNlSWQoKSwgY29kZUJsb2NrLT5vd25lck5vZGUtPnNv
dXJjZVVSTCgpKTsKKyAgICBleGNlcHRpb24tPnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIElkZW50
aWZpZXIoZXhlYywgZXhwcmVzc2lvbkJlZ2luT2Zmc2V0UHJvcGVydHlOYW1lKSwganNOdW1iZXIo
ZXhlYywgZGl2b3RQb2ludCAtIHN0YXJ0T2Zmc2V0KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsK
KyAgICBleGNlcHRpb24tPnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
ZXhwcmVzc2lvbkNhcmV0T2Zmc2V0UHJvcGVydHlOYW1lKSwganNOdW1iZXIoZXhlYywgZGl2b3RQ
b2ludCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgZXhjZXB0aW9uLT5wdXRXaXRoQXR0
cmlidXRlcyhleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4cHJlc3Npb25FbmRPZmZzZXRQcm9wZXJ0
eU5hbWUpLCBqc051bWJlcihleGVjLCBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0KSwgUmVhZE9ubHkg
fCBEb250RGVsZXRlKTsKKyAgICByZXR1cm4gZXhjZXB0aW9uOwogfQogCi1KU1ZhbHVlKiBjcmVh
dGVJbnZhbGlkUGFyYW1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIG9wLCBKU1Zh
bHVlKiB2KQorSlNWYWx1ZSogY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlKiB2YWx1ZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQywgQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiB7Ci0gICAgVVN0cmluZyBtZXNzYWdlID0gIiclcycgaXMgbm90IGEgdmFsaWQgYXJn
dW1lbnQgZm9yICclcyciOwotICAgIHN1YnN0aXR1dGUobWVzc2FnZSwgIHYtPnRvU3RyaW5nKGV4
ZWMpKTsKLSAgICBzdWJzdGl0dXRlKG1lc3NhZ2UsIG9wKTsKLSAgICByZXR1cm4gRXJyb3I6OmNy
ZWF0ZShleGVjLCBUeXBlRXJyb3IsIG1lc3NhZ2UsIC0xLCAtMSwgMCk7CisgICAgaW50IHN0YXJ0
T2Zmc2V0ID0gMDsKKyAgICBpbnQgZW5kT2Zmc2V0ID0gMDsKKyAgICBpbnQgZGl2b3RQb2ludCA9
IDA7CisgICAgaW50IGxpbmUgPSBjb2RlQmxvY2stPmV4cHJlc3Npb25SYW5nZUZvclZQQyh2UEMs
IGRpdm90UG9pbnQsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworICAgIEpTT2JqZWN0KiBleGNl
cHRpb24gPSBFcnJvcjo6Y3JlYXRlKGV4ZWMsIFR5cGVFcnJvciwgY3JlYXRlRXJyb3JNZXNzYWdl
KGV4ZWMsIGNvZGVCbG9jaywgbGluZSwgZGl2b3RQb2ludCAtIHN0YXJ0T2Zmc2V0LCBkaXZvdFBv
aW50LCB2YWx1ZSwgIm5vdCBhIGZ1bmN0aW9uIiksIGxpbmUsIGNvZGVCbG9jay0+b3duZXJOb2Rl
LT5zb3VyY2VJZCgpLCBjb2RlQmxvY2stPm93bmVyTm9kZS0+c291cmNlVVJMKCkpOyAgICAKKyAg
ICBleGNlcHRpb24tPnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhw
cmVzc2lvbkJlZ2luT2Zmc2V0UHJvcGVydHlOYW1lKSwganNOdW1iZXIoZXhlYywgZGl2b3RQb2lu
dCAtIHN0YXJ0T2Zmc2V0KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICBleGNlcHRpb24t
PnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhwcmVzc2lvbkNhcmV0
T2Zmc2V0UHJvcGVydHlOYW1lKSwganNOdW1iZXIoZXhlYywgZGl2b3RQb2ludCksIFJlYWRPbmx5
IHwgRG9udERlbGV0ZSk7CisgICAgZXhjZXB0aW9uLT5wdXRXaXRoQXR0cmlidXRlcyhleGVjLCBJ
ZGVudGlmaWVyKGV4ZWMsIGV4cHJlc3Npb25FbmRPZmZzZXRQcm9wZXJ0eU5hbWUpLCBqc051bWJl
cihleGVjLCBkaXZvdFBvaW50ICsgZW5kT2Zmc2V0KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsK
KyAgICByZXR1cm4gZXhjZXB0aW9uOwogfQogCi1KU1ZhbHVlKiBjcmVhdGVOb3RBQ29uc3RydWN0
b3JFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlLCBOb2RlKiBleHByKQorSlNO
b3RBbk9iamVjdEVycm9yU3R1YiogY3JlYXRlTm90QW5PYmplY3RFcnJvclN0dWIoRXhlY1N0YXRl
KiBleGVjLCBib29sIGlzTnVsbCkKIHsKLSAgICBpZiAoZXhwcikKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZUVycm9yKGV4ZWMsIFR5cGVFcnJvciwgIlZhbHVlICVzIChyZXN1bHQgb2YgZXhwcmVzc2lv
biAlcykgaXMgbm90IGEgY29uc3RydWN0b3IuIENhbm5vdCBiZSB1c2VkIHdpdGggbmV3LiIsIHZh
bHVlLCBleHByKTsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3IoZXhlYywgVHlwZUVycm9yLCAiVmFs
dWUgJXMgaXMgbm90IGEgY29uc3RydWN0b3IuIENhbm5vdCBiZSB1c2VkIHdpdGggbmV3LiIsIHZh
bHVlKTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBKU05vdEFuT2JqZWN0RXJyb3JTdHViKGlzTnVs
bCk7CiB9CiAKLUpTVmFsdWUqIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSogdmFsdWUsIE5vZGUqIGV4cHIpCitKU09iamVjdCogY3JlYXRlTm90QW5PYmpl
Y3RFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTTm90QW5PYmplY3RFcnJvclN0dWIqIGVycm9yLCBj
b25zdCBJbnN0cnVjdGlvbiogdlBDLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICBpZiAo
ZXhwcikKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIFR5cGVFcnJvciwgIlZhbHVl
ICVzIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAlcykgZG9lcyBub3QgYWxsb3cgZnVuY3Rpb24gY2Fs
bHMuIiwgdmFsdWUsIGV4cHIpOwotICAgIHJldHVybiBjcmVhdGVFcnJvcihleGVjLCBUeXBlRXJy
b3IsICJWYWx1ZSAlcyBkb2VzIG5vdCBhbGxvdyBmdW5jdGlvbiBjYWxscy4iLCB2YWx1ZSk7Cisg
ICAgaW50IHN0YXJ0T2Zmc2V0ID0gMDsKKyAgICBpbnQgZW5kT2Zmc2V0ID0gMDsKKyAgICBpbnQg
ZGl2b3RQb2ludCA9IDA7CisgICAgaW50IGxpbmUgPSBjb2RlQmxvY2stPmV4cHJlc3Npb25SYW5n
ZUZvclZQQyh2UEMsIGRpdm90UG9pbnQsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworICAgIEpT
T2JqZWN0KiBleGNlcHRpb24gPSBFcnJvcjo6Y3JlYXRlKGV4ZWMsIFR5cGVFcnJvciwgY3JlYXRl
RXJyb3JNZXNzYWdlKGV4ZWMsIGNvZGVCbG9jaywgbGluZSwgZGl2b3RQb2ludCAtIHN0YXJ0T2Zm
c2V0LCBkaXZvdFBvaW50LCBlcnJvci0+aXNOdWxsKCkgPyBqc051bGwoKSA6IGpzVW5kZWZpbmVk
KCksICJub3QgYW4gb2JqZWN0IiksIGxpbmUsIGNvZGVCbG9jay0+b3duZXJOb2RlLT5zb3VyY2VJ
ZCgpLCBjb2RlQmxvY2stPm93bmVyTm9kZS0+c291cmNlVVJMKCkpOworICAgIGV4Y2VwdGlvbi0+
cHV0V2l0aEF0dHJpYnV0ZXMoZXhlYywgSWRlbnRpZmllcihleGVjLCBleHByZXNzaW9uQmVnaW5P
ZmZzZXRQcm9wZXJ0eU5hbWUpLCBqc051bWJlcihleGVjLCBkaXZvdFBvaW50IC0gc3RhcnRPZmZz
ZXQpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgIGV4Y2VwdGlvbi0+cHV0V2l0aEF0dHJp
YnV0ZXMoZXhlYywgSWRlbnRpZmllcihleGVjLCBleHByZXNzaW9uQ2FyZXRPZmZzZXRQcm9wZXJ0
eU5hbWUpLCBqc051bWJlcihleGVjLCBkaXZvdFBvaW50KSwgUmVhZE9ubHkgfCBEb250RGVsZXRl
KTsKKyAgICBleGNlcHRpb24tPnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgZXhwcmVzc2lvbkVuZE9mZnNldFByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGV4ZWMsIGRpdm90
UG9pbnQgKyBlbmRPZmZzZXQpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgIHJldHVybiBl
eGNlcHRpb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEtKUwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvVk0vRXhjZXB0aW9uSGVscGVycy5oIGIvSmF2YVNjcmlwdENvcmUvVk0vRXhjZXB0aW9u
SGVscGVycy5oCmluZGV4IDk5ODQ2YTMuLmE3ZjM5ZTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL1ZNL0V4Y2VwdGlvbkhlbHBlcnMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9WTS9FeGNlcHRp
b25IZWxwZXJzLmgKQEAgLTM0LDEzICszNCwxOCBAQAogbmFtZXNwYWNlIEtKUyB7CiAKICAgICBj
bGFzcyBOb2RlOworICAgIGNsYXNzIENvZGVCbG9jazsKKyAgICBjbGFzcyBJbnN0cnVjdGlvbjsK
KyAgICBjbGFzcyBKU05vdEFuT2JqZWN0RXJyb3JTdHViOwogCiAgICAgSlNWYWx1ZSogY3JlYXRl
SW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKTsKICAgICBKU1Zh
bHVlKiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKik7Ci0gICAgSlNWYWx1ZSog
Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
Jik7Ci0gICAgSlNWYWx1ZSogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoRXhlY1N0YXRlKiwgY29u
c3QgY2hhciogb3AsIEpTVmFsdWUqKTsKLSAgICBKU1ZhbHVlKiBjcmVhdGVOb3RBQ29uc3RydWN0
b3JFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKiwgTm9kZSogZXhwcik7Ci0gICAgSlNWYWx1ZSog
Y3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSosIE5vZGUqIGV4cHIp
OworICAgIEpTVmFsdWUqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IEluc3RydWN0aW9uKiwgQ29kZUJsb2NrKik7CisgICAg
SlNOb3RBbk9iamVjdEVycm9yU3R1YiogY3JlYXRlTm90QW5PYmplY3RFcnJvclN0dWIoRXhlY1N0
YXRlKiwgYm9vbCBpc051bGwpOworICAgIEpTVmFsdWUqIGNyZWF0ZUludmFsaWRQYXJhbUVycm9y
KEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG9wLCBKU1ZhbHVlKiwgY29uc3QgSW5zdHJ1Y3Rpb24q
LCBDb2RlQmxvY2sqKTsKKyAgICBKU1ZhbHVlKiBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihF
eGVjU3RhdGUqLCBKU1ZhbHVlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqKTsKKyAg
ICBKU1ZhbHVlKiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqKTsKKyAgICBKU09iamVjdCogY3JlYXRlTm90
QW5PYmplY3RFcnJvcihFeGVjU3RhdGUqLCBKU05vdEFuT2JqZWN0RXJyb3JTdHViKiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqKTsKIAogfSAvLyBuYW1lc3BhY2UgS0pTCiAKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwIGIvSmF2YVNjcmlwdENvcmUvVk0v
TWFjaGluZS5jcHAKaW5kZXggZWFlNzU4Zi4uZGNmZjAyNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvVk0vTWFjaGluZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHAK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJK
U0FycmF5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTTm90QW5PYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKQEAgLTIxOCw3ICsyMTksNyBA
QCBzdGF0aWMgYm9vbCBORVZFUl9JTkxJTkUgcmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3Ry
dWN0aW9uKiB2UEMsIFJlZ2lzdGVyKiByLAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KICAgICB9IHdoaWxlICgrK2l0ZXIgIT0gZW5kKTsKLSAgICBleGNlcHRpb25WYWx1ZSA9
IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpOworICAgIGV4Y2VwdGlv
blZhbHVlID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCwgdlBDLCBj
b2RlQmxvY2spOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjQ4LDcgKzI0OSw3IEBAIHN0
YXRpYyBib29sIE5FVkVSX0lOTElORSByZXNvbHZlX3NraXAoRXhlY1N0YXRlKiBleGVjLCBJbnN0
cnVjdGlvbiogdlBDLCBSZWdpc3RlCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogICAgIH0gd2hpbGUgKCsraXRlciAhPSBlbmQpOwotICAgIGV4Y2VwdGlvblZhbHVlID0gY3Jl
YXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7CisgICAgZXhjZXB0aW9uVmFs
dWUgPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50LCB2UEMsIGNvZGVC
bG9jayk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0zMDcsNyArMzA4LDcgQEAgc3RhdGlj
IGJvb2wgTkVWRVJfSU5MSU5FIHJlc29sdmVCYXNlQW5kUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogdlAKICAgICAgICAgKytpdGVyOwogICAgIH0gd2hpbGUgKGl0ZXIgIT0g
ZW5kKTsKIAotICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJv
cihleGVjLCBpZGVudCk7CisgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVhdGVVbmRlZmluZWRWYXJp
YWJsZUVycm9yKGV4ZWMsIGlkZW50LCB2UEMsIGNvZGVCbG9jayk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC0zNTAsNyArMzUxLDcgQEAgc3RhdGljIGJvb2wgTkVWRVJfSU5MSU5FIHJlc29s
dmVCYXNlQW5kRnVuYyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiB2UEMsIFIKICAgICAg
ICAgKytpdGVyOwogICAgIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKIAotICAgIGV4Y2VwdGlvblZh
bHVlID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7CisgICAgZXhj
ZXB0aW9uVmFsdWUgPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50LCB2
UEMsIGNvZGVCbG9jayk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00MjYsMTEgKzQyNywx
MSBAQCBBTFdBWVNfSU5MSU5FIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluRm9yQ2FsbChFeGVj
U3RhdGUqIGV4ZWMsIEZ1bmN0aW9uQm9keU5vZAogICAgIHJldHVybiBjYWxsRGF0YVNjb3BlQ2hh
aW47CiB9CiAKLXN0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBpc05vdE9iamVjdChFeGVjU3RhdGUq
IGV4ZWMsIGJvb2wgZm9ySW5zdGFuY2VPZiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSogdmFsdWUsIEpT
VmFsdWUqJiBleGNlcHRpb25EYXRhKQorc3RhdGljIE5FVkVSX0lOTElORSBib29sIGlzTm90T2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgYm9vbCBmb3JJbnN0YW5jZU9mLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgSW5zdHJ1Y3Rpb24qIHZQQywgSlNWYWx1ZSogdmFsdWUsIEpTVmFsdWUqJiBl
eGNlcHRpb25EYXRhKQogewogICAgIGlmICh2YWx1ZS0+aXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGV4Y2VwdGlvbkRhdGEgPSBjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihl
eGVjLCBmb3JJbnN0YW5jZU9mID8gImluc3RhbmNlb2YiIDogImluIiAsIHZhbHVlKTsKKyAgICBl
eGNlcHRpb25EYXRhID0gY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoZXhlYywgZm9ySW5zdGFuY2VP
ZiA/ICJpbnN0YW5jZW9mIiA6ICJpbiIgLCB2YWx1ZSwgdlBDLCBjb2RlQmxvY2spOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC02MTYsMjIgKzYxNyw0NSBAQCBORVZFUl9JTkxJTkUgYm9vbCBN
YWNoaW5lOjp1bndpbmRDYWxsRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiBleGNlcHRp
b25WYQogICAgIHJldHVybiB0cnVlOwogfQogCi1ORVZFUl9JTkxJTkUgSW5zdHJ1Y3Rpb24qIE1h
Y2hpbmU6OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogZXhjZXB0aW9u
VmFsdWUsIGNvbnN0IEluc3RydWN0aW9uKiB2UEMsIENvZGVCbG9jayomIGNvZGVCbG9jaywgUmVn
aXN0ZXIqJiBrLCBTY29wZUNoYWluTm9kZSomIHNjb3BlQ2hhaW4sIFJlZ2lzdGVyKiYgcikKK05F
VkVSX0lOTElORSBJbnN0cnVjdGlvbiogTWFjaGluZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlKiYgZXhjZXB0aW9uVmFsdWUsIGNvbnN0IEluc3RydWN0aW9uKiB2UEMs
IENvZGVCbG9jayomIGNvZGVCbG9jaywgUmVnaXN0ZXIqJiBrLCBTY29wZUNoYWluTm9kZSomIHNj
b3BlQ2hhaW4sIFJlZ2lzdGVyKiYgciwgYm9vbCBleHBsaWNpdFRocm93KQogewogICAgIC8vIFNl
dCB1cCB0aGUgZXhjZXB0aW9uIG9iamVjdAogCiAgICAgaWYgKGV4Y2VwdGlvblZhbHVlLT5pc09i
amVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBzdGF0aWNfY2FzdDxKU09i
amVjdCo+KGV4Y2VwdGlvblZhbHVlKTsKLSAgICAgICAgaWYgKCFleGNlcHRpb24tPmhhc1Byb3Bl
cnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxpbmUiKSkgJiYgIWV4Y2VwdGlvbi0+aGFzUHJv
cGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCAic291cmNlVVJMIikpKSB7Ci0gICAgICAgICAg
ICBleGNlcHRpb24tPnB1dChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lIiksIGpzTnVtYmVy
KGV4ZWMsIGNvZGVCbG9jay0+bGluZU51bWJlckZvclZQQyh2UEMpKSk7Ci0gICAgICAgICAgICBl
eGNlcHRpb24tPnB1dChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJzb3VyY2VVUkwiKSwganNPd25l
ZFN0cmluZyhleGVjLCBjb2RlQmxvY2stPm93bmVyTm9kZS0+c291cmNlVVJMKCkpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChleGNlcHRpb24tPmlzV2F0Y2hkb2dFeGNlcHRpb24oKSkgewot
ICAgICAgICAgICAgd2hpbGUgKHVud2luZENhbGxGcmFtZShleGVjLCBleGNlcHRpb25WYWx1ZSwg
dlBDLCBjb2RlQmxvY2ssIGssIHNjb3BlQ2hhaW4sIHIpKSB7Ci0gICAgICAgICAgICAgICAgIC8v
IERvbid0IG5lZWQgaGFuZGxlciBjaGVja3Mgb3IgYW55dGhpbmcsIHdlIGp1c3Qgd2FudCB0byB1
bnJvbGwgYWxsIHRoZSBKUyBjYWxsZnJhbWVzIHBvc3NpYmxlLgorICAgICAgICBpZiAoZXhjZXB0
aW9uLT5pc05vdEFuT2JqZWN0RXJyb3JTdHViKCkpIHsKKyAgICAgICAgICAgIGV4Y2VwdGlvbiA9
IGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgc3RhdGljX2Nhc3Q8SlNOb3RBbk9iamVjdEVy
cm9yU3R1Yio+KGV4Y2VwdGlvbiksIHZQQywgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIGV4Y2Vw
dGlvblZhbHVlID0gZXhjZXB0aW9uOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYg
KCFleGNlcHRpb24tPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxpbmUiKSkg
JiYgCisgICAgICAgICAgICAgICAgIWV4Y2VwdGlvbi0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRp
ZmllcihleGVjLCAic291cmNlSWQiKSkgJiYgCisgICAgICAgICAgICAgICAgIWV4Y2VwdGlvbi0+
aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCAic291cmNlVVJMIikpICYmIAorICAg
ICAgICAgICAgICAgICFleGNlcHRpb24tPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgZXhwcmVzc2lvbkJlZ2luT2Zmc2V0UHJvcGVydHlOYW1lKSkgJiYgCisgICAgICAgICAgICAg
ICAgIWV4Y2VwdGlvbi0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBleHByZXNz
aW9uQ2FyZXRPZmZzZXRQcm9wZXJ0eU5hbWUpKSAmJiAKKyAgICAgICAgICAgICAgICAhZXhjZXB0
aW9uLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4cHJlc3Npb25FbmRPZmZz
ZXRQcm9wZXJ0eU5hbWUpKSkgeworICAgICAgICAgICAgICAgIGlmIChleHBsaWNpdFRocm93KSB7
CisgICAgICAgICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IDA7CisgICAgICAgICAgICAg
ICAgICAgIGludCBlbmRPZmZzZXQgPSAwOworICAgICAgICAgICAgICAgICAgICBpbnQgZGl2b3RQ
b2ludCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGludCBsaW5lID0gY29kZUJsb2NrLT5leHBy
ZXNzaW9uUmFuZ2VGb3JWUEModlBDLCBkaXZvdFBvaW50LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0
KTsKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uLT5wdXRXaXRoQXR0cmlidXRlcyhleGVj
LCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lIiksIGpzTnVtYmVyKGV4ZWMsIGxpbmUpLCBSZWFkT25s
eSB8IERvbnREZWxldGUpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgLy8gV2Ugb25seSBoaXQgdGhpcyBwYXRoIGZvciBlcnJvciBtZXNzYWdlcyBhbmQgdGhyb3cg
c3RhdGVtZW50cywgd2hpY2ggZG9uJ3QgaGF2ZSBhIHNwZWNpZmljIGZhaWx1cmUgcG9zaXRpb24K
KyAgICAgICAgICAgICAgICAgICAgLy8gU28gd2UganVzdCBnaXZlIHRoZSBmdWxsIHJhbmdlIG9m
IHRoZSBlcnJvci90aHJvdyBzdGF0ZW1lbnQuCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bi0+cHV0V2l0aEF0dHJpYnV0ZXMoZXhlYywgSWRlbnRpZmllcihleGVjLCBleHByZXNzaW9uQmVn
aW5PZmZzZXRQcm9wZXJ0eU5hbWUpLCBqc051bWJlcihleGVjLCBkaXZvdFBvaW50IC0gc3RhcnRP
ZmZzZXQpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb24tPnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhwcmVzc2lv
bkVuZE9mZnNldFByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGV4ZWMsIGRpdm90UG9pbnQgKyBlbmRP
ZmZzZXQpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24tPnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgImxpbmUiKSwganNOdW1iZXIoZXhlYywgY29kZUJsb2NrLT5saW5lTnVt
YmVyRm9yVlBDKHZQQykpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbi0+cHV0V2l0aEF0dHJpYnV0ZXMoZXhlYywgSWRlbnRpZmllcihleGVjLCAic291
cmNlSWQiKSwganNOdW1iZXIoZXhlYywgY29kZUJsb2NrLT5vd25lck5vZGUtPnNvdXJjZUlkKCkp
LCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICAgICAgICAgIGV4Y2VwdGlvbi0+cHV0
V2l0aEF0dHJpYnV0ZXMoZXhlYywgSWRlbnRpZmllcihleGVjLCAic291cmNlVVJMIiksIGpzT3du
ZWRTdHJpbmcoZXhlYywgY29kZUJsb2NrLT5vd25lck5vZGUtPnNvdXJjZVVSTCgpKSwgUmVhZE9u
bHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKGV4Y2VwdGlvbi0+aXNXYXRjaGRvZ0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAg
ICAgd2hpbGUgKHVud2luZENhbGxGcmFtZShleGVjLCBleGNlcHRpb25WYWx1ZSwgdlBDLCBjb2Rl
QmxvY2ssIGssIHNjb3BlQ2hhaW4sIHIpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERvbid0
IG5lZWQgaGFuZGxlciBjaGVja3Mgb3IgYW55dGhpbmcsIHdlIGp1c3Qgd2FudCB0byB1bnJvbGwg
YWxsIHRoZSBKUyBjYWxsZnJhbWVzIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTczLDcgKzE1OTcsNyBAQCBKU1ZhbHVlKiBNYWNo
aW5lOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIEV4ZWNTdGF0ZSogZXhlYywg
UmVnaXN0ZXJGaQogCiAgICAgICAgIEpTVmFsdWUqIGJhc2VWYWwgPSByW2Jhc2VdLmpzVmFsdWUo
KTsKIAotICAgICAgICBpZiAoaXNOb3RPYmplY3QoZXhlYywgdlBDLCBjb2RlQmxvY2ssIGJhc2VW
YWwsIGV4Y2VwdGlvblZhbHVlKSkKKyAgICAgICAgaWYgKGlzTm90T2JqZWN0KGV4ZWMsIHRydWUs
IGNvZGVCbG9jaywgdlBDLCBiYXNlVmFsLCBleGNlcHRpb25WYWx1ZSkpCiAgICAgICAgICAgICBn
b3RvIHZtX3Rocm93OwogCiAgICAgICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gc3RhdGljX2Nhc3Q8
SlNPYmplY3QqPihiYXNlVmFsKTsKQEAgLTE2MDksNyArMTYzMyw3IEBAIEpTVmFsdWUqIE1hY2hp
bmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgRXhlY1N0YXRlKiBleGVjLCBS
ZWdpc3RlckZpCiAgICAgICAgIGludCBiYXNlID0gKCsrdlBDKS0+dS5vcGVyYW5kOwogCiAgICAg
ICAgIEpTVmFsdWUqIGJhc2VWYWwgPSByW2Jhc2VdLmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKGlz
Tm90T2JqZWN0KGV4ZWMsIHZQQywgY29kZUJsb2NrLCBiYXNlVmFsLCBleGNlcHRpb25WYWx1ZSkp
CisgICAgICAgIGlmIChpc05vdE9iamVjdChleGVjLCBmYWxzZSwgY29kZUJsb2NrLCB2UEMsIGJh
c2VWYWwsIGV4Y2VwdGlvblZhbHVlKSkKICAgICAgICAgICAgIGdvdG8gdm1fdGhyb3c7CiAKICAg
ICAgICAgSlNPYmplY3QqIGJhc2VPYmogPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KGJhc2VWYWwp
OwpAQCAtMjI3OCw3ICsyMzAyLDcgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUo
RXhlY3V0aW9uRmxhZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmkKIAogICAgICAg
ICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKIAotICAgICAgICBleGNlcHRpb25W
YWx1ZSA9IGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIHYsIDApOworICAgICAgICBleGNl
cHRpb25WYWx1ZSA9IGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIHYsIHZQQywgY29kZUJs
b2NrKTsKICAgICAgICAgZ290byB2bV90aHJvdzsKICAgICB9CiAgICAgQkVHSU5fT1BDT0RFKG9w
X3JldCkgewpAQCAtMjQwMyw3ICsyNDI3LDcgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0ZUV4
ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmkKIAog
ICAgICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CiAKLSAg
ICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBj
b25zdHJWYWwsIDApOworICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGNyZWF0ZU5vdEFDb25zdHJ1
Y3RvckVycm9yKGV4ZWMsIGNvbnN0clZhbCwgdlBDLCBjb2RlQmxvY2spOwogICAgICAgICBnb3Rv
IHZtX3Rocm93OwogICAgIH0KICAgICBCRUdJTl9PUENPREUob3BfcHVzaF9zY29wZSkgewpAQCAt
MjUxOSw3ICsyNTQzLDggQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0
aW9uRmxhZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmkKIAogICAgICAgICBpbnQg
ZXggPSAoKyt2UEMpLT51Lm9wZXJhbmQ7CiAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gcltleF0u
anNWYWx1ZSgpOwotICAgICAgICBoYW5kbGVyVlBDID0gdGhyb3dFeGNlcHRpb24oZXhlYywgZXhj
ZXB0aW9uVmFsdWUsIHZQQywgY29kZUJsb2NrLCBrLCBzY29wZUNoYWluLCByKTsKKworICAgICAg
ICBoYW5kbGVyVlBDID0gdGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFsdWUsIHZQQywg
Y29kZUJsb2NrLCBrLCBzY29wZUNoYWluLCByLCB0cnVlKTsKICAgICAgICAgaWYgKCFoYW5kbGVy
VlBDKSB7CiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gZXhjZXB0aW9uVmFsdWU7CiAgICAgICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CkBAIC0yNjU5LDcgKzI2ODQsNyBAQCBKU1ZhbHVlKiBNYWNo
aW5lOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIEV4ZWNTdGF0ZSogZXhlYywg
UmVnaXN0ZXJGaQogICAgICAgICAgICAgLy8gY2Fubm90IGZhdGhvbSBpZiB3ZSBkb24ndCBhc3Np
Z24gdG8gdGhlIGV4Y2VwdGlvblZhbHVlIGJlZm9yZSBicmFuY2hpbmcpCiAgICAgICAgICAgICBl
eGNlcHRpb25WYWx1ZSA9IGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGV4ZWMp
OwogICAgICAgICB9Ci0gICAgICAgIGhhbmRsZXJWUEMgPSB0aHJvd0V4Y2VwdGlvbihleGVjLCBl
eGNlcHRpb25WYWx1ZSwgdlBDLCBjb2RlQmxvY2ssIGssIHNjb3BlQ2hhaW4sIHIpOworICAgICAg
ICBoYW5kbGVyVlBDID0gdGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFsdWUsIHZQQywg
Y29kZUJsb2NrLCBrLCBzY29wZUNoYWluLCByLCBmYWxzZSk7CiAgICAgICAgIGlmICghaGFuZGxl
clZQQykgewogICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGV4Y2VwdGlvblZhbHVlOwogICAgICAg
ICAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvVk0vTWFj
aGluZS5oIGIvSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5oCmluZGV4IGIzMzczMmQuLmYxOTU1
N2MgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9WTS9NYWNoaW5lLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1
Y3Rpb24qLCBjb25zdCBDb2RlQmxvY2sqLCBTY29wZUNoYWluTm9kZSosIFJlZ2lzdGVyKik7CiAK
ICAgICAgICAgTkVWRVJfSU5MSU5FIGJvb2wgdW53aW5kQ2FsbEZyYW1lKEV4ZWNTdGF0ZSosIEpT
VmFsdWUqLCBjb25zdCBJbnN0cnVjdGlvbiomLCBDb2RlQmxvY2sqJiwgUmVnaXN0ZXIqJiwgU2Nv
cGVDaGFpbk5vZGUqJiwgUmVnaXN0ZXIqJik7Ci0gICAgICAgIE5FVkVSX0lOTElORSBJbnN0cnVj
dGlvbiogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSosIGNvbnN0IEluc3RydWN0
aW9uKiwgQ29kZUJsb2NrKiYsIFJlZ2lzdGVyKiYsIFNjb3BlQ2hhaW5Ob2RlKiYsIFJlZ2lzdGVy
KiYpOworICAgICAgICBORVZFUl9JTkxJTkUgSW5zdHJ1Y3Rpb24qIHRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSosIEpTVmFsdWUqJiwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqJiwgUmVn
aXN0ZXIqJiwgU2NvcGVDaGFpbk5vZGUqJiwgUmVnaXN0ZXIqJiwgYm9vbCk7CiAKICAgICAgICAg
UmVnaXN0ZXIqIGNhbGxGcmFtZShFeGVjU3RhdGUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9KYXZh
U2NyaXB0Q29yZS9ranMvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IGM1NWNlNmMuLjJhZjUw
NTAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAK
KysrIGIvSmF2YVNjcmlwdENvcmUva2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtODAsOSAr
ODAsOCBAQCBKU1ZhbHVlKiBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGUoY29uc3QgVVN0cmlu
ZyYgc2NyaXB0LCBKU1ZhbHVlKiYgZXhjZXB0aW9uKQogICAgIGludCBzb3VyY2VJZDsKICAgICBp
bnQgZXJyTGluZTsKICAgICBVU3RyaW5nIGVyck1zZzsKLQotICAgIFJlZlB0cjxFdmFsTm9kZT4g
ZXZhbE5vZGUgPSBuZXdFeGVjLnBhcnNlcigpLT5wYXJzZTxFdmFsTm9kZT4oJm5ld0V4ZWMsIFVT
dHJpbmcoKSwgMSwgVVN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc2NyaXB0KSwgJnNvdXJj
ZUlkLCAmZXJyTGluZSwgJmVyck1zZyk7Ci0KKyAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNv
dXJjZVByb3ZpZGVyID0gVVN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc2NyaXB0KTsKKyAg
ICBSZWZQdHI8RXZhbE5vZGU+IGV2YWxOb2RlID0gbmV3RXhlYy5wYXJzZXIoKS0+cGFyc2U8RXZh
bE5vZGU+KCZuZXdFeGVjLCBVU3RyaW5nKCksIDEsIHNvdXJjZVByb3ZpZGVyLCAmc291cmNlSWQs
ICZlcnJMaW5lLCAmZXJyTXNnKTsKICAgICBpZiAoIWV2YWxOb2RlKQogICAgICAgICByZXR1cm4g
RXJyb3I6OmNyZWF0ZSgmbmV3RXhlYywgU3ludGF4RXJyb3IsIGVyck1zZywgZXJyTGluZSwgc291
cmNlSWQsIDApOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvRXJyb3IuY3BwIGIv
SmF2YVNjcmlwdENvcmUva2pzL0Vycm9yLmNwcAppbmRleCA1YzMxMTU4Li5hMmE2NDYwIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvRXJyb3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L2tqcy9FcnJvci5jcHAKQEAgLTMzLDYgKzMzLDEwIEBACiAKIG5hbWVzcGFjZSBLSlMgewogCitj
b25zdCBjaGFyKiBleHByZXNzaW9uQmVnaW5PZmZzZXRQcm9wZXJ0eU5hbWUgPSAiZXhwcmVzc2lv
bkJlZ2luT2Zmc2V0IjsKK2NvbnN0IGNoYXIqIGV4cHJlc3Npb25DYXJldE9mZnNldFByb3BlcnR5
TmFtZSA9ICJleHByZXNzaW9uQ2FyZXRPZmZzZXQiOworY29uc3QgY2hhciogZXhwcmVzc2lvbkVu
ZE9mZnNldFByb3BlcnR5TmFtZSA9ICJleHByZXNzaW9uRW5kT2Zmc2V0IjsKKwogSlNPYmplY3Qq
IEVycm9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBFcnJvclR5cGUgdHlwZSwgY29uc3QgVVN0
cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBzb3VyY2VJZCwgY29uc3QgVVN0cmlu
ZyYgc291cmNlVVJMKQogewogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcjsKQEAgLTc4LDExICs4
MiwxMSBAQCBKU09iamVjdCogRXJyb3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEVycm9yVHlw
ZSB0eXBlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlLAogICAgIEpTT2JqZWN0KiBlcnJvciA9IGNv
bnN0cnVjdChleGVjLCBjb25zdHJ1Y3RvciwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwg
YXJncyk7CiAKICAgICBpZiAobGluZU51bWJlciAhPSAtMSkKLSAgICAgICAgZXJyb3ItPnB1dChl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lIiksIGpzTnVtYmVyKGV4ZWMsIGxpbmVOdW1iZXIp
KTsKKyAgICAgICAgZXJyb3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgImxpbmUiKSwganNOdW1iZXIoZXhlYywgbGluZU51bWJlciksIFJlYWRPbmx5IHwgRG9udERl
bGV0ZSk7CiAgICAgaWYgKHNvdXJjZUlkICE9IC0xKQotICAgICAgICBlcnJvci0+cHV0KGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgInNvdXJjZUlkIiksIGpzTnVtYmVyKGV4ZWMsIHNvdXJjZUlkKSk7
CisgICAgICAgIGVycm9yLT5wdXRXaXRoQXR0cmlidXRlcyhleGVjLCBJZGVudGlmaWVyKGV4ZWMs
ICJzb3VyY2VJZCIpLCBqc051bWJlcihleGVjLCBzb3VyY2VJZCksIFJlYWRPbmx5IHwgRG9udERl
bGV0ZSk7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCi0gICAgICAgIGVycm9yLT5wdXQo
ZXhlYywgSWRlbnRpZmllcihleGVjLCAic291cmNlVVJMIiksIGpzU3RyaW5nKGV4ZWMsIHNvdXJj
ZVVSTCkpOworICAgICAgICBlcnJvci0+cHV0V2l0aEF0dHJpYnV0ZXMoZXhlYywgSWRlbnRpZmll
cihleGVjLCAic291cmNlVVJMIiksIGpzU3RyaW5nKGV4ZWMsIHNvdXJjZVVSTCksIFJlYWRPbmx5
IHwgRG9udERlbGV0ZSk7CiAKICAgICByZXR1cm4gZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ranMvRXJyb3IuaCBiL0phdmFTY3JpcHRDb3JlL2tqcy9FcnJvci5oCmluZGV4
IDgwMThlNmEuLmQyNDJjNmIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9FcnJvci5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9FcnJvci5oCkBAIC00Miw3ICs0MiwxMSBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICAgICAgVHlwZUVycm9yICAgICAgPSA1LAogICAgICAgICBVUklFcnJv
ciAgICAgICA9IDYKICAgICB9OwotCisgICAgCisgICAgZXh0ZXJuIGNvbnN0IGNoYXIqIGV4cHJl
c3Npb25CZWdpbk9mZnNldFByb3BlcnR5TmFtZTsKKyAgICBleHRlcm4gY29uc3QgY2hhciogZXhw
cmVzc2lvbkNhcmV0T2Zmc2V0UHJvcGVydHlOYW1lOworICAgIGV4dGVybiBjb25zdCBjaGFyKiBl
eHByZXNzaW9uRW5kT2Zmc2V0UHJvcGVydHlOYW1lOworICAgIAogICAgIGNsYXNzIEVycm9yIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBKU09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSos
IEVycm9yVHlwZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBz
b3VyY2VJZCwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKTsKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL2tqcy9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9r
anMvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDZhMzhlOGIuLjI5NGE1N2EgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
KysrIGIvSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAt
MTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBKU1ZhbHVlKiBkZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBjaGFyKiBkb05vdFVuCiAgICAgcmV0dXJuIGpzU3Ry
aW5nKGV4ZWMsIHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBib29sIGlzU3RyV2hpdGVTcGFjZSh1bnNp
Z25lZCBzaG9ydCBjKQorYm9vbCBpc1N0cldoaXRlU3BhY2UodW5zaWduZWQgc2hvcnQgYykKIHsK
ICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgY2FzZSAweDAwMDk6CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ranMvSlNJbW1lZGlhdGUuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL0pTSW1t
ZWRpYXRlLmNwcAppbmRleCAzZTNkMjUxLi5lZGI1YTY5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9ranMvSlNJbW1lZGlhdGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9KU0ltbWVk
aWF0ZS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3Iu
aCIKQEAgLTM4LDEwICszOSwxMCBAQCBKU09iamVjdCogSlNJbW1lZGlhdGU6OnRvT2JqZWN0KGNv
bnN0IEpTVmFsdWUqIHYsIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dE51bWJlckZyb21JbW1lZGlhdGVOdW1iZXIoZXhlYywgY29uc3RfY2FzdDxKU1ZhbHVlKj4odikp
OwogICAgIGlmIChpc0Jvb2xlYW4odikpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFu
RnJvbUltbWVkaWF0ZUJvb2xlYW4oZXhlYywgY29uc3RfY2FzdDxKU1ZhbHVlKj4odikpOwotICAg
IGlmICh2ID09IGpzTnVsbCgpKQotICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU05vdEFuT2Jq
ZWN0KHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yLCAiTnVsbCB2YWx1ZSIpKTsKLSAgICBBU1NF
UlQodiA9PSBqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU05vdEFuT2Jq
ZWN0KHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yLCAiVW5kZWZpbmVkIHZhbHVlIikpOworICAg
IAorICAgIEpTTm90QW5PYmplY3RFcnJvclN0dWIqIGV4Y2VwdGlvbiA9IGNyZWF0ZU5vdEFuT2Jq
ZWN0RXJyb3JTdHViKGV4ZWMsIHYgPT0ganNOdWxsKCkpOworICAgIGV4ZWMtPnNldEV4Y2VwdGlv
bihleGNlcHRpb24pOworICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTTm90QW5PYmplY3QoZXhjZXB0
aW9uKTsKIH0KIAogSlNPYmplY3QqIEpTSW1tZWRpYXRlOjpwcm90b3R5cGUoY29uc3QgSlNWYWx1
ZSogdiwgRXhlY1N0YXRlKiBleGVjKQpAQCAtNTEsMTAgKzUyLDEwIEBAIEpTT2JqZWN0KiBKU0lt
bWVkaWF0ZTo6cHJvdG90eXBlKGNvbnN0IEpTVmFsdWUqIHYsIEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bnVtYmVyUHJvdG90eXBl
KCk7CiAgICAgaWYgKGlzQm9vbGVhbih2KSkKICAgICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+Ym9vbGVhblByb3RvdHlwZSgpOwotICAgIGlmICh2ID09IGpzTnVsbCgp
KQotICAgICAgICByZXR1cm4gbmV3IChleGVjKSBKU05vdEFuT2JqZWN0KHRocm93RXJyb3IoZXhl
YywgVHlwZUVycm9yLCAiTnVsbCB2YWx1ZSIpKTsKLSAgICBBU1NFUlQodiA9PSBqc1VuZGVmaW5l
ZCgpKTsKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU05vdEFuT2JqZWN0KHRocm93RXJyb3IoZXhl
YywgVHlwZUVycm9yLCAiVW5kZWZpbmVkIHZhbHVlIikpOworCisgICAgSlNOb3RBbk9iamVjdEVy
cm9yU3R1YiogZXhjZXB0aW9uID0gY3JlYXRlTm90QW5PYmplY3RFcnJvclN0dWIoZXhlYywgdiA9
PSBqc051bGwoKSk7CisgICAgZXhlYy0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgcmV0
dXJuIG5ldyAoZXhlYykgSlNOb3RBbk9iamVjdChleGNlcHRpb24pOwogfQogCiBVU3RyaW5nIEpT
SW1tZWRpYXRlOjp0b1N0cmluZyhjb25zdCBKU1ZhbHVlKiB2KQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUva2pzL0pTTm90QW5PYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL2tqcy9KU05vdEFu
T2JqZWN0LmgKaW5kZXggOGQ4MmRmZi4uMTMzZjJkNyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUva2pzL0pTTm90QW5PYmplY3QuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvSlNOb3RBbk9i
amVjdC5oCkBAIC0zMywxMiArMzMsMjQgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKKyAgICBjbGFz
cyBKU05vdEFuT2JqZWN0RXJyb3JTdHViIDogcHVibGljIEpTT2JqZWN0IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIEpTTm90QW5PYmplY3RFcnJvclN0dWIoYm9vbCBpc051bGwpCisgICAgICAgICAg
ICA6IG1faXNOdWxsKGlzTnVsbCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KKyAgICAgICAgYm9vbCBpc05vdEFu
T2JqZWN0RXJyb3JTdHViKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHByaXZhdGU6Cisg
ICAgICAgIGJvb2wgbV9pc051bGw7CisgICAgfTsKKyAgICAKICAgICAvLyBUaGlzIHVuaG9seSBj
bGFzcyBpcyB1c2VkIHRvIGFsbG93IHVzIHRvIGF2b2lkIG11bHRpcGxlIGV4Y2VwdGlvbiBjaGVj
a3MKICAgICAvLyBpbiBjZXJ0YWluIFNxdWlycmVsRmlzaCBvcGNvZGVzIC0tIGVmZmVjdGl2ZWx5
IGl0IGp1c3Qgc2lsZW50bHkgY29uc3VtZXMKICAgICAvLyBhbnkgb3BlcmF0aW9ucyBwZXJmb3Jt
ZWQgb24gdGhlIHJlc3VsdCBvZiBhIGZhaWxlZCB0b09iamVjdCBjYWxsLgogICAgIGNsYXNzIEpT
Tm90QW5PYmplY3QgOiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAgSlNO
b3RBbk9iamVjdChKU09iamVjdCogZXhjZXB0aW9uKQorICAgICAgICBKU05vdEFuT2JqZWN0KEpT
Tm90QW5PYmplY3RFcnJvclN0dWIqIGV4Y2VwdGlvbikKICAgICAgICAgICAgIDogbV9leGNlcHRp
b24oZXhjZXB0aW9uKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTY3LDcgKzc5LDcgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGdldFByb3BlcnR5TmFtZXMoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmKTsKIAotICAgICAgICBKU09iamVjdCogbV9leGNl
cHRpb247CisgICAgICAgIEpTTm90QW5PYmplY3RFcnJvclN0dWIqIG1fZXhjZXB0aW9uOwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEtKUwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pz
L0pTT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuaAppbmRleCAzOTAwYWVl
Li4zYWVhMjYyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuaApAQCAtMzIzLDYgKzMyMyw4IEBAIG5hbWVz
cGFjZSBLSlMgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzV2F0Y2hkb2dFeGNl
cHRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICAKKyAgICAgICAgdmlydHVh
bCBib29sIGlzTm90QW5PYmplY3RFcnJvclN0dWIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBQcm9wZXJ0eU1hcCBtX3Byb3BlcnR5TWFwOwpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5oIGIvSmF2YVNjcmlwdENvcmUva2pz
L1BhcnNlci5oCmluZGV4IDJkYzg1OWQuLjk0OTJlZjAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL2tqcy9QYXJzZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgKQEAgLTgw
LDcgKzgwLDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCogc291cmNlSWQsIGludCogZXJyTGluZSwgVVN0cmluZyogZXJyTXNn
KQogICAgIHsKICAgICAgICAgbV9zb3VyY2VVUkwgPSBzb3VyY2VVUkw7Ci0gICAgICAgIHBhcnNl
KGV4ZWMsIHNvdXJjZVVSTCwgc3RhcnRpbmdMaW5lTnVtYmVyLCBzb3VyY2UsIHNvdXJjZUlkLCBl
cnJMaW5lLCBlcnJNc2cpOworICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVBy
b3ZpZGVyID0gc291cmNlOworICAgICAgICBwYXJzZShleGVjLCBzb3VyY2VVUkwsIHN0YXJ0aW5n
TGluZU51bWJlciwgc291cmNlUHJvdmlkZXIuZ2V0KCksIHNvdXJjZUlkLCBlcnJMaW5lLCBlcnJN
c2cpOwogICAgICAgICBpZiAoIW1fc291cmNlRWxlbWVudHMpIHsKICAgICAgICAgICAgIG1fc291
cmNlVVJMID0gVVN0cmluZygpOwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC04OSw2ICs5MCw3
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3NvdXJjZUVsZW1lbnRzLnJlbGVhc2UoKS5nZXQoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92YXJEZWNs
YXJhdGlvbnMgPyAmbV92YXJEZWNsYXJhdGlvbnMtPmRhdGEgOiAwLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mdW5jRGVjbGFyYXRpb25z
ID8gJm1fZnVuY0RlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVByb3ZpZGVyLmdldCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VzZXNF
dmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX25lZWRzQ2xvc3VyZSk7CiAgICAgICAgIG1fdmFyRGVjbGFyYXRpb25zID0gMDsKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9Tb3VyY2VSYW5nZS5oIGIvSmF2YVNjcmlwdENvcmUv
a2pzL1NvdXJjZVJhbmdlLmgKaW5kZXggZmYwZjljMy4uM2QzMjlkOSAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUva2pzL1NvdXJjZVJhbmdlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL1Nv
dXJjZVJhbmdlLmgKQEAgLTUzLDcgKzUzLDkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIFVTdHJpbmcoKTsKICAgICAgICAgICAgIHJldHVybiBtX3NvdXJjZVByb3Zp
ZGVyLT5nZXRSYW5nZShtX3N0YXJ0Q2hhciwgbV9lbmRDaGFyKTsKICAgICAgICAgfQotCisgICAg
ICAgIAorICAgICAgICBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZVByb3ZpZGVyLmdldCgpOyB9CisgICAgICAgIGludCBzdGFydE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDaGFyOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZVByb3ZpZGVyOwogICAgICAgICBpbnQgbV9zdGFy
dENoYXI7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1hci55IGIvSmF2YVNj
cmlwdENvcmUva2pzL2dyYW1tYXIueQppbmRleCBmODA4MjZlLi5lOTM1OTk4IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1hci55CisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9n
cmFtbWFyLnkKQEAgLTU3LDE4ICs1NywxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWxsb3dBdXRv
bWF0aWNTZW1pY29sb24oS0pTOjpMZXhlciYsIGludCk7CiAjZGVmaW5lIExFWEVSIChHTE9CQUxf
REFUQS0+bGV4ZXIpCiAKICNkZWZpbmUgQVVUT19TRU1JQ09MT04gZG8geyBpZiAoIWFsbG93QXV0
b21hdGljU2VtaWNvbG9uKCpMRVhFUiwgeXljaGFyKSkgWVlBQk9SVDsgfSB3aGlsZSAoMCkKKyNk
ZWZpbmUgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCkgbm9k
ZS0+c2V0RXhjZXB0aW9uU291cmNlUmFuZ2UoKGRpdm90KSwgKGRpdm90KSAtIChzdGFydCksIChl
bmQpIC0gKGRpdm90KSkKICNkZWZpbmUgREJHKGwsIHMsIGUpIChsKS0+c2V0TG9jKChzKS5maXJz
dF9saW5lLCAoZSkubGFzdF9saW5lKQogCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAotc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBtYWtlQXNzaWduTm9kZSh2b2lk
KiwgRXhwcmVzc2lvbk5vZGUqIGxvYywgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBi
b29sIGxvY0hhc0Fzc2lnbm1lbnRzLCBib29sIGV4cHJIYXNBc3NpZ25tZW50cyk7Ci1zdGF0aWMg
RXhwcmVzc2lvbk5vZGUqIG1ha2VQcmVmaXhOb2RlKHZvaWQqLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgT3BlcmF0b3IpOwotc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUodm9p
ZCosIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvcik7CitzdGF0aWMgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VBc3NpZ25Ob2RlKHZvaWQqLCBFeHByZXNzaW9uTm9kZSogbG9jLCBPcGVyYXRvciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9jSGFzQXNzaWdubWVudHMsIGJvb2wgZXhwckhh
c0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CitzdGF0aWMgRXhw
cmVzc2lvbk5vZGUqIG1ha2VQcmVmaXhOb2RlKHZvaWQqLCBFeHByZXNzaW9uTm9kZSogZXhwciwg
T3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKK3N0YXRpYyBFeHByZXNz
aW9uTm9kZSogbWFrZVBvc3RmaXhOb2RlKHZvaWQqLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3Bl
cmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKIHN0YXRpYyBQcm9wZXJ0eU5v
ZGUqIG1ha2VHZXR0ZXJPclNldHRlclByb3BlcnR5Tm9kZSh2b2lkKiwgY29uc3QgSWRlbnRpZmll
ciAmZ2V0T3JTZXQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFBhcmFtZXRlck5vZGUqLCBGdW5j
dGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlUmFuZ2UmKTsKLXN0YXRpYyBFeHByZXNzaW9uTm9k
ZUluZm8gbWFrZUZ1bmN0aW9uQ2FsbE5vZGUodm9pZCosIEV4cHJlc3Npb25Ob2RlSW5mbyBmdW5j
LCBBcmd1bWVudHNOb2RlSW5mbyk7CitzdGF0aWMgRXhwcmVzc2lvbk5vZGVJbmZvIG1ha2VGdW5j
dGlvbkNhbGxOb2RlKHZvaWQqLCBFeHByZXNzaW9uTm9kZUluZm8gZnVuYywgQXJndW1lbnRzTm9k
ZUluZm8sIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKIHN0YXRpYyBFeHByZXNzaW9u
Tm9kZSogbWFrZVR5cGVPZk5vZGUodm9pZCosIEV4cHJlc3Npb25Ob2RlKik7Ci1zdGF0aWMgRXhw
cmVzc2lvbk5vZGUqIG1ha2VEZWxldGVOb2RlKHZvaWQqLCBFeHByZXNzaW9uTm9kZSopOworc3Rh
dGljIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZSh2b2lkKiwgRXhwcmVzc2lvbk5vZGUq
LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CiBzdGF0aWMgRXhwcmVzc2lvbk5vZGUq
IG1ha2VOZWdhdGVOb2RlKHZvaWQqLCBFeHByZXNzaW9uTm9kZSopOwogc3RhdGljIE51bWJlck5v
ZGUqIG1ha2VOdW1iZXJOb2RlKHZvaWQqLCBkb3VibGUpOwogc3RhdGljIFN0YXRlbWVudE5vZGUq
IG1ha2VWYXJTdGF0ZW1lbnROb2RlKHZvaWQqLCBFeHByZXNzaW9uTm9kZSopOwpAQCAtMjg3LDEz
ICsyODgsMTkgQEAgTGl0ZXJhbDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGV4ZXImIGwgPSAqTEVYRVI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghbC5zY2FuUmVnRXhwKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZWUFCT1JUOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHBy
ZXNzaW9uTm9kZSo+KG5ldyBSZWdFeHBOb2RlKEdMT0JBTF9EQVRBLCBsLnBhdHRlcm4oKSwgbC5m
bGFncygpKSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcgUmVnRXhwTm9kZShHTE9CQUxfREFUQSwgbC5wYXR0ZXJu
KCksIGwuZmxhZ3MoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzaXplID0gbC5wYXR0ZXJuKCkuc2l6ZSgpICsgMjsgLy8gKyAyIGZvciB0aGUgdHdv
IC8ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhD
RVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEuZmlyc3RfY29sdW1uICsg
c2l6ZSwgQDEuZmlyc3RfY29sdW1uICsgc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25O
b2RlKj4obm9kZSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICB8IERJVkVRVUFMIC8qIHJlZ2V4cCB3aXRoIC89ICovICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGV4ZXImIGwgPSAqTEVYRVI7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbC5zY2FuUmVnRXhw
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZWUFC
T1JUOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNy
ZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBSZWdFeHBOb2RlKEdMT0JB
TF9EQVRBLCAiPSIgKyBsLnBhdHRlcm4oKSwgbC5mbGFncygpKSwgMCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcgUmVn
RXhwTm9kZShHTE9CQUxfREFUQSwgbC5wYXR0ZXJuKCksIGwuZmxhZ3MoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplID0gbC5wYXR0ZXJuKCku
c2l6ZSgpICsgMjsgLy8gKyAyIGZvciB0aGUgdHdvIC8ncworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZp
cnN0X2NvbHVtbiwgQDEuZmlyc3RfY29sdW1uICsgc2l6ZSwgQDEuZmlyc3RfY29sdW1uICsgc2l6
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3Jl
YXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgMCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogOwogCkBAIC0zMjcsNyArMzM0LDcgQEAg
UHJpbWFyeUV4cHJOb0JyYWNlOgogICAgIFRISVNUT0tFTiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgVGhp
c05vZGUoR0xPQkFMX0RBVEEpLCAwKTsgfQogICB8IExpdGVyYWwKICAgfCBBcnJheUxpdGVyYWwK
LSAgfCBJREVOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9k
ZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IFJlc29sdmVOb2RlKEdMT0JBTF9EQVRB
LCAqJDEpLCAwKTsgfQorICB8IElERU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg
JCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgUmVzb2x2ZU5v
ZGUoR0xPQkFMX0RBVEEsICokMSwgQDEuZmlyc3RfY29sdW1uKSwgMCk7IH0KICAgfCAnKCcgRXhw
ciAnKScgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gJDI7IH0KIDsKIApAQCAtMzYwLDQw
ICszNjcsNzUgQEAgRWxpc2lvbjoKIE1lbWJlckV4cHI6CiAgICAgUHJpbWFyeUV4cHIKICAgfCBG
dW5jdGlvbkV4cHIgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1
cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4oJDEubV9ub2RlLCAkMS5tX2ZlYXR1cmVJbmZvKTsgfQot
ICB8IE1lbWJlckV4cHIgJ1snIEV4cHIgJ10nICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2Rl
RmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgQnJhY2tldEFjY2Vzc29yTm9kZShHTE9C
QUxfREFUQSwgJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25G
ZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9Ci0gIHwgTWVt
YmVyRXhwciAnLicgSURFTlQgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJl
SW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQx
Lm1fbm9kZSwgKiQzKSwgJDEubV9mZWF0dXJlSW5mbyk7IH0KLSAgfCBORVcgTWVtYmVyRXhwciBB
cmd1bWVudHMgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Np
b25Ob2RlKj4obmV3IE5ld0V4cHJOb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUsICQzLm1fbm9k
ZSksICQyLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICB8IE1lbWJlckV4
cHIgJ1snIEV4cHIgJ10nICAgICAgICAgICAgIHsgQnJhY2tldEFjY2Vzc29yTm9kZSogbm9kZSA9
IG5ldyBCcmFja2V0QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICQzLm1fbm9k
ZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBAMS5m
aXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBANC5sYXN0X2NvbHVtbik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5m
bzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJ
bmZvKTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICB8IE1l
bWJlckV4cHIgJy4nIElERU5UICAgICAgICAgICAgICAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2Rl
ID0gbmV3IERvdEFjY2Vzc29yTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAqJDMpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NB
VElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVt
bik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0
ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZUluZm8p
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgfCBORVcgTWVt
YmVyRXhwciBBcmd1bWVudHMgICAgICAgICAgICB7IE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IE5l
d0V4cHJOb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUsICQzLm1fbm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5v
ZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUZl
YXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDIubV9mZWF0dXJlSW5mbyB8ICQzLm1f
ZmVhdHVyZUluZm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
IDsKIAogTWVtYmVyRXhwck5vQkY6CiAgICAgUHJpbWFyeUV4cHJOb0JyYWNlCi0gIHwgTWVtYmVy
RXhwck5vQkYgJ1snIEV4cHIgJ10nICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5m
bzxFeHByZXNzaW9uTm9kZSo+KG5ldyBCcmFja2V0QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAk
MS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAk
MS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KLSAgfCBNZW1iZXJFeHByTm9C
RiAnLicgSURFTlQgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJl
c3Npb25Ob2RlKj4obmV3IERvdEFjY2Vzc29yTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAq
JDMpLCAkMS5tX2ZlYXR1cmVJbmZvKTsgfQotICB8IE5FVyBNZW1iZXJFeHByIEFyZ3VtZW50cyAg
ICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihu
ZXcgTmV3RXhwck5vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSwgJDMubV9ub2RlKSwgJDIubV9m
ZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgIHwgTWVtYmVyRXhwck5vQkYgJ1sn
IEV4cHIgJ10nICAgICAgICAgeyBCcmFja2V0QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IEJyYWNr
ZXRBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2Zl
YXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVt
biwgQDEubGFzdF9jb2x1bW4sIEA0Lmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Np
b25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgIHwgTWVtYmVyRXhwck5v
QkYgJy4nIElERU5UICAgICAgICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgRG90
QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICokMyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUs
IEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUZlYXR1
cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJlSW5mbyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICB8IE5FVyBNZW1iZXJFeHByIEFy
Z3VtZW50cyAgICAgICAgICAgIHsgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgTmV3RXhwck5vZGUo
R0xPQkFMX0RBVEEsICQyLm1fbm9kZSwgJDMubV9ub2RlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9kZSwgQDEuZmly
c3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4pOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88
RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMi5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5m
byk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogOwogCiBOZXdF
eHByOgogICAgIE1lbWJlckV4cHIKLSAgfCBORVcgTmV3RXhwciAgICAgICAgICAgICAgICAgICAg
ICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IE5l
d0V4cHJOb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUpLCAkMi5tX2ZlYXR1cmVJbmZvKTsgfQor
ICB8IE5FVyBOZXdFeHByICAgICAgICAgICAgICAgICAgICAgICAgIHsgTmV3RXhwck5vZGUqIG5v
ZGUgPSBuZXcgTmV3RXhwck5vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5v
ZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUZl
YXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDIubV9mZWF0dXJlSW5mbyk7IAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIDsKIAogTmV3RXhwck5vQkY6
CiAgICAgTWVtYmVyRXhwck5vQkYKLSAgfCBORVcgTmV3RXhwciAgICAgICAgICAgICAgICAgICAg
ICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IE5l
d0V4cHJOb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUpLCAkMi5tX2ZlYXR1cmVJbmZvKTsgfQor
ICB8IE5FVyBOZXdFeHByICAgICAgICAgICAgICAgICAgICAgICAgIHsgTmV3RXhwck5vZGUqIG5v
ZGUgPSBuZXcgTmV3RXhwck5vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5v
ZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUZl
YXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDIubV9mZWF0dXJlSW5mbyk7IAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIDsKIAogQ2FsbEV4cHI6Ci0g
ICAgTWVtYmVyRXhwciBBcmd1bWVudHMgICAgICAgICAgICAgICAgeyAkJCA9IG1ha2VGdW5jdGlv
bkNhbGxOb2RlKGdsb2JhbFB0ciwgJDEsICQyKTsgfQotICB8IENhbGxFeHByIEFyZ3VtZW50cyAg
ICAgICAgICAgICAgICAgIHsgJCQgPSBtYWtlRnVuY3Rpb25DYWxsTm9kZShnbG9iYWxQdHIsICQx
LCAkMik7IH0KLSAgfCBDYWxsRXhwciAnWycgRXhwciAnXScgICAgICAgICAgICAgICB7ICQkID0g
Y3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IEJyYWNrZXRBY2Nlc3Nv
ck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZv
ICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsg
fQotICB8IENhbGxFeHByICcuJyBJREVOVCAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVO
b2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgRG90QWNjZXNzb3JOb2RlKEdMT0JB
TF9EQVRBLCAkMS5tX25vZGUsICokMyksICQxLm1fZmVhdHVyZUluZm8pOyB9CisgICAgTWVtYmVy
RXhwciBBcmd1bWVudHMgICAgICAgICAgICAgICAgeyAkJCA9IG1ha2VGdW5jdGlvbkNhbGxOb2Rl
KGdsb2JhbFB0ciwgJDEsICQyLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMi5s
YXN0X2NvbHVtbik7IH0KKyAgfCBDYWxsRXhwciBBcmd1bWVudHMgICAgICAgICAgICAgICAgICB7
ICQkID0gbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoZ2xvYmFsUHRyLCAkMSwgJDIsIEAxLmZpcnN0X2Nv
bHVtbiwgQDEubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uKTsgfQorICB8IENhbGxFeHByICdb
JyBFeHByICddJyAgICAgICAgICAgICAgIHsgQnJhY2tldEFjY2Vzc29yTm9kZSogbm9kZSA9IG5l
dyBCcmFja2V0QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICQzLm1fbm9kZSwg
JDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBAMS5maXJz
dF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBANC5sYXN0X2NvbHVtbik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxF
eHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZv
KTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICB8IENhbGxF
eHByICcuJyBJREVOVCAgICAgICAgICAgICAgICAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0g
bmV3IERvdEFjY2Vzc29yTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAqJDMpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElP
Tihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVtbik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5v
ZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZUluZm8pOyB9
CiA7CiAKIENhbGxFeHByTm9CRjoKLSAgICBNZW1iZXJFeHByTm9CRiBBcmd1bWVudHMgICAgICAg
ICAgICB7ICQkID0gbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoZ2xvYmFsUHRyLCAkMSwgJDIpOyB9Ci0g
IHwgQ2FsbEV4cHJOb0JGIEFyZ3VtZW50cyAgICAgICAgICAgICAgeyAkJCA9IG1ha2VGdW5jdGlv
bkNhbGxOb2RlKGdsb2JhbFB0ciwgJDEsICQyKTsgfQotICB8IENhbGxFeHByTm9CRiAnWycgRXhw
ciAnXScgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5v
ZGUqPihuZXcgQnJhY2tldEFjY2Vzc29yTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAkMy5t
X25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5m
byB8ICQzLm1fZmVhdHVyZUluZm8pOyB9Ci0gIHwgQ2FsbEV4cHJOb0JGICcuJyBJREVOVCAgICAg
ICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5l
dyBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKSwgJDEubV9mZWF0
dXJlSW5mbyk7IH0KKyAgICBNZW1iZXJFeHByTm9CRiBBcmd1bWVudHMgICAgICAgICAgICB7ICQk
ID0gbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoZ2xvYmFsUHRyLCAkMSwgJDIsIEAxLmZpcnN0X2NvbHVt
biwgQDEubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uKTsgfQorICB8IENhbGxFeHByTm9CRiBB
cmd1bWVudHMgICAgICAgICAgICAgIHsgJCQgPSBtYWtlRnVuY3Rpb25DYWxsTm9kZShnbG9iYWxQ
dHIsICQxLCAkMiwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDIubGFzdF9jb2x1
bW4pOyB9CisgIHwgQ2FsbEV4cHJOb0JGICdbJyBFeHByICddJyAgICAgICAgICAgeyBCcmFja2V0
QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IEJyYWNrZXRBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEs
ICQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9O
X0xPQ0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEA0Lmxhc3Rf
Y29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0g
Y3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJl
SW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgIHwgQ2FsbEV4cHJOb0JGICcuJyBJREVOVCAgICAgICAgICAgICAgeyBE
b3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgRG90QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAk
MS5tX25vZGUsICokMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9j
b2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9k
ZSwgJDEubV9mZWF0dXJlSW5mbyk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KIDsKIAogQXJndW1lbnRzOgpAQCAtNDIyLDI0ICs0NjQsMjQgQEAgTGVmdEhhbmRT
aWRlRXhwck5vQkY6CiAKIFBvc3RmaXhFeHByOgogICAgIExlZnRIYW5kU2lkZUV4cHIKLSAgfCBM
ZWZ0SGFuZFNpZGVFeHByIFBMVVNQTFVTICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1
cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obWFrZVBvc3RmaXhOb2RlKEdMT0JBTF9EQVRBLCAkMS5t
X25vZGUsIE9wUGx1c1BsdXMpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgQXNzaWduRmVhdHVyZSk7IH0K
LSAgfCBMZWZ0SGFuZFNpZGVFeHByIE1JTlVTTUlOVVMgICAgICAgICB7ICQkID0gY3JlYXRlTm9k
ZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obWFrZVBvc3RmaXhOb2RlKEdMT0JBTF9EQVRB
LCAkMS5tX25vZGUsIE9wTWludXNNaW51cyksICQxLm1fZmVhdHVyZUluZm8gfCBBc3NpZ25GZWF0
dXJlKTsgfQorICB8IExlZnRIYW5kU2lkZUV4cHIgUExVU1BMVVMgICAgICAgICAgIHsgJCQgPSBj
cmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihtYWtlUG9zdGZpeE5vZGUoR0xP
QkFMX0RBVEEsICQxLm1fbm9kZSwgT3BQbHVzUGx1cywgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0
X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4pLCAkMS5tX2ZlYXR1cmVJbmZvIHwgQXNzaWduRmVhdHVy
ZSk7IH0KKyAgfCBMZWZ0SGFuZFNpZGVFeHByIE1JTlVTTUlOVVMgICAgICAgICB7ICQkID0gY3Jl
YXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obWFrZVBvc3RmaXhOb2RlKEdMT0JB
TF9EQVRBLCAkMS5tX25vZGUsIE9wTWludXNNaW51cywgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0
X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4pLCAkMS5tX2ZlYXR1cmVJbmZvIHwgQXNzaWduRmVhdHVy
ZSk7IH0KIDsKIAogUG9zdGZpeEV4cHJOb0JGOgogICAgIExlZnRIYW5kU2lkZUV4cHJOb0JGCi0g
IHwgTGVmdEhhbmRTaWRlRXhwck5vQkYgUExVU1BMVVMgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVG
ZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG1ha2VQb3N0Zml4Tm9kZShHTE9CQUxfREFUQSwg
JDEubV9ub2RlLCBPcFBsdXNQbHVzKSwgJDEubV9mZWF0dXJlSW5mbyB8IEFzc2lnbkZlYXR1cmUp
OyB9Ci0gIHwgTGVmdEhhbmRTaWRlRXhwck5vQkYgTUlOVVNNSU5VUyAgICAgeyAkJCA9IGNyZWF0
ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG1ha2VQb3N0Zml4Tm9kZShHTE9CQUxf
REFUQSwgJDEubV9ub2RlLCBPcE1pbnVzTWludXMpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgQXNzaWdu
RmVhdHVyZSk7IH0KKyAgfCBMZWZ0SGFuZFNpZGVFeHByTm9CRiBQTFVTUExVUyAgICAgICB7ICQk
ID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obWFrZVBvc3RmaXhOb2Rl
KEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsIE9wUGx1c1BsdXMsIEAxLmZpcnN0X2NvbHVtbiwgQDEu
bGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uKSwgJDEubV9mZWF0dXJlSW5mbyB8IEFzc2lnbkZl
YXR1cmUpOyB9CisgIHwgTGVmdEhhbmRTaWRlRXhwck5vQkYgTUlOVVNNSU5VUyAgICAgeyAkJCA9
IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG1ha2VQb3N0Zml4Tm9kZShH
TE9CQUxfREFUQSwgJDEubV9ub2RlLCBPcE1pbnVzTWludXMsIEAxLmZpcnN0X2NvbHVtbiwgQDEu
bGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uKSwgJDEubV9mZWF0dXJlSW5mbyB8IEFzc2lnbkZl
YXR1cmUpOyB9CiA7CiAKIFVuYXJ5RXhwckNvbW1vbjoKLSAgICBERUxFVEVUT0tFTiBVbmFyeUV4
cHIgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25O
b2RlKj4obWFrZURlbGV0ZU5vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSksICQyLm1fZmVhdHVy
ZUluZm8pOyB9CisgICAgREVMRVRFVE9LRU4gVW5hcnlFeHByICAgICAgICAgICAgICAgeyAkJCA9
IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG1ha2VEZWxldGVOb2RlKEdM
T0JBTF9EQVRBLCAkMi5tX25vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAy
Lmxhc3RfY29sdW1uKSwgJDIubV9mZWF0dXJlSW5mbyk7IH0KICAgfCBWT0lEVE9LRU4gVW5hcnlF
eHByICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Np
b25Ob2RlKj4obmV3IFZvaWROb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUpLCAkMi5tX2ZlYXR1
cmVJbmZvKTsgfQogICB8IFRZUEVPRiBVbmFyeUV4cHIgICAgICAgICAgICAgICAgICAgIHsgJCQg
PSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihtYWtlVHlwZU9mTm9kZShH
TE9CQUxfREFUQSwgJDIubV9ub2RlKSwgJDIubV9mZWF0dXJlSW5mbyk7IH0KLSAgfCBQTFVTUExV
UyBVbmFyeUV4cHIgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZv
PEV4cHJlc3Npb25Ob2RlKj4obWFrZVByZWZpeE5vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSwg
T3BQbHVzUGx1cyksICQyLm1fZmVhdHVyZUluZm8gfCBBc3NpZ25GZWF0dXJlKTsgfQotICB8IEFV
VE9QTFVTUExVUyBVbmFyeUV4cHIgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVy
ZUluZm88RXhwcmVzc2lvbk5vZGUqPihtYWtlUHJlZml4Tm9kZShHTE9CQUxfREFUQSwgJDIubV9u
b2RlLCBPcFBsdXNQbHVzKSwgJDIubV9mZWF0dXJlSW5mbyB8IEFzc2lnbkZlYXR1cmUpOyB9Ci0g
IHwgTUlOVVNNSU5VUyBVbmFyeUV4cHIgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVG
ZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG1ha2VQcmVmaXhOb2RlKEdMT0JBTF9EQVRBLCAk
Mi5tX25vZGUsIE9wTWludXNNaW51cyksICQyLm1fZmVhdHVyZUluZm8gfCBBc3NpZ25GZWF0dXJl
KTsgfQotICB8IEFVVE9NSU5VU01JTlVTIFVuYXJ5RXhwciAgICAgICAgICAgIHsgJCQgPSBjcmVh
dGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihtYWtlUHJlZml4Tm9kZShHTE9CQUxf
REFUQSwgJDIubV9ub2RlLCBPcE1pbnVzTWludXMpLCAkMi5tX2ZlYXR1cmVJbmZvIHwgQXNzaWdu
RmVhdHVyZSk7IH0KKyAgfCBQTFVTUExVUyBVbmFyeUV4cHIgICAgICAgICAgICAgICAgICB7ICQk
ID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obWFrZVByZWZpeE5vZGUo
R0xPQkFMX0RBVEEsICQyLm1fbm9kZSwgT3BQbHVzUGx1cywgQDEuZmlyc3RfY29sdW1uLCBAMi5m
aXJzdF9jb2x1bW4gKyAxLCBAMi5sYXN0X2NvbHVtbiksICQyLm1fZmVhdHVyZUluZm8gfCBBc3Np
Z25GZWF0dXJlKTsgfQorICB8IEFVVE9QTFVTUExVUyBVbmFyeUV4cHIgICAgICAgICAgICAgIHsg
JCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihtYWtlUHJlZml4Tm9k
ZShHTE9CQUxfREFUQSwgJDIubV9ub2RlLCBPcFBsdXNQbHVzLCBAMS5maXJzdF9jb2x1bW4sIEAy
LmZpcnN0X2NvbHVtbiArIDEsIEAyLmxhc3RfY29sdW1uKSwgJDIubV9mZWF0dXJlSW5mbyB8IEFz
c2lnbkZlYXR1cmUpOyB9CisgIHwgTUlOVVNNSU5VUyBVbmFyeUV4cHIgICAgICAgICAgICAgICAg
eyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG1ha2VQcmVmaXhO
b2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUsIE9wTWludXNNaW51cywgQDEuZmlyc3RfY29sdW1u
LCBAMi5maXJzdF9jb2x1bW4gKyAxLCBAMi5sYXN0X2NvbHVtbiksICQyLm1fZmVhdHVyZUluZm8g
fCBBc3NpZ25GZWF0dXJlKTsgfQorICB8IEFVVE9NSU5VU01JTlVTIFVuYXJ5RXhwciAgICAgICAg
ICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihtYWtlUHJl
Zml4Tm9kZShHTE9CQUxfREFUQSwgJDIubV9ub2RlLCBPcE1pbnVzTWludXMsIEAxLmZpcnN0X2Nv
bHVtbiwgQDIuZmlyc3RfY29sdW1uICsgMSwgQDIubGFzdF9jb2x1bW4pLCAkMi5tX2ZlYXR1cmVJ
bmZvIHwgQXNzaWduRmVhdHVyZSk7IH0KICAgfCAnKycgVW5hcnlFeHByICAgICAgICAgICAgICAg
ICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3
IFVuYXJ5UGx1c05vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSksICQyLm1fZmVhdHVyZUluZm8p
OyB9CiAgIHwgJy0nIFVuYXJ5RXhwciAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0
ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG1ha2VOZWdhdGVOb2RlKEdMT0JBTF9E
QVRBLCAkMi5tX25vZGUpLCAkMi5tX2ZlYXR1cmVJbmZvKTsgfQogICB8ICd+JyBVbmFyeUV4cHIg
ICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVz
c2lvbk5vZGUqPihuZXcgQml0d2lzZU5vdE5vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSksICQy
Lm1fZmVhdHVyZUluZm8pOyB9CkBAIC01MDYsOCArNTQ4LDEyIEBAIFJlbGF0aW9uYWxFeHByOgog
ICB8IFJlbGF0aW9uYWxFeHByICc+JyBTaGlmdEV4cHIgICAgICAgIHsgJCQgPSBjcmVhdGVOb2Rl
RmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgR3JlYXRlck5vZGUoR0xPQkFMX0RBVEEs
ICQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSks
ICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQogICB8IFJlbGF0aW9uYWxF
eHByIExFIFNoaWZ0RXhwciAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhw
cmVzc2lvbk5vZGUqPihuZXcgTGVzc0VxTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAkMy5t
X25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5m
byB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CiAgIHwgUmVsYXRpb25hbEV4cHIgR0UgU2hpZnRFeHBy
ICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5l
dyBHcmVhdGVyRXFOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9m
ZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0
dXJlSW5mbyk7IH0KLSAgfCBSZWxhdGlvbmFsRXhwciBJTlNUQU5DRU9GIFNoaWZ0RXhwciB7ICQk
ID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IEluc3RhbmNlT2ZO
b2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAm
IEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0K
LSAgfCBSZWxhdGlvbmFsRXhwciBJTlRPS0VOIFNoaWZ0RXhwciAgICB7ICQkID0gY3JlYXRlTm9k
ZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IEluTm9kZShHTE9CQUxfREFUQSwgJDEu
bV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEu
bV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgIHwgUmVsYXRpb25hbEV4cHIg
SU5TVEFOQ0VPRiBTaGlmdEV4cHIgeyBJbnN0YW5jZU9mTm9kZSogbm9kZSA9IG5ldyBJbnN0YW5j
ZU9mTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUlu
Zm8gJiBBc3NpZ25GZWF0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMy5m
aXJzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsgIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5v
ZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KKyAgfCBS
ZWxhdGlvbmFsRXhwciBJTlRPS0VOIFNoaWZ0RXhwciAgICB7IEluTm9kZSogbm9kZSA9IG5ldyBJ
bk5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZv
ICYgQXNzaWduRmVhdHVyZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDMuZmly
c3RfY29sdW1uLCBAMy5sYXN0X2NvbHVtbik7ICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2Rl
Kj4obm9kZSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CiA7CiAKIFJl
bGF0aW9uYWxFeHByTm9JbjoKQEAgLTUxNyw3ICs1NjMsOSBAQCBSZWxhdGlvbmFsRXhwck5vSW46
CiAgIHwgUmVsYXRpb25hbEV4cHJOb0luIExFIFNoaWZ0RXhwciAgICAgeyAkJCA9IGNyZWF0ZU5v
ZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBMZXNzRXFOb2RlKEdMT0JBTF9EQVRB
LCAkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUp
LCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KICAgfCBSZWxhdGlvbmFs
RXhwck5vSW4gR0UgU2hpZnRFeHByICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4
cHJlc3Npb25Ob2RlKj4obmV3IEdyZWF0ZXJFcU5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwg
JDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVy
ZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQogICB8IFJlbGF0aW9uYWxFeHByTm9JbiBJTlNU
QU5DRU9GIFNoaWZ0RXhwcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgSW5zdGFu
Y2VPZk5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJ
bmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZv
KTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgSW5zdGFuY2VP
Zk5vZGUqIG5vZGUgPSBuZXcgSW5zdGFuY2VPZk5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwg
JDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5v
ZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDMuZmlyc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVtbik7ICAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9k
ZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJlSW5mbyB8ICQz
Lm1fZmVhdHVyZUluZm8pOyB9CiA7CiAKIFJlbGF0aW9uYWxFeHByTm9CRjoKQEAgLTUyNyw4ICs1
NzUsMTMgQEAgUmVsYXRpb25hbEV4cHJOb0JGOgogICB8IFJlbGF0aW9uYWxFeHByTm9CRiBMRSBT
aGlmdEV4cHIgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUq
PihuZXcgTGVzc0VxTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1f
ZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVh
dHVyZUluZm8pOyB9CiAgIHwgUmVsYXRpb25hbEV4cHJOb0JGIEdFIFNoaWZ0RXhwciAgICAgeyAk
JCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBHcmVhdGVyRXFO
b2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAm
IEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0K
ICAgfCBSZWxhdGlvbmFsRXhwck5vQkYgSU5TVEFOQ0VPRiBTaGlmdEV4cHIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZv
PEV4cHJlc3Npb25Ob2RlKj4obmV3IEluc3RhbmNlT2ZOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25v
ZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2Zl
YXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KLSAgfCBSZWxhdGlvbmFsRXhwck5vQkYg
SU5UT0tFTiBTaGlmdEV4cHIgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVz
c2lvbk5vZGUqPihuZXcgSW5Ob2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICQzLm1fbm9kZSwg
JDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMu
bV9mZWF0dXJlSW5mbyk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7IEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3IEluc3RhbmNlT2ZOb2RlKEdMT0JBTF9EQVRB
LCAkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElP
Tl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAzLmZpcnN0X2NvbHVtbiwgQDMubGFz
dF9jb2x1bW4pOyAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
JCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVh
dHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICB8IFJlbGF0aW9uYWxFeHByTm9CRiBJ
TlRPS0VOIFNoaWZ0RXhwciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7IEluTm9kZSogbm9kZSA9IG5ldyBJbk5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgJDMu
bV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUs
IEAxLmZpcnN0X2NvbHVtbiwgQDMuZmlyc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVtbik7ICAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUZl
YXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1f
ZmVhdHVyZUluZm8pOyB9CiA7CiAKIEVxdWFsaXR5RXhwcjoKQEAgLTY2NiwxOSArNzE5LDI1IEBA
IENvbmRpdGlvbmFsRXhwck5vQkY6CiBBc3NpZ25tZW50RXhwcjoKICAgICBDb25kaXRpb25hbEV4
cHIKICAgfCBMZWZ0SGFuZFNpZGVFeHByIEFzc2lnbm1lbnRPcGVyYXRvciBBc3NpZ25tZW50RXhw
cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVO
b2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihtYWtlQXNzaWduTm9kZShHTE9CQUxfREFU
QSwgJDEubV9ub2RlLCAkMiwgJDMubV9ub2RlLCAkMS5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVh
dHVyZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZv
IHwgJDMubV9mZWF0dXJlSW5mbyB8IEFzc2lnbkZlYXR1cmUpOyB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHBy
ZXNzaW9uTm9kZSo+KG1ha2VBc3NpZ25Ob2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICQyLCAk
My5tX25vZGUsICQxLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlLCAkMy5tX2ZlYXR1cmVJ
bmZvICYgQXNzaWduRmVhdHVyZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEAxLmZpcnN0X2NvbHVtbiwgQDIuZmlyc3RfY29sdW1uICsgMSwgQDMubGFzdF9j
b2x1bW4pLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyB8IEFzc2lnbkZlYXR1
cmUpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiA7CiAKIEFz
c2lnbm1lbnRFeHByTm9JbjoKICAgICBDb25kaXRpb25hbEV4cHJOb0luCiAgIHwgTGVmdEhhbmRT
aWRlRXhwciBBc3NpZ25tZW50T3BlcmF0b3IgQXNzaWdubWVudEV4cHJOb0luCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5m
bzxFeHByZXNzaW9uTm9kZSo+KG1ha2VBc3NpZ25Ob2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUs
ICQyLCAkMy5tX25vZGUsICQxLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlLCAkMy5tX2Zl
YXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1
cmVJbmZvIHwgQXNzaWduRmVhdHVyZSk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4o
bWFrZUFzc2lnbk5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgJDIsICQzLm1fbm9kZSwgJDEu
bV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25G
ZWF0dXJlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEu
Zmlyc3RfY29sdW1uLCBAMi5maXJzdF9jb2x1bW4gKyAxLCBAMy5sYXN0X2NvbHVtbiksICQxLm1f
ZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvIHwgQXNzaWduRmVhdHVyZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogOwogCiBBc3NpZ25tZW50RXhwck5v
QkY6CiAgICAgQ29uZGl0aW9uYWxFeHByTm9CRgogICB8IExlZnRIYW5kU2lkZUV4cHJOb0JGIEFz
c2lnbm1lbnRPcGVyYXRvciBBc3NpZ25tZW50RXhwcgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5v
ZGUqPihtYWtlQXNzaWduTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAkMiwgJDMubV9ub2Rl
LCAkMS5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFz
c2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyB8IEFzc2ln
bkZlYXR1cmUpOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAk
JCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG1ha2VBc3NpZ25Ob2Rl
KEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICQyLCAkMy5tX25vZGUsICQxLm1fZmVhdHVyZUluZm8g
JiBBc3NpZ25GZWF0dXJlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEuZmlyc3RfY29sdW1uLCBA
Mi5maXJzdF9jb2x1bW4gKyAxLCBAMy5sYXN0X2NvbHVtbiksICQxLm1fZmVhdHVyZUluZm8gfCAk
My5tX2ZlYXR1cmVJbmZvIHwgQXNzaWduRmVhdHVyZSk7IAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KIDsKIAogQXNzaWdubWVudE9wZXJhdG9yOgpAQCAtNzUyLDcg
KzgxMSw5IEBAIFZhcmlhYmxlRGVjbGFyYXRpb25MaXN0OgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJCQubV9mdW5jRGVjbGFyYXRpb25zID0gMDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLm1fZmVhdHVyZUluZm8gPSAwOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgfCBJREVOVCBJbml0
aWFsaXplciAgICAgICAgICAgICAgICAgICB7ICQkLm1fbm9kZSA9IG5ldyBBc3NpZ25SZXNvbHZl
Tm9kZShHTE9CQUxfREFUQSwgKiQxLCAkMi5tX25vZGUsICQyLm1fZmVhdHVyZUluZm8gJiBBc3Np
Z25GZWF0dXJlKTsKKyAgfCBJREVOVCBJbml0aWFsaXplciAgICAgICAgICAgICAgICAgICB7IEFz
c2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IEFzc2lnblJlc29sdmVOb2RlKEdMT0JBTF9EQVRB
LCAqJDEsICQyLm1fbm9kZSwgJDIubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NB
VElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmZpcnN0X2NvbHVtbiArIDEsIEAyLmxhc3Rf
Y29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLm1f
bm9kZSA9IG5vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
JC5tX3ZhckRlY2xhcmF0aW9ucyA9IG5ldyBQYXJzZXJSZWZDb3VudGVkRGF0YTxEZWNsYXJhdGlv
blN0YWNrczo6VmFyU3RhY2s+KEdMT0JBTF9EQVRBKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvVmFyRGVjbGFyYXRpb25MaXN0KEdMT0JBTF9EQVRB
LCAkJC5tX3ZhckRlY2xhcmF0aW9ucywgKiQxLCBEZWNsYXJhdGlvblN0YWNrczo6SGFzSW5pdGlh
bGl6ZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQubV9m
dW5jRGVjbGFyYXRpb25zID0gMDsKQEAgLTc2Niw3ICs4MjcsOSBAQCBWYXJpYWJsZURlY2xhcmF0
aW9uTGlzdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLm1f
ZmVhdHVyZUluZm8gPSAkMS5tX2ZlYXR1cmVJbmZvOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgfCBWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCAnLCcgSURFTlQg
SW5pdGlhbGl6ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQk
Lm1fbm9kZSA9IGNvbWJpbmVWYXJJbml0aWFsaXplcnMoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwg
bmV3IEFzc2lnblJlc29sdmVOb2RlKEdMT0JBTF9EQVRBLCAqJDMsICQ0Lm1fbm9kZSwgJDQubV9m
ZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7IEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IEFzc2lnblJlc29s
dmVOb2RlKEdMT0JBTF9EQVRBLCAqJDMsICQ0Lm1fbm9kZSwgJDQubV9mZWF0dXJlSW5mbyAmIEFz
c2lnbkZlYXR1cmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U0VUX0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBAMy5maXJzdF9jb2x1bW4sIEA0LmZpcnN0X2Nv
bHVtbiArIDEsIEA0Lmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICQkLm1fbm9kZSA9IGNvbWJpbmVWYXJJbml0aWFsaXplcnMoR0xPQkFMX0RB
VEEsICQxLm1fbm9kZSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkJC5tX3ZhckRlY2xhcmF0aW9ucyA9ICQxLm1fdmFyRGVjbGFyYXRpb25zOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG9WYXJEZWNsYXJh
dGlvbkxpc3QoR0xPQkFMX0RBVEEsICQkLm1fdmFyRGVjbGFyYXRpb25zLCAqJDMsIERlY2xhcmF0
aW9uU3RhY2tzOjpIYXNJbml0aWFsaXplcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkJC5tX2Z1bmNEZWNsYXJhdGlvbnMgPSAwOwpAQCAtNzgxLDcgKzg0NCw5
IEBAIFZhcmlhYmxlRGVjbGFyYXRpb25MaXN0Tm9JbjoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICQkLm1fZnVuY0RlY2xhcmF0aW9ucyA9IDA7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJC5tX2ZlYXR1cmVJbmZvID0gMDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gIHwgSURFTlQgSW5pdGlh
bGl6ZXJOb0luICAgICAgICAgICAgICAgeyAkJC5tX25vZGUgPSBuZXcgQXNzaWduUmVzb2x2ZU5v
ZGUoR0xPQkFMX0RBVEEsICokMSwgJDIubV9ub2RlLCAkMi5tX2ZlYXR1cmVJbmZvICYgQXNzaWdu
RmVhdHVyZSk7CisgIHwgSURFTlQgSW5pdGlhbGl6ZXJOb0luICAgICAgICAgICAgICAgeyBBc3Np
Z25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyBBc3NpZ25SZXNvbHZlTm9kZShHTE9CQUxfREFUQSwg
KiQxLCAkMi5tX25vZGUsICQyLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJ
T04obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMi5maXJzdF9jb2x1bW4gKyAxLCBAMi5sYXN0X2Nv
bHVtbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJC5tX25v
ZGUgPSBub2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQu
bV92YXJEZWNsYXJhdGlvbnMgPSBuZXcgUGFyc2VyUmVmQ291bnRlZERhdGE8RGVjbGFyYXRpb25T
dGFja3M6OlZhclN0YWNrPihHTE9CQUxfREFUQSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRUb1ZhckRlY2xhcmF0aW9uTGlzdChHTE9CQUxfREFUQSwg
JCQubV92YXJEZWNsYXJhdGlvbnMsICokMSwgRGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxp
emVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLm1fZnVu
Y0RlY2xhcmF0aW9ucyA9IDA7CkBAIC03OTUsNyArODYwLDkgQEAgVmFyaWFibGVEZWNsYXJhdGlv
bkxpc3ROb0luOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQu
bV9mZWF0dXJlSW5mbyA9ICQxLm1fZmVhdHVyZUluZm87CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICB8IFZhcmlhYmxlRGVjbGFyYXRpb25MaXN0Tm9JbiAnLCcg
SURFTlQgSW5pdGlhbGl6ZXJOb0luCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyAkJC5tX25vZGUgPSBjb21iaW5lVmFySW5pdGlhbGl6ZXJzKEdMT0JBTF9EQVRBLCAk
MS5tX25vZGUsIG5ldyBBc3NpZ25SZXNvbHZlTm9kZShHTE9CQUxfREFUQSwgKiQzLCAkNC5tX25v
ZGUsICQ0Lm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeyBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyBB
c3NpZ25SZXNvbHZlTm9kZShHTE9CQUxfREFUQSwgKiQzLCAkNC5tX25vZGUsICQ0Lm1fZmVhdHVy
ZUluZm8gJiBBc3NpZ25GZWF0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9kZSwgQDMuZmlyc3RfY29sdW1uLCBA
NC5maXJzdF9jb2x1bW4gKyAxLCBANC5sYXN0X2NvbHVtbik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkJC5tX25vZGUgPSBjb21iaW5lVmFySW5pdGlhbGl6ZXJz
KEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsIG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJCQubV92YXJEZWNsYXJhdGlvbnMgPSAkMS5tX3ZhckRlY2xhcmF0
aW9uczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRv
VmFyRGVjbGFyYXRpb25MaXN0KEdMT0JBTF9EQVRBLCAkJC5tX3ZhckRlY2xhcmF0aW9ucywgKiQz
LCBEZWNsYXJhdGlvblN0YWNrczo6SGFzSW5pdGlhbGl6ZXIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJCQubV9mdW5jRGVjbGFyYXRpb25zID0gMDsKQEAgLTg4
NywxNyArOTU0LDIxIEBAIEl0ZXJhdGlvblN0YXRlbWVudDoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG4gPSAkMy5tX25vZGU7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbi0+aXNMb2Nh
dGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WVlBQk9SVDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQg
PSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihuZXcgRm9ySW5Ob2Rl
KEdMT0JBTF9EQVRBLCAkMy5tX25vZGUsICQ1Lm1fbm9kZSwgJDcubV9ub2RlKSwgJDcubV92YXJE
ZWNsYXJhdGlvbnMsICQ3Lm1fZnVuY0RlY2xhcmF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRm9ySW5Ob2RlKiBub2RlID0gbmV3IEZvckluTm9kZShH
TE9CQUxfREFUQSwgJDMubV9ub2RlLCAkNS5tX25vZGUsICQ3Lm1fbm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04o
bm9kZSwgQDMuZmlyc3RfY29sdW1uLCBANC5maXJzdF9jb2x1bW4gKyAxLCBANS5sYXN0X2NvbHVt
bik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3Jl
YXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obm9kZSwgJDcubV92YXJEZWNs
YXJhdGlvbnMsICQ3Lm1fZnVuY0RlY2xhcmF0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkMy5tX2ZlYXR1cmVJbmZvIHwgJDUubV9mZWF0dXJlSW5mbyB8ICQ3Lm1fZmVh
dHVyZUluZm8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
QkcoJCQubV9ub2RlLCBAMSwgQDYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgfCBGT1IgJygnIFZBUiBJREVOVCBJTlRPS0VOIEV4cHIgJyknIFN0YXRlbWVu
dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgRm9ySW5Ob2RlICpm
b3JJbiA9IG5ldyBGb3JJbk5vZGUoR0xPQkFMX0RBVEEsICokNCwgMCwgJDYubV9ub2RlLCAkOC5t
X25vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgRm9ySW5O
b2RlICpmb3JJbiA9IG5ldyBGb3JJbk5vZGUoR0xPQkFMX0RBVEEsICokNCwgMCwgJDYubV9ub2Rl
LCAkOC5tX25vZGUsIEA1LmZpcnN0X2NvbHVtbiwgQDUuZmlyc3RfY29sdW1uIC0gQDQuZmlyc3Rf
Y29sdW1uLCBANi5sYXN0X2NvbHVtbiAtIEA1LmZpcnN0X2NvbHVtbik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKGZvcklu
LCBANC5maXJzdF9jb2x1bW4sIEA1LmZpcnN0X2NvbHVtbiArIDEsIEA2Lmxhc3RfY29sdW1uKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvVmFyRGVj
bGFyYXRpb25MaXN0KEdMT0JBTF9EQVRBLCAkOC5tX3ZhckRlY2xhcmF0aW9ucywgKiQ0LCBEZWNs
YXJhdGlvblN0YWNrczo6SGFzSW5pdGlhbGl6ZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVu
dE5vZGUqPihmb3JJbiwgJDgubV92YXJEZWNsYXJhdGlvbnMsICQ4Lm1fZnVuY0RlY2xhcmF0aW9u
cywgJDYubV9mZWF0dXJlSW5mbyB8ICQ4Lm1fZmVhdHVyZUluZm8pOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgREJHKCQkLm1fbm9kZSwgQDEsIEA3KTsgfQogICB8
IEZPUiAnKCcgVkFSIElERU5UIEluaXRpYWxpemVyTm9JbiBJTlRPS0VOIEV4cHIgJyknIFN0YXRl
bWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgRm9ySW5Ob2Rl
ICpmb3JJbiA9IG5ldyBGb3JJbk5vZGUoR0xPQkFMX0RBVEEsICokNCwgJDUubV9ub2RlLCAkNy5t
X25vZGUsICQ5Lm1fbm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeyBGb3JJbk5vZGUgKmZvckluID0gbmV3IEZvckluTm9kZShHTE9CQUxfREFUQSwgKiQ0LCAk
NS5tX25vZGUsICQ3Lm1fbm9kZSwgJDkubV9ub2RlLCBANS5maXJzdF9jb2x1bW4sIEA1LmZpcnN0
X2NvbHVtbiAtIEA0LmZpcnN0X2NvbHVtbiwgQDUubGFzdF9jb2x1bW4gLSBANS5maXJzdF9jb2x1
bW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQ
VElPTl9MT0NBVElPTihmb3JJbiwgQDQuZmlyc3RfY29sdW1uLCBANi5maXJzdF9jb2x1bW4gKyAx
LCBANy5sYXN0X2NvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRUb1ZhckRlY2xhcmF0aW9uTGlzdChHTE9CQUxfREFUQSwgJDkubV92YXJEZWNs
YXJhdGlvbnMsICokNCwgRGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxpemVyKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZURlY2xh
cmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4oZm9ySW4sICQ5Lm1fdmFyRGVjbGFyYXRpb25zLCAk
OS5tX2Z1bmNEZWNsYXJhdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ1
Lm1fZmVhdHVyZUluZm8gfCAkNy5tX2ZlYXR1cmVJbmZvIHwgJDkubV9mZWF0dXJlSW5mbyk7CkBA
IC05MTUsMzMgKzk4Niw1NyBAQCBFeHByTm9Jbk9wdDoKIDsKIAogQ29udGludWVTdGF0ZW1lbnQ6
Ci0gICAgQ09OVElOVUUgJzsnICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5v
ZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyBDb250aW51ZU5vZGUoR0xPQkFM
X0RBVEEpLCAwLCAwLCAwKTsKKyAgICBDT05USU5VRSAnOycgICAgICAgICAgICAgICAgICAgICAg
ICB7IENvbnRpbnVlTm9kZSogbm9kZSA9IG5ldyBDb250aW51ZU5vZGUoR0xPQkFMX0RBVEEpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9M
T0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMS5sYXN0X2Nv
bHVtbik7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBj
cmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihub2RlLCAwLCAwLCAwKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCRygkJC5tX25vZGUs
IEAxLCBAMik7IH0KLSAgfCBDT05USU5VRSBlcnJvciAgICAgICAgICAgICAgICAgICAgICB7ICQk
ID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obmV3IENvbnRpbnVl
Tm9kZShHTE9CQUxfREFUQSksIDAsIDAsIDApOworICB8IENPTlRJTlVFIGVycm9yICAgICAgICAg
ICAgICAgICAgICAgIHsgQ29udGludWVOb2RlKiBub2RlID0gbmV3IENvbnRpbnVlTm9kZShHTE9C
QUxfREFUQSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRf
RVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4s
IEAxLmxhc3RfY29sdW1uKTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5vZGUs
IDAsIDAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREJH
KCQkLm1fbm9kZSwgQDEsIEAxKTsgQVVUT19TRU1JQ09MT047IH0KLSAgfCBDT05USU5VRSBJREVO
VCAnOycgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxT
dGF0ZW1lbnROb2RlKj4obmV3IENvbnRpbnVlTm9kZShHTE9CQUxfREFUQSwgKiQyKSwgMCwgMCwg
MCk7CisgIHwgQ09OVElOVUUgSURFTlQgJzsnICAgICAgICAgICAgICAgICAgeyBDb250aW51ZU5v
ZGUqIG5vZGUgPSBuZXcgQ29udGludWVOb2RlKEdMT0JBTF9EQVRBLCAqJDIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihu
b2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbik7IAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2Rl
RGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihub2RlLCAwLCAwLCAwKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCRygkJC5tX25vZGUsIEAxLCBAMyk7
IH0KLSAgfCBDT05USU5VRSBJREVOVCBlcnJvciAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRl
Tm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obmV3IENvbnRpbnVlTm9kZShHTE9C
QUxfREFUQSwgKiQyKSwgMCwgMCwgMCk7CisgIHwgQ09OVElOVUUgSURFTlQgZXJyb3IgICAgICAg
ICAgICAgICAgeyBDb250aW51ZU5vZGUqIG5vZGUgPSBuZXcgQ29udGludWVOb2RlKEdMT0JBTF9E
QVRBLCAqJDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VU
X0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1u
LCBAMi5sYXN0X2NvbHVtbik7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihub2Rl
LCAwLCAwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERC
RygkJC5tX25vZGUsIEAxLCBAMik7IEFVVE9fU0VNSUNPTE9OOyB9CiA7CiAKIEJyZWFrU3RhdGVt
ZW50OgotICAgIEJSRUFLICc7JyAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVh
dGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihuZXcgQnJlYWtOb2RlKEdMT0JB
TF9EQVRBKSwgMCwgMCwgMCk7IERCRygkJC5tX25vZGUsIEAxLCBAMik7IH0KLSAgfCBCUkVBSyBl
cnJvciAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9u
SW5mbzxTdGF0ZW1lbnROb2RlKj4obmV3IEJyZWFrTm9kZShHTE9CQUxfREFUQSksIDAsIDAsIDAp
OyBEQkcoJCQubV9ub2RlLCBAMSwgQDEpOyBBVVRPX1NFTUlDT0xPTjsgfQotICB8IEJSRUFLIElE
RU5UICc7JyAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25J
bmZvPFN0YXRlbWVudE5vZGUqPihuZXcgQnJlYWtOb2RlKEdMT0JBTF9EQVRBLCAqJDIpLCAwLCAw
LCAwKTsgREJHKCQkLm1fbm9kZSwgQDEsIEAzKTsgfQotICB8IEJSRUFLIElERU5UIGVycm9yICAg
ICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVu
dE5vZGUqPihuZXcgQnJlYWtOb2RlKEdMT0JBTF9EQVRBLCAqJDIpLCAwLCAwLCAwKTsgREJHKCQk
Lm1fbm9kZSwgQDEsIEAyKTsgQVVUT19TRU1JQ09MT047IH0KKyAgICBCUkVBSyAnOycgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7IEJyZWFrTm9kZSogbm9kZSA9IG5ldyBCcmVha05vZGUoR0xP
QkFMX0RBVEEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VU
X0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1u
LCBAMS5sYXN0X2NvbHVtbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5vZGUs
IDAsIDAsIDApOyBEQkcoJCQubV9ub2RlLCBAMSwgQDIpOyB9CisgIHwgQlJFQUsgZXJyb3IgICAg
ICAgICAgICAgICAgICAgICAgICAgeyBCcmVha05vZGUqIG5vZGUgPSBuZXcgQnJlYWtOb2RlKEdM
T0JBTF9EQVRBKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNF
VF9FWENFUFRJT05fTE9DQVRJT04obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVt
biwgQDEubGFzdF9jb2x1bW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihuZXcg
QnJlYWtOb2RlKEdMT0JBTF9EQVRBKSwgMCwgMCwgMCk7IERCRygkJC5tX25vZGUsIEAxLCBAMSk7
IEFVVE9fU0VNSUNPTE9OOyB9CisgIHwgQlJFQUsgSURFTlQgJzsnICAgICAgICAgICAgICAgICAg
ICAgeyBCcmVha05vZGUqIG5vZGUgPSBuZXcgQnJlYWtOb2RlKEdMT0JBTF9EQVRBLCAqJDIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9M
T0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uLCBAMi5sYXN0X2Nv
bHVtbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNy
ZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5vZGUsIDAsIDAsIDApOyBE
QkcoJCQubV9ub2RlLCBAMSwgQDMpOyB9CisgIHwgQlJFQUsgSURFTlQgZXJyb3IgICAgICAgICAg
ICAgICAgICAgeyBCcmVha05vZGUqIG5vZGUgPSBuZXcgQnJlYWtOb2RlKEdMT0JBTF9EQVRBLCAq
JDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQ
VElPTl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uLCBAMi5s
YXN0X2NvbHVtbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
JCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyBCcmVha05v
ZGUoR0xPQkFMX0RBVEEsICokMiksIDAsIDAsIDApOyBEQkcoJCQubV9ub2RlLCBAMSwgQDIpOyBB
VVRPX1NFTUlDT0xPTjsgfQogOwogCiBSZXR1cm5TdGF0ZW1lbnQ6Ci0gICAgUkVUVVJOICc7JyAg
ICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88
U3RhdGVtZW50Tm9kZSo+KG5ldyBSZXR1cm5Ob2RlKEdMT0JBTF9EQVRBLCAwKSwgMCwgMCwgMCk7
IERCRygkJC5tX25vZGUsIEAxLCBAMik7IH0KLSAgfCBSRVRVUk4gZXJyb3IgICAgICAgICAgICAg
ICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2Rl
Kj4obmV3IFJldHVybk5vZGUoR0xPQkFMX0RBVEEsIDApLCAwLCAwLCAwKTsgREJHKCQkLm1fbm9k
ZSwgQDEsIEAxKTsgQVVUT19TRU1JQ09MT047IH0KLSAgfCBSRVRVUk4gRXhwciAnOycgICAgICAg
ICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnRO
b2RlKj4obmV3IFJldHVybk5vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSksIDAsIDAsICQyLm1f
ZmVhdHVyZUluZm8pOyBEQkcoJCQubV9ub2RlLCBAMSwgQDMpOyB9Ci0gIHwgUkVUVVJOIEV4cHIg
ZXJyb3IgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88
U3RhdGVtZW50Tm9kZSo+KG5ldyBSZXR1cm5Ob2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUpLCAw
LCAwLCAkMi5tX2ZlYXR1cmVJbmZvKTsgREJHKCQkLm1fbm9kZSwgQDEsIEAyKTsgQVVUT19TRU1J
Q09MT047IH0KKyAgICBSRVRVUk4gJzsnICAgICAgICAgICAgICAgICAgICAgICAgICB7IFJldHVy
bk5vZGUqIG5vZGUgPSBuZXcgUmV0dXJuTm9kZShHTE9CQUxfREFUQSwgMCk7IAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihu
b2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbik7IAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2Rl
RGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihub2RlLCAwLCAwLCAwKTsgREJHKCQkLm1f
bm9kZSwgQDEsIEAyKTsgfQorICB8IFJFVFVSTiBlcnJvciAgICAgICAgICAgICAgICAgICAgICAg
IHsgUmV0dXJuTm9kZSogbm9kZSA9IG5ldyBSZXR1cm5Ob2RlKEdMT0JBTF9EQVRBLCAwKTsgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xP
Q0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAxLmxhc3RfY29s
dW1uKTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNy
ZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5vZGUsIDAsIDAsIDApOyBE
QkcoJCQubV9ub2RlLCBAMSwgQDEpOyBBVVRPX1NFTUlDT0xPTjsgfQorICB8IFJFVFVSTiBFeHBy
ICc7JyAgICAgICAgICAgICAgICAgICAgIHsgUmV0dXJuTm9kZSogbm9kZSA9IG5ldyBSZXR1cm5O
b2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9kZSwgQDEuZmlyc3RfY29s
dW1uLCBAMi5sYXN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4pOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0
YXRlbWVudE5vZGUqPihub2RlLCAwLCAwLCAkMi5tX2ZlYXR1cmVJbmZvKTsgREJHKCQkLm1fbm9k
ZSwgQDEsIEAzKTsgfQorICB8IFJFVFVSTiBFeHByIGVycm9yICAgICAgICAgICAgICAgICAgIHsg
UmV0dXJuTm9kZSogbm9kZSA9IG5ldyBSZXR1cm5Ob2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUp
OyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJ
T05fTE9DQVRJT04obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbiwgQDIubGFz
dF9jb2x1bW4pOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQk
ID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obm9kZSwgMCwgMCwg
JDIubV9mZWF0dXJlSW5mbyk7IERCRygkJC5tX25vZGUsIEAxLCBAMik7IEFVVE9fU0VNSUNPTE9O
OyB9CiA7CiAKIFdpdGhTdGF0ZW1lbnQ6Ci0gICAgV0lUSCAnKCcgRXhwciAnKScgU3RhdGVtZW50
ICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+
KG5ldyBXaXRoTm9kZShHTE9CQUxfREFUQSwgJDMubV9ub2RlLCAkNS5tX25vZGUpLCAkNS5tX3Zh
ckRlY2xhcmF0aW9ucywgJDUubV9mdW5jRGVjbGFyYXRpb25zLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkMy5tX2ZlYXR1cmVJbmZvIHwgJDUubV9mZWF0dXJlSW5mbyk7CisgICAg
V0lUSCAnKCcgRXhwciAnKScgU3RhdGVtZW50ICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVEZWNs
YXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyBXaXRoTm9kZShHTE9CQUxfREFUQSwgJDMu
bV9ub2RlLCAkNS5tX25vZGUsIEAzLmxhc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVtbiAtIEAzLmZp
cnN0X2NvbHVtbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ1Lm1fdmFyRGVj
bGFyYXRpb25zLCAkNS5tX2Z1bmNEZWNsYXJhdGlvbnMsICQzLm1fZmVhdHVyZUluZm8gfCAkNS5t
X2ZlYXR1cmVJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERCRygkJC5tX25vZGUsIEAxLCBANCk7IH0KIDsKIApAQCAtOTkxLDEyICsxMDg2LDIwIEBAIERl
ZmF1bHRDbGF1c2U6CiAKIExhYmVsbGVkU3RhdGVtZW50OgogICAgIElERU5UICc6JyBTdGF0ZW1l
bnQgICAgICAgICAgICAgICAgIHsgJDMubV9ub2RlLT5wdXNoTGFiZWwoKiQxKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZURlY2xhcmF0
aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obmV3IExhYmVsTm9kZShHTE9CQUxfREFUQSwgKiQxLCAk
My5tX25vZGUpLCAkMy5tX3ZhckRlY2xhcmF0aW9ucywgJDMubV9mdW5jRGVjbGFyYXRpb25zLCAk
My5tX2ZlYXR1cmVJbmZvKTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTGFiZWxOb2RlKiBub2RlID0gbmV3IExhYmVsTm9kZShHTE9CQUxfREFUQSwgKiQxLCAk
My5tX25vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VU
X0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1u
LCBAMi5sYXN0X2NvbHVtbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5vZGUs
ICQzLm1fdmFyRGVjbGFyYXRpb25zLCAkMy5tX2Z1bmNEZWNsYXJhdGlvbnMsICQzLm1fZmVhdHVy
ZUluZm8pOyB9CiA7CiAKIFRocm93U3RhdGVtZW50OgotICAgIFRIUk9XIEV4cHIgJzsnICAgICAg
ICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVu
dE5vZGUqPihuZXcgVGhyb3dOb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUpLCAwLCAwLCAkMi5t
X2ZlYXR1cmVJbmZvKTsgREJHKCQkLm1fbm9kZSwgQDEsIEAzKTsgfQotICB8IFRIUk9XIEV4cHIg
ZXJyb3IgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZv
PFN0YXRlbWVudE5vZGUqPihuZXcgVGhyb3dOb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUpLCAw
LCAwLCAkMi5tX2ZlYXR1cmVJbmZvKTsgREJHKCQkLm1fbm9kZSwgQDEsIEAyKTsgQVVUT19TRU1J
Q09MT047IH0KKyAgICBUSFJPVyBFeHByICc7JyAgICAgICAgICAgICAgICAgICAgICB7IFRocm93
Tm9kZSogbm9kZSA9IG5ldyBUaHJvd05vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FU
SU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1u
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRl
Tm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obm9kZSwgMCwgMCwgJDIubV9mZWF0
dXJlSW5mbyk7IERCRygkJC5tX25vZGUsIEAxLCBAMik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICB8IFRIUk9XIEV4cHIgZXJyb3IgICAgICAgICAgICAgICAg
ICAgIHsgVGhyb3dOb2RlKiBub2RlID0gbmV3IFRocm93Tm9kZShHTE9CQUxfREFUQSwgJDIubV9u
b2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENF
UFRJT05fTE9DQVRJT04obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbiwgQDIu
bGFzdF9jb2x1bW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihub2RlLCAwLCAw
LCAkMi5tX2ZlYXR1cmVJbmZvKTsgREJHKCQkLm1fbm9kZSwgQDEsIEAyKTsgQVVUT19TRU1JQ09M
T047IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIDsKIAogVHJ5
U3RhdGVtZW50OgpAQCAtMTA5MSw4NyArMTE5NCwxMDggQEAgU291cmNlRWxlbWVudDoKICAKICUl
CiAKLXN0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZUFzc2lnbk5vZGUodm9pZCogZ2xvYmFsUHRy
LCBFeHByZXNzaW9uTm9kZSogbG9jLCBPcGVyYXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IGJvb2wgbG9jSGFzQXNzaWdubWVudHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRzKQorc3RhdGlj
IEV4cHJlc3Npb25Ob2RlKiBtYWtlQXNzaWduTm9kZSh2b2lkKiBnbG9iYWxQdHIsIEV4cHJlc3Np
b25Ob2RlKiBsb2MsIE9wZXJhdG9yIG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NI
YXNBc3NpZ25tZW50cywgYm9vbCBleHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKQogewogICAgIGlmICghbG9jLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJl
dHVybiBuZXcgQXNzaWduRXJyb3JOb2RlKEdMT0JBTF9EQVRBLCBsb2MsIG9wLCBleHByKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyBBc3NpZ25FcnJvck5vZGUoR0xPQkFMX0RBVEEsIGxvYywgb3AsIGV4
cHIsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAKICAgICBpZiAobG9jLT5p
c1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNf
Y2FzdDxSZXNvbHZlTm9kZSo+KGxvYyk7Ci0gICAgICAgIGlmIChvcCA9PSBPcEVxdWFsKQotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBBc3NpZ25SZXNvbHZlTm9kZShHTE9CQUxfREFUQSwgcmVzb2x2
ZS0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFJlYWRNb2RpZnlSZXNvbHZlTm9kZShHTE9CQUxfREFU
QSwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsKKyAgICAgICAgICAgIEFzc2lnblJlc29sdmVO
b2RlKiBub2RlID0gbmV3IEFzc2lnblJlc29sdmVOb2RlKEdMT0JBTF9EQVRBLCByZXNvbHZlLT5p
ZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cyk7CisgICAgICAgICAgICBTRVRf
RVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKKyAgICAgICAgICAg
IHJldHVybiBub2RlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBuZXcgUmVh
ZE1vZGlmeVJlc29sdmVOb2RlKEdMT0JBTF9EQVRBLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9w
LCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CiAgICAgfQogICAgIGlmIChsb2MtPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAg
ICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0
QWNjZXNzb3JOb2RlKj4obG9jKTsKICAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0gICAgICAg
ICAgICByZXR1cm4gbmV3IEFzc2lnbkJyYWNrZXROb2RlKEdMT0JBTF9EQVRBLCBicmFja2V0LT5i
YXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhw
ckhhc0Fzc2lnbm1lbnRzKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIG5ldyBS
ZWFkTW9kaWZ5QnJhY2tldE5vZGUoR0xPQkFMX0RBVEEsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tl
dC0+c3Vic2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQXNzaWduQnJhY2tldE5vZGUoR0xPQkFM
X0RBVEEsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGV4cHIsIGxvY0hh
c0Fzc2lnbm1lbnRzLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUmVhZE1vZGlmeUJyYWNr
ZXROb2RlKiBub2RlID0gbmV3IFJlYWRNb2RpZnlCcmFja2V0Tm9kZShHTE9CQUxfREFUQSwgYnJh
Y2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGV4cHIsIGxvY0hhc0Fzc2ln
bm1lbnRzLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CisgICAgICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5k
aXZvdCgpLCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gbm9kZTsK
KyAgICAgICAgfQogICAgIH0KICAgICBBU1NFUlQobG9jLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsK
ICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+
KGxvYyk7CiAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0gICAgICAgIHJldHVybiBuZXcgQXNzaWdu
RG90Tm9kZShHTE9CQUxfREFUQSwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHBy
LCBleHBySGFzQXNzaWdubWVudHMpOwotICAgIHJldHVybiBuZXcgUmVhZE1vZGlmeURvdE5vZGUo
R0xPQkFMX0RBVEEsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4
cHJIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBuZXcgQXNzaWduRG90Tm9kZShHTE9C
QUxfREFUQSwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNz
aWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisKKyAgICBSZWFk
TW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyBSZWFkTW9kaWZ5RG90Tm9kZShHTE9CQUxfREFUQSwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1l
bnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgIG5vZGUtPnNldFN1
YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7CisgICAgcmV0
dXJuIG5vZGU7CiB9CiAKLXN0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUodm9p
ZCogZ2xvYmFsUHRyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3ApCitzdGF0aWMg
RXhwcmVzc2lvbk5vZGUqIG1ha2VQcmVmaXhOb2RlKHZvaWQqIGdsb2JhbFB0ciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkK
IHsgCiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgUHJl
Zml4RXJyb3JOb2RlKEdMT0JBTF9EQVRBLCBleHByLCBvcCk7CisgICAgICAgIHJldHVybiBuZXcg
UHJlZml4RXJyb3JOb2RlKEdMT0JBTF9EQVRBLCBleHByLCBvcCwgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90KTsKICAgICAKICAgICBpZiAoZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7
CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUq
PihleHByKTsKLSAgICAgICAgcmV0dXJuIG5ldyBQcmVmaXhSZXNvbHZlTm9kZShHTE9CQUxfREFU
QSwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCk7CisgICAgICAgIHJldHVybiBuZXcgUHJlZml4
UmVzb2x2ZU5vZGUoR0xPQkFMX0RBVEEsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5pc0Jy
YWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFj
a2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAgICBy
ZXR1cm4gbmV3IFByZWZpeEJyYWNrZXROb2RlKEdMT0JBTF9EQVRBLCBicmFja2V0LT5iYXNlKCks
IGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCk7CisgICAgICAgIFByZWZpeEJyYWNrZXROb2RlKiBu
b2RlID0gbmV3IFByZWZpeEJyYWNrZXROb2RlKEdMT0JBTF9EQVRBLCBicmFja2V0LT5iYXNlKCks
IGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKKyAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3Qo
KSwgYnJhY2tldC0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBub2RlOwogICAgIH0K
ICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JO
b2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICByZXR1
cm4gbmV3IFByZWZpeERvdE5vZGUoR0xPQkFMX0RBVEEsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgb3ApOworICAgIFByZWZpeERvdE5vZGUqIG5vZGUgPSBuZXcgUHJlZml4RG90Tm9k
ZShHTE9CQUxfREFUQSwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBub2RlLT5zZXRTdWJleHByZXNzaW9u
SW5mbyhkb3QtPmRpdm90KCksIGRvdC0+c3RhcnRPZmZzZXQoKSk7CisgICAgcmV0dXJuIG5vZGU7
CiB9CiAKLXN0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZVBvc3RmaXhOb2RlKHZvaWQqIGdsb2Jh
bFB0ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wKQorc3RhdGljIEV4cHJlc3Np
b25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUodm9pZCogZ2xvYmFsUHRyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogeyAKICAg
ICBpZiAoIWV4cHItPmlzTG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyBQb3N0Zml4RXJy
b3JOb2RlKEdMT0JBTF9EQVRBLCBleHByLCBvcCk7CisgICAgICAgIHJldHVybiBuZXcgUG9zdGZp
eEVycm9yTm9kZShHTE9CQUxfREFUQSwgZXhwciwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CiAgICAgCiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAg
ICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhw
cik7Ci0gICAgICAgIHJldHVybiBuZXcgUG9zdGZpeFJlc29sdmVOb2RlKEdMT0JBTF9EQVRBLCBy
ZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wKTsKKyAgICAgICAgcmV0dXJuIG5ldyBQb3N0Zml4UmVz
b2x2ZU5vZGUoR0xPQkFMX0RBVEEsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5pc0JyYWNr
ZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0
ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1
cm4gbmV3IFBvc3RmaXhCcmFja2V0Tm9kZShHTE9CQUxfREFUQSwgYnJhY2tldC0+YmFzZSgpLCBi
cmFja2V0LT5zdWJzY3JpcHQoKSwgb3ApOworICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUqIG5v
ZGUgPSBuZXcgUG9zdGZpeEJyYWNrZXROb2RlKEdMT0JBTF9EQVRBLCBicmFja2V0LT5iYXNlKCks
IGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKKyAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3Qo
KSwgYnJhY2tldC0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBub2RlOworICAgICAg
ICAKICAgICB9CiAgICAgQVNTRVJUKGV4cHItPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERv
dEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZXhwcik7
Ci0gICAgcmV0dXJuIG5ldyBQb3N0Zml4RG90Tm9kZShHTE9CQUxfREFUQSwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBvcCk7CisgICAgUG9zdGZpeERvdE5vZGUqIG5vZGUgPSBuZXcg
UG9zdGZpeERvdE5vZGUoR0xPQkFMX0RBVEEsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIo
KSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgbm9kZS0+c2V0
U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPnN0YXJ0T2Zmc2V0KCkpOworICAg
IHJldHVybiBub2RlOwogfQogCi1zdGF0aWMgRXhwcmVzc2lvbk5vZGVJbmZvIG1ha2VGdW5jdGlv
bkNhbGxOb2RlKHZvaWQqIGdsb2JhbFB0ciwgRXhwcmVzc2lvbk5vZGVJbmZvIGZ1bmMsIEFyZ3Vt
ZW50c05vZGVJbmZvIGFyZ3MpCitzdGF0aWMgRXhwcmVzc2lvbk5vZGVJbmZvIG1ha2VGdW5jdGlv
bkNhbGxOb2RlKHZvaWQqIGdsb2JhbFB0ciwgRXhwcmVzc2lvbk5vZGVJbmZvIGZ1bmMsIEFyZ3Vt
ZW50c05vZGVJbmZvIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAg
IEZlYXR1cmVJbmZvIGZlYXR1cmVzID0gZnVuYy5tX2ZlYXR1cmVJbmZvIHwgYXJncy5tX2ZlYXR1
cmVJbmZvOwogICAgIGlmICghZnVuYy5tX25vZGUtPmlzTG9jYXRpb24oKSkKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBGdW5jdGlvbkNh
bGxWYWx1ZU5vZGUoR0xPQkFMX0RBVEEsIGZ1bmMubV9ub2RlLCBhcmdzLm1fbm9kZSksIGZlYXR1
cmVzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9k
ZSo+KG5ldyBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoR0xPQkFMX0RBVEEsIGZ1bmMubV9ub2RlLCBh
cmdzLm1fbm9kZSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KSwgZmVhdHVyZXMp
OwogICAgIGlmIChmdW5jLm1fbm9kZS0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29s
dmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihmdW5jLm1fbm9kZSk7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIgPSByZXNvbHZlLT5pZGVudGlm
aWVyKCk7CiAgICAgICAgIGlmIChpZGVudGlmaWVyID09IEdMT0JBTF9EQVRBLT5wcm9wZXJ0eU5h
bWVzLT5ldmFsKQotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHBy
ZXNzaW9uTm9kZSo+KG5ldyBFdmFsRnVuY3Rpb25DYWxsTm9kZShHTE9CQUxfREFUQSwgYXJncy5t
X25vZGUpLCBFdmFsRmVhdHVyZSB8IGZlYXR1cmVzKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU5v
ZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBGdW5jdGlvbkNhbGxSZXNvbHZlTm9k
ZShHTE9CQUxfREFUQSwgaWRlbnRpZmllciwgYXJncy5tX25vZGUpLCBmZWF0dXJlcyk7CisgICAg
ICAgICAgICByZXR1cm4gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3
IEV2YWxGdW5jdGlvbkNhbGxOb2RlKEdMT0JBTF9EQVRBLCBhcmdzLm1fbm9kZSwgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KSwgRXZhbEZlYXR1cmUgfCBmZWF0dXJlcyk7CisgICAg
ICAgIHJldHVybiBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgRnVu
Y3Rpb25DYWxsUmVzb2x2ZU5vZGUoR0xPQkFMX0RBVEEsIGlkZW50aWZpZXIsIGFyZ3MubV9ub2Rl
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpLCBmZWF0dXJlcyk7CiAgICAgfQog
ICAgIGlmIChmdW5jLm1fbm9kZS0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAg
QnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nv
ck5vZGUqPihmdW5jLm1fbm9kZSk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVOb2RlRmVhdHVyZUlu
Zm88RXhwcmVzc2lvbk5vZGUqPihuZXcgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoR0xPQkFMX0RB
VEEsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGFyZ3MubV9ub2RlKSwg
ZmVhdHVyZXMpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyBG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZShHTE9CQUxfREFUQSwgYnJhY2tldC0+YmFzZSgpLCBicmFj
a2V0LT5zdWJzY3JpcHQoKSwgYXJncy5tX25vZGUsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CisgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRp
dm90KCksIGJyYWNrZXQtPmVuZE9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU5vZGVG
ZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsIGZlYXR1cmVzKTsKICAgICB9CiAgICAg
QVNTRVJUKGZ1bmMubV9ub2RlLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nv
ck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMubV9ub2RlKTsK
LSAgICByZXR1cm4gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IEZ1
bmN0aW9uQ2FsbERvdE5vZGUoR0xPQkFMX0RBVEEsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgYXJncy5tX25vZGUpLCBmZWF0dXJlcyk7CisgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSog
bm9kZSA9IG5ldyBGdW5jdGlvbkNhbGxEb3ROb2RlKEdMT0JBTF9EQVRBLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGFyZ3MubV9ub2RlLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QpOworICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwg
ZG90LT5lbmRPZmZzZXQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHBy
ZXNzaW9uTm9kZSo+KG5vZGUsIGZlYXR1cmVzKTsKIH0KIAogc3RhdGljIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlVHlwZU9mTm9kZSh2b2lkKiBnbG9iYWxQdHIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQpA
QCAtMTE4MywyMSArMTMwNywyMSBAQCBzdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VUeXBlT2ZO
b2RlKHZvaWQqIGdsb2JhbFB0ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCiAgICAgcmV0dXJuIG5l
dyBUeXBlT2ZWYWx1ZU5vZGUoR0xPQkFMX0RBVEEsIGV4cHIpOwogfQogCi1zdGF0aWMgRXhwcmVz
c2lvbk5vZGUqIG1ha2VEZWxldGVOb2RlKHZvaWQqIGdsb2JhbFB0ciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpCitzdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VEZWxldGVOb2RlKHZvaWQqIGdsb2Jh
bFB0ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KQogewogICAgIGlmICghZXhwci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gbmV3IERl
bGV0ZVZhbHVlTm9kZShHTE9CQUxfREFUQSwgZXhwcik7CiAgICAgaWYgKGV4cHItPmlzUmVzb2x2
ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJl
c29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgRGVsZXRlUmVzb2x2ZU5vZGUo
R0xPQkFMX0RBVEEsIHJlc29sdmUtPmlkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybiBuZXcg
RGVsZXRlUmVzb2x2ZU5vZGUoR0xPQkFMX0RBVEEsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGV4cHItPmlz
QnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJy
YWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgICAg
IHJldHVybiBuZXcgRGVsZXRlQnJhY2tldE5vZGUoR0xPQkFMX0RBVEEsIGJyYWNrZXQtPmJhc2Uo
KSwgYnJhY2tldC0+c3Vic2NyaXB0KCkpOworICAgICAgICByZXR1cm4gbmV3IERlbGV0ZUJyYWNr
ZXROb2RlKEdMT0JBTF9EQVRBLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgp
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBBU1NFUlQo
ZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBz
dGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICByZXR1cm4gbmV3IERlbGV0
ZURvdE5vZGUoR0xPQkFMX0RBVEEsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSk7Cisg
ICAgcmV0dXJuIG5ldyBEZWxldGVEb3ROb2RlKEdMT0JBTF9EQVRBLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiB9CiAK
IHN0YXRpYyBQcm9wZXJ0eU5vZGUqIG1ha2VHZXR0ZXJPclNldHRlclByb3BlcnR5Tm9kZSh2b2lk
KiBnbG9iYWxQdHIsIGNvbnN0IElkZW50aWZpZXImIGdldE9yU2V0LCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNv
bnN0IFNvdXJjZVJhbmdlJiBzb3VyY2UpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMv
bGV4ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNwcAppbmRleCBiNTU1NjhhLi41
ZWExM2ZlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvbGV4ZXIuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL2tqcy9sZXhlci5jcHAKQEAgLTc0LDYgKzc0LDEwIEBAIExleGVyOjpMZXhl
cihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgLCBtX25leHQxKDApCiAgICAgLCBtX25l
eHQyKDApCiAgICAgLCBtX25leHQzKDApCisgICAgLCBtX2N1cnJlbnRPZmZzZXQoMCkKKyAgICAs
IG1fbmV4dE9mZnNldDEoMCkKKyAgICAsIG1fbmV4dE9mZnNldDIoMCkKKyAgICAsIG1fbmV4dE9m
ZnNldDMoMCkKICAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQogICAgICwgbV9tYWluVGFi
bGUoS0pTOjptYWluVGFibGUpCiB7CkBAIC0xMTksMTIgKzEyMywxNyBAQCB2b2lkIExleGVyOjpz
aGlmdCh1bnNpZ25lZCBwKQogICAgICAgICBtX2N1cnJlbnQgPSBtX25leHQxOwogICAgICAgICBt
X25leHQxID0gbV9uZXh0MjsKICAgICAgICAgbV9uZXh0MiA9IG1fbmV4dDM7CisgICAgICAgIG1f
Y3VycmVudE9mZnNldCA9IG1fbmV4dE9mZnNldDE7CisgICAgICAgIG1fbmV4dE9mZnNldDEgPSBt
X25leHRPZmZzZXQyOworICAgICAgICBtX25leHRPZmZzZXQyID0gbV9uZXh0T2Zmc2V0MzsKICAg
ICAgICAgZG8gewogICAgICAgICAgICAgaWYgKG1fcG9zaXRpb24gPj0gbV9sZW5ndGgpIHsKKyAg
ICAgICAgICAgICAgICBtX25leHRPZmZzZXQzID0gbV9wb3NpdGlvbjsKICAgICAgICAgICAgICAg
ICBtX3Bvc2l0aW9uKys7CiAgICAgICAgICAgICAgICAgbV9uZXh0MyA9IC0xOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9uZXh0T2Zmc2V0MyA9
IG1fcG9zaXRpb247CiAgICAgICAgICAgICBtX25leHQzID0gbV9jb2RlW21fcG9zaXRpb24rK107
CiAgICAgICAgIH0gd2hpbGUgKG1fbmV4dDMgPT0gMHhGRUZGKTsKICAgICB9CkBAIC0xNjQsNyAr
MTczLDcgQEAgaW50IExleGVyOjpsZXgodm9pZCogcDEsIHZvaWQqIHAyKQogICAgICAgICB0b2tl
biA9IG1fc3RhY2tUb2tlbjsKICAgICAgICAgbV9zdGFja1Rva2VuID0gMDsKICAgICB9Ci0KKyAg
ICBpbnQgc3RhcnRPZmZzZXQgPSBtX2N1cnJlbnRPZmZzZXQ7CiAgICAgd2hpbGUgKCFtX2RvbmUp
IHsKICAgICAgICAgaWYgKG1fc2tpcExGICYmIG1fY3VycmVudCAhPSAnXG4nKSAvLyBmb3VuZCBc
ciBidXQgbm90IFxuIGFmdGVyd2FyZHMKICAgICAgICAgICAgIG1fc2tpcExGID0gZmFsc2U7CkBA
IC0xNzcsNiArMTg2LDcgQEAgaW50IExleGVyOjpsZXgodm9pZCogcDEsIHZvaWQqIHAyKQogICAg
ICAgICB9CiAgICAgICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgICAgICAgICAgY2FzZSBTdGFy
dDoKKyAgICAgICAgICAgICAgICBzdGFydE9mZnNldCA9IG1fY3VycmVudE9mZnNldDsKICAgICAg
ICAgICAgICAgICBpZiAoaXNXaGl0ZVNwYWNlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
ZG8gbm90aGluZwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9jdXJyZW50ID09ICcvJyAm
JiBtX25leHQxID09ICcvJykgewpAQCAtNTIxLDcgKzUzMSw4IEBAIGludCBMZXhlcjo6bGV4KHZv
aWQqIHAxLCB2b2lkKiBwMikKICAgICBtX2RlbGltaXRlZCA9IGZhbHNlOwogICAgIGxsb2NwLT5m
aXJzdF9saW5lID0geXlsaW5lbm87CiAgICAgbGxvY3AtPmxhc3RfbGluZSA9IHl5bGluZW5vOwot
CisgICAgbGxvY3AtPmZpcnN0X2NvbHVtbiA9IHN0YXJ0T2Zmc2V0OworICAgIGxsb2NwLT5sYXN0
X2NvbHVtbiA9IG1fY3VycmVudE9mZnNldDsKICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKICAgICAg
ICAgY2FzZSBFb2Y6CiAgICAgICAgICAgICB0b2tlbiA9IDA7CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ranMvbGV4ZXIuaCBiL0phdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5oCmluZGV4IGVl
ZTFmMzkuLjZkNGQ4NGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5oCkBAIC0xMzMsNyArMTMzLDYgQEAgbmFtZXNw
YWNlIEtKUyB7CiAKICAgICAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICAgICAgdW5zaWduZWQgaW50
IG1fcG9zaXRpb247Ci0KICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsK
ICAgICAgICAgY29uc3QgVUNoYXIqIG1fY29kZTsKICAgICAgICAgdW5zaWduZWQgaW50IG1fbGVu
Z3RoOwpAQCAtMTQ1LDcgKzE0NCwxMiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgaW50IG1f
bmV4dDE7CiAgICAgICAgIGludCBtX25leHQyOwogICAgICAgICBpbnQgbV9uZXh0MzsKLQorICAg
ICAgICAKKyAgICAgICAgaW50IG1fY3VycmVudE9mZnNldDsKKyAgICAgICAgaW50IG1fbmV4dE9m
ZnNldDE7CisgICAgICAgIGludCBtX25leHRPZmZzZXQyOworICAgICAgICBpbnQgbV9uZXh0T2Zm
c2V0MzsKKyAgICAgICAgCiAgICAgICAgIFZlY3RvcjxVU3RyaW5nKj4gbV9zdHJpbmdzOwogICAg
ICAgICBWZWN0b3I8S0pTOjpJZGVudGlmaWVyKj4gbV9pZGVudGlmaWVyczsKIApkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9ub2Rl
cy5jcHAKaW5kZXggZTU5NzFhOS4uMWVlZjAwMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
a2pzL25vZGVzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCkBAIC0xNjIs
MTcgKzE2MiwxOSBAQCBzdGF0aWMgdm9pZCBzdWJzdGl0dXRlKFVTdHJpbmcmIHN0cmluZywgY29u
c3QgVVN0cmluZyYgc3Vic3RyaW5nKQogICAgIHN0cmluZyA9IG5ld1N0cmluZzsKIH0KIAotUmVn
aXN0ZXJJRCogTm9kZTo6ZW1pdFRocm93RXJyb3IoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBF
cnJvclR5cGUgZSwgY29uc3QgY2hhciogbXNnKQorUmVnaXN0ZXJJRCogVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGE6OmVtaXRUaHJvd0Vycm9yKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgRXJyb3JU
eXBlIGUsIGNvbnN0IGNoYXIqIG1zZykKIHsKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKG1fZGl2b3QsIG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zmc2V0KTsKICAgICBSZWdpc3RlcklE
KiBleGNlcHRpb24gPSBnZW5lcmF0b3IuZW1pdE5ld0Vycm9yKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgZSwganNTdHJpbmcoZ2VuZXJhdG9yLmdsb2JhbEV4ZWMoKSwgbXNnKSk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRUaHJvdyhleGNlcHRpb24pOwogICAgIHJldHVybiBleGNlcHRpb247CiB9CiAK
LVJlZ2lzdGVySUQqIE5vZGU6OmVtaXRUaHJvd0Vycm9yKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgRXJyb3JUeXBlIGUsIGNvbnN0IGNoYXIqIG1zZywgY29uc3QgSWRlbnRpZmllciYgbGFiZWwp
CitSZWdpc3RlcklEKiBUaHJvd2FibGVFeHByZXNzaW9uRGF0YTo6ZW1pdFRocm93RXJyb3IoQ29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBFcnJvclR5cGUgZSwgY29uc3QgY2hhciogbXNnLCBjb25z
dCBJZGVudGlmaWVyJiBsYWJlbCkKIHsKICAgICBVU3RyaW5nIG1lc3NhZ2UgPSBtc2c7CiAgICAg
c3Vic3RpdHV0ZShtZXNzYWdlLCBsYWJlbC51c3RyaW5nKCkpOworICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRPZmZzZXQpOwogICAg
IFJlZ2lzdGVySUQqIGV4Y2VwdGlvbiA9IGdlbmVyYXRvci5lbWl0TmV3RXJyb3IoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCBlLCBqc1N0cmluZyhnZW5lcmF0b3IuZ2xvYmFsRXhlYygpLCBtZXNz
YWdlKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhleGNlcHRpb24pOwogICAgIHJldHVybiBl
eGNlcHRpb247CkBAIC0xODQsNyArMTg2LDYgQEAgU3RhdGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgOiBOb2RlKGdsb2JhbERhdGEpCiAgICAg
LCBtX2xhc3RMaW5lKC0xKQogewotICAgIG1fbGluZSA9IC0xOwogfQogCiB2b2lkIFN0YXRlbWVu
dE5vZGU6OnNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCkBAIC0yODgsNyArMjg5
LDggQEAgUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGxvY2FsKTsK
ICAgICB9Ci0KKyAgICAKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fc3RhcnRP
ZmZzZXQgKyBtX2lkZW50LnNpemUoKSwgbV9pZGVudC5zaXplKCksIDApOwogICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdFJlc29sdmUoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgbV9p
ZGVudCk7CiB9CiAKQEAgLTM3NSw3ICszNzcsNyBAQCBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNz
b3JOb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiB7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0
SGFuZFNpZGUobV9iYXNlLmdldCgpLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBtX3N1YnNj
cmlwdC0+aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJlZ2lzdGVySUQqIHByb3BlcnR5ID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG1fc3Vic2NyaXB0LmdldCgpKTsKLQorICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRPZmZzZXQpOwogICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5KTsKIH0KIApAQCAtMzg0LDYgKzM4Niw3IEBAIFJl
Z2lzdGVySUQqIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCoKIFJlZ2lzdGVySUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1pdENv
ZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVn
aXN0ZXJJRCogYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UuZ2V0KCkpOworICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRP
ZmZzZXQpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgYmFzZSwgbV9pZGVudCk7CiB9CiAKQEAgLTQwMCw2ICs0MDMsNyBA
QCBSZWdpc3RlcklEKiBBcmd1bWVudExpc3ROb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdAogUmVnaXN0ZXJJRCogTmV3RXhwck5vZGU6OmVtaXRD
b2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIFJl
Z2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwci5nZXQoKSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX2Rpdm90LCBtX3N0YXJ0T2Zmc2V0LCBtX2VuZE9m
ZnNldCk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIHIwLCBtX2FyZ3MuZ2V0KCkpOwogfQogCkBAIC00MDgsNDYgKzQx
Miw1MCBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdENvZGUoQ29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogICAgIFJlZ2lzdGVySUQqIGZ1
bmMgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
V2l0aEJhc2UoYmFzZS5nZXQoKSwgZnVuYywgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFs
KTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsRXZhbChnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QsIGJhc2UuZ2V0KCkpLCBmdW5jLCBiYXNlLmdldCgpLCBtX2FyZ3MuZ2V0KCkp
OworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGxFdmFsKGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCwgYmFzZS5nZXQoKSksIGZ1bmMsIGJhc2UuZ2V0KCksIG1fYXJncy5nZXQoKSwg
bV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRPZmZzZXQpOwogfQogCiBSZWdpc3RlcklEKiBG
dW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewogICAgIFJlZ2lzdGVySUQqIGZ1bmMgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9leHByLmdldCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGZ1bmMsIDAsIG1fYXJncy5nZXQoKSk7CisgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
LCBmdW5jLCAwLCBtX2FyZ3MuZ2V0KCksIG1fZGl2b3QsIG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zm
c2V0KTsKIH0KIAogUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRDb2Rl
KENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmIChS
ZWdpc3RlcklEKiBsb2NhbCA9IGdlbmVyYXRvci5yZWdpc3RlckZvckxvY2FsKG1faWRlbnQpKQot
ICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCksIGxvY2FsLCAwLCBtX2FyZ3MuZ2V0KCkpOworICAgICAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGxvY2FsLCAwLCBt
X2FyZ3MuZ2V0KCksIG1fZGl2b3QsIG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zmc2V0KTsKIAogICAg
IGludCBpbmRleCA9IDA7CiAgICAgc2l6ZV90IGRlcHRoID0gMDsKICAgICBpZiAoZ2VuZXJhdG9y
LmZpbmRTY29wZWRQcm9wZXJ0eShtX2lkZW50LCBpbmRleCwgZGVwdGgpICYmIGluZGV4ICE9IG1p
c3NpbmdTeW1ib2xNYXJrZXIoKSkgewogICAgICAgICBSZWdpc3RlcklEKiBmdW5jID0gZ2VuZXJh
dG9yLmVtaXRHZXRTY29wZWRWYXIoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBkZXB0aCwgaW5k
ZXgpOwotICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCksIGZ1bmMsIDAsIG1fYXJncy5nZXQoKSk7CisgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgZnVuYywg
MCwgbV9hcmdzLmdldCgpLCBtX2Rpdm90LCBtX3N0YXJ0T2Zmc2V0LCBtX2VuZE9mZnNldCk7CiAg
ICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCk7CiAgICAgUmVnaXN0ZXJJRCogZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKKyAgICBpbnQgaWRlbnRpZmllclN0YXJ0ID0gbV9kaXZvdCAtIG1fc3RhcnRPZmZzZXQ7
CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhpZGVudGlmaWVyU3RhcnQgKyBtX2lk
ZW50LnNpemUoKSwgbV9pZGVudC5zaXplKCksIDApOwogICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2
ZUZ1bmN0aW9uKGJhc2UuZ2V0KCksIGZ1bmMsIG1faWRlbnQpOwotICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBiYXNlLmdldCgpKSwg
ZnVuYywgYmFzZS5nZXQoKSwgbV9hcmdzLmdldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVt
aXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgYmFzZS5nZXQoKSksIGZ1bmMs
IGJhc2UuZ2V0KCksIG1fYXJncy5nZXQoKSwgbV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRP
ZmZzZXQpOwogfQogCiBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pdENv
ZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlLmdldCgpKTsK
ICAgICBSZWdpc3RlcklEKiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlw
dC5nZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX2Rpdm90IC0gbV9z
dWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIG1fc3RhcnRPZmZzZXQgLSBtX3N1YmV4cHJlc3Npb25E
aXZvdE9mZnNldCwgbV9zdWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKICAgICBSZWdpc3RlcklEKiBm
dW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBiYXNlLmdldCgpLCBwcm9wZXJ0eSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGJhc2UuZ2V0KCkpLCBmdW5jdGlvbiwgYmFz
ZS5nZXQoKSwgbV9hcmdzLmdldCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgYmFzZS5nZXQoKSksIGZ1bmN0aW9uLCBiYXNl
LmdldCgpLCBtX2FyZ3MuZ2V0KCksIG1fZGl2b3QsIG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zmc2V0
KTsKIH0KIAogUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdENvZGUoQ29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlLmdldCgpKTsKKyAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3QgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9m
ZnNldCwgbV9zdGFydE9mZnNldCAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4
cHJlc3Npb25FbmRPZmZzZXQpOwogICAgIFJlZ2lzdGVySUQqIGZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgbV9pZGVu
dCk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QsIGJhc2UuZ2V0KCkpLCBmdW5jdGlvbiwgYmFzZS5nZXQoKSwgbV9hcmdzLmdldCgp
KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCwgYmFzZS5nZXQoKSksIGZ1bmN0aW9uLCBiYXNlLmdldCgpLCBtX2FyZ3MuZ2V0KCks
IG1fZGl2b3QsIG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zmc2V0KTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBvc3RmaXhSZXNvbHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00OTEsNiArNDk5LDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZp
eFJlc29sdmVOb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGQKICAgICAgICAgcmV0dXJuIG9sZFZhbHVlOwogICAgIH0KIAorICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRPZmZzZXQpOwog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVdpdGhC
YXNlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCksIG1faWRlbnQpOwogICAg
IFJlZ2lzdGVySUQqIG9sZFZhbHVlOwpAQCAtNTEwLDYgKzUxOSw4IEBAIFJlZ2lzdGVySUQqIFBv
c3RmaXhCcmFja2V0Tm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9iYXNlLmdldCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQuZ2V0KCkpOworCisgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhtX2Rpdm90IC0gbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIG1f
c3RhcnRPZmZzZXQgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgbV9zdWJleHByZXNzaW9u
RW5kT2Zmc2V0KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJvcGVydHku
Z2V0KCkpOwogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlOwogICAgIGlmIChkc3QgPT0gaWdub3Jl
ZFJlc3VsdCgpKSB7CkBAIC01MjEsNiArNTMyLDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeEJyYWNr
ZXROb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQK
ICAgICB9IGVsc2UgewogICAgICAgICBvbGRWYWx1ZSA9IChtX29wZXJhdG9yID09IE9wUGx1c1Bs
dXMpID8gZ2VuZXJhdG9yLmVtaXRQb3N0SW5jKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCksIHZhbHVlLmdldCgpKSA6IGdlbmVyYXRvci5lbWl0UG9zdERlYyhnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiAgICAgfQorICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRPZmZzZXQpOwogICAg
IGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVl
LmdldCgpKTsKICAgICByZXR1cm4gb2xkVmFsdWU7CiB9CkBAIC01MzAsNiArNTQyLDggQEAgUmVn
aXN0ZXJJRCogUG9zdGZpeEJyYWNrZXROb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGQKIFJlZ2lzdGVySUQqIFBvc3RmaXhEb3ROb2RlOjplbWl0Q29k
ZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UuZ2V0KCkpOwor
CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX2Rpdm90IC0gbV9zdWJleHByZXNz
aW9uRGl2b3RPZmZzZXQsIG1fc3RhcnRPZmZzZXQgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNl
dCwgbV9zdWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFs
dWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNl
LmdldCgpLCBtX2lkZW50KTsKICAgICBSZWdpc3RlcklEKiBvbGRWYWx1ZTsKICAgICBpZiAoZHN0
ID09IGlnbm9yZWRSZXN1bHQoKSkgewpAQCAtNTQxLDYgKzU1NSw3IEBAIFJlZ2lzdGVySUQqIFBv
c3RmaXhEb3ROb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKICAgICB9IGVsc2UgewogICAgICAgICBvbGRWYWx1ZSA9IChtX29wZXJhdG9yID09
IE9wUGx1c1BsdXMpID8gZ2VuZXJhdG9yLmVtaXRQb3N0SW5jKGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCksIHZhbHVlLmdldCgpKSA6IGdlbmVyYXRvci5lbWl0UG9zdERlYyhnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSk7CiAgICAgfQorICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRPZmZz
ZXQpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCB2YWx1
ZS5nZXQoKSk7CiAgICAgcmV0dXJuIG9sZFZhbHVlOwogfQpAQCAtNTU5LDYgKzU3NCw3IEBAIFJl
Z2lzdGVySUQqIERlbGV0ZVJlc29sdmVOb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgaWYgKGdlbmVyYXRvci5yZWdpc3RlckZvckxvY2Fs
KG1faWRlbnQpKQogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCksIGZhbHNlKTsKIAorICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8obV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRPZmZzZXQpOwogICAgIFJlZ2lz
dGVySUQqIGJhc2UgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVCYXNlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgbV9pZGVudCk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RGVsZXRl
QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGJhc2UpLCBiYXNlLCBtX2lkZW50
KTsKIH0KQEAgLTU2OSw2ICs1ODUsOCBAQCBSZWdpc3RlcklEKiBEZWxldGVCcmFja2V0Tm9kZTo6
ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogewogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByMCA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UuZ2V0KCkp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNj
cmlwdC5nZXQoKSk7CisKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3Qs
IG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zmc2V0KTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRE
ZWxldGVCeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCByMC5nZXQoKSwgcjEu
Z2V0KCkpOwogfQogCkBAIC01NzcsNiArNTk1LDggQEAgUmVnaXN0ZXJJRCogRGVsZXRlQnJhY2tl
dE5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMK
IFJlZ2lzdGVySUQqIERlbGV0ZURvdE5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG1fYmFzZS5nZXQoKSk7CisKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKG1fZGl2b3QsIG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zmc2V0KTsKICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXREZWxldGVCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHIw
LCBtX2lkZW50KTsKIH0KIApAQCAtNjU2LDYgKzY3Niw3IEBAIFJlZ2lzdGVySUQqIFByZWZpeFJl
c29sdmVOb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzCiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChk
c3QsIHByb3BEc3QuZ2V0KCkpOzsKICAgICB9CiAKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKG1fZGl2b3QsIG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zmc2V0KTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVdpdGhCYXNl
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcERzdC5nZXQoKSwgbV9pZGVudCk7CiAgICAg
ZW1pdFByZUluY09yRGVjKGdlbmVyYXRvciwgcHJvcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7CkBA
IC02NzAsMTEgKzY5MSwxNCBAQCBSZWdpc3RlcklEKiBQcmVmaXhCcmFja2V0Tm9kZTo6ZW1pdENv
ZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZS5nZXQoKSk7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fc3Vic2Ny
aXB0LmdldCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KTsKKworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
bV9kaXZvdCArIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25TdGFy
dE9mZnNldCwgbV9lbmRPZmZzZXQgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCk7CiAgICAg
UmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCks
IGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKICAgICBpZiAobV9vcGVyYXRvciA9PSBPcFBs
dXNQbHVzKQogICAgICAgICBnZW5lcmF0b3IuZW1pdFByZUluYyh2YWx1ZSk7CiAgICAgZWxzZQog
ICAgICAgICBnZW5lcmF0b3IuZW1pdFByZURlYyh2YWx1ZSk7CisgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhtX2Rpdm90LCBtX3N0YXJ0T2Zmc2V0LCBtX2VuZE9mZnNldCk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUp
OwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHBy
b3BEc3QuZ2V0KCkpOwogfQpAQCAtNjg1LDExICs3MDksMTQgQEAgUmVnaXN0ZXJJRCogUHJlZml4
RG90Tm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
bV9iYXNlLmdldCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KTsKKworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8obV9kaXZvdCArIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25T
dGFydE9mZnNldCwgbV9lbmRPZmZzZXQgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCk7CiAg
ICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQocHJvcERzdC5nZXQo
KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CiAgICAgaWYgKG1fb3BlcmF0b3IgPT0gT3BQbHVzUGx1
cykKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcmVJbmModmFsdWUpOwogICAgIGVsc2UKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcmVEZWModmFsdWUpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8obV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRPZmZzZXQpOwogICAgIGdlbmVy
YXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCB2YWx1ZSk7CiAgICAgcmV0dXJu
IGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7
CiB9CkBAIC03MjUsNiArNzUyLDE0IEBAIFJlZ2lzdGVySUQqIFJldmVyc2VCaW5hcnlPcE5vZGU6
OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcGNvZGUoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMiwgc3JjMS5nZXQoKSk7CiB9CiAKK1JlZ2lzdGVy
SUQqIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBn
ZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV90ZXJtMS5nZXQoKSwgbV9yaWdodEhh
c0Fzc2lnbm1lbnRzLCBtX3Rlcm0yLT5pc1B1cmUoZ2VuZXJhdG9yKSk7CisgICAgUmVnaXN0ZXJJ
RCogc3JjMiA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3Rlcm0yLmdldCgpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3QsIG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zmc2V0
KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcGNvZGUoKSwgZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMik7Cit9
CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCaW5hcnkgTG9naWNhbCBOb2Rl
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIExvZ2ljYWxPcE5v
ZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpA
QCAtODQ2LDggKzg4MSwxMCBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVt
aXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIH0KIAogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
OworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obV9kaXZvdCAtIG1fc3RhcnRPZmZz
ZXQgKyBtX2lkZW50LnNpemUoKSwgbV9pZGVudC5zaXplKCksIDApOwogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlV2l0aEJhc2UoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBzcmMxLmdldCgpLCBtX2lkZW50KTsKICAgICBSZWdpc3RlcklEKiBzcmMy
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fcmlnaHQuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRPZmZzZXQpOwogICAg
IFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3Is
IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCks
IHNyYzIsIG1fb3BlcmF0b3IpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFz
ZS5nZXQoKSwgbV9pZGVudCwgcmVzdWx0KTsKIH0KQEAgLTg3OCw2ICs5MTUsNyBAQCBSZWdpc3Rl
cklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkcwogICAgIGlmIChkc3QgPT0gaWdub3JlZFJlc3VsdCgpKQogICAgICAg
ICBkc3QgPSAwOwogICAgIFJlZ2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRz
dCwgbV9yaWdodC5nZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX2Rp
dm90LCBtX3N0YXJ0T2Zmc2V0LCBtX2VuZE9mZnNldCk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCB2YWx1ZSk7CiB9CiAKQEAgLTg4OCw2ICs5
MjYsNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UuZ2V0KCksIG1fcmln
aHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5kZXN0aW5hdGlvbkZvckFzc2lnblJlc3Vs
dChkc3QpOwogICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZSh2YWx1
ZS5nZXQoKSwgbV9yaWdodC5nZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhtX2Rpdm90LCBtX3N0YXJ0T2Zmc2V0LCBtX2VuZE9mZnNldCk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIHJlc3VsdCk7CiAgICAgcmV0dXJuIGdlbmVy
YXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0KTsKIH0KQEAgLTg5Nyw5
ICs5MzYsMTMgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5
RG90Tm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVG
b3JMZWZ0SGFuZFNpZGUobV9iYXNlLmdldCgpLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmln
aHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKKworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8obV9kaXZvdCAtIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N0YXJ0T2Zmc2V0IC0g
bV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQsIG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CiAgICAgUmVn
aXN0ZXJJRCogY2hhbmdlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fcmlnaHQuZ2V0KCkpOwogICAg
IFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5l
cmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1
ZS5nZXQoKSwgY2hhbmdlLCBtX29wZXJhdG9yKTsKKworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8obV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRPZmZzZXQpOwogICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVl
KTsKIH0KIApAQCAtOTE4LDYgKzk2MSw4IEBAIFJlZ2lzdGVySUQqIEFzc2lnbkJyYWNrZXROb2Rl
OjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhh
bmRTaWRlKG1fc3Vic2NyaXB0LmdldCgpLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQt
PmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5l
cmF0b3IuZGVzdGluYXRpb25Gb3JBc3NpZ25SZXN1bHQoZHN0KTsKICAgICBSZWdpc3RlcklEKiBy
ZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0KCksIG1fcmlnaHQuZ2V0KCkpOwor
CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX2Rpdm90LCBtX3N0YXJ0T2Zmc2V0
LCBtX2VuZE9mZnNldCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBw
cm9wZXJ0eS5nZXQoKSwgcmVzdWx0KTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoZHN0LCByZXN1bHQpOwogfQpAQCAtOTI3LDEwICs5NzIsMTIgQEAgUmVn
aXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVy
YXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UuZ2V0KCksIG1fc3Vic2NyaXB0SGFz
QXNzaWdubWVudHMgfHwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3N1YnNjcmlwdC0+aXNQdXJl
KGdlbmVyYXRvcikgJiYgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZSht
X3N1YnNjcmlwdC5nZXQoKSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUo
Z2VuZXJhdG9yKSk7CiAKKyAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3Qg
LSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgbV9zdGFydE9mZnNldCAtIG1fc3ViZXhwcmVz
c2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQpOwogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0
ZXJJRCogY2hhbmdlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fcmlnaHQuZ2V0KCkpOwogICAgIFJl
Z2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0
b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5n
ZXQoKSwgY2hhbmdlLCBtX29wZXJhdG9yKTsKIAorICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8obV9kaXZvdCwgbV9zdGFydE9mZnNldCwgbV9lbmRPZmZzZXQpOwogICAgIGdlbmVyYXRv
ci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7
CiAKICAgICByZXR1cm4gdXBkYXRlZFZhbHVlOwpAQCAtMTE5NiwxNiArMTI0MywxOSBAQCBGb3JJ
bk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2Rl
KiBsLCBFeHByZXNzaW9uTm9kZQogewogfQogCi1Gb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9k
ZSogaW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCitG
b3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBT
dGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQg
ZW5kT2Zmc2V0KQogICAgIDogU3RhdGVtZW50Tm9kZShnbG9iYWxEYXRhKQogICAgICwgbV9pZGVu
dChpZGVudCkKLSAgICAsIG1fbGV4cHIobmV3IFJlc29sdmVOb2RlKGdsb2JhbERhdGEsIGlkZW50
KSkKKyAgICAsIG1fbGV4cHIobmV3IFJlc29sdmVOb2RlKGdsb2JhbERhdGEsIGlkZW50LCBkaXZv
dCAtIHN0YXJ0T2Zmc2V0KSkKICAgICAsIG1fZXhwcihleHByKQogICAgICwgbV9zdGF0ZW1lbnQo
c3RhdGVtZW50KQogICAgICwgbV9pZGVudElzVmFyRGVjbCh0cnVlKQogewotICAgIGlmIChpbikK
LSAgICAgICAgbV9pbml0ID0gbmV3IEFzc2lnblJlc29sdmVOb2RlKGdsb2JhbERhdGEsIGlkZW50
LCBpbiwgdHJ1ZSk7CisgICAgaWYgKGluKSB7CisgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBu
b2RlID0gbmV3IEFzc2lnblJlc29sdmVOb2RlKGdsb2JhbERhdGEsIGlkZW50LCBpbiwgdHJ1ZSk7
CisgICAgICAgIG5vZGUtPnNldEV4Y2VwdGlvblNvdXJjZVJhbmdlKGRpdm90LCBkaXZvdCAtIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgLSBkaXZvdCk7CisgICAgICAgIG1faW5pdCA9IG5vZGU7Cisg
ICAgfQogICAgIC8vIGZvciggdmFyIGZvbyA9IGJhciBpbiBiYXogKQogfQogCkBAIC0xMjI5LDYg
KzEyNzksOCBAQCBSZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICAgICAgcHJvcGVydHlOYW1lID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByb3RlY3QgPSBwcm9wZXJ0eU5hbWU7CiAgICAgICAgICAgICBSZWdpc3RlcklEKiBiYXNlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlQmFzZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGlkZW50
KTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX2Rpdm90LCBt
X3N0YXJ0T2Zmc2V0LCBtX2VuZE9mZnNldCk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dEJ5SWQoYmFzZSwgaWRlbnQsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
aWYgKG1fbGV4cHItPmlzRG90QWNjZXNzb3JOb2RlKCkpIHsKQEAgLTEyMzcsNiArMTI4OSw4IEBA
IFJlZ2lzdGVySUQqIEZvckluTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgIHByb3BlcnR5TmFtZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RlY3QgPSBwcm9wZXJ0
eU5hbWU7CiAgICAgICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXNz
aWduTm9kZS0+YmFzZSgpKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KG1fZGl2b3QsIG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zmc2V0KTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRCeUlkKGJhc2UsIGlkZW50LCBwcm9wZXJ0eU5hbWUpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVChtX2xleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSk7CkBAIC0xMjQ1
LDYgKzEyOTksOCBAQCBSZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcHJvdGVjdCA9IHByb3BlcnR5TmFtZTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJh
c2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXNzaWduTm9kZS0+YmFzZSgpKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogc3Vic2NyaXB0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFzc2lnbk5vZGUtPnN1YnNj
cmlwdCgpKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3Qs
IG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zmc2V0KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRC
eVZhbChiYXNlLmdldCgpLCBzdWJzY3JpcHQsIHByb3BlcnR5TmFtZSk7CiAgICAgfSAgIAogICAg
IApAQCAtMTMyOSw2ICsxMzg1LDcgQEAgUmVnaXN0ZXJJRCogUmV0dXJuTm9kZTo6ZW1pdENvZGUo
Q29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiBSZWdpc3RlcklEKiBX
aXRoTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG1fZXhwci5nZXQoKSk7IC8vIHNjb3BlIG11c3QgYmUgcHJvdGVjdGVkIHVudGlsIHBvcHBlZAor
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9leHByZXNzaW9uTGVu
Z3RoLCAwKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1c2hTY29wZShzY29wZS5nZXQoKSk7CiAgICAg
UmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQu
Z2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UG9wU2NvcGUoKTsKQEAgLTE0MDksNyArMTQ2Niw3
IEBAIFJlZ2lzdGVySUQqIExhYmVsTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgaWYgKGdlbmVyYXRvci5qdW1wQ29udGV4dEZv
ckJyZWFrKG1fbGFiZWwpKQogICAgICAgICByZXR1cm4gZW1pdFRocm93RXJyb3IoZ2VuZXJhdG9y
LCBTeW50YXhFcnJvciwgIkR1cGxpY2F0ZWQgbGFiZWwgJXMgZm91bmQuIiwgbV9sYWJlbCk7Ci0g
ICAgCisKICAgICBSZWZQdHI8TGFiZWxJRD4gbDAgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAg
ICBtX2xhYmVsU3RhY2sucHVzaChtX2xhYmVsKTsKICAgICBnZW5lcmF0b3IucHVzaEp1bXBDb250
ZXh0KCZtX2xhYmVsU3RhY2ssIDAsIGwwLmdldCgpLCBmYWxzZSk7CkBAIC0xNDI3LDcgKzE0ODQs
OSBAQCBSZWdpc3RlcklEKiBMYWJlbE5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiBSZWdpc3RlcklEKiBUaHJvd05vZGU6OmVtaXRDb2Rl
KENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVy
YXRvci5lbWl0VGhyb3coZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9leHByLmdldCgpKSk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4cHIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4
cHIuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9z
dGFydE9mZnNldCwgbV9lbmRPZmZzZXQpOworICAgIGdlbmVyYXRvci5lbWl0VGhyb3coZXhwci5n
ZXQoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMTUwNiwyMCArMTU2NSwyMiBAQCBTY29w
ZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRz
KiBjaGlsZHJlbiwgVmFyU3RhYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
UHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUHJvZ3JhbU5vZGU6
OlByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNo
aWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgYm9v
bCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUpCitQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0
YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBTb3VyY2VQcm92aWRlciog
c291cmNlUHJvdmlkZXIsIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlKQogICAgIDog
U2NvcGVOb2RlKGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCB1c2Vz
RXZhbCwgbmVlZHNDbG9zdXJlKQorICAgICwgbV9zb3VyY2VQcm92aWRlcihzb3VyY2VQcm92aWRl
cikKIHsKIH0KIAotUHJvZ3JhbU5vZGUqIFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFj
aywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xv
c3VyZSkKK1Byb2dyYW1Ob2RlKiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1
bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBi
b29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSkKIHsKLSAgICByZXR1cm4gbmV3IFByb2dy
YW1Ob2RlKGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCB1c2VzRXZh
bCwgbmVlZHNDbG9zdXJlKTsKKyAgICByZXR1cm4gbmV3IFByb2dyYW1Ob2RlKGdsb2JhbERhdGEs
IGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBzb3VyY2VQcm92aWRlciwgdXNlc0V2YWws
IG5lZWRzQ2xvc3VyZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBF
dmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FdmFsTm9kZTo6RXZhbE5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZh
clN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBib29sIHVzZXNFdmFs
LCBib29sIG5lZWRzQ2xvc3VyZSkKK0V2YWxOb2RlOjpFdmFsTm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBG
dW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwg
Ym9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUpCiAgICAgOiBTY29wZU5vZGUoZ2xvYmFs
RGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNFdmFsLCBuZWVkc0Nsb3N1
cmUpCisgICAgLCBtX3NvdXJjZVByb3ZpZGVyKHNvdXJjZVByb3ZpZGVyKQogewogfQogCkBAIC0x
NTQyLDE2ICsxNjAzLDE2IEBAIHZvaWQgRXZhbE5vZGU6OmdlbmVyYXRlQ29kZShTY29wZUNoYWlu
Tm9kZSogc2MpCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlQ2hhaW4u
Z2xvYmFsT2JqZWN0KCk7CiAKICAgICBTeW1ib2xUYWJsZSBzeW1ib2xUYWJsZTsKLQotICAgIG1f
Y29kZS5zZXQobmV3IEV2YWxDb2RlQmxvY2sodGhpcywgZ2xvYmFsT2JqZWN0KSk7CisgICAgQVNT
RVJUKG1fc291cmNlUHJvdmlkZXIpOworICAgIG1fY29kZS5zZXQobmV3IEV2YWxDb2RlQmxvY2so
dGhpcywgZ2xvYmFsT2JqZWN0LCBtX3NvdXJjZVByb3ZpZGVyKSk7CiAKICAgICBDb2RlR2VuZXJh
dG9yIGdlbmVyYXRvcih0aGlzLCBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCksIHNjb3BlQ2hhaW4s
ICZzeW1ib2xUYWJsZSwgbV9jb2RlLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZ2VuZXJhdGUoKTsK
IH0KIAotRXZhbE5vZGUqIEV2YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25T
dGFjayogZnVuY1N0YWNrLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSkKK0V2YWxO
b2RlKiBFdmFsTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU291cmNlRWxl
bWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNT
dGFjaywgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBib29sIHVzZXNFdmFsLCBib29s
IG5lZWRzQ2xvc3VyZSkKIHsKLSAgICByZXR1cm4gbmV3IEV2YWxOb2RlKGdsb2JhbERhdGEsIGNo
aWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCB1c2VzRXZhbCwgbmVlZHNDbG9zdXJlKTsKKyAg
ICByZXR1cm4gbmV3IEV2YWxOb2RlKGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVu
Y1N0YWNrLCBzb3VyY2VQcm92aWRlciwgdXNlc0V2YWwsIG5lZWRzQ2xvc3VyZSk7CiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkJvZHlOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNTcyLDEyICsxNjMzLDE4IEBAIEZ1bmN0aW9uQm9k
eU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IFNvdXJjZUVsZW1lCiAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEs
IGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCB1c2VzRXZhbCwgbmVlZHNDbG9zdXJlKTsK
IH0KIAorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFy
U3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgU291cmNlUHJvdmlkZXIqLCBib29sIHVz
ZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSkKK3sKKyAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9k
eU5vZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNFdmFs
LCBuZWVkc0Nsb3N1cmUpOworfQorCiB2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmdlbmVyYXRlQ29k
ZShTY29wZUNoYWluTm9kZSogc2MpCiB7CiAgICAgU2NvcGVDaGFpbiBzY29wZUNoYWluKHNjKTsK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGVDaGFpbi5nbG9iYWxPYmpl
Y3QoKTsKIAotICAgIG1fY29kZS5zZXQobmV3IENvZGVCbG9jayh0aGlzLCBGdW5jdGlvbkNvZGUp
KTsKKyAgICBBU1NFUlQobV9zb3VyY2Uuc291cmNlUHJvdmlkZXIoKSk7CisgICAgbV9jb2RlLnNl
dChuZXcgQ29kZUJsb2NrKHRoaXMsIEZ1bmN0aW9uQ29kZSwgbV9zb3VyY2Uuc291cmNlUHJvdmlk
ZXIoKSwgbV9zb3VyY2Uuc3RhcnRPZmZzZXQoKSkpOwogCiAgICAgQ29kZUdlbmVyYXRvciBnZW5l
cmF0b3IodGhpcywgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLCBzY29wZUNoYWluLCAmbV9zeW1i
b2xUYWJsZSwgbV9jb2RlLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZ2VuZXJhdGUoKTsKQEAgLTE2
MTMsNyArMTY4MCw4IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OmdlbmVyYXRlQ29kZShTY29wZUNoYWlu
Tm9kZSogc2MpCiAgICAgU2NvcGVDaGFpbiBzY29wZUNoYWluKHNjKTsKICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGVDaGFpbi5nbG9iYWxPYmplY3QoKTsKICAgICAKLSAg
ICBtX2NvZGUuc2V0KG5ldyBQcm9ncmFtQ29kZUJsb2NrKHRoaXMsIEdsb2JhbENvZGUsIGdsb2Jh
bE9iamVjdCkpOworICAgIEFTU0VSVChtX3NvdXJjZVByb3ZpZGVyKTsKKyAgICBtX2NvZGUuc2V0
KG5ldyBQcm9ncmFtQ29kZUJsb2NrKHRoaXMsIEdsb2JhbENvZGUsIGdsb2JhbE9iamVjdCwgbV9z
b3VyY2VQcm92aWRlcikpOwogICAgIAogICAgIENvZGVHZW5lcmF0b3IgZ2VuZXJhdG9yKHRoaXMs
IGdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSwgc2NvcGVDaGFpbiwgJmdsb2JhbE9iamVjdC0+c3lt
Ym9sVGFibGUoKSwgbV9jb2RlLmdldCgpLCBtX3ZhclN0YWNrLCBtX2Z1bmN0aW9uU3RhY2spOwog
ICAgIGdlbmVyYXRvci5nZW5lcmF0ZSgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pz
L25vZGVzLmggYi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAppbmRleCA5NzcwZThlLi44MzFk
OTU1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ranMvbm9kZXMuaApAQCAtMTc1LDcgKzE3NSw3IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgICB9IC8vIEZJWE1FOiBNYWtlIHRoaXMgcHVyZSB2aXJ0dWFsLgogCiAgICAgICAgIFVT
dHJpbmcgdG9TdHJpbmcoKSBjb25zdCBLSlNfRkFTVF9DQUxMOwotICAgICAgICBpbnQgbGluZU5v
KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX2xpbmU7IH0KKyAgICAgICAgaW50IGxp
bmVObygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZTsgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1JldHVybk5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAg
LTE4Nyw5ICsxODcsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IE5vZGUoSlNHbG9iYWxEYXRhKiwgSlNUeXBlKSBLSlNfRkFTVF9DQUxMOyAvLyB1c2VkIGJ5IEV4
cHJlc3Npb25Ob2RlCiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRocm93RXJyb3IoQ29kZUdl
bmVyYXRvciYsIEVycm9yVHlwZSwgY29uc3QgY2hhciogbXNnKTsKLSAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFRocm93RXJyb3IoQ29kZUdlbmVyYXRvciYsIEVycm9yVHlwZSwgY29uc3QgY2hhciog
bXNnLCBjb25zdCBJZGVudGlmaWVyJik7Ci0KICAgICAgICAgaW50IG1fbGluZSA6IDI4OwogICAg
ICAgICB1bnNpZ25lZCBtX2V4cGVjdGVkUmV0dXJuVHlwZSA6IDM7IC8vIEpTVHlwZQogICAgIH07
CkBAIC0zMTgsOCArMzE1LDEwMSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBwcml2YXRlOgogICAg
ICAgICBVU3RyaW5nIG1fdmFsdWU7CiAgICAgfTsKKyAgICAKKyAgICBjbGFzcyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CisgICAgcHVibGljOgorICAgICAgICBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSgpCisgICAgICAgICAgICA6IG1fZGl2b3QoLTEpCisgICAgICAgICAgICAsIG1fc3RhcnRP
ZmZzZXQoLTEpCisgICAgICAgICAgICAsIG1fZW5kT2Zmc2V0KC0xKQorICAgICAgICB7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICAgICAgOiBtX2Rpdm90KGRpdm90KQorICAgICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0
T2Zmc2V0KQorICAgICAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCisgICAgICAgIHsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRFeGNlcHRpb25Tb3VyY2VSYW5n
ZSh1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9kaXZvdCA9IGRpdm90OworICAgICAgICAgICAg
bV9zdGFydE9mZnNldCA9IHN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgbV9lbmRPZmZzZXQgPSBl
bmRPZmZzZXQ7CisgICAgICAgIH0KKworICAgICAgICB1aW50MzJfdCBkaXZvdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGl2b3Q7IH0KKyAgICAgICAgdWludDE2X3Qgc3RhcnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9CisgICAgICAgIHVpbnQxNl90IGVuZE9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRUaHJvd0Vycm9yKENvZGVHZW5lcmF0b3ImLCBFcnJvclR5cGUsIGNvbnN0
IGNoYXIqIG1zZyk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUaHJvd0Vycm9yKENvZGVHZW5l
cmF0b3ImLCBFcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1zZywgY29uc3QgSWRlbnRpZmllciYpOwor
ICAgICAgICB1aW50MzJfdCBtX2Rpdm90OworICAgICAgICB1aW50MTZfdCBtX3N0YXJ0T2Zmc2V0
OworICAgICAgICB1aW50MTZfdCBtX2VuZE9mZnNldDsKKyAgICB9OworCisgICAgY2xhc3MgVGhy
b3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgOiBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
eworICAgIHB1YmxpYzoKKyAgICAgICAgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoKQorICAg
ICAgICAgICAgOiBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSgpCisgICAgICAgICAgICAsIG1fc3Vi
ZXhwcmVzc2lvbkRpdm90T2Zmc2V0KDApCisgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvbkVu
ZE9mZnNldCgwKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBUaHJvd2FibGVTdWJF
eHByZXNzaW9uRGF0YSh1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKKyAgICAgICAgICAgIDogVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lv
bkRpdm90T2Zmc2V0KDApCisgICAgICAgICAgICAsIG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCgw
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNldFN1YmV4cHJlc3Npb25J
bmZvKHVpbnQzMl90IHN1YmV4cHJlc3Npb25EaXZvdCwgdWludDE2X3Qgc3ViZXhwcmVzc2lvbk9m
ZnNldCkgeworICAgICAgICAgICAgQVNTRVJUKHN1YmV4cHJlc3Npb25EaXZvdCA8PSBtX2Rpdm90
KTsKKyAgICAgICAgICAgIGlmICgobV9kaXZvdCAtIHN1YmV4cHJlc3Npb25EaXZvdCkgJiB+MHhG
RkZGKSAvLyBPdmVyZmxvdyBtZWFucyB3ZSBjYW4ndCBkbyB0aGlzIHNhZmVseSwgc28ganVzdCBw
b2ludCBhdCB0aGUgcHJpbWFyeSBkaXZvdAorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0ID0gbV9kaXZvdCAtIHN1YmV4cHJlc3Np
b25EaXZvdDsKKyAgICAgICAgICAgIG1fc3ViZXhwcmVzc2lvbkVuZE9mZnNldCA9IHN1YmV4cHJl
c3Npb25PZmZzZXQ7CisgICAgICAgIH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdWludDE2
X3QgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQ7CisgICAgICAgIHVpbnQxNl90IG1fc3ViZXhw
cmVzc2lvbkVuZE9mZnNldDsKKyAgICB9OworICAgIAorICAgIGNsYXNzIFRocm93YWJsZVByZWZp
eGVkU3ViRXhwcmVzc2lvbkRhdGEgOiBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YSgp
CisgICAgICAgICAgICA6IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKCkKKyAgICAgICAgICAgICwg
bV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQoMCkKKyAgICAgICAgICAgICwgbV9zdWJleHByZXNz
aW9uU3RhcnRPZmZzZXQoMCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgVGhyb3dh
YmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YSh1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgICAgIDogVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgICAgICAgICAs
IG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0KDApCisgICAgICAgICAgICAsIG1fc3ViZXhwcmVz
c2lvblN0YXJ0T2Zmc2V0KDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
c2V0U3ViZXhwcmVzc2lvbkluZm8odWludDMyX3Qgc3ViZXhwcmVzc2lvbkRpdm90LCB1aW50MTZf
dCBzdWJleHByZXNzaW9uT2Zmc2V0KSB7CisgICAgICAgICAgICBBU1NFUlQoc3ViZXhwcmVzc2lv
bkRpdm90ID49IG1fZGl2b3QpOworICAgICAgICAgICAgaWYgKChzdWJleHByZXNzaW9uRGl2b3Qg
LSBtX2Rpdm90KSAmIH4weEZGRkYpIC8vIE92ZXJmbG93IG1lYW5zIHdlIGNhbid0IGRvIHRoaXMg
c2FmZWx5LCBzbyBqdXN0IHBvaW50IGF0IHRoZSBwcmltYXJ5IGRpdm90CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgbV9zdWJleHByZXNzaW9uRGl2b3RPZmZzZXQgPSBzdWJl
eHByZXNzaW9uRGl2b3QgLSBtX2Rpdm90OworICAgICAgICAgICAgbV9zdWJleHByZXNzaW9uU3Rh
cnRPZmZzZXQgPSBzdWJleHByZXNzaW9uT2Zmc2V0OworICAgICAgICB9CisKKyAgICBwcm90ZWN0
ZWQ6CisgICAgICAgIHVpbnQxNl90IG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0OworICAgICAg
ICB1aW50MTZfdCBtX3N1YmV4cHJlc3Npb25TdGFydE9mZnNldDsKKyAgICB9OwogCi0gICAgY2xh
c3MgUmVnRXhwTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgUmVnRXhw
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlZ0V4cE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBVU3RyaW5nJiBmbGFncykgS0pT
X0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQpAQCAt
MzUxLDkgKzQ0MSwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgIGNsYXNzIFJlc29sdmVOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlc29sdmVO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIEtK
U19GQVNUX0NBTEwKKyAgICAgICAgUmVzb2x2ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IHN0YXJ0T2Zmc2V0KSBLSlNfRkFTVF9DQUxM
CiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAs
IG1faWRlbnQoaWRlbnQpCisgICAgICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQp
CiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC0zNjksOCArNDYwLDggQEAgbmFtZXNwYWNlIEtK
UyB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKLSAgICAg
ICAgaW50IG1faW5kZXg7IC8vIFVzZWQgYnkgTG9jYWxWYXJBY2Nlc3NOb2RlIGFuZCBTY29wZWRW
YXJBY2Nlc3NOb2RlLgotICAgICAgICBzaXplX3QgbV9zY29wZURlcHRoOyAvLyBVc2VkIGJ5IFNj
b3BlZFZhckFjY2Vzc05vZGUKKyAgICAgICAgaW50MzJfdCBtX3N0YXJ0T2Zmc2V0OworICAgICAg
ICAKICAgICB9OwogCiAgICAgY2xhc3MgRWxlbWVudE5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC01
MTMsOCArNjA0LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVm
UHRyPFByb3BlcnR5TGlzdE5vZGU+IG1fbGlzdDsKICAgICB9OwotCi0gICAgY2xhc3MgQnJhY2tl
dEFjY2Vzc29yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgCisgICAgY2xhc3Mg
QnJhY2tldEFjY2Vzc29yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nv
ck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhw
cmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cykgS0pT
X0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQpAQCAt
NTQwLDcgKzYzMSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBib29sIG1fc3Vic2NyaXB0
SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKICAgICAgICAgRG90QWNjZXNzb3JOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBLSlNfRkFTVF9D
QUxMCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCkBAIC02MDcsNyAr
Njk4LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIFJlZlB0cjxBcmd1bWVudExpc3ROb2Rl
PiBtX2xpc3ROb2RlOwogICAgIH07CiAKLSAgICBjbGFzcyBOZXdFeHByTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgTmV3RXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAg
ICAgICBOZXdFeHByTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByKSBLSlNfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2Jh
bERhdGEpCkBAIC02MzIsMTAgKzcyMywxMSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgUmVm
UHRyPEFyZ3VtZW50c05vZGU+IG1fYXJnczsKICAgICB9OwogCi0gICAgY2xhc3MgRXZhbEZ1bmN0
aW9uQ2FsbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEV2YWxGdW5j
dGlvbkNhbGxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBBcmd1bWVudHNOb2RlKiBhcmdzKSBLSlNfRkFTVF9D
QUxMCisgICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKKyAgICAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fYXJn
cyhhcmdzKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTY0OCwxMCArNzQwLDExIEBAIG5hbWVz
cGFjZSBLSlMgewogICAgICAgICBSZWZQdHI8QXJndW1lbnRzTm9kZT4gbV9hcmdzOwogICAgIH07
CiAKLSAgICBjbGFzcyBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUgeworICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzKSBLSlNfRkFTVF9DQUxMCisgICAg
ICAgIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAogICAg
ICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQorICAgICAgICAgICAgLCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAg
ICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgICAg
ICB7CkBAIC02NjYsMTAgKzc1OSwxMSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgUmVmUHRy
PEFyZ3VtZW50c05vZGU+IG1fYXJnczsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY3Rpb25DYWxs
UmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEZ1bmN0aW9u
Q2FsbFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2
ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
QXJndW1lbnRzTm9kZSogYXJncykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBGdW5jdGlvbkNhbGxS
ZXNvbHZlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQorICAgICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9p
ZGVudChpZGVudCkKICAgICAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgICAgIHsKQEAgLTY4
NywxMCArNzgxLDExIEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBzaXplX3QgbV9zY29wZURl
cHRoOyAvLyBVc2VkIGJ5IFNjb3BlZFZhckZ1bmN0aW9uQ2FsbE5vZGUgYW5kIE5vbkxvY2FsVmFy
RnVuY3Rpb25DYWxsTm9kZQogICAgIH07CiAgICAgCi0gICAgY2xhc3MgRnVuY3Rpb25DYWxsQnJh
Y2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEZ1bmN0aW9uQ2Fs
bEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsQnJhY2tl
dE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhw
cmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSogYXJncykgS0pTX0ZBU1RfQ0FM
TAorICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1
bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShnbG9iYWxEYXRhKQorICAgICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9iYXNlKGJh
c2UpCiAgICAgICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKICAgICAgICAgICAgICwg
bV9hcmdzKGFyZ3MpCkBAIC03MDcsMTAgKzgwMiwxMSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
ICAgUmVmUHRyPEFyZ3VtZW50c05vZGU+IG1fYXJnczsKICAgICB9OwogCi0gICAgY2xhc3MgRnVu
Y3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgRnVu
Y3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbERv
dE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MpIEtKU19GQVNUX0NBTEwK
KyAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9k
ZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpIEtKU19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xv
YmFsRGF0YSkKKyAgICAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fYmFzZShiYXNlKQogICAg
ICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAgICAgLCBtX2FyZ3MoYXJncykKQEAg
LTcyNywyMyArODIzLDIzIEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBSZWZQdHI8QXJndW1l
bnRzTm9kZT4gbV9hcmdzOwogICAgIH07CiAKLSAgICBjbGFzcyBQcmVQb3N0UmVzb2x2ZU5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFByZVBvc3RSZXNvbHZlTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFByZVBvc3RSZXNvbHZlTm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBLSlNfRkFTVF9DQUxMCisgICAgICAg
IFByZVBvc3RSZXNvbHZlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShnbG9iYWxEYXRhLCBOdW1iZXJUeXBlKQorICAgICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9p
ZGVudChpZGVudCkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIElkZW50aWZpZXIgbV9pZGVudDsKLSAgICAgICAgc2l6ZV90IG1faW5kZXg7IC8vIFVzZWQg
YnkgTG9jYWxWYXJQb3N0Zml4Tm9kZS4KICAgICB9OwogCiAgICAgY2xhc3MgUG9zdGZpeFJlc29s
dmVOb2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBQb3N0Zml4UmVzb2x2ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlcikgS0pTX0ZBU1RfQ0FMTAotICAgICAgICAgICAg
OiBQcmVQb3N0UmVzb2x2ZU5vZGUoZ2xvYmFsRGF0YSwgaWRlbnQpCisgICAgICAgIFBvc3RmaXhS
ZXNvbHZlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAorICAgICAgICAgICAgOiBQcmVQb3N0
UmVzb2x2ZU5vZGUoZ2xvYmFsRGF0YSwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KQogICAgICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgICAgIHsKICAgICAgICAg
fQpAQCAtNzU2LDEwICs4NTIsMTEgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIE9wZXJhdG9y
IG1fb3BlcmF0b3I7CiAgICAgfTsKIAotICAgIGNsYXNzIFBvc3RmaXhCcmFja2V0Tm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgUG9zdGZpeEJyYWNrZXROb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IE9wZXJhdG9yIG9wZXIpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgUG9zdGZpeEJyYWNrZXROb2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Np
b25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBLSlNfRkFTVF9DQUxMCiAgICAgICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCisgICAgICAgICAgICAsIFRocm93YWJs
ZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAg
ICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0
KQogICAgICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCkBAIC03NzYsMTAgKzg3MywxMSBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICAgICAgT3BlcmF0b3IgbV9vcGVyYXRvcjsKICAgICB9OwogCi0g
ICAgY2xhc3MgUG9zdGZpeERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNs
YXNzIFBvc3RmaXhEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dh
YmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZpeERvdE5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIpIEtKU19GQVNUX0NBTEwKKyAgICAgICAg
UG9zdGZpeERvdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBLSlNfRkFTVF9D
QUxMCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCisgICAgICAgICAg
ICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KQogICAgICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQpAQCAtNzk2LDEwICs4OTQsMTEg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIE9wZXJhdG9yIG1fb3BlcmF0b3I7CiAgICAgfTsK
IAotICAgIGNsYXNzIFBvc3RmaXhFcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewor
ICAgIGNsYXNzIFBvc3RmaXhFcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQb3N0
Zml4RXJyb3JOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIsIE9wZXJhdG9yIG9wZXIpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgUG9zdGZpeEVycm9yTm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRv
ciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9i
YWxEYXRhKQorICAgICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAg
ICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICAgICAgewpAQCAtODE0LDEwICs5MTMsMTEg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIE9wZXJhdG9yIG1fb3BlcmF0b3I7CiAgICAgfTsK
IAotICAgIGNsYXNzIERlbGV0ZVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsK
KyAgICBjbGFzcyBEZWxldGVSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVi
bGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0
ZVJlc29sdmVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgRGVsZXRlUmVzb2x2ZU5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEwK
ICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKKyAgICAgICAgICAgICwg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAg
ICAgICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtODMx
LDEwICs5MzEsMTEgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVu
dDsKICAgICB9OwogCi0gICAgY2xhc3MgRGVsZXRlQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUgeworICAgIGNsYXNzIERlbGV0ZUJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRGVsZXRlQnJhY2tldE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCkgS0pTX0ZBU1RfQ0FMTAor
ICAgICAgICBEZWxldGVCcmFja2V0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FM
TAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQorICAgICAgICAgICAg
LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
ICAgICAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICAgICAsIG1fc3Vic2NyaXB0KHN1
YnNjcmlwdCkKICAgICAgICAgewpAQCAtODUwLDEwICs5NTEsMTEgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV9zdWJzY3JpcHQ7CiAgICAgfTsKIAot
ICAgIGNsYXNzIERlbGV0ZURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNs
YXNzIERlbGV0ZURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVEb3ROb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIERlbGV0ZURvdE5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KSBLSlNfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGds
b2JhbERhdGEpCisgICAgICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBz
dGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAg
ICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgewpAQCAtOTQyLDggKzEwNDQsOCBAQCBu
YW1lc3BhY2UgS0pTIHsKIAogICAgIGNsYXNzIFByZWZpeFJlc29sdmVOb2RlIDogcHVibGljIFBy
ZVBvc3RSZXNvbHZlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhSZXNvbHZlTm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVy
YXRvciBvcGVyKSBLSlNfRkFTVF9DQUxMCi0gICAgICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9k
ZShnbG9iYWxEYXRhLCBpZGVudCkKKyAgICAgICAgUHJlZml4UmVzb2x2ZU5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3Blciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
IEtKU19GQVNUX0NBTEwKKyAgICAgICAgICAgIDogUHJlUG9zdFJlc29sdmVOb2RlKGdsb2JhbERh
dGEsIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwg
bV9vcGVyYXRvcihvcGVyKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTk1NywxMCArMTA1OSwx
MSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgT3BlcmF0b3IgbV9vcGVyYXRvcjsKICAgICB9
OwogCi0gICAgY2xhc3MgUHJlZml4QnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUg
eworICAgIGNsYXNzIFByZWZpeEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBw
dWJsaWMgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgot
ICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVy
KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFByZWZpeEJyYWNrZXROb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KSBLSlNfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGdsb2JhbERhdGEpCisgICAgICAgICAgICAsIFRocm93YWJsZVByZWZpeGVkU3ViRXhw
cmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAs
IG1fYmFzZShiYXNlKQogICAgICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAgICAg
ICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKQEAgLTk3NywxMCArMTA4MCwxMSBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgICAgT3BlcmF0b3IgbV9vcGVyYXRvcjsKICAgICB9OwogCi0gICAgY2xh
c3MgUHJlZml4RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgUHJl
Zml4RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZp
eGVkU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4RG90Tm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlcikgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBQ
cmVmaXhEb3ROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FM
TAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQorICAgICAgICAgICAg
LCBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQogICAgICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgICAgICwgbV9p
ZGVudChpZGVudCkKICAgICAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQpAQCAtOTk3LDEwICsx
MTAxLDExIEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBPcGVyYXRvciBtX29wZXJhdG9yOwog
ICAgIH07CiAKLSAgICBjbGFzcyBQcmVmaXhFcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUgeworICAgIGNsYXNzIFByZWZpeEVycm9yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBy
ZWZpeEVycm9yTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBPcGVyYXRvciBvcGVyKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFByZWZpeEVycm9yTm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRv
ciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9i
YWxEYXRhKQorICAgICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAg
ICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICAgICAgewpAQCAtMTI4MiwxMCArMTM4NywyMyBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2Uo
KSBjb25zdCB7IHJldHVybiBQcmVjUmVsYXRpb25hbDsgfQogICAgIH07CiAKLSAgICBjbGFzcyBJ
bnN0YW5jZU9mTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgeworICAgIGNsYXNzIFRocm93YWJs
ZUJpbmFyeU9wTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSB7CisgICAgcHVibGljOgorICAgICAgICBUaHJvd2FibGVCaW5hcnlPcE5vZGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU1R5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIHRl
cm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pT
X0ZBU1RfQ0FMTAorICAgICAgICAgICAgOiBCaW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwgdHlwZSwg
dGVybTEsIHRlcm0yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICB7CisgICAgICAgIH0K
KyAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
RXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICAgICAgOiBCaW5hcnlPcE5vZGUo
Z2xvYmFsRGF0YSwgdGVybTEsIHRlcm0yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICB7
CisgICAgICAgIH0KKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOworICAgIH07CisgICAgCisg
ICAgY2xhc3MgSW5zdGFuY2VPZk5vZGUgOiBwdWJsaWMgVGhyb3dhYmxlQmluYXJ5T3BOb2RlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIEluc3RhbmNlT2ZOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAotICAgICAgICAgICAgOiBCaW5hcnlP
cE5vZGUoZ2xvYmFsRGF0YSwgQm9vbGVhblR5cGUsIHRlcm0xLCB0ZXJtMiwgcmlnaHRIYXNBc3Np
Z25tZW50cykKKyAgICAgICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEs
IEJvb2xlYW5UeXBlLCB0ZXJtMSwgdGVybTIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgICAg
IHsKICAgICAgICAgfQogCkBAIC0xMjk0LDEwICsxNDEyLDEwIEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFBy
ZWNSZWxhdGlvbmFsOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIEluTm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUgeworICAgIGNsYXNzIEluTm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5v
ZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgSW5Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAotICAgICAgICAgICAgOiBCaW5hcnlPcE5v
ZGUoZ2xvYmFsRGF0YSwgdGVybTEsIHRlcm0yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwgdGVybTEsIHRlcm0yLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtMTQzNiwxMCAr
MTU1NCwxMSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2Rl
PiBtX2V4cHIyOwogICAgIH07CiAKLSAgICBjbGFzcyBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHBy
ZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19GQVNUX0NB
TEwKKyAgICAgICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2Rl
KiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEwKICAgICAg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKKyAgICAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAg
ICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAg
ICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKQEAgLTE0NjAsNyArMTU3OSw3IEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7CiAgICAgfTsK
IAotICAgIGNsYXNzIEFzc2lnblJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsK
KyAgICBjbGFzcyBBc3NpZ25SZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVi
bGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEFzc2ln
blJlc29sdmVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKSBL
SlNfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCkBA
IC0xNDgyLDEwICsxNjAxLDExIEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBib29sIG1fcmln
aHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgUmVhZE1vZGlmeUJyYWNrZXRO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBSZWFkTW9kaWZ5QnJhY2tl
dE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19G
QVNUX0NBTEwKKyAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNB
c3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAogICAg
ICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQorICAgICAgICAgICAgLCBUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAg
ICAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNj
cmlwdCkKICAgICAgICAgICAgICwgbV9yaWdodChyaWdodCkKQEAgLTE1MDksMTAgKzE2MjksMTEg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzIDog
MTsKICAgICB9OwogCi0gICAgY2xhc3MgQXNzaWduQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUgeworICAgIGNsYXNzIEFzc2lnbkJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgQXNzaWduQnJhY2tldE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgQXNzaWduQnJhY2tldE5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1
YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1l
bnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBLSlNfRkFTVF9DQUxMCiAgICAgICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCisgICAgICAgICAgICAsIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAgICAg
LCBtX2Jhc2UoYmFzZSkKICAgICAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQogICAg
ICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQpAQCAtMTUzNCwxMCArMTY1NSwxMSBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHMgOiAxOwogICAgIH07
CiAKLSAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAg
ICBjbGFzcyBBc3NpZ25Eb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduRG90Tm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgQXNzaWduRG90Tm9kZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBL
SlNfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCisg
ICAgICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQogICAgICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgICAgICwgbV9p
ZGVudChpZGVudCkKICAgICAgICAgICAgICwgbV9yaWdodChyaWdodCkKQEAgLTE1NTYsMTAgKzE2
NzgsMTEgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1l
bnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGlj
OgotICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3Bl
ciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19G
QVNUX0NBTEwKKyAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJh
dG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRh
KQorICAgICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICAg
ICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICAgICAsIG1fcmlnaHQocmlnaHQpCkBAIC0xNTgx
LDEwICsxNzA0LDExIEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBib29sIG1fcmlnaHRIYXNB
c3NpZ25tZW50cyA6IDE7CiAgICAgfTsKIAotICAgIGNsYXNzIEFzc2lnbkVycm9yTm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgQXNzaWduRXJyb3JOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgQXNzaWduRXJyb3JOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
RXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCkgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBBc3NpZ25FcnJvck5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShnbG9iYWxEYXRhKQorICAgICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9sZWZ0KGxlZnQpCiAg
ICAgICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICAgICAgICAgICwgbV9yaWdodChyaWdo
dCkKQEAgLTE4MzYsMTAgKzE5NjAsMTAgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIGJvb2wg
bV9leHByMVdhc1ZhckRlY2w7CiAgICAgfTsKIAotICAgIGNsYXNzIEZvckluTm9kZSA6IHB1Ymxp
YyBTdGF0ZW1lbnROb2RlIHsKKyAgICBjbGFzcyBGb3JJbk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25O
b2RlKiwgU3RhdGVtZW50Tm9kZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIEZvckluTm9kZShK
U0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNz
aW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKSBLSlNfRkFTVF9DQUxMOworICAgICAgICBGb3JJbk5v
ZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhw
cmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQs
IGludCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEw7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtK
U19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMOwpAQCAtMTg1Myw3ICsxOTc3LDcgQEAgbmFtZXNwYWNlIEtK
UyB7CiAgICAgICAgIGJvb2wgbV9pZGVudElzVmFyRGVjbDsKICAgICB9OwogCi0gICAgY2xhc3Mg
Q29udGludWVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIGNsYXNzIENvbnRpbnVl
Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKICAgICAgICAgQ29udGludWVOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGdsb2Jh
bERhdGEpCkBAIC0xODczLDcgKzE5OTcsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgSWRl
bnRpZmllciBtX2lkZW50OwogICAgIH07CiAKLSAgICBjbGFzcyBCcmVha05vZGUgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7CisgICAgY2xhc3MgQnJlYWtOb2RlIDogcHVibGljIFN0YXRlbWVudE5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAg
ICBCcmVha05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKSBLSlNfRkFTVF9DQUxMCiAgICAg
ICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0YSkKQEAgLTE4OTMsNyArMjAxNyw3IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CiAgICAgfTsKIAot
ICAgIGNsYXNzIFJldHVybk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CisgICAgY2xhc3Mg
UmV0dXJuTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgewogICAgIHB1YmxpYzoKICAgICAgICAgUmV0dXJuTm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSkgS0pTX0ZBU1RfQ0FMTAogICAgICAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGdsb2JhbERhdGEpCkBAIC0xOTExLDEwICsyMDM1LDEyIEBA
IG5hbWVzcGFjZSBLSlMgewogCiAgICAgY2xhc3MgV2l0aE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBXaXRoTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpIEtK
U19GQVNUX0NBTEwKKyAgICAgICAgV2l0aE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJfdCBk
aXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG1fZXhwcihleHBy
KQogICAgICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCisgICAgICAgICAgICAsIG1f
ZGl2b3QoZGl2b3QpCisgICAgICAgICAgICAsIG1fZXhwcmVzc2lvbkxlbmd0aChleHByZXNzaW9u
TGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtMTkyNCw5ICsyMDUwLDExIEBAIG5h
bWVzcGFjZSBLSlMgewogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9k
ZT4gbV9leHByOwogICAgICAgICBSZWZQdHI8U3RhdGVtZW50Tm9kZT4gbV9zdGF0ZW1lbnQ7Cisg
ICAgICAgIHVpbnQzMl90IG1fZGl2b3Q7CisgICAgICAgIHVpbnQzMl90IG1fZXhwcmVzc2lvbkxl
bmd0aDsKICAgICB9OwogCi0gICAgY2xhc3MgTGFiZWxOb2RlIDogcHVibGljIFN0YXRlbWVudE5v
ZGUgeworICAgIGNsYXNzIExhYmVsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKICAgICAgICAgTGFiZWxOb2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbGFiZWwsIFN0YXRl
bWVudE5vZGUqIHN0YXRlbWVudCkgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGdsb2JhbERhdGEpCkBAIC0xOTQ0LDcgKzIwNzIsNyBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgICAgUmVmUHRyPFN0YXRlbWVudE5vZGU+IG1fc3RhdGVtZW50OwogICAgIH07CiAKLSAg
ICBjbGFzcyBUaHJvd05vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CisgICAgY2xhc3MgVGhy
b3dOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBUaHJvd05vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcikgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGdsb2JhbERhdGEpCkBAIC0yMDIyLDcgKzIxNTAsNyBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgICAgCiAgICAgICAgIFZhclN0YWNrJiB2YXJTdGFjaygpIHsgcmV0dXJu
IG1fdmFyU3RhY2s7IH0KICAgICAgICAgRnVuY3Rpb25TdGFjayYgZnVuY3Rpb25TdGFjaygpIHsg
cmV0dXJuIG1fZnVuY3Rpb25TdGFjazsgfQotICAgICAgICAKKwogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgVmFyU3RhY2sgbV92YXJTdGFjazsKICAgICAgICAgRnVuY3Rpb25TdGFjayBtX2Z1bmN0
aW9uU3RhY2s7CkBAIC0yMDM2LDcgKzIxNjQsNyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgIGNs
YXNzIFByb2dyYW1Ob2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUHJvZ3JhbU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50
cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHND
bG9zdXJlKSBLSlNfRkFTVF9DQUxMOworICAgICAgICBzdGF0aWMgUHJvZ3JhbU5vZGUqIGNyZWF0
ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFj
ayosIFNvdXJjZVByb3ZpZGVyKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUpIEtK
U19GQVNUX0NBTEw7CiAKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayYgY29kZShTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbikgS0pTX0ZBU1RfQ0FMTAogICAgICAgICB7CkBAIC0yMDQ2LDcgKzIx
NzQsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayos
IEZ1bmN0aW9uU3RhY2sqLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSkgS0pTX0ZB
U1RfQ0FMTDsKKyAgICAgICAgUHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVu
dHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBTb3VyY2VQcm92aWRlciosIGJvb2wgdXNl
c0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlKSBLSlNfRkFTVF9DQUxMOwogCiAgICAgICAgIHZvaWQg
Z2VuZXJhdGVDb2RlKFNjb3BlQ2hhaW5Ob2RlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBLSlNfRkFTVF9DQUxMOwpAQCAtMjA1NCwxMiArMjE4MiwxNCBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgICAgVmVjdG9yPHNpemVfdD4gbV92YXJJbmRleGVzOyAvLyBTdG9yYWdlIGluZGV4ZXMg
YmVsb25naW5nIHRvIHRoZSBub2RlcyBpbiBtX3ZhclN0YWNrLiAoUmVjb3JkZWQgdG8gYXZvaWQg
ZG91YmxlIGxvb2t1cC4pCiAgICAgICAgIFZlY3RvcjxzaXplX3Q+IG1fZnVuY3Rpb25JbmRleGVz
OyAvLyBTdG9yYWdlIGluZGV4ZXMgYmVsb25naW5nIHRvIHRoZSBub2RlcyBpbiBtX2Z1bmN0aW9u
U3RhY2suIChSZWNvcmRlZCB0byBhdm9pZCBkb3VibGUgbG9va3VwLikKIAorICAgICAgICBSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlUHJvdmlkZXI7CisKICAgICAgICAgT3duUHRyPFBy
b2dyYW1Db2RlQmxvY2s+IG1fY29kZTsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbE5vZGUgOiBw
dWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBFdmFsTm9kZSog
Y3JlYXRlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlv
blN0YWNrKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUpIEtKU19GQVNUX0NBTEw7
CisgICAgICAgIHN0YXRpYyBFdmFsTm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgU291cmNlUHJvdmlkZXIqLCBib29s
IHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSkgS0pTX0ZBU1RfQ0FMTDsKIAogICAgICAgICBF
dmFsQ29kZUJsb2NrJiBjb2RlKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSBLSlNfRkFTVF9D
QUxMCiAgICAgICAgIHsKQEAgLTIwNjksMTYgKzIxOTksMTkgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEV2YWxOb2RlKEpTR2xvYmFsRGF0YSos
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgYm9vbCB1c2VzRXZh
bCwgYm9vbCBuZWVkc0Nsb3N1cmUpIEtKU19GQVNUX0NBTEw7CisgICAgICAgIEV2YWxOb2RlKEpT
R2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwg
U291cmNlUHJvdmlkZXIqLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSkgS0pTX0ZB
U1RfQ0FMTDsKIAogICAgICAgICB2b2lkIGdlbmVyYXRlQ29kZShTY29wZUNoYWluTm9kZSopIEtK
U19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgCisgICAg
ICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2VQcm92aWRlcjsKIAogICAgICAgICBP
d25QdHI8RXZhbENvZGVCbG9jaz4gbV9jb2RlOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlv
bkJvZHlOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgorICAgICAgICBzdGF0
aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRz
KiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgU291cmNlUHJvdmlkZXIqLCBib29sIHVzZXNF
dmFsLCBib29sIG5lZWRzQ2xvc3VyZSkgS0pTX0ZBU1RfQ0FMTDsKICAgICAgICAgc3RhdGljIEZ1
bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZh
clN0YWNrKiwgRnVuY3Rpb25TdGFjayosIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJl
KSBLSlNfRkFTVF9DQUxMOwogCiAgICAgICAgIFZlY3RvcjxJZGVudGlmaWVyPiYgcGFyYW1ldGVy
cygpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CkBAIC0yMTA2LDcgKzIy
MzksNiBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgICAgICB2b2lkIHNldFNvdXJjZShjb25zdCBT
b3VyY2VSYW5nZSYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9IAogICAgICAgICBVU3Ry
aW5nIHRvU291cmNlU3RyaW5nKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBVU3RyaW5n
KCJ7IikgKyBtX3NvdXJjZS50b1N0cmluZygpICsgVVN0cmluZygifSIpOyB9Ci0KICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBib29sIHVzZXNFdmFsLCBib29sIG5l
ZWRzQ2xvc3VyZSkgS0pTX0ZBU1RfQ0FMTDsKIAo=
</data>
<flag name="review"
          id="9857"
          type_id="1"
          status="+"
          setter="zwarich"
    />
          </attachment>
      

    </bug>

</bugzilla>