<?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>147675</bug_id>
          
          <creation_ts>2015-08-04 18:47:41 -0700</creation_ts>
          <short_desc>Rename Mutex to DeprecatedMutex</short_desc>
          <delta_ts>2015-08-05 16:47:15 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147545</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>andersca</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114935</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-04 18:47:41 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114936</commentid>
    <comment_count>1</comment_count>
      <attachid>258256</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-04 18:48:56 -0700</bug_when>
    <thetext>Created attachment 258256
it&apos;s a start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114946</commentid>
    <comment_count>2</comment_count>
      <attachid>258261</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-04 20:19:49 -0700</bug_when>
    <thetext>Created attachment 258261
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114958</commentid>
    <comment_count>3</comment_count>
      <attachid>258263</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-04 21:26:19 -0700</bug_when>
    <thetext>Created attachment 258263
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114960</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-04 21:27:43 -0700</bug_when>
    <thetext>Attachment 258263 did not pass style-queue:


ERROR: Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:136:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/ThreadingPrimitives.h:97:  The parameter name &quot;mutex&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 130 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115059</commentid>
    <comment_count>5</comment_count>
      <attachid>258263</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-05 11:12:11 -0700</bug_when>
    <thetext>Comment on attachment 258263
the patch

r=me

It&apos;s arguably premature to do this before we&apos;ve proven that the new mutex is, in fact, better -- but I&apos;ll take a small gamble here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115061</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-05 11:12:33 -0700</bug_when>
    <thetext>&gt; ERROR: Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:136: 
&gt; Place brace on its own line for function definitions.  [whitespace/braces]
&gt; [4]
&gt; ERROR: Source/WTF/wtf/ThreadingPrimitives.h:97:  The parameter name &quot;mutex&quot;
&gt; adds no information, so it should be removed.  [readability/parameter_name]
&gt; [5]

These are worth fixing, since we&apos;re here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115082</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-05 11:51:18 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 258263 [details]
&gt; the patch
&gt; 
&gt; r=me
&gt; 
&gt; It&apos;s arguably premature to do this before we&apos;ve proven that the new mutex
&gt; is, in fact, better -- but I&apos;ll take a small gamble here.

Even if it isn&apos;t better, we should be using std::mutex in favor of WTF::(Deprecated)Mutex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115088</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-05 12:21:39 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/187972</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115180</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-05 16:47:15 -0700</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/188002</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258256</attachid>
            <date>2015-08-04 18:48:56 -0700</date>
            <delta_ts>2015-08-04 20:19:49 -0700</delta_ts>
            <desc>it&apos;s a start</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>202993</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wu
Y3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U2FtcGxpbmdUb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQg
U2FtcGxpbmdUb29sOjpkb1J1bigpCiAKICNpZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5HKQog
ICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHNhbXBsZS5jb2RlQmxvY2soKSkgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7CisgICAgICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7CiAg
ICAgICAgIFNjcmlwdFNhbXBsZVJlY29yZCogcmVjb3JkID0gbV9zY29wZVNhbXBsZU1hcC0+Z2V0
KGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpOwogICAgICAgICBBU1NFUlQocmVjb3JkKTsK
ICAgICAgICAgcmVjb3JkLT5zYW1wbGUoY29kZUJsb2NrLCBzYW1wbGUudlBDKCkpOwpAQCAtMzAx
LDcgKzMwMSw3IEBAIHZvaWQgU2FtcGxpbmdUb29sOjpzYW1wbGUoKQogdm9pZCBTYW1wbGluZ1Rv
b2w6Om5vdGlmeU9mU2NvcGUoVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBzY3JpcHQpCiB7CiAj
aWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9z
Y3JpcHRTYW1wbGVNYXBNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlciht
X3NjcmlwdFNhbXBsZU1hcE11dGV4KTsKICAgICBtX3Njb3BlU2FtcGxlTWFwLT5zZXQoc2NyaXB0
LCBhZG9wdFB0cihuZXcgU2NyaXB0U2FtcGxlUmVjb3JkKHZtLCBzY3JpcHQpKSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU2FtcGxpbmdUb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NhbXBsaW5nVG9vbC5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOCw3
ICszMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9vcGNvZGVTYW1w
bGVzSW5DVElGdW5jdGlvbnNbbnVtT3Bjb2RlSURzXTsKICAgICAgICAgCiAjaWYgRU5BQkxFKENP
REVCTE9DS19TQU1QTElORykKLSAgICAgICAgTXV0ZXggbV9zY3JpcHRTYW1wbGVNYXBNdXRleDsK
KyAgICAgICAgRGVwcmVjYXRlZE11dGV4IG1fc2NyaXB0U2FtcGxlTWFwTXV0ZXg7CiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRTYW1wbGVSZWNvcmRNYXA+IG1fc2NvcGVTYW1wbGVNYXA7
CiAjZW5kaWYKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHJl
YWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHJl
YWREYXRhLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGhyZWFkRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgV29ya2xpc3QqIG1fd29ya2xpc3Q7CiAgICAgVGhyZWFkSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7Ci0gICAgTXV0ZXggbV9yaWdodFRvUnVuOworICAgIERlcHJlY2F0ZWRNdXRl
eCBtX3JpZ2h0VG9SdW47CiAgICAgU2FmZXBvaW50KiBtX3NhZmVwb2ludDsKIH07CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCShyZXZpc2lvbiAxODc4
ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBXb3JrbGlzdDo6V29ya2xpc3QoQ1N0cmluZyB3b3Jr
bGlzdE5hbWUpCiBXb3JrbGlzdDo6fldvcmtsaXN0KCkKIHsKICAgICB7Ci0gICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fdGhyZWFkcy5zaXplKCk7
IGktLTspCiAgICAgICAgICAgICBtX3F1ZXVlLmFwcGVuZChudWxscHRyKTsgLy8gVXNlIG51bGwg
cGxhbiB0byBpbmRpY2F0ZSB0aGF0IHdlIHdhbnQgdGhlIHRocmVhZCB0byB0ZXJtaW5hdGUuCiAg
ICAgICAgIG1fcGxhbkVucXVldWVkLmJyb2FkY2FzdCgpOwpAQCAtNzcsNyArNzcsNyBAQCBSZWY8
V29ya2xpc3Q+IFdvcmtsaXN0OjpjcmVhdGUoQ1N0cmluZyB3CiAKIGJvb2wgV29ya2xpc3Q6Omlz
QWN0aXZlRm9yVk0oVk0mIHZtKSBjb25zdAogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xv
Y2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICBQbGFu
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3BsYW5zLmVuZCgpOwogICAgIGZvciAoUGxhbk1h
cDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcGxhbnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsr
aXRlcikgewogICAgICAgICBpZiAoJml0ZXItPnZhbHVlLT52bSA9PSAmdm0pCkBAIC04OSw3ICs4
OSw3IEBAIGJvb2wgV29ya2xpc3Q6OmlzQWN0aXZlRm9yVk0oVk0mIHZtKSBjb24KIHZvaWQgV29y
a2xpc3Q6OmVucXVldWUoUGFzc1JlZlB0cjxQbGFuPiBwYXNzZWRQbGFuKQogewogICAgIFJlZlB0
cjxQbGFuPiBwbGFuID0gcGFzc2VkUGxhbjsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgaWYgKE9w
dGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpIHsKICAgICAgICAgZHVtcChsb2NrZXIs
IFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIGRhdGFMb2coIjogRW5xdWV1ZWluZyBwbGFuIHRv
IG9wdGltaXplICIsIHBsYW4tPmtleSgpLCAiXG4iKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lk
IFdvcmtsaXN0OjplbnF1ZXVlKFBhc3NSZWZQdHI8UGxhbj4gCiAKIFdvcmtsaXN0OjpTdGF0ZSBX
b3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0ZShDb21waWxhdGlvbktleSBrZXkpCiB7Ci0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tl
cihtX2xvY2spOwogICAgIFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmZpbmQoa2V5
KTsKICAgICBpZiAoaXRlciA9PSBtX3BsYW5zLmVuZCgpKQogICAgICAgICByZXR1cm4gTm90S25v
d247CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBXb3JrbGlzdDo6d2FpdFVudGlsQWxsUGxhbnNG
b3JWTUFyZQogICAgIC8vIEFmdGVyIHdlIHJlbGVhc2UgdGhpcyBsb2NrLCB3ZSBrbm93IHRoYXQg
YWx0aG91Z2ggb3RoZXIgVk1zIG1heSBzdGlsbAogICAgIC8vIGJlIGFkZGluZyBwbGFucywgb3Vy
IFZNIHdpbGwgbm90IGJlLgogICAgIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAKICAgICBpZiAo
T3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkgewogICAgICAgICBkdW1wKGxvY2tl
ciwgV1RGOjpkYXRhRmlsZSgpKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFdvcmtsaXN0Ojp3
YWl0VW50aWxBbGxQbGFuc0ZvclZNQXJlCiB2b2lkIFdvcmtsaXN0OjpyZW1vdmVBbGxSZWFkeVBs
YW5zRm9yVk0oVk0mIHZtLCBWZWN0b3I8UmVmUHRyPFBsYW4+LCA4PiYgbXlSZWFkeVBsYW5zKQog
ewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlYWR5UGxhbnMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgUmVmUHRyPFBsYW4+IHBsYW4gPSBtX3JlYWR5UGxhbnNbaV07CiAgICAgICAgIGlmICgmcGxh
bi0+dm0gIT0gJnZtKQpAQCAtMTkyLDcgKzE5Miw3IEBAIFdvcmtsaXN0OjpTdGF0ZSBXb3JrbGlz
dDo6Y29tcGxldGVBbGxSZWEKICAgICB9CiAgICAgCiAgICAgaWYgKCEhcmVxdWVzdGVkS2V5ICYm
IHJlc3VsdGluZ1N0YXRlID09IE5vdEtub3duKSB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CiAgICAgICAgIGlmIChtX3BsYW5zLmNvbnRhaW5zKHJlcXVlc3RlZEtleSkpCiAgICAgICAgICAg
ICByZXN1bHRpbmdTdGF0ZSA9IENvbXBpbGluZzsKICAgICB9CkBAIC0yMjUsNyArMjI1LDcgQEAg
dm9pZCBXb3JrbGlzdDo6dmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VgogewogICAgIFZNKiB2bSA9
IHZpc2l0b3IuaGVhcCgpLT52bSgpOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsK
ICAgICAgICAgZm9yIChQbGFuTWFwOjppdGVyYXRvciBpdGVyID0gbV9wbGFucy5iZWdpbigpOyBp
dGVyICE9IG1fcGxhbnMuZW5kKCk7ICsraXRlcikgewogICAgICAgICAgICAgUGxhbiogcGxhbiA9
IGl0ZXItPnZhbHVlLmdldCgpOwogICAgICAgICAgICAgaWYgKCZwbGFuLT52bSAhPSB2bSkKQEAg
LTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdvcmtsaXN0Ojp2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RW
CiB2b2lkIFdvcmtsaXN0OjpyZW1vdmVEZWFkUGxhbnMoVk0mIHZtKQogewogICAgIHsKLSAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgSGFzaFNldDxDb21waWxhdGlvbktleT4gZGVh
ZFBsYW5LZXlzOwogICAgICAgICBmb3IgKFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5z
LmJlZ2luKCk7IGl0ZXIgIT0gbV9wbGFucy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBQ
bGFuKiBwbGFuID0gaXRlci0+dmFsdWUuZ2V0KCk7CkBAIC0yOTUsMTcgKzI5NSwxNyBAQCB2b2lk
IFdvcmtsaXN0OjpyZW1vdmVEZWFkUGxhbnMoVk0mIHZtKQogCiBzaXplX3QgV29ya2xpc3Q6OnF1
ZXVlTGVuZ3RoKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcmV0dXJuIG1fcXVldWUuc2l6
ZSgpOwogfQogCiB2b2lkIFdvcmtsaXN0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgIGR1bXAobG9ja2VyLCBvdXQpOwogfQogCi12b2lkIFdv
cmtsaXN0OjpkdW1wKGNvbnN0IE11dGV4TG9ja2VyJiwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
K3ZvaWQgV29ya2xpc3Q6OmR1bXAoY29uc3QgRGVwcmVjYXRlZE11dGV4TG9ja2VyJiwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoCiAgICAgICAgICJXb3JrbGlzdCgi
LCBSYXdQb2ludGVyKHRoaXMpLCAiKVtRdWV1ZSBMZW5ndGggPSAiLCBtX3F1ZXVlLnNpemUoKSwK
QEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIFdvcmtsaXN0OjpydW5UaHJlYWQoVGhyZWFkRGF0YSog
ZGF0CiAgICAgZm9yICg7OykgewogICAgICAgICBSZWZQdHI8UGxhbj4gcGxhbjsKICAgICAgICAg
ewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgICAgICB3aGlsZSAo
bV9xdWV1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgbV9wbGFuRW5xdWV1ZWQud2FpdCht
X2xvY2spOwogICAgICAgICAgICAgCkBAIC0zNDEsOSArMzQxLDkgQEAgdm9pZCBXb3JrbGlzdDo6
cnVuVGhyZWFkKFRocmVhZERhdGEqIGRhdAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB7
Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoZGF0YS0+bV9yaWdodFRvUnVuKTsKKyAg
ICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoZGF0YS0+bV9yaWdodFRvUnVu
KTsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKyAgICAgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CiAgICAgICAgICAgICAgICAgaWYgKHBsYW4tPnN0YWdlID09IFBsYW46OkNhbmNlbGxlZCkg
ewogICAgICAgICAgICAgICAgICAgICBtX251bWJlck9mQWN0aXZlVGhyZWFkcy0tOwogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIFdvcmtsaXN0
OjpydW5UaHJlYWQoVGhyZWFkRGF0YSogZGF0CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
cGxhbi0+dm0uaGVhcC5pc0NvbGxlY3RpbmcoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
ICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgICAg
ICAgICAgaWYgKHBsYW4tPnN0YWdlID09IFBsYW46OkNhbmNlbGxlZCkgewogICAgICAgICAgICAg
ICAgICAgICBtX251bWJlck9mQWN0aXZlVGhyZWFkcy0tOwogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIFdvcmtsaXN0OjpydW5UaHJlYWQoVGhy
ZWFkRGF0YSogZGF0CiAgICAgICAgIH0KIAogICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9sb2NrKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2UgY291bGQgaGF2
ZSBiZWVuIGNhbmNlbGxlZCBiZXR3ZWVuIHJlbGVhc2luZyByaWdodFRvUnVuIGFuZCBhY3F1aXJp
bmcgbV9sb2NrLgogICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCBtZWFuIHRoYXQgd2UgbWlnaHQg
YmUgaW4gdGhlIG1pZGRsZSBvZiBHQyByaWdodCBub3cuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXb3JrbGlzdC5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIHJlbW92ZUFsbFJlYWR5UGxhbnNGb3JWTShWTSYs
IFZlY3RvcjxSZWZQdHI8UGxhbj4sIDg+Jik7CiAKLSAgICB2b2lkIGR1bXAoY29uc3QgTXV0ZXhM
b2NrZXImLCBQcmludFN0cmVhbSYpIGNvbnN0OworICAgIHZvaWQgZHVtcChjb25zdCBEZXByZWNh
dGVkTXV0ZXhMb2NrZXImLCBQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogICAgIENTdHJpbmcg
bV90aHJlYWROYW1lOwogICAgIApAQCAtMTAzLDkgKzEwMyw5IEBAIHByaXZhdGU6CiAgICAgLy8g
YmUgY29tcGxldGVkLgogICAgIFZlY3RvcjxSZWZQdHI8UGxhbj4sIDE2PiBtX3JlYWR5UGxhbnM7
CiAKLSAgICBNdXRleCBtX3N1c3BlbnNpb25Mb2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX3N1
c3BlbnNpb25Mb2NrOwogICAgIAotICAgIG11dGFibGUgTXV0ZXggbV9sb2NrOworICAgIG11dGFi
bGUgRGVwcmVjYXRlZE11dGV4IG1fbG9jazsKICAgICBUaHJlYWRDb25kaXRpb24gbV9wbGFuRW5x
dWV1ZWQ7CiAgICAgVGhyZWFkQ29uZGl0aW9uIG1fcGxhbkNvbXBpbGVkOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVy
LmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2Vt
Ymxlci9EaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxNCArNzgsMTQgQEAg
cHVibGljOgogICAgIAogICAgIHZvaWQgZW5xdWV1ZShzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1i
bHlUYXNrPiB0YXNrKQogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAg
bV9xdWV1ZS5hcHBlbmQoV1RGOjptb3ZlKHRhc2spKTsKICAgICAgICAgbV9jb25kaXRpb24uYnJv
YWRjYXN0KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgd2FpdFVudGlsRW1wdHkoKQogICAgIHsK
LSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRN
dXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgd2hpbGUgKCFtX3F1ZXVlLmlzRW1w
dHkoKSB8fCBtX3dvcmtpbmcpCiAgICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fbG9jayk7
CiAgICAgfQpAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKDs7KSB7CiAg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrOwogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAg
ICAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAg
ICAgICAgICAgICBtX3dvcmtpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBtX2NvbmRpdGlv
bi5icm9hZGNhc3QoKTsKICAgICAgICAgICAgICAgICB3aGlsZSAobV9xdWV1ZS5pc0VtcHR5KCkp
CkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICBNdXRleCBtX2xvY2s7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fbG9jazsKICAgICBUaHJlYWRD
b25kaXRpb24gbV9jb25kaXRpb247CiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERpc2Fzc2Vt
Ymx5VGFzaz4+IG1fcXVldWU7CiAgICAgYm9vbCBtX3dvcmtpbmcgeyBmYWxzZSB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmNwcAkocmV2aXNpb24gMTg3
ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBDb3BpZWRTcGFjZTo6ZG9uZUZpbGxp
bmdCbG9jayhDb3BpZQogICAgIH0KIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbG9hbmVkQmxvY2tzTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsKICAgICAgICAgQVNTRVJUKG1fbnVtYmVyT2ZMb2FuZWRC
bG9ja3MgPiAwKTsKICAgICAgICAgQVNTRVJUKG1faW5Db3B5aW5nUGhhc2UpOwogICAgICAgICBt
X251bWJlck9mTG9hbmVkQmxvY2tzLS07CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBDb3BpZWRT
cGFjZTo6ZGlkU3RhcnRGdWxsQ29sbGVjdGlvbgogdm9pZCBDb3BpZWRTcGFjZTo6ZG9uZUNvcHlp
bmcoKQogewogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tz
TG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9j
a3NMb2NrKTsKICAgICAgICAgd2hpbGUgKG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MgPiAwKQogICAg
ICAgICAgICAgbV9sb2FuZWRCbG9ja3NDb25kaXRpb24ud2FpdChtX2xvYW5lZEJsb2Nrc0xvY2sp
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuaAko
cmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3Bh
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2luQ29weWluZ1BoYXNlOwogICAgIGJvb2wgbV9zaG91bGREb0NvcHlQaGFzZTsKIAotICAg
IE11dGV4IG1fbG9hbmVkQmxvY2tzTG9jazsgCisgICAgRGVwcmVjYXRlZE11dGV4IG1fbG9hbmVk
QmxvY2tzTG9jazsgCiAgICAgVGhyZWFkQ29uZGl0aW9uIG1fbG9hbmVkQmxvY2tzQ29uZGl0aW9u
OwogICAgIHNpemVfdCBtX251bWJlck9mTG9hbmVkQmxvY2tzOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2VJbmxpbmVzLmgJKHJldmlzaW9u
IDE4Nzg4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIHZvaWQgQ29waWVk
U3BhY2U6OnJlY3ljbGVCb3Jyb3dlZAogICAgIENvcGllZEJsb2NrOjpkZXN0cm95KGJsb2NrKTsK
IAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7
CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2Nr
KTsKICAgICAgICAgQVNTRVJUKG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MgPiAwKTsKICAgICAgICAg
QVNTRVJUKG1faW5Db3B5aW5nUGhhc2UpOwogICAgICAgICBtX251bWJlck9mTG9hbmVkQmxvY2tz
LS07CkBAIC0xMjgsNyArMTI4LDcgQEAgaW5saW5lIENvcGllZEJsb2NrKiBDb3BpZWRTcGFjZTo6
YWxsb2NhdAogICAgIENvcGllZEJsb2NrKiBibG9jayA9IENvcGllZEJsb2NrOjpjcmVhdGVOb1pl
cm9GaWxsKCk7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvYW5lZEJs
b2Nrc0xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hbmVk
QmxvY2tzTG9jayk7CiAgICAgICAgIG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MrKzsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCShyZXZpc2lvbiAxODc4
ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmV0YWluUHRyPENGUnVuTG9v
cFJlZj4gbV9ydW5Mb29wOwogICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBtX2NvbnRleHQ7CiAK
LSAgICBNdXRleCBtX3NodXRkb3duTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fc2h1dGRv
d25NdXRleDsKICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBzdGF0aWMgYm9vbCB0aW1lckV2ZW50
KHZvaWQqKTsKICAgICBFY29yZV9UaW1lciogYWRkKGRvdWJsZSBkZWxheSwgdm9pZCogYWdlbnQp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tN
YXJrZXIuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTggKzEwMywx
OCBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIE11dGV4TG9j
a2VyIG1fbG9ja2VyOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbV9sb2NrZXI7CiAg
ICAgfTsKIAogICAgIHZvaWQgYWRkKE1hY2hpbmVUaHJlYWRzKiBtYWNoaW5lVGhyZWFkcykKICAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIG1hbmFnZXJMb2NrKG1fbG9jayk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBtYW5hZ2VyTG9jayhtX2xvY2spOwogICAgICAgICBtX3NldC5h
ZGQobWFjaGluZVRocmVhZHMpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlKE1hY2hpbmVUaHJl
YWRzKiBtYWNoaW5lVGhyZWFkcykKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIG1hbmFnZXJM
b2NrKG1fbG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBtYW5hZ2VyTG9jayht
X2xvY2spOwogICAgICAgICBhdXRvIHJlY29yZGVkTWFjaGluZVRocmVhZHMgPSBtX3NldC50YWtl
KG1hY2hpbmVUaHJlYWRzKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVjb3JkZWRNYWNoaW5l
VGhyZWFkcyA9IG1hY2hpbmVUaHJlYWRzKTsKICAgICB9CkBAIC0xMjksNyArMTI5LDcgQEAgcHJp
dmF0ZToKIAogICAgIEFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlcigpIHsgfQogICAgIAotICAg
IE11dGV4IG1fbG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9sb2NrOwogICAgIE1hY2hpbmVU
aHJlYWRzU2V0IG1fc2V0OwogCiAgICAgZnJpZW5kIEFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdl
ciYgYWN0aXZlTWFjaGluZVRocmVhZHNNYW5hZ2VyKCk7CkBAIC0yNjMsNyArMjYzLDcgQEAgTWFj
aGluZVRocmVhZHM6On5NYWNoaW5lVGhyZWFkcygpCiAgICAgYWN0aXZlTWFjaGluZVRocmVhZHNN
YW5hZ2VyKCkucmVtb3ZlKHRoaXMpOwogICAgIHRocmVhZFNwZWNpZmljS2V5RGVsZXRlKG1fdGhy
ZWFkU3BlY2lmaWMpOwogCi0gICAgTXV0ZXhMb2NrZXIgcmVnaXN0ZXJlZFRocmVhZHNMb2NrKG1f
cmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIHJlZ2lz
dGVyZWRUaHJlYWRzTG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXgpOwogICAgIGZvciAoVGhy
ZWFkKiB0ID0gbV9yZWdpc3RlcmVkVGhyZWFkczsgdDspIHsKICAgICAgICAgVGhyZWFkKiBuZXh0
ID0gdC0+bmV4dDsKICAgICAgICAgZGVsZXRlIHQ7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBN
YWNoaW5lVGhyZWFkczo6YWRkQ3VycmVudFRocmVhZCgpCiAgICAgdGhyZWFkU3BlY2lmaWNTZXQo
bV90aHJlYWRTcGVjaWZpYywgdGhpcyk7CiAgICAgVGhyZWFkKiB0aHJlYWQgPSBUaHJlYWQ6OmNy
ZWF0ZUZvckN1cnJlbnRUaHJlYWQoKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2sobV9yZWdpc3Rl
cmVkVGhyZWFkc011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3JlZ2lz
dGVyZWRUaHJlYWRzTXV0ZXgpOwogCiAgICAgdGhyZWFkLT5uZXh0ID0gbV9yZWdpc3RlcmVkVGhy
ZWFkczsKICAgICBtX3JlZ2lzdGVyZWRUaHJlYWRzID0gdGhyZWFkOwpAQCAtMzE4LDcgKzMxOCw3
IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OnJlbW92ZVRocmVhZCh2b2lkKiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFBsYXRmb3JtVGhyZWFkPgogdm9pZCBNYWNoaW5lVGhyZWFkczo6cmVtb3ZlVGhyZWFk
SWZGb3VuZChQbGF0Zm9ybVRocmVhZCBwbGF0Zm9ybVRocmVhZCkKIHsKLSAgICBNdXRleExvY2tl
ciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011dGV4KTsKICAgICBUaHJlYWQqIHQgPSBtX3Jl
Z2lzdGVyZWRUaHJlYWRzOwogICAgIGlmICgqdCA9PSBwbGF0Zm9ybVRocmVhZCkgewogICAgICAg
ICBtX3JlZ2lzdGVyZWRUaHJlYWRzID0gbV9yZWdpc3RlcmVkVGhyZWFkcy0+bmV4dDsKQEAgLTU2
NCw3ICs1NjQsNyBAQCB2b2lkIE1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTCiAg
ICAgdGhyZWFkLT5mcmVlUmVnaXN0ZXJzKHJlZ2lzdGVycyk7CiB9CiAKLWJvb2wgTWFjaGluZVRo
cmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhNdXRleExvY2tlciYsIHZvaWQqIGJ1ZmZl
ciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QqIHNpemUpCitib29sIE1hY2hpbmVUaHJlYWRzOjp0
cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MoRGVwcmVjYXRlZE11dGV4TG9ja2VyJiwgdm9pZCogYnVm
ZmVyLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCogc2l6ZSkKIHsKICAgICAvLyBQcmV2ZW50IHR3
byBWTXMgZnJvbSBzdXNwZW5kaW5nIGVhY2ggb3RoZXIncyB0aHJlYWRzIGF0IHRoZSBzYW1lIHRp
bWUsCiAgICAgLy8gd2hpY2ggY2FuIGNhdXNlIGRlYWRsb2NrOiA8cmRhcjovL3Byb2JsZW0vMjAz
MDA4NDI+LgpAQCAtNjU4LDcgKzY1OCw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OmdhdGhlckNv
bnNlcnZhdGl2ZVIKICAgICBzaXplX3Qgc2l6ZTsKICAgICBzaXplX3QgY2FwYWNpdHkgPSAwOwog
ICAgIHZvaWQqIGJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3JlZ2lz
dGVyZWRUaHJlYWRzTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fcmVn
aXN0ZXJlZFRocmVhZHNNdXRleCk7CiAgICAgd2hpbGUgKCF0cnlDb3B5T3RoZXJUaHJlYWRTdGFj
a3MobG9jaywgYnVmZmVyLCBjYXBhY2l0eSwgJnNpemUpKQogICAgICAgICBncm93QnVmZmVyKHNp
emUsICZidWZmZXIsICZjYXBhY2l0eSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hY2hpbmVTdGFja01hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTIsMTQgKzUyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdhdGhl
ckZyb21DdXJyZW50VGhyZWFkKENvbnNlcnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVTZXQm
LCBDb2RlQmxvY2tTZXQmLCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIFJlZ2lz
dGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsKIAogICAgICAgICB2b2lkIHRyeUNvcHlP
dGhlclRocmVhZFN0YWNrKFRocmVhZCosIHZvaWQqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCop
OwotICAgICAgICBib29sIHRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhNdXRleExvY2tlciYsIHZv
aWQqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCopOworICAgICAgICBib29sIHRyeUNvcHlPdGhl
clRocmVhZFN0YWNrcyhEZXByZWNhdGVkTXV0ZXhMb2NrZXImLCB2b2lkKiwgc2l6ZV90IGNhcGFj
aXR5LCBzaXplX3QqKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCByZW1vdmVUaHJlYWQodm9pZCop
OwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBsYXRmb3JtVGhyZWFkPgogICAgICAgICB2
b2lkIHJlbW92ZVRocmVhZElmRm91bmQoUGxhdGZvcm1UaHJlYWQpOwogCi0gICAgICAgIE11dGV4
IG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleDsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4IG1fcmVn
aXN0ZXJlZFRocmVhZHNNdXRleDsKICAgICAgICAgVGhyZWFkKiBtX3JlZ2lzdGVyZWRUaHJlYWRz
OwogICAgICAgICBXVEY6OlRocmVhZFNwZWNpZmljS2V5IG1fdGhyZWFkU3BlY2lmaWM7CiAjaWYg
IUFTU0VSVF9ESVNBQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0pTU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmICFFTkFCTEUoSklUKQogc3RhdGljIHNpemVfdCBjb21t
aXR0ZWRCeXRlc0NvdW50ID0gMDsKIAotc3RhdGljIE11dGV4JiBzdGFja1N0YXRpc3RpY3NNdXRl
eCgpCitzdGF0aWMgRGVwcmVjYXRlZE11dGV4JiBzdGFja1N0YXRpc3RpY3NNdXRleCgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBzdGF0aWNNdXRleCwgKCkp
OworICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEZXByZWNhdGVkTXV0ZXgsIHN0
YXRpY011dGV4LCAoKSk7CiAgICAgcmV0dXJuIHN0YXRpY011dGV4OwogfSAgICAKICNlbmRpZiAv
LyAhRU5BQkxFKEpJVCkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEpTU3RhY2s6OmluaXRpYWxp
emVUaHJlYWRpbmcoKQogCiB2b2lkIEpTU3RhY2s6OmFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxv
bmcgYnl0ZUNvdW50KQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihzdGFja1N0YXRpc3RpY3NN
dXRleCgpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKHN0YWNrU3RhdGlzdGlj
c011dGV4KCkpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxsb25nPihjb21taXR0ZWRCeXRlc0Nv
dW50KSArIGJ5dGVDb3VudCA+IC0xKTsKICAgICBjb21taXR0ZWRCeXRlc0NvdW50ICs9IGJ5dGVD
b3VudDsKIH0KQEAgLTE3Niw3ICsxNzYsNyBAQCBSZWdpc3RlciogSlNTdGFjazo6aGlnaEFkZHJl
c3MoKSBjb25zdAogc2l6ZV90IEpTU3RhY2s6OmNvbW1pdHRlZEJ5dGVDb3VudCgpCiB7CiAjaWYg
IUVOQUJMRShKSVQpCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHN0YWNrU3RhdGlzdGljc011dGV4
KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoc3RhY2tTdGF0aXN0aWNzTXV0
ZXgoKSk7CiAgICAgcmV0dXJuIGNvbW1pdHRlZEJ5dGVzQ291bnQ7CiAjZWxzZQogICAgIC8vIFdo
ZW4gdXNpbmcgdGhlIEMgc3RhY2ssIHdlIGRvbid0IGtub3cgaG93IG1hbnkgc3RhY2sgcGFnZXMg
YXJlIGFjdHVhbGx5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHJl
dmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDggKzY0LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IC8vIE1haW4gdGhyZWFkIGNhbiBob2xkIHRoaXMgbG9jayBmb3IgYSB3aGlsZSwgc28gdXNlIGFu
IGFkYXB0aXZlIG11dGV4LgotICAgIHR5cGVkZWYgTXV0ZXggTG9jazsKLSAgICB0eXBlZGVmIE11
dGV4TG9ja2VyIExvY2tlcjsKKyAgICB0eXBlZGVmIERlcHJlY2F0ZWRNdXRleCBMb2NrOworICAg
IHR5cGVkZWYgRGVwcmVjYXRlZE11dGV4TG9ja2VyIExvY2tlcjsKIAogICAgIHZvaWQgZmluYWxp
emUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2Uu
aAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQCBwcml2YXRl
OgogICAgIC8vICAgcGVyZm9ybWFuY2UsIGJ1dCBpZiB3ZSBkaWQgaGF2ZSBjb250ZW50aW9uLCB3
ZSB3b3VsZCB3YW50IGEgc2Vuc2libGUsCiAgICAgLy8gICBwb3dlci1hd2FyZSBiYWNrb2ZmLiBB
biBhZGFwdGl2ZSBtdXRleCB3aWxsIGRvIHRoaXMgYXMgYSBtYXR0ZXIgb2YgY291cnNlLAogICAg
IC8vICAgYnV0IGEgc3BpbmxvY2sgd29uJ3QuCi0gICAgdHlwZWRlZiBNdXRleCBMb2NrOwotICAg
IHR5cGVkZWYgTXV0ZXhMb2NrZXIgTG9ja2VyOworICAgIHR5cGVkZWYgRGVwcmVjYXRlZE11dGV4
IExvY2s7CisgICAgdHlwZWRlZiBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgTG9ja2VyOwogICAgIAog
CiAgICAgdm9pZCBhZGREYXRhYmFzZVRvQXRFeGl0KCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9B
dG9taWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmNwcAkocmV2
aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dURi93dGYvQXRvbWljcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDE2ICs3MiwxNiBAQAogbmFtZXNwYWNlIFdURiB7CiAKIHN0YXRpYyBjb25zdCBz
aXplX3Qga1N3YXBMb2NrQ291bnQgPSAzMjsKLXN0YXRpYyBNdXRleCBzX3N3YXBMb2Nrc1trU3dh
cExvY2tDb3VudF07CitzdGF0aWMgRGVwcmVjYXRlZE11dGV4IHNfc3dhcExvY2tzW2tTd2FwTG9j
a0NvdW50XTsKIAotc3RhdGljIGlubGluZSBNdXRleCYgZ2V0U3dhcExvY2soY29uc3Qgdm9sYXRp
bGUgaW50NjRfdCogYWRkcikKK3N0YXRpYyBpbmxpbmUgRGVwcmVjYXRlZE11dGV4JiBnZXRTd2Fw
TG9jayhjb25zdCB2b2xhdGlsZSBpbnQ2NF90KiBhZGRyKQogewogICAgIHJldHVybiBzX3N3YXBM
b2Nrc1socmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYWRkcikgPj4gM1UpICUga1N3YXBMb2Nr
Q291bnRdOwogfQogCiBzdGF0aWMgaW50NjRfdCBhdG9taWNTdGVwKGludDY0X3Qgdm9sYXRpbGUq
IGFkZGVuZCwgaW50NjRfdCBzdGVwKQogewotICAgIE11dGV4JiBtdXRleCA9IGdldFN3YXBMb2Nr
KGFkZGVuZCk7CisgICAgRGVwcmVjYXRlZE11dGV4JiBtdXRleCA9IGdldFN3YXBMb2NrKGFkZGVu
ZCk7CiAKICAgICBtdXRleC5sb2NrKCk7CiAgICAgaW50NjRfdCB2YWx1ZSA9ICphZGRlbmQgKyBz
dGVwOwpJbmRleDogU291cmNlL1dURi93dGYvTWVzc2FnZVF1ZXVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvTWVzc2FnZVF1ZXVlLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJj
ZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICBzdGF0aWMgZG91YmxlIGluZmluaXRlVGltZSgpIHsg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCk7IH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIG11dGFibGUgTXV0ZXggbV9tdXRleDsKKyAgICAgICAgbXV0YWJsZSBEZXBy
ZWNhdGVkTXV0ZXggbV9tdXRleDsKICAgICAgICAgVGhyZWFkQ29uZGl0aW9uIG1fY29uZGl0aW9u
OwogICAgICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+PiBtX3F1ZXVlOwogICAg
ICAgICBib29sIG1fa2lsbGVkOwpAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KICAgICBpbmxpbmUgdm9pZCBNZXNzYWdlUXVl
dWU8RGF0YVR5cGU+OjphcHBlbmQoc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBlPiBtZXNzYWdlKQog
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIG1fcXVldWUuYXBwZW5kKFdU
Rjo6bW92ZShtZXNzYWdlKSk7CiAgICAgICAgIG1fY29uZGl0aW9uLnNpZ25hbCgpOwogICAgIH0K
QEAgLTk5LDcgKzk5LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RGF0YVR5cGU+CiAgICAgaW5saW5lIHZvaWQgTWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6YXBwZW5k
QW5kS2lsbChzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+IG1lc3NhZ2UpCiAgICAgewotICAgICAg
ICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGOjptb3ZlKG1lc3Nh
Z2UpKTsKICAgICAgICAgbV9raWxsZWQgPSB0cnVlOwogICAgICAgICBtX2NvbmRpdGlvbi5icm9h
ZGNhc3QoKTsKQEAgLTEwOSw3ICsxMDksNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEYXRhVHlwZT4KICAgICBpbmxpbmUgYm9vbCBNZXNzYWdlUXVldWU8RGF0YVR5
cGU+OjphcHBlbmRBbmRDaGVja0VtcHR5KHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4gbWVzc2Fn
ZSkKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBib29sIHdhc0VtcHR5
ID0gbV9xdWV1ZS5pc0VtcHR5KCk7CiAgICAgICAgIG1fcXVldWUuYXBwZW5kKFdURjo6bW92ZSht
ZXNzYWdlKSk7CiAgICAgICAgIG1fY29uZGl0aW9uLnNpZ25hbCgpOwpAQCAtMTE5LDcgKzExOSw3
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgogICAg
IGlubGluZSB2b2lkIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OnByZXBlbmQoc3RkOjp1bmlxdWVf
cHRyPERhdGFUeXBlPiBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayht
X211dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAg
ICAgICAgIG1fcXVldWUucHJlcGVuZChXVEY6Om1vdmUobWVzc2FnZSkpOwogICAgICAgICBtX2Nv
bmRpdGlvbi5zaWduYWwoKTsKICAgICB9CkBAIC0xMzcsNyArMTM3LDcgQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPgogICAgIGlubGluZSBhdXRvIE1l
c3NhZ2VRdWV1ZTxEYXRhVHlwZT46OndhaXRGb3JNZXNzYWdlRmlsdGVyZWRXaXRoVGltZW91dChN
ZXNzYWdlUXVldWVXYWl0UmVzdWx0JiByZXN1bHQsIFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwgZG91
YmxlIGFic29sdXRlVGltZSkgLT4gc3RkOjp1bmlxdWVfcHRyPERhdGFUeXBlPgogICAgIHsKLSAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIGJvb2wgdGltZWRPdXQgPSBmYWxzZTsKIAog
ICAgICAgICBhdXRvIGZvdW5kID0gbV9xdWV1ZS5lbmQoKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KICAgICBpbmxp
bmUgYXV0byBNZXNzYWdlUXVldWU8RGF0YVR5cGU+Ojp0cnlHZXRNZXNzYWdlKCkgLT4gc3RkOjp1
bmlxdWVfcHRyPERhdGFUeXBlPgogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211
dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAg
ICAgIGlmIChtX2tpbGxlZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBp
ZiAobV9xdWV1ZS5pc0VtcHR5KCkpCkBAIC0xODYsNyArMTg2LDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+CiAgICAgaW5saW5lIGF1dG8gTWVzc2Fn
ZVF1ZXVlPERhdGFUeXBlPjo6dHJ5R2V0TWVzc2FnZUlnbm9yaW5nS2lsbGVkKCkgLT4gc3RkOjp1
bmlxdWVfcHRyPERhdGFUeXBlPgogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211
dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAg
ICAgIGlmIChtX3F1ZXVlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC0xOTcsNyArMTk3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUHJlZGljYXRlPgogICAgIGlubGluZSB2b2lkIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OnJl
bW92ZUlmKFByZWRpY2F0ZSYmIHByZWRpY2F0ZSkKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2Vy
IGxvY2sobV9tdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0
ZXgpOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgYXV0byBmb3VuZCA9IG1f
cXVldWUuZmluZElmKFsmcHJlZGljYXRlXShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+
JiBwdHIpIC0+IGJvb2wgewogICAgICAgICAgICAgICAgIEFTU0VSVChwdHIpOwpAQCAtMjE0LDcg
KzIxNCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBl
PgogICAgIGlubGluZSBib29sIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmlzRW1wdHkoKQogICAg
IHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIGlmIChtX2tpbGxlZCkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gbV9xdWV1ZS5pc0VtcHR5KCk7CkBA
IC0yMjMsNyArMjIzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RGF0YVR5cGU+CiAgICAgaW5saW5lIHZvaWQgTWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6a2lsbCgp
CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgbV9raWxsZWQgPSB0cnVl
OwogICAgICAgICBtX2NvbmRpdGlvbi5icm9hZGNhc3QoKTsKICAgICB9CkBAIC0yMzEsNyArMjMx
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+CiAg
ICAgaW5saW5lIGJvb2wgTWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6a2lsbGVkKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICByZXR1cm4gbV9raWxsZWQ7CiAg
ICAgfQogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpv
YnNHZW5lcmljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNH
ZW5lcmljLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dURi93dGYvUGFyYWxsZWxK
b2JzR2VuZXJpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIFBh
cmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6CiAKIHZvaWQgUGFyYWxsZWxFbnZpcm9u
bWVudDo6VGhyZWFkUHJpdmF0ZTo6ZXhlY3V0ZShUaHJlYWRGdW5jdGlvbiB0aHJlYWRGdW5jdGlv
biwgdm9pZCogcGFyYW1ldGVycykKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogCiAgICAgbV90aHJlYWRG
dW5jdGlvbiA9IHRocmVhZEZ1bmN0aW9uOwogICAgIG1fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7
CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2
YXRlOgogCiB2b2lkIFBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OndhaXRGb3JG
aW5pc2goKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAKICAgICB3aGlsZSAobV9ydW5uaW5nKQogICAg
ICAgICBtX3RocmVhZENvbmRpdGlvbi53YWl0KG1fbXV0ZXgpOwpAQCAtMTI0LDcgKzEyNCw3IEBA
IHZvaWQgUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZToKIHZvaWQgUGFyYWxsZWxF
bnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZTo6d29ya2VyVGhyZWFkKHZvaWQqIHRocmVhZERhdGEp
CiB7CiAgICAgVGhyZWFkUHJpdmF0ZSogc2hhcmVkVGhyZWFkID0gcmVpbnRlcnByZXRfY2FzdDxU
aHJlYWRQcml2YXRlKj4odGhyZWFkRGF0YSk7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhzaGFyZWRU
aHJlYWQtPm1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKHNoYXJlZFRo
cmVhZC0+bV9tdXRleCk7CiAKICAgICB3aGlsZSAoc2hhcmVkVGhyZWFkLT5tX3RocmVhZElEKSB7
CiAgICAgICAgIGlmIChzaGFyZWRUaHJlYWQtPm1fcnVubmluZykgewpJbmRleDogU291cmNlL1dU
Ri93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BhcmFsbGVsSm9ic0dlbmVyaWMuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dURi93
dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBA
IHB1YmxpYzoKICAgICAgICAgYm9vbCBtX3J1bm5pbmc7CiAgICAgICAgIFBhcmFsbGVsRW52aXJv
bm1lbnQqIG1fcGFyZW50OwogCi0gICAgICAgIG11dGFibGUgTXV0ZXggbV9tdXRleDsKKyAgICAg
ICAgbXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9tdXRleDsKICAgICAgICAgVGhyZWFkQ29uZGl0
aW9uIG1fdGhyZWFkQ29uZGl0aW9uOwogCiAgICAgICAgIFRocmVhZEZ1bmN0aW9uIG1fdGhyZWFk
RnVuY3Rpb247CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNl
L1dURi93dGYvUnVuTG9vcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgdm9p
ZCBSdW5Mb29wOjpwZXJmb3JtV29yaygpCiAgICAgewogICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gZnVuY3Rpb247CiAgICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2Z1bmN0aW9uUXVldWVMb2NrKTsKKyAgICAgICAgICAgIFJlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrZXIobV9mdW5jdGlvblF1ZXVlTG9jayk7CiAgICAgICAgICAgICBmdW5jdGlvbnNUb0hh
bmRsZSA9IG1fZnVuY3Rpb25RdWV1ZS5zaXplKCk7CiAKICAgICAgICAgICAgIGlmIChtX2Z1bmN0
aW9uUXVldWUuaXNFbXB0eSgpKQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgUnVuTG9vcDo6cGVy
Zm9ybVdvcmsoKQogICAgIGZvciAoc2l6ZV90IGZ1bmN0aW9uc0hhbmRsZWQgPSAxOyBmdW5jdGlv
bnNIYW5kbGVkIDwgZnVuY3Rpb25zVG9IYW5kbGU7ICsrZnVuY3Rpb25zSGFuZGxlZCkgewogICAg
ICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb247CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0aW9uUXVldWVMb2NrKTsKKyAgICAgICAgICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9mdW5jdGlvblF1ZXVlTG9jayk7CiAKICAg
ICAgICAgICAgIC8vIEV2ZW4gaWYgd2Ugc3RhcnQgb2ZmIHdpdGggTiBmdW5jdGlvbnMgdG8gaGFu
ZGxlIGFuZCB3ZSd2ZSBvbmx5IGhhbmRsZWQgbGVzcyB0aGFuIE4gZnVuY3Rpb25zLCB0aGUgcXVl
dWUKICAgICAgICAgICAgIC8vIHN0aWxsIG1pZ2h0IGJlIGVtcHR5IGJlY2F1c2UgdGhvc2UgZnVu
Y3Rpb25zIG1pZ2h0IGhhdmUgYmVlbiBoYW5kbGVkIGluIGFuIGlubmVyIFJ1bkxvb3A6OnBlcmZv
cm1Xb3JrKCkuCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBSdW5Mb29wOjpwZXJmb3JtV29yaygp
CiB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24p
CiB7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9mdW5jdGlvblF1ZXVlTG9j
ayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9mdW5jdGlvblF1ZXVl
TG9jayk7CiAgICAgICAgIG1fZnVuY3Rpb25RdWV1ZS5hcHBlbmQoV1RGOjptb3ZlKGZ1bmN0aW9u
KSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvUnVuTG9vcC5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBwZXJmb3JtV29yaygpOwogCi0gICAgTXV0ZXggbV9mdW5jdGlvblF1
ZXVlTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKICAgICBE
ZXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVldWU7CiAKICNpZiBQTEFU
Rk9STShXSU4pCkBAIC0xNDcsMTAgKzE0NywxMCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxD
RlJ1bkxvb3BTb3VyY2VSZWY+IG1fcnVuTG9vcFNvdXJjZTsKICAgICBpbnQgbV9uZXN0aW5nTGV2
ZWw7CiAjZWxpZiBQTEFURk9STShFRkwpCi0gICAgTXV0ZXggbV9waXBlTG9jazsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXggbV9waXBlTG9jazsKICAgICBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4gbV9w
aXBlOwogCi0gICAgTXV0ZXggbV93YWtlVXBFdmVudFJlcXVlc3RlZExvY2s7CisgICAgRGVwcmVj
YXRlZE11dGV4IG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWRMb2NrOwogICAgIGJvb2wgbV93YWtlVXBF
dmVudFJlcXVlc3RlZDsKIAogICAgIHN0YXRpYyB2b2lkIHdha2VVcEV2ZW50KHZvaWQqIGRhdGEs
IHZvaWQqLCB1bnNpZ25lZCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAJKHJldmlzaW9uIDE4Nzg4
OSkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAgc3RydWN0IE5ld1RocmVhZENvbnRleHQgewogcHVibGljOgogICAgIGNvbnN0
IGNoYXIqIG5hbWU7CiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGVudHJ5UG9pbnQ7Ci0gICAg
TXV0ZXggY3JlYXRpb25NdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggY3JlYXRpb25NdXRleDsK
IH07CiAKIHN0YXRpYyB2b2lkIHRocmVhZEVudHJ5UG9pbnQodm9pZCogY29udGV4dERhdGEpCkBA
IC00NSw3ICs0NSw3IEBAIHN0YXRpYyB2b2lkIHRocmVhZEVudHJ5UG9pbnQodm9pZCogY29udGUK
ICAgICAvLyBCbG9jayB1bnRpbCBvdXIgY3JlYXRpbmcgdGhyZWFkIGhhcyBjb21wbGV0ZWQgYW55
IGV4dHJhIHNldHVwIHdvcmssIGluY2x1ZGluZwogICAgIC8vIGVzdGFibGlzaGluZyBUaHJlYWRJ
ZGVudGlmaWVyLgogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGNvbnRleHQtPmNy
ZWF0aW9uTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKGNvbnRl
eHQtPmNyZWF0aW9uTXV0ZXgpOwogICAgIH0KIAogICAgIGluaXRpYWxpemVDdXJyZW50VGhyZWFk
SW50ZXJuYWwoY29udGV4dC0+bmFtZSk7CkBAIC03MCw3ICs3MCw3IEBAIFRocmVhZElkZW50aWZp
ZXIgY3JlYXRlVGhyZWFkKGNvbnN0IGNoYXIKICAgICBOZXdUaHJlYWRDb250ZXh0KiBjb250ZXh0
ID0gbmV3IE5ld1RocmVhZENvbnRleHQgeyBuYW1lLCBXVEY6Om1vdmUoZW50cnlQb2ludCksIHsg
fSB9OwogCiAgICAgLy8gUHJldmVudCB0aGUgdGhyZWFkIGJvZHkgZnJvbSBleGVjdXRpbmcgdW50
aWwgd2UndmUgZXN0YWJsaXNoZWQgdGhlIHRocmVhZCBpZGVudGlmaWVyLgotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihjb250ZXh0LT5jcmVhdGlvbk11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKGNvbnRleHQtPmNyZWF0aW9uTXV0ZXgpOwogCiAgICAgcmV0dXJuIGNyZWF0
ZVRocmVhZEludGVybmFsKHRocmVhZEVudHJ5UG9pbnQsIGNvbnRleHQsIG5hbWUpOwogfQpJbmRl
eDogU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAkocmV2aXNpb24gMTg3ODg5KQorKysg
U291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MCwxMSArNzAsMTEgQEAgdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybU11dGV4OwogdHlwZWRlZiB2b2lk
KiBQbGF0Zm9ybUNvbmRpdGlvbjsKICNlbmRpZgogICAgIAotY2xhc3MgTXV0ZXggewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE11dGV4KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFz
cyBEZXByZWNhdGVkTXV0ZXggeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlcHJlY2F0ZWRN
dXRleCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNdXRleCgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TXV0ZXgoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVwcmVjYXRlZE11dGV4KCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5EZXByZWNhdGVkTXV0ZXgoKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGxv
Y2soKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB0cnlMb2NrKCk7CkBAIC04Niw3ICs4
Niw3IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1NdXRleCBtX211dGV4OwogfTsKIAotdHlwZWRl
ZiBMb2NrZXI8TXV0ZXg+IE11dGV4TG9ja2VyOwordHlwZWRlZiBMb2NrZXI8RGVwcmVjYXRlZE11
dGV4PiBEZXByZWNhdGVkTXV0ZXhMb2NrZXI7CiAKIGNsYXNzIFRocmVhZENvbmRpdGlvbiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGhyZWFkQ29uZGl0aW9uKTsKQEAgLTk0LDEwICs5NCwx
MCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRocmVhZENvbmRpdGlvbigpOwog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB+VGhyZWFkQ29uZGl0aW9uKCk7CiAgICAgCi0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdChNdXRleCYgbXV0ZXgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHdhaXQoRGVwcmVjYXRlZE11dGV4JiBtdXRleCk7CiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBjb25kaXRpb24gd2FzIHNpZ25hbGVkIGJlZm9yZSBhYnNvbHV0ZVRpbWUs
IGZhbHNlIGlmIHRoZSBhYnNvbHV0ZVRpbWUgd2FzIHJlYWNoZWQgb3IgaXMgaW4gdGhlIHBhc3Qu
CiAgICAgLy8gVGhlIGFic29sdXRlVGltZSBpcyBpbiBzZWNvbmRzLCBzdGFydGluZyBvbiBKYW51
YXJ5IDEsIDE5NzAuIFRoZSB0aW1lIGlzIGFzc3VtZWQgdG8gdXNlIHRoZSBzYW1lIHRpbWUgem9u
ZSBhcyBXVEY6OmN1cnJlbnRUaW1lKCkuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdGlt
ZWRXYWl0KE11dGV4JiwgZG91YmxlIGFic29sdXRlVGltZSk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgdGltZWRXYWl0KERlcHJlY2F0ZWRNdXRleCYsIGRvdWJsZSBhYnNvbHV0ZVRpbWUp
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNpZ25hbCgpOwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGJyb2FkY2FzdCgpOwogICAgIApAQCAtMTEzLDggKzExMyw4IEBAIFdURl9F
WFBPUlRfUFJJVkFURSBEV09SRCBhYnNvbHV0ZVRpbWVUb1cKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKLXVzaW5nIFdURjo6TXV0ZXg7Ci11c2luZyBXVEY6Ok11dGV4TG9ja2VyOwordXNpbmcgV1RG
OjpEZXByZWNhdGVkTXV0ZXg7Cit1c2luZyBXVEY6OkRlcHJlY2F0ZWRNdXRleExvY2tlcjsKIHVz
aW5nIFdURjo6VGhyZWFkQ29uZGl0aW9uOwogCiAjaWYgT1MoV0lORE9XUykKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9X
VEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDkgKzEw
Miw5IEBAIHZvaWQgdW5zYWZlVGhyZWFkV2FzRGV0YWNoZWQoVGhyZWFkSWRlbnQKIHZvaWQgdGhy
ZWFkRGlkRXhpdChUaHJlYWRJZGVudGlmaWVyKTsKIHZvaWQgdGhyZWFkV2FzSm9pbmVkKFRocmVh
ZElkZW50aWZpZXIpOwogCi1zdGF0aWMgTXV0ZXgmIHRocmVhZE1hcE11dGV4KCkKK3N0YXRpYyBE
ZXByZWNhdGVkTXV0ZXgmIHRocmVhZE1hcE11dGV4KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoTXV0ZXgsIG11dGV4LCAoKSk7CisgICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKERlcHJlY2F0ZWRNdXRleCwgbXV0ZXgsICgpKTsKICAgICByZXR1cm4gbXV0
ZXg7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQog
ICAgIFRocmVhZElkZW50aWZpZXJEYXRhOjppbml0aWFsaXplT25jZSgpOwogICAgIFN0YWNrU3Rh
dHM6OmluaXRpYWxpemUoKTsKICAgICB3dGZUaHJlYWREYXRhKCk7Ci0gICAgc19kdG9hUDVNdXRl
eCA9IG5ldyBNdXRleDsKKyAgICBzX2R0b2FQNU11dGV4ID0gbmV3IERlcHJlY2F0ZWRNdXRleDsK
ICAgICBpbml0aWFsaXplRGF0ZXMoKTsKIH0KIApAQCAtMTM4LDcgKzEzOCw3IEBAIHN0YXRpYyBU
aHJlYWRNYXAmIHRocmVhZE1hcCgpCiAKIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGlkZW50aWZp
ZXJCeVB0aHJlYWRIYW5kbGUoY29uc3QgcHRocmVhZF90JiBwdGhyZWFkSGFuZGxlKQogewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwogCiAgICAgVGhyZWFkTWFwOjppdGVy
YXRvciBpID0gdGhyZWFkTWFwKCkuYmVnaW4oKTsKICAgICBmb3IgKDsgaSAhPSB0aHJlYWRNYXAo
KS5lbmQoKTsgKytpKSB7CkBAIC0xNTIsNyArMTUyLDcgQEAgc3RhdGljIFRocmVhZElkZW50aWZp
ZXIgaWRlbnRpZmllckJ5UHRocgogc3RhdGljIFRocmVhZElkZW50aWZpZXIgZXN0YWJsaXNoSWRl
bnRpZmllckZvclB0aHJlYWRIYW5kbGUoY29uc3QgcHRocmVhZF90JiBwdGhyZWFkSGFuZGxlKQog
ewogICAgIEFTU0VSVCghaWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZShwdGhyZWFkSGFuZGxlKSk7
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7CiAgICAgc3RhdGljIFRocmVh
ZElkZW50aWZpZXIgaWRlbnRpZmllckNvdW50ID0gMTsKICAgICB0aHJlYWRNYXAoKS5hZGQoaWRl
bnRpZmllckNvdW50LCBzdGQ6Om1ha2VfdW5pcXVlPFB0aHJlYWRTdGF0ZT4ocHRocmVhZEhhbmRs
ZSkpOwogICAgIHJldHVybiBpZGVudGlmaWVyQ291bnQrKzsKQEAgLTIxOSw3ICsyMTksNyBAQCB2
b2lkIGNoYW5nZVRocmVhZFByaW9yaXR5KFRocmVhZElkZW50aWZpCiAgICAgQVNTRVJUKHRocmVh
ZElEKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4
KCkpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4
KCkpOwogICAgICAgICBwdGhyZWFkSGFuZGxlID0gcHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXJX
aXRoTG9ja0FscmVhZHlIZWxkKHRocmVhZElEKTsKICAgICAgICAgQVNTRVJUKHB0aHJlYWRIYW5k
bGUpOwogICAgIH0KQEAgLTI0Miw3ICsyNDIsNyBAQCBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRp
b24oVGhyZWFkSWRlbnRpCiAKICAgICB7CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbG9j
ayBhY3Jvc3MgdGhlIGNhbGwgdG8gam9pbiwgc2luY2UgdGhhdCBjYW4gYmxvY2sgb3VyIHRocmVh
ZCBhbmQgY2F1c2UgZGVhZGxvY2suCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRN
YXBNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRN
YXBNdXRleCgpKTsKICAgICAgICAgcHRocmVhZEhhbmRsZSA9IHB0aHJlYWRIYW5kbGVGb3JJZGVu
dGlmaWVyV2l0aExvY2tBbHJlYWR5SGVsZCh0aHJlYWRJRCk7CiAgICAgICAgIEFTU0VSVChwdGhy
ZWFkSGFuZGxlKTsKICAgICB9CkBAIC0yNTQsNyArMjU0LDcgQEAgaW50IHdhaXRGb3JUaHJlYWRD
b21wbGV0aW9uKFRocmVhZElkZW50aQogICAgIGVsc2UgaWYgKGpvaW5SZXN1bHQpCiAgICAgICAg
IExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgdW5hYmxlIHRvIGJlIGpvaW5lZC5c
biIsIHRocmVhZElEKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgp
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwog
ICAgIFB0aHJlYWRTdGF0ZSogc3RhdGUgPSB0aHJlYWRNYXAoKS5nZXQodGhyZWFkSUQpOwogICAg
IEFTU0VSVChzdGF0ZSk7CiAgICAgQVNTRVJUKHN0YXRlLT5qb2luYWJsZVN0YXRlKCkgPT0gUHRo
cmVhZFN0YXRlOjpKb2luYWJsZSk7CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBkZXRhY2hUaHJl
YWQoVGhyZWFkSWRlbnRpZmllciB0aHJlYQogewogICAgIEFTU0VSVCh0aHJlYWRJRCk7CiAKLSAg
ICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKICAgICBwdGhyZWFkX3QgcHRocmVh
ZEhhbmRsZSA9IHB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyV2l0aExvY2tBbHJlYWR5SGVsZCh0
aHJlYWRJRCk7CiAgICAgQVNTRVJUKHB0aHJlYWRIYW5kbGUpOwogCkBAIC0yOTEsNyArMjkxLDcg
QEAgdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllciB0aHJlYQogCiB2b2lkIHRocmVh
ZERpZEV4aXQoVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCkKIHsKLSAgICBNdXRleExvY2tlciBs
b2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tl
cih0aHJlYWRNYXBNdXRleCgpKTsKICAgICBQdGhyZWFkU3RhdGUqIHN0YXRlID0gdGhyZWFkTWFw
KCkuZ2V0KHRocmVhZElEKTsKICAgICBBU1NFUlQoc3RhdGUpOwogICAgIApAQCAtMzEzLDcgKzMx
Myw3IEBAIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpCiAgICAgcmV0dXJuIGlkOwog
fQogCi1NdXRleDo6TXV0ZXgoKQorRGVwcmVjYXRlZE11dGV4OjpEZXByZWNhdGVkTXV0ZXgoKQog
ewogICAgIHB0aHJlYWRfbXV0ZXhhdHRyX3QgYXR0cjsKICAgICBwdGhyZWFkX211dGV4YXR0cl9p
bml0KCZhdHRyKTsKQEAgLTMyNSwxOSArMzI1LDE5IEBAIE11dGV4OjpNdXRleCgpCiAgICAgcHRo
cmVhZF9tdXRleGF0dHJfZGVzdHJveSgmYXR0cik7CiB9CiAKLU11dGV4Ojp+TXV0ZXgoKQorRGVw
cmVjYXRlZE11dGV4Ojp+RGVwcmVjYXRlZE11dGV4KCkKIHsKICAgICBpbnQgcmVzdWx0ID0gcHRo
cmVhZF9tdXRleF9kZXN0cm95KCZtX211dGV4KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
IXJlc3VsdCk7CiB9CiAKLXZvaWQgTXV0ZXg6OmxvY2soKQordm9pZCBEZXByZWNhdGVkTXV0ZXg6
OmxvY2soKQogewogICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJm1fbXV0ZXgp
OwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKIH0KIAotYm9vbCBNdXRleDo6
dHJ5TG9jaygpCitib29sIERlcHJlY2F0ZWRNdXRleDo6dHJ5TG9jaygpCiB7CiAgICAgaW50IHJl
c3VsdCA9IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmbV9tdXRleCk7CiAKQEAgLTM1MCw3ICszNTAs
NyBAQCBib29sIE11dGV4Ojp0cnlMb2NrKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
TXV0ZXg6OnVubG9jaygpCit2b2lkIERlcHJlY2F0ZWRNdXRleDo6dW5sb2NrKCkKIHsKICAgICBp
bnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJm1fbXV0ZXgpOwogICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKQEAgLTM2NiwxMyArMzY2LDEzIEBAIFRocmVhZENvbmRp
dGlvbjo6flRocmVhZENvbmRpdGlvbigpCiAgICAgcHRocmVhZF9jb25kX2Rlc3Ryb3koJm1fY29u
ZGl0aW9uKTsKIH0KICAgICAKLXZvaWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11dGV4JiBtdXRl
eCkKK3ZvaWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KERlcHJlY2F0ZWRNdXRleCYgbXV0ZXgpCiB7
CiAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfY29uZF93YWl0KCZtX2NvbmRpdGlvbiwgJm11dGV4
LmltcGwoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwogfQogCi1ib29s
IFRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KE11dGV4JiBtdXRleCwgZG91YmxlIGFic29sdXRl
VGltZSkKK2Jvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoRGVwcmVjYXRlZE11dGV4JiBt
dXRleCwgZG91YmxlIGFic29sdXRlVGltZSkKIHsKICAgICBpZiAoYWJzb2x1dGVUaW1lIDwgY3Vy
cmVudFRpbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dURi93dGYv
VGhyZWFkaW5nV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdX
aW4uY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsOSArMTQzLDkgQEAgdm9pZCBpbml0aWFsaXplQ3Vy
cmVudFRocmVhZEludGVybmFsKGNvbgogI2VuZGlmCiB9CiAKLXN0YXRpYyBNdXRleCYgdGhyZWFk
TWFwTXV0ZXgoKQorc3RhdGljIERlcHJlY2F0ZWRNdXRleCYgdGhyZWFkTWFwTXV0ZXgoKQogewot
ICAgIHN0YXRpYyBNdXRleCBtdXRleDsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZE11dGV4IG11dGV4
OwogICAgIHJldHVybiBtdXRleDsKIH0KIApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZygpCiAgICAgdGhyZWFkTWFwTXV0ZXgoKTsKICAgICBpbml0aWFsaXplUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yKCk7CiAgICAgd3RmVGhyZWFkRGF0YSgpOwotICAgIHNfZHRvYVA1
TXV0ZXggPSBuZXcgTXV0ZXg7CisgICAgc19kdG9hUDVNdXRleCA9IG5ldyBEZXByZWNhdGVkTXV0
ZXg7CiAgICAgaW5pdGlhbGl6ZURhdGVzKCk7CiB9CiAKQEAgLTE3NywyMCArMTc3LDIwIEBAIHN0
YXRpYyBIYXNoTWFwPERXT1JELCBIQU5ETEU+JiB0aHJlYWRNYXAKIAogc3RhdGljIHZvaWQgc3Rv
cmVUaHJlYWRIYW5kbGVCeUlkZW50aWZpZXIoRFdPUkQgdGhyZWFkSUQsIEhBTkRMRSB0aHJlYWRI
YW5kbGUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7CiAgICAgQVNT
RVJUKCF0aHJlYWRNYXAoKS5jb250YWlucyh0aHJlYWRJRCkpOwogICAgIHRocmVhZE1hcCgpLmFk
ZCh0aHJlYWRJRCwgdGhyZWFkSGFuZGxlKTsKIH0KIAogc3RhdGljIEhBTkRMRSB0aHJlYWRIYW5k
bGVGb3JJZGVudGlmaWVyKFRocmVhZElkZW50aWZpZXIgaWQpCiB7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIodGhyZWFkTWFwTXV0ZXgoKSk7CiAgICAgcmV0dXJuIHRocmVhZE1hcCgpLmdldChpZCk7CiB9
CiAKIHN0YXRpYyB2b2lkIGNsZWFyVGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcihUaHJlYWRJZGVu
dGlmaWVyIGlkKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsK
KyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwogICAg
IEFTU0VSVCh0aHJlYWRNYXAoKS5jb250YWlucyhpZCkpOwogICAgIHRocmVhZE1hcCgpLnJlbW92
ZShpZCk7CiB9CkBAIC0yNzcsMjUgKzI3NywyNSBAQCBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRU
aHJlYWQoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUaHJlYWRJZGVudGlmaWVyPihHZXRDdXJy
ZW50VGhyZWFkSWQoKSk7CiB9CiAKLU11dGV4OjpNdXRleCgpCitEZXByZWNhdGVkTXV0ZXg6OkRl
cHJlY2F0ZWRNdXRleCgpCiB7CiAgICAgbV9tdXRleC5tX3JlY3Vyc2lvbkNvdW50ID0gMDsKICAg
ICBJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZtX211dGV4Lm1faW50ZXJuYWxNdXRleCk7CiB9
CiAKLU11dGV4Ojp+TXV0ZXgoKQorRGVwcmVjYXRlZE11dGV4Ojp+RGVwcmVjYXRlZE11dGV4KCkK
IHsKICAgICBEZWxldGVDcml0aWNhbFNlY3Rpb24oJm1fbXV0ZXgubV9pbnRlcm5hbE11dGV4KTsK
IH0KIAotdm9pZCBNdXRleDo6bG9jaygpCit2b2lkIERlcHJlY2F0ZWRNdXRleDo6bG9jaygpCiB7
CiAgICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJm1fbXV0ZXgubV9pbnRlcm5hbE11dGV4KTsKICAg
ICArK21fbXV0ZXgubV9yZWN1cnNpb25Db3VudDsKIH0KICAgICAKICNwcmFnbWEgd2FybmluZyhz
dXBwcmVzczogMjYxMTUpCi1ib29sIE11dGV4Ojp0cnlMb2NrKCkKK2Jvb2wgRGVwcmVjYXRlZE11
dGV4Ojp0cnlMb2NrKCkKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBtb2RlbGVkIGFmdGVyIHRo
ZSBiZWhhdmlvciBvZiBwdGhyZWFkX211dGV4X3RyeWxvY2ssCiAgICAgLy8gd2hpY2ggd2lsbCBy
ZXR1cm4gYW4gZXJyb3IgaWYgdGhlIGxvY2sgaXMgYWxyZWFkeSBvd25lZCBieSB0aGUKQEAgLTMy
MSw3ICszMjEsNyBAQCBib29sIE11dGV4Ojp0cnlMb2NrKCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgTXV0ZXg6OnVubG9jaygpCit2b2lkIERlcHJlY2F0ZWRNdXRleDo6dW5sb2NrKCkK
IHsKICAgICBBU1NFUlQobV9tdXRleC5tX3JlY3Vyc2lvbkNvdW50KTsKICAgICAtLW1fbXV0ZXgu
bV9yZWN1cnNpb25Db3VudDsKQEAgLTQ1OCwxMiArNDU4LDEyIEBAIFRocmVhZENvbmRpdGlvbjo6
flRocmVhZENvbmRpdGlvbigpCiAgICAgQ2xvc2VIYW5kbGUobV9jb25kaXRpb24ubV91bmJsb2Nr
TG9jayk7CiB9CiAKLXZvaWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11dGV4JiBtdXRleCkKK3Zv
aWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KERlcHJlY2F0ZWRNdXRleCYgbXV0ZXgpCiB7CiAgICAg
bV9jb25kaXRpb24udGltZWRXYWl0KG11dGV4LmltcGwoKSwgSU5GSU5JVEUpOwogfQogCi1ib29s
IFRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KE11dGV4JiBtdXRleCwgZG91YmxlIGFic29sdXRl
VGltZSkKK2Jvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoRGVwcmVjYXRlZE11dGV4JiBt
dXRleCwgZG91YmxlIGFic29sdXRlVGltZSkKIHsKICAgICBEV09SRCBpbnRlcnZhbCA9IGFic29s
dXRlVGltZVRvV2FpdFRpbWVvdXRJbnRlcnZhbChhYnNvbHV0ZVRpbWUpOwogCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Xb3Jr
UXVldWUuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMywxMCArMTEzLDEwIEBAIHByaXZhdGU6CiAjZWxpZiBPUyhX
SU5ET1dTKQogICAgIHZvbGF0aWxlIExPTkcgbV9pc1dvcmtUaHJlYWRSZWdpc3RlcmVkOwogCi0g
ICAgTXV0ZXggbV93b3JrSXRlbVF1ZXVlTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV93b3Jr
SXRlbVF1ZXVlTG9jazsKICAgICBWZWN0b3I8UmVmUHRyPFdvcmtJdGVtV2luPj4gbV93b3JrSXRl
bVF1ZXVlOwogCi0gICAgTXV0ZXggbV9oYW5kbGVzTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXgg
bV9oYW5kbGVzTG9jazsKICAgICBIYXNoTWFwPEhBTkRMRSwgUmVmUHRyPEhhbmRsZVdvcmtJdGVt
Pj4gbV9oYW5kbGVzOwogCiAgICAgSEFORExFIG1fdGltZXJRdWV1ZTsKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL2R0b2EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2R0b2EuY3BwCShy
ZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9kdG9hLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNyArNTQsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotTXV0ZXgqIHNfZHRvYVA1
TXV0ZXg7CitEZXByZWNhdGVkTXV0ZXgqIHNfZHRvYVA1TXV0ZXg7CiAKIHR5cGVkZWYgdW5pb24g
ewogICAgIGRvdWJsZSBkOwpJbmRleDogU291cmNlL1dURi93dGYvZHRvYS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL2R0b2EuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dU
Ri93dGYvZHRvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBACiAKIG5hbWVzcGFj
ZSBXVEYgewogCi1jbGFzcyBNdXRleDsKK2NsYXNzIERlcHJlY2F0ZWRNdXRleDsKIAotZXh0ZXJu
IE11dGV4KiBzX2R0b2FQNU11dGV4OworZXh0ZXJuIERlcHJlY2F0ZWRNdXRleCogc19kdG9hUDVN
dXRleDsKIAogdHlwZWRlZiBjaGFyIER0b2FCdWZmZXJbODBdOwogCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvZWZsL0Rpc3BhdGNoUXVldWVFZmwuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZUVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcg
Kzk1LDcgQEAgRGlzcGF0Y2hRdWV1ZTo6fkRpc3BhdGNoUXVldWUoKQogdm9pZCBEaXNwYXRjaFF1
ZXVlOjpkaXNwYXRjaChzdGQ6OnVuaXF1ZV9wdHI8V29ya0l0ZW0+IGl0ZW0pCiB7CiAgICAgewot
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRlbXNMb2NrKTsKKyAgICAgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtc0xvY2spOwogICAgICAgICBtX3dv
cmtJdGVtcy5hcHBlbmQoV1RGOjptb3ZlKGl0ZW0pKTsKICAgICB9CiAKQEAgLTE0Niw3ICsxNDYs
NyBAQCB2b2lkIERpc3BhdGNoUXVldWU6OnBlcmZvcm1Xb3JrKCkKICAgICAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxXb3JrSXRlbT4+IHdvcmtJdGVtczsKIAogICAgICAgICB7Ci0gICAgICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRlbXNMb2NrKTsKKyAgICAgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRlbXNMb2NrKTsKICAgICAgICAgICAg
IGlmIChtX3dvcmtJdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0xNjQsNyArMTY0LDcgQEAgdm9pZCBEaXNwYXRjaFF1ZXVlOjpwZXJmb3JtVGltZXJXb3JrKCkK
IAogICAgIHsKICAgICAgICAgLy8gUHJvdGVjdHMgbV90aW1lcldvcmtJdGVtcy4KLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGltZXJXb3JrSXRlbXNMb2NrKTsKKyAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbWVyV29ya0l0ZW1zTG9jayk7CiAgICAgICAgIGlm
IChtX3RpbWVyV29ya0l0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
MjA5LDcgKzIwOSw3IEBAIHZvaWQgRGlzcGF0Y2hRdWV1ZTo6aW5zZXJ0VGltZXJXb3JrSXRlbSgK
IAogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90
aW1lcldvcmtJdGVtc0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90
aW1lcldvcmtJdGVtc0xvY2spOwogICAgIC8vIFRoZSBpdGVtcyBzaG91bGQgYmUgb3JkZXJlZCBi
eSBleHBpcmUgdGltZS4KICAgICBmb3IgKDsgcG9zaXRpb24gPCBtX3RpbWVyV29ya0l0ZW1zLnNp
emUoKTsgKytwb3NpdGlvbikKICAgICAgICAgaWYgKGl0ZW0tPmV4cGlyYXRpb25UaW1lTmFub1Nl
Y29uZHMoKSA8IG1fdGltZXJXb3JrSXRlbXNbcG9zaXRpb25dLT5leHBpcmF0aW9uVGltZU5hbm9T
ZWNvbmRzKCkpCkBAIC0yMjksMTQgKzIyOSwxNCBAQCB2b2lkIERpc3BhdGNoUXVldWU6OmRpc3Bh
dGNoUXVldWVUaHJlYWQoCiAKIHZvaWQgRGlzcGF0Y2hRdWV1ZTo6d2FrZVVwVGhyZWFkKCkKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV93cml0ZVRvUGlwZURlc2NyaXB0b3JMb2NrKTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd3JpdGVUb1BpcGVEZXNjcmlwdG9yTG9j
ayk7CiAgICAgaWYgKHdyaXRlKG1fd3JpdGVUb1BpcGVEZXNjcmlwdG9yLCAmd2FrZVVwVGhyZWFk
TWVzc2FnZSwgc2l6ZW9mKGNoYXIpKSA9PSAtMSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gd2FrZSB1cCBEaXNwYXRjaFF1ZXVlIFRocmVhZCIpOwogfQogCiB0aW1ldmFsKiBEaXNwYXRj
aFF1ZXVlOjpnZXROZXh0VGltZU91dCgpIGNvbnN0CiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fdGltZXJXb3JrSXRlbXNMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fdGltZXJXb3JrSXRlbXNMb2NrKTsKICAgICBpZiAobV90aW1lcldvcmtJdGVtcy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0
Y2hRdWV1ZUVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1
ZXVlRWZsLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRj
aFF1ZXVlRWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAg
ICBpbnQgbV9tYXhGaWxlRGVzY3JpcHRvcjsKICAgICBpbnQgbV9yZWFkRnJvbVBpcGVEZXNjcmlw
dG9yOwogICAgIGludCBtX3dyaXRlVG9QaXBlRGVzY3JpcHRvcjsKLSAgICBNdXRleCBtX3dyaXRl
VG9QaXBlRGVzY3JpcHRvckxvY2s7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fd3JpdGVUb1BpcGVE
ZXNjcmlwdG9yTG9jazsKIAogICAgIGJvb2wgbV9pc1RocmVhZFJ1bm5pbmc7CiAKQEAgLTcxLDEw
ICs3MSwxMCBAQCBwcml2YXRlOgogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9zb2NrZXRF
dmVudEhhbmRsZXI7CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdvcmtJdGVtPj4gbV93
b3JrSXRlbXM7Ci0gICAgTXV0ZXggbV93b3JrSXRlbXNMb2NrOworICAgIERlcHJlY2F0ZWRNdXRl
eCBtX3dvcmtJdGVtc0xvY2s7CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRpbWVyV29y
a0l0ZW0+PiBtX3RpbWVyV29ya0l0ZW1zOwotICAgIG11dGFibGUgTXV0ZXggbV90aW1lcldvcmtJ
dGVtc0xvY2s7CisgICAgbXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV90aW1lcldvcmtJdGVtc0xv
Y2s7CiB9OwogCiAjZW5kaWYgLy8gRGlzcGF0Y2hRdWV1ZUVmbF9oCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9lZmwvUnVuTG9vcEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvZWZs
L1J1bkxvb3BFZmwuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9lZmwv
UnVuTG9vcEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBSdW5M
b29wOjp3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2bwogICAgIFJ1bkxvb3AqIGxvb3AgPSBzdGF0
aWNfY2FzdDxSdW5Mb29wKj4oZGF0YSk7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihsb29wLT5tX3dha2VVcEV2ZW50UmVxdWVzdGVkTG9jayk7CisgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobG9vcC0+bV93YWtlVXBFdmVudFJlcXVlc3RlZExvY2spOwog
ICAgICAgICBsb29wLT5tX3dha2VVcEV2ZW50UmVxdWVzdGVkID0gZmFsc2U7CiAgICAgfQogCkBA
IC02OSwxNCArNjksMTQgQEAgdm9pZCBSdW5Mb29wOjp3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2
bwogdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogewogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWRMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX3dha2VVcEV2ZW50UmVxdWVzdGVkTG9jayk7CiAgICAgICAgIGlm
IChtX3dha2VVcEV2ZW50UmVxdWVzdGVkKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBt
X3dha2VVcEV2ZW50UmVxdWVzdGVkID0gdHJ1ZTsKICAgICB9CiAKICAgICB7Ci0gICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX3BpcGVMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX3BpcGVMb2NrKTsKICAgICAgICAgZWNvcmVfcGlwZV93cml0ZShtX3BpcGUu
Z2V0KCksIHdha3VwRWNvcmVQaXBlTWVzc2FnZSwgZWNvcmVQaXBlTWVzc2FnZVNpemUpOwogICAg
IH0KIH0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAJ
KHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBo
b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBCaW5hcnlTZW1hcGhvcmU6
On5CaW5hcnlTZW1hcGhvcmUoKQogCiB2b2lkIEJpbmFyeVNlbWFwaG9yZTo6c2lnbmFsKCkKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIG1faXNTZXQgPSB0cnVlOwogICAgIG1fY29uZGl0
aW9uLnNpZ25hbCgpOwpAQCAtNDcsNyArNDcsNyBAQCB2b2lkIEJpbmFyeVNlbWFwaG9yZTo6c2ln
bmFsKCkKIAogYm9vbCBCaW5hcnlTZW1hcGhvcmU6OndhaXQoZG91YmxlIGFic29sdXRlVGltZSkK
IHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIGJvb2wgdGltZWRPdXQgPSBmYWxzZTsKICAg
ICB3aGlsZSAoIW1faXNTZXQpIHsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5
U2VtYXBob3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGhyZWFkcy9CaW5hcnlT
ZW1hcGhvcmUuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dURi93dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGJvb2wgbV9pc1NldDsKIAotICAgIE11dGV4IG1fbXV0ZXg7CisgICAg
RGVwcmVjYXRlZE11dGV4IG1fbXV0ZXg7CiAgICAgVGhyZWFkQ29uZGl0aW9uIG1fY29uZGl0aW9u
OwogfTsKIApJbmRleDogU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAJKHJldmlzaW9uIDE4
Nzg4OSkKKysrIFNvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgV29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayh2b2lk
KiBjb24KICAgICBSZWZQdHI8V29ya1F1ZXVlPiBxdWV1ZSA9IGl0ZW0tPnF1ZXVlKCk7CiAKICAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2socXVldWUtPm1fd29ya0l0ZW1RdWV1ZUxvY2sp
OworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhxdWV1ZS0+bV93b3JrSXRlbVF1
ZXVlTG9jayk7CiAgICAgICAgIHF1ZXVlLT5tX3dvcmtJdGVtUXVldWUuYXBwZW5kKGl0ZW0pOwog
CiAgICAgICAgIC8vIElmIG5vIG90aGVyIHRocmVhZCBpcyBwZXJmb3JtaW5nIHdvcmssIHdlIGNh
biBkbyBpdCBvbiB0aGlzIHRocmVhZC4KQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFdvcmtRdWV1
ZTo6dW5yZWdpc3RlckFzV29ya1RocmVhZCgpCiB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZh
bGlkYXRlKCkKIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgTXV0ZXhMb2NrZXIgbG9jayht
X2hhbmRsZXNMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX2hhbmRsZXNM
b2NrKTsKICAgICBBU1NFUlQobV9oYW5kbGVzLmlzRW1wdHkoKSk7CiAjZW5kaWYKIApAQCAtMTMx
LDcgKzEzMSw3IEBAIHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogCiB2b2lk
IFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQogewot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtUXVldWVMb2NrKTsKKyAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1RdWV1ZUxvY2spOwogICAgIHJlZigpOwog
ICAgIG1fd29ya0l0ZW1RdWV1ZS5hcHBlbmQoV29ya0l0ZW1XaW46OmNyZWF0ZShmdW5jdGlvbiwg
dGhpcykpOwogCkBAIC0xNTAsNyArMTUwLDcgQEAgc3RydWN0IFRpbWVyQ29udGV4dCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUgogCiAgICAgV29ya1F1ZXVlKiBxdWV1ZTsKICAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gZnVuY3Rpb247Ci0gICAgTXV0ZXggdGltZXJNdXRleDsKKyAgICBEZXByZWNhdGVk
TXV0ZXggdGltZXJNdXRleDsKICAgICBIQU5ETEUgdGltZXI7CiAKIHByaXZhdGU6CkBAIC0xNzEs
NyArMTcxLDcgQEAgdm9pZCBXb3JrUXVldWU6OnRpbWVyQ2FsbGJhY2sodm9pZCogY29udAogCiAg
ICAgdGltZXJDb250ZXh0LT5xdWV1ZS0+ZGlzcGF0Y2godGltZXJDb250ZXh0LT5mdW5jdGlvbik7
CiAKLSAgICBNdXRleExvY2tlciBsb2NrKHRpbWVyQ29udGV4dC0+dGltZXJNdXRleCk7CisgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sodGltZXJDb250ZXh0LT50aW1lck11dGV4KTsKICAg
ICBBU1NFUlQodGltZXJDb250ZXh0LT50aW1lcik7CiAgICAgQVNTRVJUKHRpbWVyQ29udGV4dC0+
cXVldWUtPm1fdGltZXJRdWV1ZSk7CiAgICAgaWYgKCE6OkRlbGV0ZVRpbWVyUXVldWVUaW1lcih0
aW1lckNvbnRleHQtPnF1ZXVlLT5tX3RpbWVyUXVldWUsIHRpbWVyQ29udGV4dC0+dGltZXIsIDAp
KSB7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3Rk
OjpjaHJvbgogICAgICAgICAvLyBUaGUgdGltZXIgY2FsbGJhY2sgY291bGQgZmlyZSBiZWZvcmUg
OjpDcmVhdGVUaW1lclF1ZXVlVGltZXIgZXZlbiByZXR1cm5zLCBzbyB3ZSBwcm90ZWN0CiAgICAg
ICAgIC8vIGNvbnRleHQtPnRpbWVyIHdpdGggYSBtdXRleCB0byBlbnN1cmUgdGhlIHRpbWVyIGNh
bGxiYWNrIGRvZXNuJ3QgYWNjZXNzIGl0IGJlZm9yZSB0aGUKICAgICAgICAgLy8gdGltZXIgaGFu
ZGxlIGhhcyBiZWVuIHN0b3JlZCBpbiBpdC4KLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhjb250
ZXh0LT50aW1lck11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2soY29u
dGV4dC0+dGltZXJNdXRleCk7CiAKICAgICAgICAgLy8gU2luY2Ugb3VyIHRpbWVyIGNhbGxiYWNr
IGlzIHF1aWNrLCB3ZSBjYW4gZXhlY3V0ZSBpbiB0aGUgdGltZXIgdGhyZWFkIGl0c2VsZiBhbmQg
YXZvaWQKICAgICAgICAgLy8gYW4gZXh0cmEgdGhyZWFkIHN3aXRjaCBvdmVyIHRvIGEgd29ya2Vy
IHRocmVhZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBc3luY0F1ZGlvRGVjb2Rl
cjo6QXN5bmNBdWRpb0RlY29kZXIoKQogewogICAgIC8vIFN0YXJ0IHdvcmtlciB0aHJlYWQuCi0g
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOworICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAgICAgbV90aHJlYWRJ
RCA9IGNyZWF0ZVRocmVhZChBc3luY0F1ZGlvRGVjb2Rlcjo6dGhyZWFkRW50cnksIHRoaXMsICJB
dWRpbyBEZWNvZGVyIik7CiB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBBc3luY0F1ZGlvRGVj
b2Rlcjo6cnVuTG9vcCgpCiAKICAgICB7CiAgICAgICAgIC8vIFdhaXQgZm9yIHVudGlsIHdlIGhh
dmUgbV90aHJlYWRJRCBlc3RhYmxpc2hlZCBiZWZvcmUgc3RhcnRpbmcgdGhlIHJ1biBsb29wLgot
ICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CisgICAgICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAgICAg
fQogCiAgICAgLy8gS2VlcCBydW5uaW5nIGRlY29kaW5nIHRhc2tzIHVudGlsIHdlJ3JlIGtpbGxl
ZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5j
QXVkaW9EZWNvZGVyLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyAr
ODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuTG9vcCgpOwogCiAgICAgV1RGOjpUaHJlYWRJ
ZGVudGlmaWVyIG1fdGhyZWFkSUQ7Ci0gICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4Owor
ICAgIERlcHJlY2F0ZWRNdXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CiAgICAgTWVzc2FnZVF1
ZXVlPERlY29kaW5nVGFzaz4gbV9xdWV1ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkocmV2aXNpb24gMTg3ODg5KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgwLDcgKzM4MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25uZWN0
aW9uQ291bnQgeyAwIH07CiAKICAgICAvLyBHcmFwaCBsb2NraW5nLgotICAgIE11dGV4IG1fY29u
dGV4dEdyYXBoTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fY29udGV4dEdyYXBoTXV0ZXg7
CiAgICAgdm9sYXRpbGUgVGhyZWFkSWRlbnRpZmllciBtX2F1ZGlvVGhyZWFkIHsgMCB9OwogICAg
IHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9ncmFwaE93bmVyVGhyZWFkOyAvLyBpZiB0aGUg
bG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVy
d2lzZSA9PSBVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNl
LmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTMgKzYz
LDEzIEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIE1lZGlhU3QKIAogdm9pZCBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlOjphZGRBdWRpb0NvbnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyPiBjb25zdW1lcikKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOwogICAgIG1fYXVkaW9Db25zdW1lcnMuYXBwZW5kKGNvbnN1
bWVyKTsKIH0KIAogYm9vbCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpyZW1vdmVBdWRpb0NvbnN1
bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIpCiB7Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKICAgICBzaXplX3QgcG9zID0gbV9hdWRp
b0NvbnN1bWVycy5maW5kKGNvbnN1bWVyKTsKICAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7CiAg
ICAgICAgIG1fYXVkaW9Db25zdW1lcnMucmVtb3ZlKHBvcyk7CkBAIC04MCwxNCArODAsMTQgQEAg
Ym9vbCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpyZW1vdmVBdWRpbwogCiB2b2lkIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2U6OnNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3Vt
ZXJzTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3Vt
ZXJzTG9jayk7CiAgICAgZm9yIChhdXRvJiBjb25zdW1lciA6IG1fYXVkaW9Db25zdW1lcnMpCiAg
ICAgICAgIGNvbnN1bWVyLT5zZXRGb3JtYXQobnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSk7
CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVz
KiBidXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOwogICAgIGZvciAoYXV0byYgY29uc3VtZXIgOiBtX2F1ZGlv
Q29uc3VtZXJzKQogICAgICAgICBjb25zdW1lci0+Y29uc3VtZUF1ZGlvKGJ1cywgbnVtYmVyT2ZG
cmFtZXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZSgpOwogCiAgICAgU3RyaW5nIG1fZGV2aWNlSWQ7Ci0gICAgTXV0ZXggbV9hdWRp
b0NvbnN1bWVyc0xvY2s7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fYXVkaW9Db25zdW1lcnNMb2Nr
OwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPj4gbV9hdWRpb0Nv
bnN1bWVyczsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIG1fY3VycmVudFN0YXRlczsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2
b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRh
YmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAKICAgICB7
Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4
KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzc011dGV4KTsKIAogICAgICAgICAvLyBDbGVhbiB1cCB0cmFuc2FjdGlvbnMgdGhhdCBo
YXZlIG5vdCBiZWVuIHNjaGVkdWxlZCB5ZXQ6CiAgICAgICAgIC8vIFRyYW5zYWN0aW9uIHBoYXNl
IDEgY2xlYW51cC4gU2VlIGNvbW1lbnQgb24gIldoYXQgaGFwcGVucyBpZiBhCkBAIC0xNzQsNyAr
MTc0LDcgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAKIFBhc3NSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiBEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24oUGFzc1Jl
ZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24sIGJvb2wgcmVhZE9ubHksIGNvbnN0IENo
YW5nZVZlcnNpb25EYXRhKiBkYXRhKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIGlmICghbV9pc1RyYW5zYWN0aW9u
UXVldWVFbmFibGVkKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMjAyLDE0ICsyMDIsMTQgQEAg
dm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoUwogCiB2b2lkIERhdGFiYXNl
OjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoKQogewotICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIG1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQog
CiBib29sIERhdGFiYXNlOjpoYXNQZW5kaW5nVHJhbnNhY3Rpb24oKQogewotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIHJl
dHVybiBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyB8fCAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1w
dHkoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgRGF0YWJhc2VUYWJsZU5hbWVz
VGFzazsKIAogICAgIERlcXVlPFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+PiBtX3RyYW5z
YWN0aW9uUXVldWU7Ci0gICAgTXV0ZXggbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKKyAg
ICBEZXByZWNhdGVkTXV0ZXggbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKICAgICBib29s
IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzOwogICAgIGJvb2wgbV9pc1RyYW5zYWN0aW9uUXVldWVF
bmFibGVkOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQmFja2VuZEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBib29sIERhdGFiYXNlQmFja2Vu
ZEJhc2U6OnBlcmZvcm1PcGVuQW5kCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHsKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHdlIHdhaXQgdGlsbCB0aGUgYmFja2dyb3VuZCByZW1vdmFsIG9mIHRoZSBl
bXB0eSBkYXRhYmFzZSBmaWxlcyBmaW5pc2hlZCBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4gYW55IGRh
dGFiYXNlLgotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoRGF0YWJhc2VUcmFja2VyOjpvcGVu
RGF0YWJhc2VNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihE
YXRhYmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11dGV4KCkpOwogICAgIH0KICNlbmRpZgogCkBA
IC01OTMsNyArNTkzLDcgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmRCYXNlOjppbnRlcnJ1cHQoKQog
CiBib29sIERhdGFiYXNlQmFja2VuZEJhc2U6OmlzSW50ZXJydXB0ZWQoKQogewotICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX3NxbGl0ZURhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSk7CisgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3NxbGl0ZURhdGFiYXNlLmRhdGFiYXNlTXV0ZXgo
KSk7CiAgICAgcmV0dXJuIG1fc3FsaXRlRGF0YWJhc2UuaXNJbnRlcnJ1cHRlZCgpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBEYXRhYmFzZVRocmVhZCogRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzCiB7
CiAgICAgaWYgKCFtX2RhdGFiYXNlVGhyZWFkICYmICFtX2hhc09wZW5EYXRhYmFzZXMpIHsKICNp
ZiBQTEFURk9STShJT1MpCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9kYXRhYmFzZVRocmVh
ZE11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9kYXRhYmFzZVRo
cmVhZE11dGV4KTsKICNlbmRpZgogICAgICAgICAvLyBJdCdzIE9LIHRvIGFzayBmb3IgdGhlIG1f
ZGF0YWJhc2VUaHJlYWQgYWZ0ZXIgd2UndmUgcmVxdWVzdGVkCiAgICAgICAgIC8vIHRlcm1pbmF0
aW9uIGJlY2F1c2Ugd2UncmUgc3RpbGwgdXNpbmcgaXQgdG8gZXhlY3V0ZSB0aGUgY2xvc2luZwpA
QCAtMTgzLDcgKzE4Myw3IEBAIERhdGFiYXNlVGhyZWFkKiBEYXRhYmFzZUNvbnRleHQ6OmRhdGFi
YXMKICNpZiBQTEFURk9STShJT1MpCiB2b2lkIERhdGFiYXNlQ29udGV4dDo6c2V0UGF1c2VkKGJv
b2wgcGF1c2VkKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9kYXRhYmFzZVRocmVhZE11dGV4
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX2RhdGFiYXNlVGhyZWFkTXV0ZXgp
OwogCiAgICAgbV9wYXVzZWQgPSBwYXVzZWQ7CiAgICAgaWYgKG1fZGF0YWJhc2VUaHJlYWQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VDb250ZXh0LmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2
LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2VyOwogCiAjaWYg
UExBVEZPUk0oSU9TKQotICAgIE11dGV4IG1fZGF0YWJhc2VUaHJlYWRNdXRleDsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXggbV9kYXRhYmFzZVRocmVhZE11dGV4OwogICAgIGJvb2wgbV9wYXVzZWQ7CiAj
ZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUYXNrLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcg
KzU5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbV90YXNrQ29tcGxldGVkOwot
ICAgIE11dGV4IG1fc3luY2hyb25vdXNNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9zeW5j
aHJvbm91c011dGV4OwogICAgIFRocmVhZENvbmRpdGlvbiBtX3N5bmNocm9ub3VzQ29uZGl0aW9u
OwogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1faGFzQ2hlY2tlZEZvclRlcm1pbmF0aW9uOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRocmVhZC5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3
ICs2NCw3IEBAIERhdGFiYXNlVGhyZWFkOjp+RGF0YWJhc2VUaHJlYWQoKQogCiBib29sIERhdGFi
YXNlVGhyZWFkOjpzdGFydCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0
aW9uTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRp
b25NdXRleCk7CiAKICAgICBpZiAobV90aHJlYWRJRCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMzgsNyArMTM4LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6c2V0UGF1c2VkKGJvb2wgcGF1
cwogICAgIGlmIChtX3BhdXNlZCA9PSBwYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIE11
dGV4TG9ja2VyIHBhdXNlZExvY2tlcihtX3BhdXNlZE11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgcGF1c2VkTG9ja2VyKG1fcGF1c2VkTXV0ZXgpOwogICAgIG1fcGF1c2VkID0gcGF1
c2VkOwogICAgIGlmICghbV9wYXVzZWQpCiAgICAgICAgIHNjaGVkdWxlVGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPERhdGFiYXNlVW5wYXVzZVRhc2s+KCp0aGlzKSk7CkBAIC0xNTUsNyArMTU1LDcgQEAg
dm9pZCBEYXRhYmFzZVRocmVhZDo6aGFuZGxlUGF1c2VkUXVldWUoKQogCiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxEYXRhYmFzZVRhc2s+IHRhc2socGF1c2VkVGFzay5yZWxlYXNlKCkpOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBwYXVzZWRMb2NrZXIobV9wYXVzZWRNdXRl
eCk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgcGF1c2VkTG9ja2VyKG1fcGF1
c2VkTXV0ZXgpOwogICAgICAgICAgICAgaWYgKG1fcGF1c2VkKSB7CiAgICAgICAgICAgICAgICAg
bV9wYXVzZWRRdWV1ZS5hcHBlbmQoV1RGOjptb3ZlKHRhc2spKTsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFz
ZVRocmVhZCgpCiB7CiAgICAgewogICAgICAgICAvLyBXYWl0IGZvciBEYXRhYmFzZVRocmVhZDo6
c3RhcnQoKSB0byBjb21wbGV0ZS4KLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENy
ZWF0aW9uTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVh
ZENyZWF0aW9uTXV0ZXgpOwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlN0YXJ0ZWQgRGF0YWJh
c2VUaHJlYWQgJXAiLCB0aGlzKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgJKHJldmlzaW9uIDE4Nzg4
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTQgKzc3LDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQgZGF0YWJhc2VUaHJlYWRTdGFydCh2b2lkKik7CiAgICAgdm9pZCBkYXRhYmFzZVRocmVh
ZCgpOwogCi0gICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4OworICAgIERlcHJlY2F0ZWRN
dXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CiAgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVh
ZElEOwogICAgIFJlZlB0cjxEYXRhYmFzZVRocmVhZD4gbV9zZWxmUmVmOwogCiAgICAgTWVzc2Fn
ZVF1ZXVlPERhdGFiYXNlVGFzaz4gbV9xdWV1ZTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgTWVz
c2FnZVF1ZXVlPERhdGFiYXNlVGFzaz4gbV9wYXVzZWRRdWV1ZTsKLSAgICBNdXRleCBtX3BhdXNl
ZE11dGV4OworICAgIERlcHJlY2F0ZWRNdXRleCBtX3BhdXNlZE11dGV4OwogICAgIHZvbGF0aWxl
IGJvb2wgbV9wYXVzZWQ7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gMTg3
ODg5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIERhdGFiYXNlVHJhY2tlcjo6
RGF0YWJhc2VUcmFja2VyKGNvbnN0IFMKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFi
YXNlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgIEFTU0VSVCghbV9kYXRhYmFzZS5p
c09wZW4oKSk7CiAgICAgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGggPSBwYXRoLmlzb2xhdGVkQ29w
eSgpOwogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3Rh
Ymxpc2hEYXRhYmEKIHsKICAgICBlcnJvciA9IERhdGFiYXNlRXJyb3I6Ok5vbmU7CiAKLSAgICBN
dXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiA9IGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CiAKICAgICBpZiAoaXNE
ZWxldGluZ0RhdGFiYXNlT3JPcmlnaW5Gb3Iob3JpZ2luLCBuYW1lKSkgewpAQCAtMjE4LDcgKzIx
OCw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpyZXRyeUNhbkVzdGFibGlzaEQKIHsKICAgICBl
cnJvciA9IERhdGFiYXNlRXJyb3I6Ok5vbmU7CiAKLSAgICBNdXRleExvY2tlciBsb2NrRGF0YWJh
c2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFi
YXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCk7CiAKICAgICAvLyBXZSBoYXZlIGFscmVhZHkgZWxpbWluYXRl
ZCBvdGhlciB0eXBlcyBvZiBlcnJvcnMgaW4gY2FuRXN0YWJsaXNoRGF0YWJhc2UoKS4KQEAgLTI1
Nyw3ICsyNTcsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JPcmlnaW5OCiAK
IGJvb2wgRGF0YWJhc2VUcmFja2VyOjpoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiog
b3JpZ2luKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQp
OworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJk
KTsKICAgICByZXR1cm4gaGFzRW50cnlGb3JPcmlnaW5Ob0xvY2sob3JpZ2luKTsKIH0KIApAQCAt
Mjg2LDcgKzI4Niw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZVRyYWNrZXI6OmdldE0K
IHsKICAgICAvLyBUaGUgbWF4aW11bSBzaXplIGZvciBhIGRhdGFiYXNlIGlzIHRoZSBmdWxsIHF1
b3RhIGZvciBpdHMgb3JpZ2luLCBtaW51cyB0aGUgY3VycmVudCB1c2FnZSB3aXRoaW4gdGhlIG9y
aWdpbiwKICAgICAvLyBwbHVzIHRoZSBjdXJyZW50IHVzYWdlIG9mIHRoZSBnaXZlbiBkYXRhYmFz
ZQotICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICBT
ZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCk7CiAKICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEgPSBxdW90YUZvck9yaWdpbk5vTG9jayhvcmlnaW4p
OwpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpjbG9zZUFsbERhdGFi
YXNlcygKIHsKICAgICBWZWN0b3I8UmVmPERhdGFiYXNlPj4gb3BlbkRhdGFiYXNlczsKICAgICB7
Ci0gICAgICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VN
YXBHdWFyZCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBM
b2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNl
TWFwKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmb3IgKGF1dG8mIG5hbWVNYXAgOiBt
X29wZW5EYXRhYmFzZU1hcC0+dmFsdWVzKCkpIHsKQEAgLTMyOSw3ICszMjksNyBAQCB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxE
YXRhYmFzZUJhY2tlbmRCYXNlPj4gb3BlbkRhdGFiYXNlczsKICAgICB7Ci0gICAgICAgIE11dGV4
TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAg
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFi
YXNlTWFwR3VhcmQpOwogCiAgICAgICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC00MTQsMTMgKzQxNCwxMyBAQCBTdHJpbmcgRGF0YWJhc2VUcmFja2Vy
OjpmdWxsUGF0aEZvckRhdGFiCiAKIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRoRm9y
RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29s
IGNyZWF0ZUlmTm90RXhpc3RzKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2Rh
dGFiYXNlR3VhcmQpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9k
YXRhYmFzZUd1YXJkKTsKICAgICByZXR1cm4gZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9jayhvcmln
aW4sIG5hbWUsIGNyZWF0ZUlmTm90RXhpc3RzKS5pc29sYXRlZENvcHkoKTsKIH0KIAogdm9pZCBE
YXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBv
cmlnaW5zUmVzdWx0KQogewotICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNl
R3VhcmQpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFz
ZUd1YXJkKTsKIAogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4
aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC00NzMsNyArNDczLDcgQEAg
Ym9vbCBEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlTmFtZXNGb3JPcgogewogICAgIFZlY3RvcjxT
dHJpbmc+IHRlbXA7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9k
YXRhYmFzZUd1YXJkKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tEYXRhYmFz
ZShtX2RhdGFiYXNlR3VhcmQpOwogICAgICAgICBpZiAoIWRhdGFiYXNlTmFtZXNGb3JPcmlnaW5O
b0xvY2sob3JpZ2luLCB0ZW1wKSkKICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
NDkwLDcgKzQ5MCw3IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHMK
ICAgICBpbnQ2NF90IGV4cGVjdGVkVXNhZ2U7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICAgICAgb3BlblRyYWNr
ZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgICAgICBpZiAoIW1fZGF0
YWJhc2UuaXNPcGVuKCkpCkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OnNldERhdGFiYXNlRGV0YWlscwogICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2lu
LT5kYXRhYmFzZUlkZW50aWZpZXIoKTsKICAgICBpbnQ2NF90IGd1aWQgPSAwOwogCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogCiAgICAgb3BlblRyYWNr
ZXJEYXRhYmFzZShDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlz
T3BlbigpKQpAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXREYXRh
YmFzZURldGFpbHMKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVhdGluZ0RhdGFiYXNl
KERhdGFiYXNlKiBkYXRhYmFzZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9k
YXRhYmFzZUd1YXJkKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1f
ZGF0YWJhc2VHdWFyZCk7CiAgICAgZG9uZUNyZWF0aW5nRGF0YWJhc2UoZGF0YWJhc2UtPnNlY3Vy
aXR5T3JpZ2luKCksIGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOwogfQogCkBAIC01ODQs
NyArNTg0LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZShEYQogICAg
ICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1h
cExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogCiAgICAg
ICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCiAgICAgICAgICAgICBtX29wZW5EYXRhYmFzZU1h
cCA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7CkBAIC02MTQsNyArNjE0
LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZQogICAgICAgICBy
ZXR1cm47CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2so
bV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBv
cGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogCiAgICAgICAgIGlm
ICghbV9vcGVuRGF0YWJhc2VNYXApIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0
YWJhc2UKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmdldE9wZW5EYXRhYmFzZXMoU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBIYXNoU2V0PFJlZlB0cjxEYXRhYmFz
ZT4+KiBkYXRhYmFzZXMpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayht
X29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgb3BlbkRh
dGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKICAgICBpZiAoIW1fb3BlbkRh
dGFiYXNlTWFwKQogICAgICAgICByZXR1cm47CiAKQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6Z2V0T3BlbkRhdGFiYXNlcyhTCiAKIFJlZlB0cjxPcmlnaW5Mb2NrPiBE
YXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tGb3IoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgU3Ry
aW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAK
ICAgICAvLyBUaGUgb3JpZ2luTG9ja01hcCBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIERhdGFi
YXNlVGhyZWFkcyBzaW5jZQpAQCAtNzUyLDEzICs3NTIsMTMgQEAgdW5zaWduZWQgbG9uZyBsb25n
IERhdGFiYXNlVHJhY2tlcjo6cXVvdAogCiB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFj
a2VyOjpxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIE11dGV4
TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICByZXR1cm4gcXVvdGFG
b3JPcmlnaW5Ob0xvY2sob3JpZ2luKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldFF1
b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICBp
ZiAocXVvdGFGb3JPcmlnaW5Ob0xvY2sob3JpZ2luKSA9PSBxdW90YSkKICAgICAgICAgcmV0dXJu
OwpAQCAtODg5LDcgKzg4OSw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4o
U2VjdXIKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBkYXRhYmFzZU5hbWVzOwogICAgIHsKLSAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICAg
ICAgb3BlblRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgICAg
ICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC05MTUsNyArOTE1LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihTZWN1
cgogICAgIH0KIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0
YWJhc2VHdWFyZCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2Uo
bV9kYXRhYmFzZUd1YXJkKTsKICAgICAgICAgZGVsZXRlT3JpZ2luTG9ja0ZvcihvcmlnaW4pOwog
ICAgICAgICBkb25lRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIApAQCAtMTA5Niw3ICsxMDk2LDcg
QEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVEZWxldGluZ09yaWdpbgogYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZSht
X2RhdGFiYXNlR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFi
YXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENy
ZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExMSwxMiArMTExMSwxMiBAQCBib29sIERh
dGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjCiAgICAgLy8gV2UgZHJvcCB0aGUgbG9j
ayBoZXJlIGJlY2F1c2UgaG9sZGluZyBsb2NrcyBkdXJpbmcgYSBjYWxsIHRvIGRlbGV0ZURhdGFi
YXNlRmlsZSB3aWxsIGRlYWRsb2NrLgogICAgIGlmICghZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdp
biwgbmFtZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9y
IGRhdGFiYXNlICVzIGluIG9yaWdpbiAlcyIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+
ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBNdXRleExvY2tl
ciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgICAgICBkb25lRGVsZXRp
bmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogCiAgICAg
U1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiREVMRVRFIEZST00gRGF0YWJh
c2VzIFdIRVJFIG9yaWdpbj0/IEFORCBuYW1lPT8iKTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxJVEVfT0spIHsKQEAgLTExNTYsNyArMTE1Niw3IEBAIGJvb2wgRGF0YWJhc2VU
cmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUKIAogI2lmbmRlZiBOREVCVUcKICAgICB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAg
ICAgIEFTU0VSVChpc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihvcmlnaW4sIG5hbWUpKTsK
ICAgICB9CiAjZW5kaWYKQEAgLTExNjcsNyArMTE2Nyw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2Vy
OjpkZWxldGVEYXRhYmFzZUZpbGUKICAgICAvLyBEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENs
b3NlKCksIHNpbmNlIHRoYXQgY2FuIGNhdXNlIGEgZGVhZGxvY2sKICAgICAvLyBkdXJpbmcgdGhl
IHN5bmNocm9ub3VzIERhdGFiYXNlVGhyZWFkIGNhbGwgaXQgdHJpZ2dlcnMuCiAgICAgewotICAg
ICAgICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3Vh
cmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayht
X29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlTWFwKSB7
CiAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgc29tZSBvcGVuIGRhdGFiYXNlcywgbGV0cyBjaGVj
ayBpZiB0aGV5IGFyZSBmb3IgdGhpcyBvcmlnaW4uCiAgICAgICAgICAgICBEYXRhYmFzZU5hbWVN
YXAqIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+Z2V0KG9yaWdpbik7CkBAIC0xMjEwLDcg
KzEyMTAsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lCiAgICAg
CiAgICAgewogICAgICAgICAvLyBBY3F1aXJlIHRoZSBsb2NrIGJlZm9yZSBjYWxsaW5nIG9wZW5U
cmFja2VyRGF0YWJhc2UuCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFi
YXNlR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1f
ZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlm
RG9lc05vdEV4aXN0KTsKICAgICB9CiAKQEAgLTEyMjYsNyArMTIyNiw3IEBAIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmUKICAgICAvLyBEYXRhYmFzZTo6bWFya0FzRGVs
ZXRlZEFuZENsb3NlKCksIHNpbmNlIHRoYXQgY2FuIGNhdXNlIGEgZGVhZGxvY2sKICAgICAvLyBk
dXJpbmcgdGhlIHN5bmNocm9ub3VzIERhdGFiYXNlVGhyZWFkIGNhbGwgaXQgdHJpZ2dlcnMuCiAg
ICAgewotICAgICAgICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFi
YXNlTWFwR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNl
TWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFi
YXNlTWFwKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9wZW5EYXRhYmFzZSA6ICptX29wZW5E
YXRhYmFzZU1hcCkgewogICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9IG9wZW5EYXRhYmFz
ZS5rZXk7CkBAIC0xMzMwLDkgKzEzMzAsOSBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRl
RGF0YWJhc2VGaWxlCiAgICAgcmV0dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNl
RmlsZShwYXRoKTsKIH0KIAotTXV0ZXgmIERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNlTXV0
ZXgoKQorRGVwcmVjYXRlZE11dGV4JiBEYXRhYmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11dGV4
KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0ZXg+IG11dGV4OworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxEZXByZWNhdGVkTXV0ZXg+IG11dGV4OwogICAgIHJldHVybiBtdXRl
eDsKIH0KIApAQCAtMTM1MCw3ICsxMzUwLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmVtcHR5
RGF0YWJhc2VGaWxlcwogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0RGF0YWJhc2VzUGF1c2Vk
KGJvb2wgcGF1c2VkKQogewotICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9v
cGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIG9wZW5EYXRh
YmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CiAgICAgaWYgKCFtX29wZW5EYXRh
YmFzZU1hcCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzcxLDkgKzEzNzEsOSBAQCB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6c2V0Q2xpZW50KERhdGFiYXNlCiAgICAgbV9jbGllbnQgPSBjbGllbnQ7
CiB9CiAKLXN0YXRpYyBNdXRleCYgbm90aWZpY2F0aW9uTXV0ZXgoKQorc3RhdGljIERlcHJlY2F0
ZWRNdXRleCYgbm90aWZpY2F0aW9uTXV0ZXgoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxNdXRleD4gbXV0ZXg7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERlcHJlY2F0ZWRNdXRl
eD4gbXV0ZXg7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCkBAIC0xMzg3LDcgKzEzODcsNyBAQCBz
dGF0aWMgTm90aWZpY2F0aW9uUXVldWUmIG5vdGlmaWNhdGlvblF1CiAKIHZvaWQgRGF0YWJhc2VU
cmFja2VyOjpzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG5vdGlm
aWNhdGlvbk11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobm90aWZp
Y2F0aW9uTXV0ZXgoKSk7CiAKICAgICBub3RpZmljYXRpb25RdWV1ZSgpLmFwcGVuZChzdGQ6OnBh
aXI8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU3RyaW5nPihvcmlnaW4tPmlzb2xhdGVkQ29weSgp
LCBuYW1lLmlzb2xhdGVkQ29weSgpKSk7CiAgICAgc2NoZWR1bGVGb3JOb3RpZmljYXRpb24oKTsK
QEAgLTE0MTMsNyArMTQxMyw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpub3RpZnlEYXRhYmFz
ZXNDaGEKIAogICAgIE5vdGlmaWNhdGlvblF1ZXVlIG5vdGlmaWNhdGlvbnM7CiAgICAgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobm90aWZpY2F0aW9uTXV0ZXgoKSk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobm90aWZpY2F0aW9uTXV0ZXgoKSk7CiAKICAgICAg
ICAgbm90aWZpY2F0aW9ucy5zd2FwKG5vdGlmaWNhdGlvblF1ZXVlKCkpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2Vy
LmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBw
dWJsaWM6CiAgICAgLy8gTW9iaWxlU2FmYXJpIHdpbGwgZ3JhYiB0aGlzIG11dGV4IG9uIHRoZSBt
YWluIHRocmVhZCBiZWZvcmUgZGlzcGF0Y2hpbmcgdGhlIHRhc2sgdG8gCiAgICAgLy8gY2xlYW4g
dXAgemVybyBieXRlIGRhdGFiYXNlIGZpbGVzLiAgQW55IG9wZXJhdGlvbnMgdG8gb3BlbiBuZXcg
ZGF0YWJhc2Ugd2lsbCBoYXZlIHRvCiAgICAgLy8gd2FpdCBmb3IgdGhhdCB0YXNrIHRvIGZpbmlz
aCBieSB3YWl0aW5nIG9uIHRoaXMgbXV0ZXguCi0gICAgc3RhdGljIE11dGV4JiBvcGVuRGF0YWJh
c2VNdXRleCgpOworICAgIHN0YXRpYyBEZXByZWNhdGVkTXV0ZXgmIG9wZW5EYXRhYmFzZU11dGV4
KCk7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZW1wdHlEYXRhYmFzZUZp
bGVzUmVtb3ZhbFRhc2tXaWxsQmVTY2hlZHVsZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBlbXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFza0RpZEZpbmlzaCgpOwpAQCAtMTU0
LDExICsxNTQsMTEgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBEYXRh
YmFzZVNldCo+IERhdGFiYXNlTmFtZU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiwgRGF0YWJhc2VOYW1lTWFwKj4gRGF0YWJhc2VPcmlnaW5NYXA7CiAKLSAg
ICBNdXRleCBtX29wZW5EYXRhYmFzZU1hcEd1YXJkOworICAgIERlcHJlY2F0ZWRNdXRleCBtX29w
ZW5EYXRhYmFzZU1hcEd1YXJkOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNl
T3JpZ2luTWFwPiBtX29wZW5EYXRhYmFzZU1hcDsKIAogICAgIC8vIFRoaXMgbG9jayBwcm90ZWN0
cyBtX2RhdGFiYXNlLCBtX29yaWdpbkxvY2tNYXAsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBt
X29yaWdpbnNCZWluZ0RlbGV0ZWQsIG1fYmVpbmdDcmVhdGVkLCBhbmQgbV9iZWluZ0RlbGV0ZWQu
Ci0gICAgTXV0ZXggbV9kYXRhYmFzZUd1YXJkOworICAgIERlcHJlY2F0ZWRNdXRleCBtX2RhdGFi
YXNlR3VhcmQ7CiAgICAgU1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxPcmlnaW5Mb2NrPj4gT3JpZ2luTG9ja01hcDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCShy
ZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09y
aWdpbkxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBTdHJpbmcgbG9ja0ZpbGVOYW1lRm9yUGF0aChTdHJpbmcgb3JpZ2luUGF0aCk7CiAK
ICAgICBTdHJpbmcgbV9sb2NrRmlsZU5hbWU7Ci0gICAgTXV0ZXggbV9tdXRleDsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXggbV9tdXRleDsKICNpZiBVU0UoRklMRV9MT0NLKQogICAgIFBsYXRmb3JtRmls
ZUhhbmRsZSBtX2xvY2tIYW5kbGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaAkocmV2aXNp
b24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxs
YmFja1dyYXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRQdHI7
CiAgICAgICAgIFQqIGNhbGxiYWNrOwogICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9tdXRleCk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbXV0ZXgpOwogICAgICAgICAgICAgaWYgKCFtX2NhbGxiYWNrKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxUPiB1
bndyYXAoKQogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAg
ICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAgICAgICBBU1NF
UlQoIW1fY2FsbGJhY2sgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJl
YWQoKSk7CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG51bGxwdHI7CiAgICAg
ICAgIHJldHVybiBtX2NhbGxiYWNrLnJlbGVhc2UoKTsKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrOyB9CiAK
IHByaXZhdGU6Ci0gICAgTXV0ZXggbV9tdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9tdXRl
eDsKICAgICBSZWZQdHI8VD4gbV9jYWxsYmFjazsKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
QmFja2VuZC5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgyLDcgKzM4Miw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXAoKQog
CiAgICAgcmVsZWFzZU9yaWdpbkxvY2tJZk5lZWRlZCgpOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fc3RhdGVtZW50TXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9zdGF0ZW1lbnRNdXRleCk7CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwogCiAgICAg
aWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKQEAgLTQ2Niw3ICs0NjYsNyBAQCBTUUxUcmFuc2Fj
dGlvbkJhY2tlbmQ6OlN0YXRlRnVuY3Rpb24gU1FMCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kOjplbnF1ZXVlU3RhdGVtZW50QmFja2VuZChQYXNzUmVmUHRyPFNRTFN0YXRlbWVudEJhY2tl
bmQ+IHN0YXRlbWVudEJhY2tlbmQpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3RhdGVt
ZW50TXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zdGF0ZW1lbnRN
dXRleCk7CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5hcHBlbmQoc3RhdGVtZW50QmFja2VuZCk7CiB9
CiAKQEAgLTY2Niw3ICs2NjYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Z2V0TmV4
dFN0YXRlCiB7CiAgICAgbV9jdXJyZW50U3RhdGVtZW50QmFja2VuZCA9IG51bGxwdHI7CiAKLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9zdGF0ZW1lbnRNdXRleCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4KTsKICAgICBpZiAoIW1fc3RhdGVtZW50
UXVldWUuaXNFbXB0eSgpKQogICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRCYWNrZW5kID0gbV9z
dGF0ZW1lbnRRdWV1ZS50YWtlRmlyc3QoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaAko
cmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX3JlYWRPbmx5OwogICAgIGJvb2wgbV9oYXNWZXJzaW9uTWlz
bWF0Y2g7CiAKLSAgICBNdXRleCBtX3N0YXRlbWVudE11dGV4OworICAgIERlcHJlY2F0ZWRNdXRl
eCBtX3N0YXRlbWVudE11dGV4OwogICAgIERlcXVlPFJlZlB0cjxTUUxTdGF0ZW1lbnRCYWNrZW5k
Pj4gbV9zdGF0ZW1lbnRRdWV1ZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVUcmFuc2Fj
dGlvbj4gbV9zcWxpdGVUcmFuc2FjdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxODc4
ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6c2NoZWR1bGVFeGUKICAgICAvLyBUaGUgbXV0ZXggcHJvdmlkZXMgYSBtZW1v
cnkgYmFycmllciB0byBlbnN1cmUgdGhhdCBvbmNlCiAgICAgLy8gdGVybWluYXRpb24gaXMgc2No
ZWR1bGVkLCBpc0V4ZWN1dGlvblRlcm1pbmF0aW5nIHdpbGwKICAgICAvLyBhY2N1cmF0ZWx5IHJl
ZmxlY3QgdGhhdCBzdGF0ZSB3aGVuIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkLgotICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zY2hlZHVsZWRUZXJtaW5hdGlvbk11dGV4KTsKICAg
ICBpZiAobV92bS0+d2F0Y2hkb2cpCiAgICAgICAgIG1fdm0tPndhdGNoZG9nLT5maXJlKCk7CiB9
CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVs
ZUV4ZQogYm9vbCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvblRlcm1pbmF0aW5n
KCkgY29uc3QKIHsKICAgICAvLyBTZWUgY29tbWVudHMgaW4gc2NoZWR1bGVFeGVjdXRpb25UZXJt
aW5hdGlvbiByZWdhcmRpbmcgbXV0ZXggdXNhZ2UuCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
c2NoZWR1bGVkVGVybWluYXRpb25NdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwogICAgIGlmIChtX3ZtLT53YXRjaGRv
ZykKICAgICAgICAgcmV0dXJuIG1fdm0tPndhdGNoZG9nLT5kaWRGaXJlKCk7CiAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05
Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV29ya2VyR2xvYmFsU2Nv
cGUqIG1fd29ya2VyR2xvYmFsU2NvcGU7CiAgICAgICAgIEpTQzo6U3Ryb25nPEpTV29ya2VyR2xv
YmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyOwogICAgICAgICBib29sIG1fZXhl
Y3V0aW9uRm9yYmlkZGVuOwotICAgICAgICBtdXRhYmxlIE11dGV4IG1fc2NoZWR1bGVkVGVybWlu
YXRpb25NdXRleDsKKyAgICAgICAgbXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9zY2hlZHVsZWRU
ZXJtaW5hdGlvbk11dGV4OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODgsNyArODgsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6ZGlzZW50YW5nbGUoKQog
CiB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90ZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fY2hh
bm5lbC0+bV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9jaGFubmVs
LT5tX211dGV4KTsKICAgICBpZiAoIW1fY2hhbm5lbC0+bV9vdXRnb2luZ1F1ZXVlKQogICAgICAg
ICByZXR1cm47CiAgICAgYm9vbCB3YXNFbXB0eSA9IG1fY2hhbm5lbC0+bV9vdXRnb2luZ1F1ZXVl
LT5hcHBlbmRBbmRDaGVja0VtcHR5KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWw6OkV2ZW50RGF0YT4obWVzc2FnZSwgV1RGOjptb3ZlKGNoYW5uZWxzKSkpOwpAQCAt
OTgsNyArOTgsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlCiAK
IGJvb2wgTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90ZShSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiYgY2hhbm5lbHMpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX2No
YW5uZWwtPm1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fY2hhbm5l
bC0+bV9tdXRleCk7CiAgICAgYXV0byByZXN1bHQgPSBtX2NoYW5uZWwtPm1faW5jb21pbmdRdWV1
ZS0+dHJ5R2V0TWVzc2FnZSgpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMjEsMjAgKzEyMSwyMCBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2xvc2Uo
KQogYm9vbCBNZXNzYWdlUG9ydENoYW5uZWw6OmlzQ29ubmVjdGVkVG8oTWVzc2FnZVBvcnQqIHBv
cnQpCiB7CiAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGF0IHRoZSByZXN1bHQgcmVt
YWlucyB0aGUgc2FtZSBhZnRlciB3ZSByZWxlYXNlIHRoZSBsb2NrPwotICAgIE11dGV4TG9ja2Vy
IGxvY2sobV9jaGFubmVsLT5tX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
ayhtX2NoYW5uZWwtPm1fbXV0ZXgpOwogICAgIHJldHVybiBtX2NoYW5uZWwtPm1fcmVtb3RlUG9y
dCA9PSBwb3J0OwogfQogCiBib29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6aGFzUGVuZGluZ0FjdGl2
aXR5KCkKIHsKICAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoYXQgdGhlIHJlc3VsdCBy
ZW1haW5zIHRoZSBzYW1lIGFmdGVyIHdlIHJlbGVhc2UgdGhlIGxvY2s/Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX2NoYW5uZWwtPm1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrKG1fY2hhbm5lbC0+bV9tdXRleCk7CiAgICAgcmV0dXJuICFtX2NoYW5uZWwtPm1faW5jb21p
bmdRdWV1ZS0+aXNFbXB0eSgpOwogfQogCiBNZXNzYWdlUG9ydCogTWVzc2FnZVBvcnRDaGFubmVs
Ojpsb2NhbGx5RW50YW5nbGVkUG9ydChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9jaGFubmVsLT5tX211dGV4KTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX2NoYW5uZWwtPm1fbXV0ZXgpOwogICAgIC8vIFNl
ZSBpZiBib3RoIGNvbnRleHRzIGFyZSBydW4gYnkgdGhlIHNhbWUgdGhyZWFkIChhcmUgdGhlIHNh
bWUgY29udGV4dCwgb3IgYXJlIGJvdGggZG9jdW1lbnRzKS4KICAgICBpZiAobV9jaGFubmVsLT5t
X3JlbW90ZVBvcnQpIHsKICAgICAgICAgLy8gVGhlIHJlbW90ZSBwb3J0J3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCBpcyBndWFyYW50ZWVkIG5vdCB0byBjaGFuZ2UgaGVyZSAtIE1lc3NhZ2VQb3J0
Ojpjb250ZXh0RGVzdHJveWVkKCkKQEAgLTE2NCw3ICsxNjQsNyBAQCBQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6flBsYXRmb3JtTWVzCiAKIHZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWw6OnNldFJlbW90ZVBvcnQoTWVzc2FnZVBvcnQqIHBvcnQpCiB7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9jayhtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsK
ICAgICAvLyBTaG91bGQgbmV2ZXIgc2V0IHBvcnQgaWYgaXQgaXMgYWxyZWFkeSBzZXQuCiAgICAg
QVNTRVJUKCFwb3J0IHx8ICFtX3JlbW90ZVBvcnQpOwogICAgIG1fcmVtb3RlUG9ydCA9IHBvcnQ7
CkBAIC0xNzUsMTMgKzE3NSwxMyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsPiBQCiAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGF0IHRoZSByZXN1bHQgcmVt
YWlucyB0aGUgc2FtZSBhZnRlciB3ZSByZWxlYXNlIHRoZSBsb2NrPwogICAgIC8vIFRoaXMgbG9j
ayBvbmx5IGd1YXJhbnRlZXMgdGhhdCB0aGUgcmV0dXJuZWQgcG9pbnRlciB3aWxsIG5vdCBiZSBw
b2ludGluZyB0byByZWxlYXNlZCBtZW1vcnksCiAgICAgLy8gYnV0IG5vdCB0aGF0IGl0IHdpbGwg
c3RpbGwgYmUgcG9pbnRpbmcgdG8gdGhpcyBvYmplY3QncyBlbnRhbmdsZWQgcG9ydCBjaGFubmVs
LgotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2sobV9tdXRleCk7CiAgICAgcmV0dXJuIG1fZW50YW5nbGVkQ2hhbm5lbDsKIH0KIAog
dm9pZCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2xvc2VJbnRlcm5hbCgpCiB7Ci0gICAg
TXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
ayhtX211dGV4KTsKICAgICAvLyBEaXNlbnRhbmdsZSBvdXJzZWx2ZXMgZnJvbSB0aGUgb3RoZXIg
ZW5kLiBXZSBzdGlsbCBtYWludGFpbiBhIHJlZmVyZW5jZSB0byBvdXIgaW5jb21pbmcgcXVldWUs
IHNpbmNlIHByZXZpb3VzbHktZXhpc3RpbmcgbWVzc2FnZXMgc2hvdWxkIHN0aWxsIGJlIGRlbGl2
ZXJlZC4KICAgICBtX3JlbW90ZVBvcnQgPSBudWxscHRyOwogICAgIG1fZW50YW5nbGVkQ2hhbm5l
bCA9IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZh
dWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk1LDggKzk1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIHNldFJlbW90ZVBvcnQoTWVzc2FnZVBvcnQqKTsKICAgICAgICAgdm9pZCBjbG9zZUlu
dGVybmFsKCk7CiAKLSAgICAgICAgLy8gTXV0ZXggdXNlZCB0byBlbnN1cmUgZXhjbHVzaXZlIGFj
Y2VzcyB0byB0aGUgb2JqZWN0IGludGVybmFscy4KLSAgICAgICAgTXV0ZXggbV9tdXRleDsKKyAg
ICAgICAgLy8gRGVwcmVjYXRlZE11dGV4IHVzZWQgdG8gZW5zdXJlIGV4Y2x1c2l2ZSBhY2Nlc3Mg
dG8gdGhlIG9iamVjdCBpbnRlcm5hbHMuCisgICAgICAgIERlcHJlY2F0ZWRNdXRleCBtX211dGV4
OwogCiAgICAgICAgIC8vIFBvaW50ZXIgdG8gb3VyIGVudGFuZ2xlZCBwYWlyIC0gY2xlYXJlZCB3
aGVuIGNsb3NlKCkgaXMgY2FsbGVkLgogICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWw+IG1fZW50YW5nbGVkQ2hhbm5lbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2
LDcgKzE4Niw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29ucygpCiAgICAgCiAg
ICAgLy8gQ2xlYXIgdGhlIGluLW1lbW9yeSByZWNvcmQgb2YgZXZlcnkgSWNvblJlY29yZCwgYW55
dGhpbmcgd2FpdGluZyB0byBiZSByZWFkIGZyb20gZGlzaywgYW5kIGFueXRoaW5nIHdhaXRpbmcg
dG8gYmUgd3JpdHRlbiB0byBkaXNrCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV91cmxBbmRJY29uTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV91cmxBbmRJY29uTG9jayk7CiAgICAgICAgIAogICAgICAgICAvLyBDbGVhciB0aGUgSWNvblJl
Y29yZHMgZm9yIGV2ZXJ5IHBhZ2UgVVJMIC0gUmVmQ291bnRpbmcgd2lsbCBjYXVzZSB0aGUgSWNv
blJlY29yZHMgdGhlbXNlbHZlcyB0byBiZSBkZWxldGVkCiAgICAgICAgIC8vIFdlIGRvbid0IGRl
bGV0ZSB0aGUgYWN0dWFsIFBhZ2VSZWNvcmRzIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgInJldGFpbiBp
Y29uIGZvciB1cmwiIGNvdW50IHRvIGtlZXAgdHJhY2sgb2YKQEAgLTIwMCwxNCArMjAwLDE0IEBA
IHZvaWQgSWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29ucygpCiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAvLyBDbGVhciBhbGwgaW4tbWVtb3J5IHJlY29yZHMgb2YgdGhpbmdzIHRoYXQg
bmVlZCB0byBiZSBzeW5jZWQgb3V0IHRvIGRpc2sKICAgICAgICAgewotICAgICAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKKyAgICAgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2spOwogICAgICAgICAgICAgbV9w
YWdlVVJMc1BlbmRpbmdTeW5jLmNsZWFyKCk7CiAgICAgICAgICAgICBtX2ljb25zUGVuZGluZ1N5
bmMuY2xlYXIoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ2xlYXIgYWxsIGlu
LW1lbW9yeSByZWNvcmRzIG9mIHRoaW5ncyB0aGF0IG5lZWQgdG8gYmUgcmVhZCBpbiBmcm9tIGRp
c2sKICAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1Jl
YWRpbmdMb2NrKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9w
ZW5kaW5nUmVhZGluZ0xvY2spOwogICAgICAgICAgICAgbV9wYWdlVVJMc1BlbmRpbmdJbXBvcnQu
Y2xlYXIoKTsKICAgICAgICAgICAgIG1fcGFnZVVSTHNJbnRlcmVzdGVkSW5JY29ucy5jbGVhcigp
OwogICAgICAgICAgICAgbV9pY29uc1BlbmRpbmdSZWFkaW5nLmNsZWFyKCk7CkBAIC0yMjksNyAr
MjI5LDcgQEAgSW1hZ2UqIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9yUAogICAgIGlm
ICghaXNPcGVuKCkgfHwgIWRvY3VtZW50Q2FuSGF2ZUljb24ocGFnZVVSTE9yaWdpbmFsKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9j
ayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsK
IAogICAgIHBlcmZvcm1QZW5kaW5nUmV0YWluQW5kUmVsZWFzZU9wZXJhdGlvbnMoKTsKICAgICAK
QEAgLTI0NSw3ICsyNDUsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25G
b3JQCiAgICAgLy8gMSAtIFRoZSBpbml0aWFsIHVybCBpbXBvcnQgaXMgaW5jb21wbGV0ZSBhbmQg
dGhpcyBwYWdlVVJMIHdhcyBtYXJrZWQgdG8gYmUgbm90aWZpZWQgb25jZSBpdCBpcyBjb21wbGV0
ZSBpZiBhbiBpY29uVVJMIGV4aXN0cwogICAgIC8vIDIgLSBUaGUgaW5pdGlhbCB1cmwgaW1wb3J0
IElTIGNvbXBsZXRlIGFuZCB0aGlzIHBhZ2VVUkwgaGFzIG5vIGljb24KICAgICBpZiAoIXBhZ2VS
ZWNvcmQpIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2Nr
KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5n
TG9jayk7CiAgICAgICAgIAogICAgICAgICAvLyBJbXBvcnQgaXMgb25nb2luZywgdGhlcmUgbWln
aHQgYmUgYW4gaWNvbi4gIEluIHRoaXMgY2FzZSwgcmVnaXN0ZXIgdG8gYmUgbm90aWZpZWQgd2hl
biB0aGUgaWNvbiBjb21lcyBpbgogICAgICAgICAvLyBJZiB3ZSBldmVyIHJlYWNoIHRoaXMgY29u
ZGl0aW9uLCB3ZSBrbm93IHdlJ3ZlIGFscmVhZHkgbWFkZSB0aGUgcGFnZVVSTCBjb3B5CkBAIC0y
NzYsNyArMjc2LDcgQEAgSW1hZ2UqIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9yUAog
ICAgICAgICBpZiAocGFnZVVSTENvcHkuaXNOdWxsKCkpCiAgICAgICAgICAgICBwYWdlVVJMQ29w
eSA9IHBhZ2VVUkxPcmlnaW5hbC5pc29sYXRlZENvcHkoKTsKICAgICAKLSAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CiAgICAgICAgIG1fcGFnZVVS
THNJbnRlcmVzdGVkSW5JY29ucy5hZGQocGFnZVVSTENvcHkpOwogICAgICAgICBtX2ljb25zUGVu
ZGluZ1JlYWRpbmcuYWRkKGljb25SZWNvcmQpOwogICAgICAgICB3YWtlU3luY1RocmVhZCgpOwpA
QCAtMzA3LDcgKzMwNyw3IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBJY29uRGF0YWJhc2U6OnN5bmNo
cm8KICAgICBpZiAoIWljb24pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgcmV0dXJuIGljb24tPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CiB9CiAKQEAgLTMyOSw3ICszMjksNyBAQCBTdHJpbmcgSWNvbkRhdGFiYXNl
OjpzeW5jaHJvbm91c0ljb25VUkxGCiAgICAgaWYgKCFpc09wZW4oKSB8fCAhZG9jdW1lbnRDYW5I
YXZlSWNvbihwYWdlVVJMT3JpZ2luYWwpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
ICAgIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIAogICAgIFBh
Z2VVUkxSZWNvcmQqIHBhZ2VSZWNvcmQgPSBtX3BhZ2VVUkxUb1JlY29yZE1hcC5nZXQocGFnZVVS
TE9yaWdpbmFsKTsKICAgICBpZiAoIXBhZ2VSZWNvcmQpCkBAIC00MTcsNyArNDE3LDcgQEAgdm9p
ZCBJY29uRGF0YWJhc2U6OnJldGFpbkljb25Gb3JQYWdlVVJMKAogICAgICAgICByZXR1cm47CiAK
ICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybHNUb1JldGFpbk9yUmVsZWFz
ZUxvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsc1RvUmV0
YWluT3JSZWxlYXNlTG9jayk7CiAgICAgICAgIG1fdXJsc1RvUmV0YWluLmFkZChwYWdlVVJMLmlz
b2xhdGVkQ29weSgpKTsKICAgICAgICAgbV9yZXRhaW5PclJlbGVhc2VJY29uUmVxdWVzdGVkID0g
dHJ1ZTsKICAgICB9CkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBlcmZv
cm1SZXRhaW5JY29uRm9yUAogICAgICAgICBpZiAoIW1faWNvblVSTEltcG9ydENvbXBsZXRlKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRp
bmdTeW5jTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5k
aW5nU3luY0xvY2spOwogICAgICAgICAvLyBJZiB0aGlzIHBhZ2VVUkwgd2FpdGluZyB0byBiZSBz
eW5jJ2VkLCB1cGRhdGUgdGhlIHN5bmMgcmVjb3JkCiAgICAgICAgIC8vIFRoaXMgc2F2ZXMgdXMg
aW4gdGhlIGNhc2Ugd2hlcmUgYSBwYWdlIHdhcyByZWFkeSB0byBiZSBkZWxldGVkIGZyb20gdGhl
IGRhdGFiYXNlIGJ1dCB3YXMganVzdCByZXRhaW5lZCAtIHNvIHRoZXJlcyBubyBuZWVkIHRvIGRl
bGV0ZSBpdCEKICAgICAgICAgaWYgKCFtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgJiYgbV9wYWdl
VVJMc1BlbmRpbmdTeW5jLmNvbnRhaW5zKHBhZ2VVUkwpKSB7CkBAIC00NzAsNyArNDcwLDcgQEAg
dm9pZCBJY29uRGF0YWJhc2U6OnJlbGVhc2VJY29uRm9yUGFnZVVSTAogICAgICAgICByZXR1cm47
CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybHNUb1JldGFpbk9yUmVs
ZWFzZUxvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsc1Rv
UmV0YWluT3JSZWxlYXNlTG9jayk7CiAgICAgICAgIG1fdXJsc1RvUmVsZWFzZS5hZGQocGFnZVVS
TC5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIG1fcmV0YWluT3JSZWxlYXNlSWNvblJlcXVlc3Rl
ZCA9IHRydWU7CiAgICAgfQpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpw
ZXJmb3JtUmVsZWFzZUljb25Gb3IKICAgICBBU1NFUlQoIWljb25SZWNvcmQgfHwgKGljb25SZWNv
cmQgJiYgbV9pY29uVVJMVG9SZWNvcmRNYXAuZ2V0KGljb25SZWNvcmQtPmljb25VUkwoKSkgPT0g
aWNvblJlY29yZCkpOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5k
aW5nUmVhZGluZ0xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
cGVuZGluZ1JlYWRpbmdMb2NrKTsKICAgICAgICAgCiAgICAgICAgIC8vIFNpbmNlIHRoaXMgcGFn
ZVVSTCBpcyBnb2luZyBhd2F5LCB0aGVyZSdzIG5vIHJlYXNvbiBhbnlvbmUgd291bGQgZXZlciBi
ZSBpbnRlcmVzdGVkIGluIGl0cyByZWFkIHJlc3VsdHMgICAgCiAgICAgICAgIGlmICghbV9pY29u
VVJMSW1wb3J0Q29tcGxldGUpCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6
OnBlcmZvcm1SZWxlYXNlSWNvbkZvcgogICAgIAogICAgIC8vIE1hcmsgc3R1ZmYgZm9yIGRlbGV0
aW9uIGZyb20gdGhlIGRhdGFiYXNlIG9ubHkgaWYgd2UncmUgbm90IGluIHByaXZhdGUgYnJvd3Np
bmcKICAgICBpZiAoIW1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKICAgICAgICAgbV9wYWdlVVJMc1BlbmRp
bmdTeW5jLnNldChwYWdlVVJMT3JpZ2luYWwuaXNvbGF0ZWRDb3B5KCksIHBhZ2VSZWNvcmQtPnNu
YXBzaG90KHRydWUpKTsKICAgICAKICAgICAgICAgLy8gSWYgdGhpcyBwYWdlIGlzIHRoZSBsYXN0
IHBhZ2UgdG8gcmVmZXIgdG8gYSBwYXJ0aWN1bGFyIEljb25SZWNvcmQsIHRoYXQgSWNvblJlY29y
ZCBuZWVkcyB0bwpAQCAtNTQ4LDEyICs1NDgsMTIgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldElj
b25EYXRhRm9ySWNvblVSTAogICAgIAogICAgIFZlY3RvcjxTdHJpbmc+IHBhZ2VVUkxzOwogICAg
IHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOworICAgICAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIAog
ICAgICAgICAvLyBJZiB0aGlzIGljb24gd2FzIHBlbmRpbmcgYSByZWFkLCByZW1vdmUgaXQgZnJv
bSB0aGF0IHNldCBiZWNhdXNlIHRoaXMgbmV3IGRhdGEgc2hvdWxkIG92ZXJyaWRlIHdoYXQgaXMg
b24gZGlzawogICAgICAgICBSZWZQdHI8SWNvblJlY29yZD4gaWNvbiA9IG1faWNvblVSTFRvUmVj
b3JkTWFwLmdldChpY29uVVJMKTsKICAgICAgICAgaWYgKGljb24pIHsKLSAgICAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CisgICAgICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKICAgICAgICAg
ICAgIG1faWNvbnNQZW5kaW5nUmVhZGluZy5yZW1vdmUoaWNvbi5nZXQoKSk7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgaWNvbiA9IGdldE9yQ3JlYXRlSWNvblJlY29yZChpY29uVVJMKTsK
QEAgLTU2Nyw3ICs1NjcsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29u
VVJMCiAgICAgICAgIAogICAgICAgICAvLyBNYXJrIHRoZSBJY29uUmVjb3JkIGFzIHJlcXVpcmlu
ZyBhbiB1cGRhdGUgdG8gdGhlIGRhdGFiYXNlIG9ubHkgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBk
aXNhYmxlZAogICAgICAgICBpZiAoIW1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewotICAgICAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKKyAgICAgICAgICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2spOwogICAgICAg
ICAgICAgbV9pY29uc1BlbmRpbmdTeW5jLnNldChpY29uVVJMLCBpY29uLT5zbmFwc2hvdCgpKTsK
ICAgICAgICAgfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldElj
b25VUkxGb3JQYWdlVVJMKAogICAgIFN0cmluZyBpY29uVVJMLCBwYWdlVVJMOwogICAgIAogICAg
IHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOworICAgICAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogCiAgICAg
ICAgIFBhZ2VVUkxSZWNvcmQqIHBhZ2VSZWNvcmQgPSBtX3BhZ2VVUkxUb1JlY29yZE1hcC5nZXQo
cGFnZVVSTE9yaWdpbmFsKTsKICAgICAgICAgCkBAIC02MzYsMTMgKzYzNiwxMyBAQCB2b2lkIElj
b25EYXRhYmFzZTo6c2V0SWNvblVSTEZvclBhZ2VVUkwoCiAgICAgICAgICAgICBBU1NFUlQoaWNv
blJlY29yZC0+cmV0YWluaW5nUGFnZVVSTHMoKS5zaXplKCkgPT0gMCk7CiAgICAgICAgICAgICBM
T0coSWNvbkRhdGFiYXNlLCAiSWNvbiBmb3IgaWNvbiB1cmwgJXMgaXMgYWJvdXQgdG8gYmUgZGVz
dHJveWVkIC0gcmVtb3ZpbmcgbWFwcGluZyBmb3IgaXQiLCB1cmxGb3JMb2dnaW5nKGljb25SZWNv
cmQtPmljb25VUkwoKSkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgbV9pY29uVVJMVG9S
ZWNvcmRNYXAucmVtb3ZlKGljb25SZWNvcmQtPmljb25VUkwoKSk7Ci0gICAgICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOworICAgICAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CiAgICAgICAgICAg
ICBtX2ljb25zUGVuZGluZ1JlYWRpbmcucmVtb3ZlKGljb25SZWNvcmQuZ2V0KCkpOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICAvLyBBbmQgbWFyayB0aGlzIG1hcHBpbmcgdG8gYmUgYWRk
ZWQgdG8gdGhlIGRhdGFiYXNlCiAgICAgICAgIGlmICghbV9wcml2YXRlQnJvd3NpbmdFbmFibGVk
KSB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2spOwor
ICAgICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdTeW5jTG9j
ayk7CiAgICAgICAgICAgICBtX3BhZ2VVUkxzUGVuZGluZ1N5bmMuc2V0KHBhZ2VVUkwsIHBhZ2VS
ZWNvcmQtPnNuYXBzaG90KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJZiB0aGUg
aWNvbiBpcyBvbiBpdHMgbGFzdCByZWYsIG1hcmsgaXQgZm9yIGRlbGV0aW9uCkBAIC02NzQsNyAr
Njc0LDcgQEAgSWNvbkxvYWREZWNpc2lvbiBJY29uRGF0YWJhc2U6OnN5bmNocm9ubwogICAgIC8v
IDEgLSBXaGVuIHdlIHJlYWQgdGhlIGljb24gdXJscyBmcm9tIGRpc2ssIGdldHRpbmcgdGhlIHRp
bWVTdGFtcCBhdCB0aGUgc2FtZSB0aW1lCiAgICAgLy8gMiAtIFdoZW4gd2UgZ2V0IGEgbmV3IGlj
b24gZnJvbSB0aGUgbG9hZGVyLCBpbiB3aGljaCBjYXNlIHRoZSB0aW1lc3RhbXAgaXMgc2V0IGF0
IHRoYXQgdGltZQogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNv
bkxvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNv
bkxvY2spOwogICAgICAgICBpZiAoSWNvblJlY29yZCogaWNvbiA9IG1faWNvblVSTFRvUmVjb3Jk
TWFwLmdldChpY29uVVJMKSkgewogICAgICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIkZvdW5k
IGV4cGlyYXRpb24gdGltZSBvbiBhIHByZXNlbnQgaWNvbiBiYXNlZCBvbiBleGlzdGluZyBJY29u
UmVjb3JkIik7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihjdXJyZW50VGlt
ZSgpKSAtIHN0YXRpY19jYXN0PGludD4oaWNvbi0+Z2V0VGltZXN0YW1wKCkpID4gaWNvbkV4cGly
YXRpb25UaW1lID8gSWNvbkxvYWRZZXMgOiBJY29uTG9hZE5vOwpAQCAtNjgyLDcgKzY4Miw3IEBA
IEljb25Mb2FkRGVjaXNpb24gSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm8KICAgICB9CiAgICAgCiAg
ICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHJlY29yZCBmb3IgaXQsIGJ1dCB3ZSAqaGF2ZSogaW1w
b3J0ZWQgYWxsIGljb25VUkxzIGZyb20gZGlzaywgdGhlbiB3ZSBzaG91bGQgbG9hZCBpdCBub3cK
LSAgICBNdXRleExvY2tlciByZWFkaW5nTG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgcmVhZGluZ0xvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9j
ayk7CiAgICAgaWYgKG1faWNvblVSTEltcG9ydENvbXBsZXRlKQogICAgICAgICByZXR1cm4gSWNv
bkxvYWRZZXM7CiAgICAgICAgIApAQCAtNjk5LDcgKzY5OSw3IEBAIGJvb2wgSWNvbkRhdGFiYXNl
OjpzeW5jaHJvbm91c0ljb25EYXRhS24KIHsKICAgICBBU1NFUlRfTk9UX1NZTkNfVEhSRUFEKCk7
CiAgICAgCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgaWYgKElj
b25SZWNvcmQqIGljb24gPSBtX2ljb25VUkxUb1JlY29yZE1hcC5nZXQoaWNvblVSTCkpCiAgICAg
ICAgIHJldHVybiBpY29uLT5pbWFnZURhdGFTdGF0dXMoKSAhPSBJbWFnZURhdGFTdGF0dXNVbmtu
b3duOwogCkBAIC03NTQsMjYgKzc1NCwyNiBAQCB2b2lkIEljb25EYXRhYmFzZTo6Y2hlY2tJbnRl
Z3JpdHlCZWZvcmVPCiAKIHNpemVfdCBJY29uRGF0YWJhc2U6OnBhZ2VVUkxNYXBwaW5nQ291bnQo
KQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIHJldHVybiBt
X3BhZ2VVUkxUb1JlY29yZE1hcC5zaXplKCk7CiB9CiAKIHNpemVfdCBJY29uRGF0YWJhc2U6OnJl
dGFpbmVkUGFnZVVSTENvdW50KCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJ
Y29uTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25M
b2NrKTsKICAgICBwZXJmb3JtUGVuZGluZ1JldGFpbkFuZFJlbGVhc2VPcGVyYXRpb25zKCk7CiAg
ICAgcmV0dXJuIG1fcmV0YWluZWRQYWdlVVJMcy5zaXplKCk7CiB9CiAKIHNpemVfdCBJY29uRGF0
YWJhc2U6Omljb25SZWNvcmRDb3VudCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJs
QW5kSWNvbkxvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJ
Y29uTG9jayk7CiAgICAgcmV0dXJuIG1faWNvblVSTFRvUmVjb3JkTWFwLnNpemUoKTsKIH0KIAog
c2l6ZV90IEljb25EYXRhYmFzZTo6aWNvblJlY29yZENvdW50V2l0aERhdGEoKQogewotICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIHNpemVfdCByZXN1bHQgPSAwOwog
ICAgIAogICAgIEhhc2hNYXA8U3RyaW5nLCBJY29uUmVjb3JkKj46Oml0ZXJhdG9yIGkgPSBtX2lj
b25VUkxUb1JlY29yZE1hcC5iZWdpbigpOwpAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgSWNvbkRh
dGFiYXNlOjpub3RpZnlQZW5kaW5nTG9hZERlY2kKIAogdm9pZCBJY29uRGF0YWJhc2U6Ondha2VT
eW5jVGhyZWFkKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CisgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKIAogICAgIGlmICghbV9k
aXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVN5bmNUaHJlYWRIYXNXb3JrVG9EbykKICAgICAg
ICAgbV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVN5bmNUaHJlYWRIYXNXb3JrVG9EbyA9
IHN0ZDo6bWFrZV91bmlxdWU8U3VkZGVuVGVybWluYXRpb25EaXNhYmxlcj4oKTsKQEAgLTg3NCwx
MyArODc0LDEzIEBAIGJvb2wgSWNvbkRhdGFiYXNlOjppc09wZW4oKSBjb25zdAogCiBib29sIElj
b25EYXRhYmFzZTo6aXNPcGVuQmVzaWRlc01haW5UaHJlYWRDYWxsYmFja3MoKSBjb25zdAogewot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgIHJldHVybiBtX3N5bmNUaHJlYWRSdW5uaW5n
IHx8IG1fc3luY0RCLmlzT3BlbigpOwogfQogCiBTdHJpbmcgSWNvbkRhdGFiYXNlOjpkYXRhYmFz
ZVBhdGgoKSBjb25zdAogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgIHJldHVybiBt
X2NvbXBsZXRlRGF0YWJhc2VQYXRoLmlzb2xhdGVkQ29weSgpOwogfQogCkBAIC05MTYsNyArOTE2
LDcgQEAgUGFnZVVSTFJlY29yZCogSWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0ZQogCiAgICAgUGFn
ZVVSTFJlY29yZCogcGFnZVJlY29yZCA9IG1fcGFnZVVSTFRvUmVjb3JkTWFwLmdldChwYWdlVVJM
KTsKICAgICAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwog
ICAgIGlmICghbV9pY29uVVJMSW1wb3J0Q29tcGxldGUpIHsKICAgICAgICAgLy8gSWYgdGhlIGlu
aXRpYWwgaW1wb3J0IG9mIGFsbCBVUkxzIGhhc24ndCBjb21wbGV0ZWQgYW5kIHdlIGhhdmUgbm8g
cGFnZSByZWNvcmQsIHdlIGFzc3VtZSB3ZSAqbWlnaHQqIGtub3cgYWJvdXQgdGhpcyBsYXRlciBh
bmQgY3JlYXRlIGEgcmVjb3JkIGZvciBpdAogICAgICAgICBpZiAoIXBhZ2VSZWNvcmQpIHsKQEAg
LTk4NSw3ICs5ODUsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVh
CiAgICAgfQogICAgIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xv
Y2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwog
ICAgICAgICBpZiAoIW1fc3luY0RCLm9wZW4obV9jb21wbGV0ZURhdGFiYXNlUGF0aCkpIHsKICAg
ICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4gaWNvbiBkYXRhYmFzZSBhdCBwYXRo
ICVzIC0gJXMiLCBtX2NvbXBsZXRlRGF0YWJhc2VQYXRoLmFzY2lpKCkuZGF0YSgpLCBtX3N5bmNE
Qi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTEzLDcgKzExMTMs
NyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cGVyZm9ybU9wZW5Jbml0aWFsaXphCiAgICAgICAgICAg
ICBtX3N5bmNEQi5jbG9zZSgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOworICAgICAgICAgICAgICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CiAgICAgICAgICAgICAg
ICAgLy8gU2hvdWxkJ3ZlIGJlZW4gY29uc3VtZWQgYnkgU1FMaXRlLCBkZWxldGUganVzdCB0byBt
YWtlIHN1cmUgd2UgZG9uJ3Qgc2VlIGl0IGFnYWluIGluIHRoZSBmdXR1cmU7CiAgICAgICAgICAg
ICAgICAgZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoICsgIi1qb3VybmFsIik7CiAg
ICAgICAgICAgICAgICAgZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoKTsKQEAgLTEy
MTUsNyArMTIxNSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0KCkKICAg
ICAgICAgU3RyaW5nIGljb25VUkwgPSBxdWVyeS5nZXRDb2x1bW5UZXh0KDEpOwogCiAgICAgICAg
IHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKyAg
ICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7
CiAKICAgICAgICAgICAgIFBhZ2VVUkxSZWNvcmQqIHBhZ2VSZWNvcmQgPSBtX3BhZ2VVUkxUb1Jl
Y29yZE1hcC5nZXQocGFnZVVSTCk7CiAgICAgICAgICAgICAKQEAgLTEyNDgsNyArMTI0OCw3IEBA
IHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0KCkKICAgICAgICAgLy8gb25lIGZv
ciB0aGUgVVJMIGFuZCBvbmUgZm9yIHRoZSBJbWFnZSBpdHNlbGYKICAgICAgICAgLy8gTm90ZSB0
aGF0IFdlYkljb25EYXRhYmFzZSBpcyBub3QgbmVjY2Vzc2FyaWx5IEFQSSBzbyB3ZSBtaWdodCBi
ZSBhYmxlIHRvIG1ha2UgdGhpcyBjaGFuZ2UKICAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAgICAgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwogICAgICAgICAgICAg
aWYgKG1fcGFnZVVSTHNQZW5kaW5nSW1wb3J0LmNvbnRhaW5zKHBhZ2VVUkwpKSB7CiAgICAgICAg
ICAgICAgICAgZGlzcGF0Y2hEaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTE9uTWFpblRocmVhZChw
YWdlVVJMKTsKICAgICAgICAgICAgICAgICBtX3BhZ2VVUkxzUGVuZGluZ0ltcG9ydC5yZW1vdmUo
cGFnZVVSTCk7CkBAIC0xMjcxLDcgKzEyNzEsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cGVyZm9y
bVVSTEltcG9ydCgpCiAgICAgLy8gYnV0IGFmdGVyIG1faWNvblVSTEltcG9ydENvbXBsZXRlIGlz
IHNldCB0byB0cnVlLCB3ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgc2V0IGFueW1vcmUKICAgICBW
ZWN0b3I8U3RyaW5nPiB1cmxzOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
cGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tl
cihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CiAKICAgICAgICAgdXJscy5hcHBlbmRSYW5nZShtX3Bh
Z2VVUkxzUGVuZGluZ0ltcG9ydC5iZWdpbigpLCBtX3BhZ2VVUkxzUGVuZGluZ0ltcG9ydC5lbmQo
KSk7CiAgICAgICAgIG1fcGFnZVVSTHNQZW5kaW5nSW1wb3J0LmNsZWFyKCk7ICAgICAgICAKQEAg
LTEyODQsNyArMTI4NCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0KCkK
ICAgICAvLyBSZW1vdmUgdW5yZXRhaW5lZCBvbmVzIGlmIGRhdGFiYXNlIGNsZWFudXAgaXMgYWxs
b3dlZAogICAgIC8vIEtlZXAgYSBzZXQgb2Ygb25lcyB0aGF0IGFyZSByZXRhaW5lZCBhbmQgcGVu
ZGluZyBub3RpZmljYXRpb24KICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Vy
bEFuZEljb25Mb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Vy
bEFuZEljb25Mb2NrKTsKIAogICAgICAgICBwZXJmb3JtUGVuZGluZ1JldGFpbkFuZFJlbGVhc2VP
cGVyYXRpb25zKCk7CiAKQEAgLTEzMDEsMTIgKzEzMDEsMTIgQEAgdm9pZCBJY29uRGF0YWJhc2U6
OnBlcmZvcm1VUkxJbXBvcnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9pY29uVVJMVG9S
ZWNvcmRNYXAucmVtb3ZlKGljb25SZWNvcmQtPmljb25VUkwoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5k
aW5nUmVhZGluZ0xvY2spOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZVVSTHNJ
bnRlcmVzdGVkSW5JY29ucy5yZW1vdmUodXJsc1tpXSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pY29uc1BlbmRpbmdSZWFkaW5nLnJlbW92ZShpY29uUmVjb3JkKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2spOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9wZW5kaW5nU3luY0xvY2spOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faWNvbnNQ
ZW5kaW5nU3luYy5zZXQoaWNvblJlY29yZC0+aWNvblVSTCgpLCBpY29uUmVjb3JkLT5zbmFwc2hv
dCh0cnVlKSk7ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTM3MSw3ICsxMzcxLDcgQEAgdm9pZCBJY29uRGF0
YWJhc2U6OnN5bmNUaHJlYWRNYWluTG9vcCgpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7Cisg
ICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2sp
OwogICAgICAgICAgICAgcGVyZm9ybVBlbmRpbmdSZXRhaW5BbmRSZWxlYXNlT3BlcmF0aW9ucygp
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgdm9pZCBJY29uRGF0
YWJhc2U6OnBlcmZvcm1QZW5kaW5nUmV0YWluQQogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4g
dG9SZWxlYXNlOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBwZW5kaW5nV29ya0xvY2tl
cihtX3VybHNUb1JldGFpbk9yUmVsZWFzZUxvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgcGVuZGluZ1dvcmtMb2NrZXIobV91cmxzVG9SZXRhaW5PclJlbGVhc2VMb2NrKTsKICAg
ICAgICAgaWYgKCFtX3JldGFpbk9yUmVsZWFzZUljb25SZXF1ZXN0ZWQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTE0ODgsNyArMTQ4OCw3IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpyZWFkRnJv
bURhdGFiYXNlKCkKICAgICAvLyBUaGlzIHdheSB3ZSB3b24ndCBob2xkIHRoZSBsb2NrIGZvciBh
IGxvbmcgcGVyaW9kIG9mIHRpbWUKICAgICBWZWN0b3I8SWNvblJlY29yZCo+IGljb25zOwogICAg
IHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAg
ICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7
CiAgICAgICAgIGljb25zLmFwcGVuZFJhbmdlKG1faWNvbnNQZW5kaW5nUmVhZGluZy5iZWdpbigp
LCBtX2ljb25zUGVuZGluZ1JlYWRpbmcuZW5kKCkpOwogICAgIH0KICAgICAKQEAgLTE1MDEsOSAr
MTUwMSw5IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpyZWFkRnJvbURhdGFiYXNlKCkKIAogICAgICAg
ICAvLyBWZXJpZnkgdGhpcyBpY29uIHN0aWxsIHdhbnRzIHRvIGJlIHJlYWQgZnJvbSBkaXNrCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIHVybExvY2tlcihtX3VybEFuZEljb25M
b2NrKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciB1cmxMb2NrZXIobV91cmxB
bmRJY29uTG9jayk7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTXV0ZXhMb2NrZXIg
cmVhZExvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CisgICAgICAgICAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIHJlYWRMb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtX2ljb25zUGVuZGluZ1JlYWRpbmcuY29u
dGFpbnMoaWNvbnNbaV0pKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgbmV3IGRh
dGEKQEAgLTE1OTEsMTEgKzE1OTEsMTEgQEAgYm9vbCBJY29uRGF0YWJhc2U6OndyaXRlVG9EYXRh
YmFzZSgpCiAgICAgLy8gd2UnbGwgcGljayBpdCB1cCBvbiB0aGUgbmV4dCBwYXNzLiAgVGhpcyBn
cmVhdGx5IHNpbXBsaWZpZXMgdGhlIGxvY2tpbmcgc3RyYXRlZ3kgZm9yIHRoaXMgbWV0aG9kIGFu
ZCByZW1haW5zIGNvaGVzaXZlIHdpdGggY2hhbmdlcwogICAgIC8vIGFza2VkIGZvciBieSB0aGUg
ZGF0YWJhc2Ugb24gdGhlIG1haW4gdGhyZWFkCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBs
b2NrZXIobV91cmxBbmRJY29uTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgICAgIFZlY3RvcjxJY29uU25hcHNob3Q+IGlj
b25TbmFwc2hvdHM7CiAgICAgICAgIFZlY3RvcjxQYWdlVVJMU25hcHNob3Q+IHBhZ2VTbmFwc2hv
dHM7CiAgICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdT
eW5jTG9jayk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVu
ZGluZ1N5bmNMb2NrKTsKIAogICAgICAgICAgICAgaWNvblNuYXBzaG90cy5hcHBlbmRSYW5nZSht
X2ljb25zUGVuZGluZ1N5bmMuYmVnaW4oKS52YWx1ZXMoKSwgbV9pY29uc1BlbmRpbmdTeW5jLmVu
ZCgpLnZhbHVlcygpKTsKICAgICAgICAgICAgIG1faWNvbnNQZW5kaW5nU3luYy5jbGVhcigpOwpA
QCAtMTY1OCw3ICsxNjU4LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBydW5lVW5yZXRhaW5lZElj
b25zKAogICAgIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBwYWdlU1FM
LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV91
cmxBbmRJY29uTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV91
cmxBbmRJY29uTG9jayk7CiAgICAgICAgIGlmICghbV9wYWdlVVJMVG9SZWNvcmRNYXAuY29udGFp
bnMocGFnZVNRTC5nZXRDb2x1bW5UZXh0KDEpKSkKICAgICAgICAgICAgIHBhZ2VJRHNUb0RlbGV0
ZS5hcHBlbmQocGFnZVNRTC5nZXRDb2x1bW5JbnQ2NCgwKSk7CiAgICAgfQpAQCAtMTc5MSw3ICsx
NzkxLDcgQEAgdm9pZCogSWNvbkRhdGFiYXNlOjpjbGVhbnVwU3luY1RocmVhZCgpCiAgICAgd3Jp
dGVUb0RhdGFiYXNlKCk7CiAgICAgCiAgICAgLy8gQ2xvc2UgdGhlIGRhdGFiYXNlCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9zeW5jTG9jayk7CiAgICAgCiAgICAgbV9kYXRhYmFzZURpcmVjdG9yeSA9IFN0cmlu
ZygpOwogICAgIG1fY29tcGxldGVEYXRhYmFzZVBhdGggPSBTdHJpbmcoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCShyZXZpc2lvbiAxODc4ODkpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRW5hYmxlZDsKICAg
ICBib29sIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKIAotICAgIG11dGFibGUgTXV0ZXggbV9z
eW5jTG9jazsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX3N5bmNMb2NrOwogICAgIFRo
cmVhZENvbmRpdGlvbiBtX3N5bmNDb25kaXRpb247CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJl
Y3Rvcnk7CiAgICAgLy8gSG9sZGluZyBtX3N5bmNMb2NrIGlzIHJlcXVpcmVkIHdoZW4gYWNjZXNz
aW5nIG1fY29tcGxldGVEYXRhYmFzZVBhdGgKQEAgLTE1MywyNCArMTUzLDI0IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3N5bmNUaHJlYWRIYXNXb3JrVG9EbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3VkZGVuVGVybWluYXRpb25EaXNhYmxlcj4gbV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGls
ZVN5bmNUaHJlYWRIYXNXb3JrVG9EbzsKIAotICAgIE11dGV4IG1fdXJsQW5kSWNvbkxvY2s7Cisg
ICAgRGVwcmVjYXRlZE11dGV4IG1fdXJsQW5kSWNvbkxvY2s7CiAgICAgLy8gSG9sZGluZyBtX3Vy
bEFuZEljb25Mb2NrIGlzIHJlcXVpcmVkIHdoZW4gYWNjZXNzaW5nIGFueSBvZiB0aGUgZm9sbG93
aW5nIGRhdGEgc3RydWN0dXJlcyBvciB0aGUgb2JqZWN0cyB0aGV5IGNvbnRhaW4KICAgICBIYXNo
TWFwPFN0cmluZywgSWNvblJlY29yZCo+IG1faWNvblVSTFRvUmVjb3JkTWFwOwogICAgIEhhc2hN
YXA8U3RyaW5nLCBQYWdlVVJMUmVjb3JkKj4gbV9wYWdlVVJMVG9SZWNvcmRNYXA7CiAgICAgSGFz
aFNldDxTdHJpbmc+IG1fcmV0YWluZWRQYWdlVVJMczsKIAotICAgIE11dGV4IG1fcGVuZGluZ1N5
bmNMb2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX3BlbmRpbmdTeW5jTG9jazsKICAgICAvLyBI
b2xkaW5nIG1fcGVuZGluZ1N5bmNMb2NrIGlzIHJlcXVpcmVkIHdoZW4gYWNjZXNzaW5nIGFueSBv
ZiB0aGUgZm9sbG93aW5nIGRhdGEgc3RydWN0dXJlcwogICAgIEhhc2hNYXA8U3RyaW5nLCBQYWdl
VVJMU25hcHNob3Q+IG1fcGFnZVVSTHNQZW5kaW5nU3luYzsKICAgICBIYXNoTWFwPFN0cmluZywg
SWNvblNuYXBzaG90PiBtX2ljb25zUGVuZGluZ1N5bmM7CiAgICAgCi0gICAgTXV0ZXggbV9wZW5k
aW5nUmVhZGluZ0xvY2s7ICAgIAorICAgIERlcHJlY2F0ZWRNdXRleCBtX3BlbmRpbmdSZWFkaW5n
TG9jazsgICAgCiAgICAgLy8gSG9sZGluZyBtX3BlbmRpbmdTeW5jTG9jayBpcyByZXF1aXJlZCB3
aGVuIGFjY2Vzc2luZyBhbnkgb2YgdGhlIGZvbGxvd2luZyBkYXRhIHN0cnVjdHVyZXMgLSB3aGVu
IGRlYWxpbmcgd2l0aCBJY29uUmVjb3JkKnMsIGhvbGRpbmcgbV91cmxBbmRJY29uTG9jayBpcyBh
bHNvIHJlcXVpcmVkCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcGFnZVVSTHNQZW5kaW5nSW1wb3J0
OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3BhZ2VVUkxzSW50ZXJlc3RlZEluSWNvbnM7CiAgICAg
SGFzaFNldDxJY29uUmVjb3JkKj4gbV9pY29uc1BlbmRpbmdSZWFkaW5nOwogCi0gICAgTXV0ZXgg
bV91cmxzVG9SZXRhaW5PclJlbGVhc2VMb2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX3VybHNU
b1JldGFpbk9yUmVsZWFzZUxvY2s7CiAgICAgLy8gSG9sZGluZyBtX3VybHNUb1JldGFpbk9yUmVs
ZWFzZUxvY2sgaXMgcmVxdWlyZWQgd2hlbiBhY2Nlc3NpbmcgYW55IG9mIHRoZSBmb2xsb3dpbmcg
ZGF0YSBzdHJ1Y3R1cmVzLgogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV91cmxzVG9SZXRh
aW47CiAgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBtX3VybHNUb1JlbGVhc2U7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAkocmV2
aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgU2Nyb2xsaW5nVHJlZTo6
flNjcm9sbGluZ1RyZWUoKQogYm9vbCBTY3JvbGxpbmdUcmVlOjpzaG91bGRIYW5kbGVXaGVlbEV2
ZW50U3luY2hyb25vdXNseShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7
CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgZXZlbnQgaGFuZGxpbmcgdGhy
ZWFkCi0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9jayhtX211dGV4KTsKIAogICAgIGJvb2wgc2hvdWxkU2V0TGF0Y2ggPSB3aGVlbEV2
ZW50LnNob3VsZENvbnNpZGVyTGF0Y2hpbmcoKTsKICAgICAKQEAgLTExNSw3ICsxMTUsNyBAQCB2
b2lkIFNjcm9sbGluZ1RyZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZShzCiAgICAgICAgICYmIChyb290
U3RhdGVOb2RlQ2hhbmdlZAogICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Tm9uRmFzdFNjcm9sbGFibGVS
ZWdpb24pCiAgICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKSkgewotICAgICAgICBNdXRleExvY2tlciBsb2Nr
KG1fbXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsK
IAogICAgICAgICBpZiAocm9vdFN0YXRlTm9kZUNoYW5nZWQgfHwgcm9vdE5vZGUtPmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKICAgICAgICAgICAg
IG1fbWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24gPSBGbG9hdFBvaW50KCk7CkBAIC0yMDgsNyArMjA4
LDcgQEAgU2Nyb2xsaW5nVHJlZU5vZGUqIFNjcm9sbGluZ1RyZWU6Om5vZGVGbwogCiB2b2lkIFNj
cm9sbGluZ1RyZWU6OnNldE1haW5GcmFtZVBpblN0YXRlKGJvb2wgcGlubmVkVG9UaGVMZWZ0LCBi
b29sIHBpbm5lZFRvVGhlUmlnaHQsIGJvb2wgcGlubmVkVG9UaGVUb3AsIGJvb2wgcGlubmVkVG9U
aGVCb3R0b20pCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVTdGF0ZU11dGV4KTsK
KyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVTdGF0ZU11dGV4KTsKIAog
ICAgIG1fbWFpbkZyYW1lUGlubmVkVG9UaGVMZWZ0ID0gcGlubmVkVG9UaGVMZWZ0OwogICAgIG1f
bWFpbkZyYW1lUGlubmVkVG9UaGVSaWdodCA9IHBpbm5lZFRvVGhlUmlnaHQ7CkBAIC0yMTgsNTQg
KzIxOCw1NCBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldE1haW5GcmFtZVBpblN0YXRlCiAKIEZs
b2F0UG9pbnQgU2Nyb2xsaW5nVHJlZTo6bWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oKQogewotICAg
IE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2sobV9tdXRleCk7CiAgICAgcmV0dXJuIG1fbWFpbkZyYW1lU2Nyb2xsUG9zaXRpb247CiB9CiAK
IHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0TWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oRmxvYXRQb2lu
dCBwb3NpdGlvbikKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgIG1fbWFpbkZyYW1lU2Nyb2xsUG9z
aXRpb24gPSBwb3NpdGlvbjsKIH0KIAogYm9vbCBTY3JvbGxpbmdUcmVlOjppc1BvaW50SW5Ob25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbihJbnRQb2ludCBwKQogewotICAgIE11dGV4TG9ja2VyIGxvY2so
bV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAg
CiAgICAgcmV0dXJuIG1fbm9uRmFzdFNjcm9sbGFibGVSZWdpb24uY29udGFpbnMocCk7CiB9CiAK
IGJvb2wgU2Nyb2xsaW5nVHJlZTo6aXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpCiB7Ci0gICAgTXV0
ZXhMb2NrZXIgbG9jayhtX211dGV4KTsgICAgCisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2sobV9tdXRleCk7ICAgIAogCiAgICAgcmV0dXJuIG1fbWFpbkZyYW1lSXNSdWJiZXJCYW5kaW5n
OwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldE1haW5GcmFtZUlzUnViYmVyQmFuZGluZyhi
b29sIGlzUnViYmVyQmFuZGluZykKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIG1fbWFp
bkZyYW1lSXNSdWJiZXJCYW5kaW5nID0gaXNSdWJiZXJCYW5kaW5nOwogfQogCiBib29sIFNjcm9s
bGluZ1RyZWU6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKQogewotICAgIE11dGV4TG9ja2VyIGxv
Y2sobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAg
ICAgCiAgICAgcmV0dXJuIG1fbWFpbkZyYW1lSXNTY3JvbGxTbmFwcGluZzsKIH0KICAgICAKIHZv
aWQgU2Nyb2xsaW5nVHJlZTo6c2V0TWFpbkZyYW1lSXNTY3JvbGxTbmFwcGluZyhib29sIGlzU2Ny
b2xsU25hcHBpbmcpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAgICAgCiAgICAgbV9tYWluRnJh
bWVJc1Njcm9sbFNuYXBwaW5nID0gaXNTY3JvbGxTbmFwcGluZzsKIH0KIAogdm9pZCBTY3JvbGxp
bmdUcmVlOjpzZXRDYW5SdWJiZXJCYW5kU3RhdGUoYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBi
b29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBj
YW5SdWJiZXJCYW5kQXRCb3R0b20pCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVT
dGF0ZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVTdGF0
ZU11dGV4KTsKIAogICAgIG1fcnViYmVyQmFuZHNBdExlZnQgPSBjYW5SdWJiZXJCYW5kQXRMZWZ0
OwogICAgIG1fcnViYmVyQmFuZHNBdFJpZ2h0ID0gY2FuUnViYmVyQmFuZEF0UmlnaHQ7CkBAIC0y
NzUsMjggKzI3NSwyOCBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldENhblJ1YmJlckJhbmRTdGF0
CiAKIGJvb2wgU2Nyb2xsaW5nVHJlZTo6cnViYmVyQmFuZHNBdExlZnQoKQogewotICAgIE11dGV4
TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKIAogICAgIHJldHVybiBtX3J1YmJlckJhbmRzQXRM
ZWZ0OwogfQogCiBib29sIFNjcm9sbGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRSaWdodCgpCiB7Ci0g
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX3N3aXBlU3RhdGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOwogCiAgICAgcmV0dXJuIG1fcnViYmVy
QmFuZHNBdFJpZ2h0OwogfQogCiBib29sIFNjcm9sbGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRCb3R0
b20oKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKIAogICAgIHJldHVy
biBtX3J1YmJlckJhbmRzQXRCb3R0b207CiB9CiAKIGJvb2wgU2Nyb2xsaW5nVHJlZTo6cnViYmVy
QmFuZHNBdFRvcCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3N3aXBlU3RhdGVNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOwogCiAg
ICAgcmV0dXJuIG1fcnViYmVyQmFuZHNBdFRvcDsKIH0KQEAgLTMwOCwxNCArMzA4LDE0IEBAIGJv
b2wgU2Nyb2xsaW5nVHJlZTo6aXNIYW5kbGluZ1Byb2dyYW1tYXQKIAogdm9pZCBTY3JvbGxpbmdU
cmVlOjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm5p
bmcpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVTdGF0ZU11dGV4KTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVTdGF0ZU11dGV4KTsKICAgICAKICAg
ICBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvciA9IHBpbm5pbmc7CiB9CiAKIFNjcm9sbFBpbm5pbmdC
ZWhhdmlvciBTY3JvbGxpbmdUcmVlOjpzY3JvbGxQaW5uaW5nQmVoYXZpb3IoKQogewotICAgIE11
dGV4TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKICAgICAKICAgICByZXR1cm4gbV9zY3JvbGxQ
aW5uaW5nQmVoYXZpb3I7CiB9CkBAIC0zMjUsNyArMzI1LDcgQEAgYm9vbCBTY3JvbGxpbmdUcmVl
Ojp3aWxsV2hlZWxFdmVudFN0YXJ0UwogICAgIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgIT0gUGxh
dGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
TXV0ZXhMb2NrZXIgbG9jayhtX3N3aXBlU3RhdGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOwogCiAgICAgaWYgKHdoZWVsRXZlbnQuZGVs
dGFYKCkgPiAwICYmIG1fbWFpbkZyYW1lUGlubmVkVG9UaGVMZWZ0ICYmICFtX3J1YmJlckJhbmRz
QXRMZWZ0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1MSwxOSArMzUxLDE5IEBAIGJvb2wg
U2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nUGVyZm9ybWFuY2UKIAogU2Nyb2xsaW5nTm9kZUlEIFNj
cm9sbGluZ1RyZWU6OmxhdGNoZWROb2RlKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICBy
ZXR1cm4gbV9sYXRjaGVkTm9kZTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRMYXRjaGVk
Tm9kZShTY3JvbGxpbmdOb2RlSUQgbm9kZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICBt
X2xhdGNoZWROb2RlID0gbm9kZTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlOjpjbGVhckxhdGNo
ZWROb2RlKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICBtX2xhdGNoZWROb2RlID0gMDsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsMTEgKzE2MCwxMSBAQCBwcml2
YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTY3JvbGxpbmdOb2RlSUQsIFNjcm9sbGluZ1RyZWVO
b2RlKj4gU2Nyb2xsaW5nVHJlZU5vZGVNYXA7CiAgICAgU2Nyb2xsaW5nVHJlZU5vZGVNYXAgbV9u
b2RlTWFwOwogCi0gICAgTXV0ZXggbV9tdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9tdXRl
eDsKICAgICBSZWdpb24gbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKICAgICBGbG9hdFBvaW50
IG1fbWFpbkZyYW1lU2Nyb2xsUG9zaXRpb247CiAKLSAgICBNdXRleCBtX3N3aXBlU3RhdGVNdXRl
eDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9zd2lwZVN0YXRlTXV0ZXg7CiAgICAgU2Nyb2xsUGlu
bmluZ0JlaGF2aW9yIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yIHsgRG9Ob3RQaW4gfTsKICAgICBT
Y3JvbGxpbmdOb2RlSUQgbV9sYXRjaGVkTm9kZSB7IDAgfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgJKHJldmlzaW9uIDE4Nzg4
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2xl
YXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZTsKICAgICB2b2lkIChebV9yZWxlYXNlTWVtb3J5Qmxv
Y2spKCk7CiAgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbV9vYnNlcnZlcjsKLSAgICBNdXRleCBt
X29ic2VydmVyTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fb2JzZXJ2ZXJNdXRleDsKICNl
bGlmIE9TKExJTlVYKQogICAgIGludCBtX2V2ZW50RkQ7CiAgICAgaW50IG1fcHJlc3N1cmVMZXZl
bEZEOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsNyArMTAyLDcgQEAgdm9pZCBIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWRBc3luY2hyb25vdQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV90aHJlYWRMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGhyZWFk
TG9jayk7CiAgICAgCiAgICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSAmJiAhbV9kYXRhYmFz
ZUxvYWRlclRocmVhZCkgewogICAgICAgICAvLyBTdGFydCB0aGUgYXN5bmNocm9ub3VzIGRhdGFi
YXNlIGxvYWRpbmcgcHJvY2Vzcy4KQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEhSVEZEYXRhYmFz
ZUxvYWRlcjo6aXNMb2FkZWQoKSBjb25zCiAKIHZvaWQgSFJURkRhdGFiYXNlTG9hZGVyOjp3YWl0
Rm9yTG9hZGVyVGhyZWFkQ29tcGxldGlvbigpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
dGhyZWFkTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RocmVhZExv
Y2spOwogICAgIAogICAgIC8vIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKCkgc2hvdWxkIG5vdCBi
ZSBjYWxsZWQgdHdpY2UgZm9yIHRoZSBzYW1lIHRocmVhZC4KICAgICBpZiAobV9kYXRhYmFzZUxv
YWRlclRocmVhZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZEYXRhYmFzZUxvYWRlci5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRGF0YWJhc2U+
IG1faHJ0ZkRhdGFiYXNlOwogCiAgICAgLy8gSG9sZGluZyBhIG1fdGhyZWFkTG9jayBpcyByZXF1
aXJlZCB3aGVuIGFjY2Vzc2luZyBtX2RhdGFiYXNlTG9hZGVyVGhyZWFkLgotICAgIE11dGV4IG1f
dGhyZWFkTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV90aHJlYWRMb2NrOwogICAgIFRocmVh
ZElkZW50aWZpZXIgbV9kYXRhYmFzZUxvYWRlclRocmVhZDsKIAogICAgIGZsb2F0IG1fZGF0YWJh
c2VTYW1wbGVSYXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0JKHJldmlzaW9uIDE4Nzg4
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxl
ckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnNldFJlY2VpdmVkTQogICAgIG1fdW5kZXJNZW1vcnlQcmVzc3VyZSA9
IHRydWU7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX29ic2VydmVyTXV0
ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRl
eCk7CiAgICAgICAgIGlmICghbV9vYnNlcnZlcikgewogICAgICAgICAgICAgbV9vYnNlcnZlciA9
IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKE5VTEwsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwg
a0NGUnVuTG9vcEV4aXQsIE5PIC8qIGRvbid0IHJlcGVhdCAqLywKICAgICAgICAgICAgICAgICAw
LCBXZWJDb3JlOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZUNhbGxiYWNrLCBOVUxMKTsKQEAgLTI3
MiwxNCArMjcyLDE0IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjbGVhck1lbW9yeVAK
ICAgICBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgPSBmYWxzZTsKIAogICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9vYnNlcnZlck11dGV4KTsKICAgICAgICAgbV9tZW1vcnlQcmVzc3Vy
ZVJlYXNvbiA9IE1lbW9yeVByZXNzdXJlUmVhc29uTm9uZTsKICAgICB9CiB9CiAKIGJvb2wgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpzaG91bGRXYWl0Rm9yTWVtb3J5Q2xlYXJNZXNzYWdlKCkKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV9vYnNlcnZlck11dGV4KTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRleCk7CiAgICAgcmV0dXJuIG1fbWVtb3J5
UHJlc3N1cmVSZWFzb24gJiBNZW1vcnlQcmVzc3VyZVJlYXNvblZNU3RhdHVzOwogfQogCkBAIC0y
ODgsNyArMjg4LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbQog
ICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CiAKICAgICB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOworICAgICAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRleCk7CiAgICAgICAgIG1fb2JzZXJ2
ZXIgPSAwOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCShyZXZpc2lvbiAxODc4
ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmUKICAgICBkb3VibGUgbW9ub3RvbmljQW5pbWF0aW9u
U3RhcnRUaW1lOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwor
ICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgaWYg
KCFtX3NjaGVkdWxlZCkKICAgICAgICAgICAgICsrbV91bnNjaGVkdWxlZEZpcmVDb3VudDsKICAg
ICAgICAgZWxzZQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpkaXNwbGF5RGlkUmUKICAgICAgICAgbV9jbGllbnRzVG9CZU5vdGlmaWVkID0gbnVsbHB0cjsK
IAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIG1fcHJldmlvdXNGcmFt
ZURvbmUgPSB0cnVlOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCShyZXZpc2lv
biAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldE1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1l
KSB7IG1fbW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lID0gc3RhcnRUaW1lOyB9CiAKLSAgICBN
dXRleCYgbXV0ZXgoKSB7IHJldHVybiBtX211dGV4OyB9CisgICAgRGVwcmVjYXRlZE11dGV4JiBt
dXRleCgpIHsgcmV0dXJuIG1fbXV0ZXg7IH0KIAogICAgIHN0YXRpYyBSZWZQdHI8RGlzcGxheVJl
ZnJlc2hNb25pdG9yPiBjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3Jt
RGlzcGxheUlEKTsKIApAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wcmV2
aW91c0ZyYW1lRG9uZTsKICAgICBpbnQgbV91bnNjaGVkdWxlZEZpcmVDb3VudDsgLy8gTnVtYmVy
IG9mIHRpbWVzIHRoZSBkaXNwbGF5IGxpbmsgaGFzIGZpcmVkIHdpdGggbm8gY2xpZW50cy4KICAg
ICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKLSAgICBNdXRleCBtX211dGV4OworICAg
IERlcHJlY2F0ZWRNdXRleCBtX211dGV4OwogCiAgICAgSGFzaFNldDxEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgSGFzaFNldDxEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQqPiogbV9jbGllbnRzVG9CZU5vdGlmaWVkOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAJKHJldmlzaW9u
IDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NDAsNyArNzQwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldAog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0RGVsYXlDYWxsYmFja3Mo
Ym9vbCBkZWxheSkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9xdWV1ZU11dGV4KTsKICAgICBpZiAo
ZGVsYXkpCiAgICAgICAgICsrbV9kZWxheUNhbGxiYWNrczsKICAgICBlbHNlIHsKQEAgLTc1OSw3
ICs3NTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bWFpCiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpjbGVhck1haW5UaHJlYWRQZW5kaW5n
RmxhZygpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7CiAgICAgbV9tYWluVGhyZWFkQ2Fs
bFBlbmRpbmcgPSBmYWxzZTsKIH0KIApAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpkaXMKIAogICAgIE5vdGlmaWNhdGlvbiBub3RpZmljYXRp
b24gPSBOb3RpZmljYXRpb24oKTsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9x
dWV1ZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9xdWV1ZU11
dGV4KTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAkocmV2aXNpb24gMTg3ODg5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDcgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9wZW5kaW5nU2VlazsKIAogICAg
IFZlY3RvcjxOb3RpZmljYXRpb24+IG1fcXVldWVkTm90aWZpY2F0aW9uczsKLSAgICBtdXRhYmxl
IE11dGV4IG1fcXVldWVNdXRleDsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX3F1ZXVl
TXV0ZXg7CiAKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCShyZXZp
c2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBpbmxpbmUgdm9p
ZCogY2FsbGJhY2tDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4obV9vYmplY3RJRCk7IH0KIAotICAgIHN0YXRpYyBNdXRleCYgbWFwTG9jaygpOworICAgIHN0
YXRpYyBEZXByZWNhdGVkTXV0ZXgmIG1hcExvY2soKTsKICAgICBzdGF0aWMgSGFzaE1hcDx1aW50
cHRyX3QsIEFWRldyYXBwZXIqPiYgbWFwKCk7CiAgICAgc3RhdGljIEFWRldyYXBwZXIqIGF2Zldy
YXBwZXJGb3JDYWxsYmFja0NvbnRleHQodm9pZCopOwogICAgIHZvaWQgYWRkVG9NYXAoKTsKQEAg
LTE0MDMsOSArMTQwMyw5IEBAIEFWRldyYXBwZXI6On5BVkZXcmFwcGVyKCkKICAgICBtX2F2UGxh
eWVyID0gMDsKIH0KIAotTXV0ZXgmIEFWRldyYXBwZXI6Om1hcExvY2soKQorRGVwcmVjYXRlZE11
dGV4JiBBVkZXcmFwcGVyOjptYXBMb2NrKCkKIHsKLSAgICBzdGF0aWMgTXV0ZXggbWFwTG9jazsK
KyAgICBzdGF0aWMgRGVwcmVjYXRlZE11dGV4IG1hcExvY2s7CiAgICAgcmV0dXJuIG1hcExvY2s7
CiB9CiAKQEAgLTE0MTcsNyArMTQxNyw3IEBAIEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFwcGVy
Kj4mIEFWRldyYXAKIAogdm9pZCBBVkZXcmFwcGVyOjphZGRUb01hcCgpCiB7Ci0gICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tl
cihtYXBMb2NrKCkpOwogICAgIAogICAgIC8vIEhhc2hNYXAgZG9lc24ndCBsaWtlIGEga2V5IG9m
IDAsIGFuZCBhbHNvIG1ha2Ugc3VyZSB3ZSBhcmVuJ3QKICAgICAvLyB1c2luZyBhbiBvYmplY3Qg
SUQgdGhhdCdzIGFscmVhZHkgaW4gdXNlLgpAQCAtMTQzMyw3ICsxNDMzLDcgQEAgdm9pZCBBVkZX
cmFwcGVyOjpyZW1vdmVGcm9tTWFwKCkgY29uc3QKIHsKICAgICBMT0coTWVkaWEsICJBVkZXcmFw
cGVyOjpyZW1vdmVGcm9tTWFwKCVwICVkKSIsIHRoaXMsIG1fb2JqZWN0SUQpOwogCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtYXBMb2NrKCkpOwogICAgIG1hcCgpLnJlbW92ZShtX29iamVjdElEKTsKIH0KIApAQCAt
MTYzNCw3ICsxNjM0LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKIAog
dm9pZCBBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJS
ZWYsIENNVGltZSBjbVRpbWUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1hcExvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2Nr
KCkpOwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0
KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFw
cGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZG
V3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0x
NjY1LDcgKzE2NjUsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRpb24odm9p
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhPiBub3RpZmlj
YXRpb25EYXRhIHsgc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhKj4oY29udGV4
dCkgfTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0g
YXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChub3RpZmljYXRpb25EYXRhLT5tX2NvbnRleHQp
OwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwcm9j
ZXNzTm90aWZpY2F0aW9uIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xNzIwLDcgKzE3MjAsNyBAQCB2
b2lkIEFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKENGCiAKIHZvaWQgQVZGV3JhcHBl
cjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCogY29u
dGV4dCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CiAgICAgQVZGV3JhcHBlciogc2VsZiA9
IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7
CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25D
YWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTc0OCw3ICsxNzQ4LDcgQEAgdm9pZCBBVkZX
cmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCkKIAogdm9pZCBBVkZXcmFwcGVyOjpsb2FkTWV0YWRh
dGFDb21wbGV0aW9uQ2FsbGJhY2soQVZDRkFzc2V0UmVmLCB2b2lkKiBjb250ZXh0KQogewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZv
ckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9H
KE1lZGlhLCAiQVZGV3JhcHBlcjo6bG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNrIGludm9r
ZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Pihjb250ZXh0KSk7CkBAIC0xNzY4LDcgKzE3NjgsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmJlZ2lu
TG9hZGluZ01ldGFkYXRhKCkKIAogdm9pZCBBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJh
Y2soQVZDRlBsYXllckl0ZW1SZWYsIEJvb2xlYW4gZmluaXNoZWQsIHZvaWQqIGNvbnRleHQpCiB7
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFw
cGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAg
ICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2sgaW52b2tlZCBm
b3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNv
bnRleHQpKTsKQEAgLTE4MTEsNyArMTgxMSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc0N1
ZSh2b2lkKiBjb250ZXgKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdpYmxlT3V0cHV0RGF0YT4g
bGVnaWJsZU91dHB1dERhdGEocmVpbnRlcnByZXRfY2FzdDxMZWdpYmxlT3V0cHV0RGF0YSo+KGNv
bnRleHQpKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxm
ID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChsZWdpYmxlT3V0cHV0RGF0YS0+bV9jb250
ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6
cHJvY2Vzc0N1ZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTgyNyw3ICsxODI3LDcgQEAgdm9pZCBB
VkZXcmFwcGVyOjpwcm9jZXNzQ3VlKHZvaWQqIGNvbnRleAogdm9pZCBBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0
cHV0UmVmIGxlZ2libGVPdXRwdXQsIENGQXJyYXlSZWYgYXR0cmlidXRlZFN0cmluZ3MsIENGQXJy
YXlSZWYgbmF0aXZlU2FtcGxlQnVmZmVycywgQ01UaW1lIGl0ZW1UaW1lKQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFw
cGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBp
ZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1
dENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODY1LDcgKzE4NjUsNyBAQCB2b2lkIEFW
RldyYXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TG9hZFJlcXVlc3REYXRhPiBsb2FkUmVxdWVzdERhdGEocmVpbnRlcnByZXRfY2FzdDxMb2FkUmVx
dWVzdERhdGEqPihjb250ZXh0KSk7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygp
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CiAgICAgQVZG
V3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQobG9hZFJlcXVlc3RE
YXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJB
VkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlIGludm9rZWQg
Zm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihj
b250ZXh0KSk7CkBAIC0xOTIxLDcgKzE5MjEsNyBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdh
aXRGb3JMb2FkaW5nT2ZSCiBCb29sZWFuIEFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxk
V2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKEFWQ0ZBc3NldFJlc291cmNlTG9hZGVy
UmVmIHJlc291cmNlTG9hZGVyLCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmIGxv
YWRpbmdSZXF1ZXN0LCB2b2lkICpjb250ZXh0KQogewogICAgIEFTU0VSVChkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpICE9IGRpc3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKCkpOwotICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxi
YWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlh
LCAiQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVz
dGVkUmVzb3VyY2UgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDE4Nzg4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmhhCiB7CiAgICAgbV9zYW1w
bGVUaW1lckhhbmRsZXIuY2FuY2VsKCk7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2Nr
KG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3Nh
bXBsZU11dGV4KTsKICAgICAgICAgbV9wZW5kaW5nU2FtcGxlcy5hcHBlbmQoc2FtcGxlKTsKICAg
ICB9CiAgICAgbV9zYW1wbGVUaW1lckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUiLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4oc3RkOjpiaW5kKCZJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpu
b3RpZnlUcmFja09mU2FtcGxlLCB0aGlzKSkpOwpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vCiB7CiAgICAgVmVjdG9yPEdSZWZQdHI8R3N0
U2FtcGxlPiA+IHNhbXBsZXM7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fc2Ft
cGxlTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3NhbXBsZU11
dGV4KTsKICAgICAgICAgbV9wZW5kaW5nU2FtcGxlcy5zd2FwKHNhbXBsZXMpOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgZ3Vsb25nIG1fZXZlbnRQcm9iZTsK
ICAgICBWZWN0b3I8R1JlZlB0cjxHc3RTYW1wbGU+ID4gbV9wZW5kaW5nU2FtcGxlczsKICAgICBT
dHJpbmcgbV9zdHJlYW1JZDsKLSAgICBNdXRleCBtX3NhbXBsZU11dGV4OworICAgIERlcHJlY2F0
ZWRNdXRleCBtX3NhbXBsZU11dGV4OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAkocmV2aXNp
b24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyAr
MTAyLDcgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjp0YWdzQ2hhbgogICAgIEdS
ZWZQdHI8R3N0VGFnTGlzdD4gdGFnczsKICAgICBnX29iamVjdF9nZXQobV9wYWQuZ2V0KCksICJ0
YWdzIiwgJnRhZ3Mub3V0UHRyKCksIE5VTEwpOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9jayhtX3RhZ011dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV90
YWdNdXRleCk7CiAgICAgICAgIG1fdGFncy5zd2FwKHRhZ3MpOwogICAgIH0KIApAQCAtMTU4LDcg
KzE1OCw3IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHIKIAogICAg
IEdSZWZQdHI8R3N0VGFnTGlzdD4gdGFnczsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2sobV90YWdNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fdGFn
TXV0ZXgpOwogICAgICAgICB0YWdzLnN3YXAobV90YWdzKTsKICAgICB9CiAgICAgaWYgKCF0YWdz
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oCShyZXZp
c2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIHByaXZhdGU6CiAgICAgR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZSBtX2FjdGl2ZVRp
bWVySGFuZGxlcjsKICAgICBHVGhyZWFkU2FmZU1haW5Mb29wU291cmNlIG1fdGFnVGltZXJIYW5k
bGVyOwogCi0gICAgTXV0ZXggbV90YWdNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV90YWdN
dXRleDsKICAgICBHUmVmUHRyPEdzdFRhZ0xpc3Q+IG1fdGFnczsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9E
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsMTQgKzg0LDE0IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjOjpyZXF1ZXN0UmUKICAgICAgICAgc2V0SXNBY3RpdmUodHJ1ZSk7CiAgICAgfQog
Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtdXRleCgpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9jayhtdXRleCgpKTsKICAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BsYXlMaW5rRmly
ZWQoZG91YmxlIG5vd1NlY29uZHMsIGRvdWJsZSBvdXRwdXRUaW1lU2Vjb25kcykKIHsKLSAgICBN
dXRleExvY2tlciBsb2NrKG11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
KG11dGV4KCkpOwogICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQogICAgICAgICByZXR1
cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24uY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEyLDIxICs1MTIsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6YWRk
TGlzdGVuZXIoTWVkaWFQbGF5ZXJMaXN0ZW5lciogbGlzdGVuZXIpCiB7Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbXV0ZXhMaXN0ZW5lcnMpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9tdXRleExpc3RlbmVycyk7CiAKICAgICBtX2xpc3RlbmVycy5hZGQobGlzdGVuZXIp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVtb3ZlTGlz
dGVuZXIoTWVkaWFQbGF5ZXJMaXN0ZW5lciogbGlzdGVuZXIpCiB7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fbXV0ZXhMaXN0ZW5lcnMpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobV9tdXRleExpc3RlbmVycyk7CiAKICAgICBtX2xpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bm90aWZ5RGVs
ZXRlZCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXhMaXN0ZW5lcnMpOworICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleExpc3RlbmVycyk7CiAKICAgICBm
b3IgKEhhc2hTZXQ8TWVkaWFQbGF5ZXJMaXN0ZW5lcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
bGlzdGVuZXJzLmJlZ2luKCk7IGl0ICE9IG1fbGlzdGVuZXJzLmVuZCgpOyArK2l0KQogICAgICAg
ICAoKml0KS0+b25NZWRpYVBsYXllckRlbGV0ZWQoKTsKQEAgLTcwNCw3ICs3MDQsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIE1lZGlhUGxheWVyUHJpCiAKIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpBc3luY0NhbGxiYWNr
OjpJbnZva2UoX19SUENfX2luX29wdCBJTUZBc3luY1Jlc3VsdCAqcEFzeW5jUmVzdWx0KQogewot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgaWYgKCFtX21lZGlhUGxheWVyKQogICAgICAgICBy
ZXR1cm4gU19PSzsKQEAgLTcxOSw3ICs3MTksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IE1lZGlhUGxheWVyUHJpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpBc3luY0NhbGxiYWNrOjpvbk1lZGlhUGxheWVyRGVsZXRlZCgpCiB7Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7CiAKICAgICBtX21lZGlhUGxheWVyID0gbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgJKHJldmlzaW9uIDE4Nzg4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwcml2
YXRlOgogCiAgICAgY2xhc3MgTWVkaWFQbGF5ZXJMaXN0ZW5lcjsKICAgICBIYXNoU2V0PE1lZGlh
UGxheWVyTGlzdGVuZXIqPiBtX2xpc3RlbmVyczsKLSAgICBNdXRleCBtX211dGV4TGlzdGVuZXJz
OworICAgIERlcHJlY2F0ZWRNdXRleCBtX211dGV4TGlzdGVuZXJzOwogCiAgICAgQ09NUHRyPElN
Rk1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CiAgICAgQ09NUHRyPElNRlNvdXJjZVJlc29s
dmVyPiBtX3NvdXJjZVJlc29sdmVyOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFVMT05HIG1fcmVmQ291bnQ7CiAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbiogbV9tZWRpYVBsYXllcjsKICAgICAgICAgYm9vbCBtX2V2ZW50OwotICAgICAgICBN
dXRleCBtX211dGV4OworICAgICAgICBEZXByZWNhdGVkTXV0ZXggbV9tdXRleDsKICAgICB9Owog
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsOSArMjExLDkgQEAgcHJpdmF0
ZToKICAgICBmbG9hdCBtX3BlbmRpbmdTY2FsZTsKICAgICBmbG9hdCBtX3BlbmRpbmdab29tZWRP
dXRTY2FsZTsKIAotICAgIG11dGFibGUgTXV0ZXggbV90aWxlTXV0ZXg7Ci0gICAgbXV0YWJsZSBN
dXRleCBtX3NhdmVkRGlzcGxheVJlY3RNdXRleDsKLSAgICBtdXRhYmxlIE11dGV4IG1fY29udGVu
dFJlcGxhY2VtZW50SW1hZ2VNdXRleDsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX3Rp
bGVNdXRleDsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX3NhdmVkRGlzcGxheVJlY3RN
dXRleDsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX2NvbnRlbnRSZXBsYWNlbWVudElt
YWdlTXV0ZXg7CiAKICAgICBib29sIG1fdGlsZUNvbnRyb2xsZXJTaG91bGRVc2VMb3dTY2FsZVRp
bGVzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5tbQkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRUaWxlc09wYXF1ZShib28KICAgICBpZiAobV90aWxl
c09wYXF1ZSA9PSBvcGFxdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3RpbGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Rp
bGVNdXRleCk7CiAKICAgICBtX3RpbGVzT3BhcXVlID0gb3BhcXVlOwogICAgIG1fem9vbWVkT3V0
VGlsZUdyaWQtPnVwZGF0ZVRpbGVPcGFjaXR5KCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBM
ZWdhY3lUaWxlQ2FjaGU6OmRvTGF5b3V0VGlsZXMoKQogICAgIGlmIChpc1RpbGVDcmVhdGlvblN1
c3BlbmRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90
aWxlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgp
OwogICAgIExlZ2FjeVRpbGVHcmlkKiBhY3RpdmVHcmlkID0gYWN0aXZlVGlsZUdyaWQoKTsKICAg
ICAvLyBFdmVuIHRob3VnaCB3ZSBhcmVuJ3QgYWN0dWFsbHkgY3JlYXRpbmcgdGlsZXMgaW4gdGhl
IGluYWN0aXZlIGdyaWQsIHdlCiAgICAgLy8gc3RpbGwgbmVlZCB0byBkcm9wIGludmFsaWQgdGls
ZXMgaW4gcmVzcG9uc2UgdG8gYSBsYXlvdXQuCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBMZWdh
Y3lUaWxlQ2FjaGU6OnNldEN1cnJlbnRTY2FsZShmbAogICAgIGlmICgha2VlcHNab29tZWRPdXRU
aWxlcygpICYmICFpc1RpbGVJbnZhbGlkYXRpb25TdXNwZW5kZWQoKSkgewogICAgICAgICAvLyBU
aWxlIGludmFsaWRhdGlvbiBpcyBub3JtYWxseSBzdXNwZW5kZWQgZHVyaW5nIHpvb21pbmcgYnkg
VUlLaXQgYnV0IHNvbWUgYXBwbGljYXRpb25zCiAgICAgICAgIC8vIHVzaW5nIGN1c3RvbSBzY3Jv
bGx2aWV3cyBtYXkgem9vbSB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIGNhbGxiYWNrcy4gSW52YWxp
ZGF0ZSB0aGUgdGlsZXMgZXhwbGljaXRseS4KLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
dGlsZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVN
dXRleCk7CiAgICAgICAgIGFjdGl2ZVRpbGVHcmlkKCktPmRyb3BBbGxUaWxlcygpOwogICAgICAg
ICBhY3RpdmVUaWxlR3JpZCgpLT5jcmVhdGVUaWxlcyhDb3ZlclZpc2libGVPbmx5KTsKICAgICB9
CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNjYWxlQ2hh
bmdlKAogICAgIEFTU0VSVChtX3BlbmRpbmdab29tZWRPdXRTY2FsZSB8fCBtX3BlbmRpbmdTY2Fs
ZSk7CiAgICAgQVNTRVJUKG1fdGlsaW5nTW9kZSAhPSBEaXNhYmxlZCk7CiAgICAgCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fdGlsZU11dGV4KTsKIAogICAgIGlmIChtX3BlbmRpbmdab29tZWRPdXRTY2FsZSkg
ewogICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkLT5zZXRTY2FsZShtX3BlbmRpbmdab29tZWRP
dXRTY2FsZSk7CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmxheW91
dFRpbGVzTm93KCkKICAgICBpZiAobV90aWxpbmdNb2RlID09IFpvb21pbmcpCiAgICAgICAgIG1f
dGlsaW5nTW9kZSA9IE1pbmltYWw7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0
ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgpOwogICAg
IExlZ2FjeVRpbGVHcmlkKiBhY3RpdmVHcmlkID0gYWN0aXZlVGlsZUdyaWQoKTsKICAgICBpZiAo
YWN0aXZlR3JpZC0+Y2hlY2tEb1NpbmdsZVRpbGVMYXlvdXQoKSkgewogICAgICAgICBtX3RpbGlu
Z01vZGUgPSBzYXZlZFRpbGluZ01vZGU7CkBAIC0zMjcsMTQgKzMyNywxNCBAQCB2b2lkIExlZ2Fj
eVRpbGVDYWNoZTo6bGF5b3V0VGlsZXNOb3coKQogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmxheW91
dFRpbGVzTm93Rm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChXZWJU
aHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGls
ZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsK
IAogICAgIGFjdGl2ZVRpbGVHcmlkKCktPmFkZFRpbGVzQ292ZXJpbmdSZWN0KHJlY3QpOwogfQog
CiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzKCkKIHsKLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV90aWxlTXV0ZXgpOwogICAgIHJlbW92ZUFsbE5vblZpc2libGVUaWxlc0lu
dGVybmFsKCk7CiB9CiAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6
cmVtb3ZlQWxsTm9uVmlzaWJsCiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxUaWxl
cygpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKICAgICBtX3pvb21lZE91dFRpbGVH
cmlkLT5kcm9wQWxsVGlsZXMoKTsKICAgICBpZiAobV96b29tZWRJblRpbGVHcmlkKQogICAgICAg
ICBtX3pvb21lZEluVGlsZUdyaWQtPmRyb3BBbGxUaWxlcygpOwpAQCAtMzY0LDcgKzM2NCw3IEBA
IHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxUaWxlcygpCiAKIHZvaWQgTGVnYWN5VGls
ZUNhY2hlOjpyZW1vdmVGb3JlZ3JvdW5kVGlsZXMoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX3RpbGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVN
dXRleCk7CiAgICAgaWYgKCFrZWVwc1pvb21lZE91dFRpbGVzKCkpCiAgICAgICAgIG1fem9vbWVk
T3V0VGlsZUdyaWQtPmRyb3BBbGxUaWxlcygpOwogICAgIGlmIChtX3pvb21lZEluVGlsZUdyaWQp
CkBAIC0zNzMsMTMgKzM3MywxMyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlRm9yZWdy
b3VuZFRpCiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRDb250ZW50UmVwbGFjZW1lbnRJbWFn
ZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudFJlcGxhY2VtZW50SW1hZ2UpCiB7Ci0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2VNdXRleCk7CisgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdlTXV0
ZXgpOwogICAgIG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2UgPSBjb250ZW50UmVwbGFjZW1lbnRJ
bWFnZTsKIH0KIAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IExlZ2FjeVRpbGVDYWNoZTo6Y29udGVu
dFJlcGxhY2VtZW50SW1hZ2UoKSBjb25zdAogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Nv
bnRlbnRSZXBsYWNlbWVudEltYWdlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9jb250ZW50UmVwbGFjZW1lbnRJbWFnZU11dGV4KTsKICAgICByZXR1cm4gbV9jb250
ZW50UmVwbGFjZW1lbnRJbWFnZTsKIH0KIApAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgTGVnYWN5
VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25UaW1lckYKIHsKICAgICBpZiAoaXNUaWxlQ3JlYXRpb25T
dXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Rp
bGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVNdXRleCk7
CiAgICAgY3JlYXRlVGlsZXNJbkFjdGl2ZUdyaWQoQ292ZXJTcGVjdWxhdGl2ZSk7CiB9CiAKQEAg
LTYyMCw3ICs2MjAsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6c2NoZWR1bGVMYXllckZsdXNo
CiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3NhdmVkRGlzcGxh
eVJlY3RNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3NhdmVkRGlz
cGxheVJlY3RNdXRleCk7CiAgICAgYm9vbCBhZGRlZEZpcnN0UmVjdCA9IG1fc2F2ZWREaXNwbGF5
UmVjdHMuaXNFbXB0eSgpOwogICAgIG1fc2F2ZWREaXNwbGF5UmVjdHMuYXBwZW5kKGRpcnR5UmVj
dCk7CiAgICAgaWYgKCFhZGRlZEZpcnN0UmVjdCkKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIExl
Z2FjeVRpbGVDYWNoZTo6dXBkYXRlVGlsaW5nTW9kZSgpCiAgICAgICAgIGlmIChtX3RpbGluZ01v
ZGUgPT0gRGlzYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX3RpbGVNdXRleCk7CiAgICAgICAgIGNyZWF0ZVRpbGVzSW5BY3RpdmVHcmlkKENvdmVy
VmlzaWJsZU9ubHkpOwogCiAgICAgICAgIGlmICghbV9zYXZlZERpc3BsYXlSZWN0cy5pc0VtcHR5
KCkpCkBAIC03MTAsNyArNzEwLDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGluZ01v
ZGUoVGlsaQogICAgIGlmICgobV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUgfHwgbV9wZW5kaW5nU2Nh
bGUpICYmIG1fdGlsaW5nTW9kZSAhPSBEaXNhYmxlZCkKICAgICAgICAgY29tbWl0U2NhbGVDaGFu
Z2UoKTsKICAgICBlbHNlIGlmICh3YXNab29taW5nKSB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3RpbGVNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV90aWxlTXV0ZXgpOwogICAgICAgICBicmluZ0FjdGl2ZVRpbGVHcmlkVG9Gcm9udCgpOwogICAg
IH0KIApAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpkb1BlbmRpbmdS
ZXBhaW50cygKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc1RpbGVJbnZhbGlkYXRpb25TdXNw
ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVN
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVNdXRleCk7CiAg
ICAgZmx1c2hTYXZlZERpc3BsYXlSZWN0cygpOwogfQogCkBAIC03NjQsNyArNzY0LDcgQEAgdm9p
ZCBMZWdhY3lUaWxlQ2FjaGU6OmZsdXNoU2F2ZWREaXNwbGF5UgogCiAgICAgVmVjdG9yPEludFJl
Y3Q+IHJlY3RzOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2F2ZWREaXNw
bGF5UmVjdE11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Nh
dmVkRGlzcGxheVJlY3RNdXRleCk7CiAgICAgICAgIG1fc2F2ZWREaXNwbGF5UmVjdHMuc3dhcChy
ZWN0cyk7CiAgICAgfQogICAgIHNpemVfdCBzaXplID0gcmVjdHMuc2l6ZSgpOwpAQCAtNzkyLDcg
Kzc5Miw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpwcmVwYXJlVG9EcmF3KCkKICAgICBbW21f
d2luZG93IGNvbnRlbnRWaWV3XSB2aWV3V2lsbERyYXddOwogCiAgICAgaWYgKCFtX3NhdmVkRGlz
cGxheVJlY3RzLmlzRW1wdHkoKSkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV90aWxl
TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4
KTsKICAgICAgICAgZmx1c2hTYXZlZERpc3BsYXlSZWN0cygpOwogICAgIH0KIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaAko
cmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVMYXllclBvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxJbnRTaXplPiBtX3NpemVzSW5QcnVuZU9yZGVyOwogICAgIHVuc2lnbmVkIG1f
dG90YWxCeXRlczsKICAgICB1bnNpZ25lZCBtX2NhcGFjaXR5OwotICAgIE11dGV4IG1fbGF5ZXJQ
b29sTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fbGF5ZXJQb29sTXV0ZXg7CiAKICAgICBk
b3VibGUgbV9sYXN0QWRkVGltZTsKICAgICBib29sIG1fbmVlZHNQcnVuZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCShy
ZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUxheWVyUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIExlZ2Fj
eVRpbGVMYXllclBvb2w6OmFkZExheWVyKGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV9sYXllclBvb2xNdXRleCk7CisgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKICAgICBsaXN0T2ZMYXllcnNX
aXRoU2l6ZShsYXllclNpemUpLnByZXBlbmQobGF5ZXIpOwogICAgIG1fdG90YWxCeXRlcyArPSBi
eXRlc0JhY2tpbmdMYXllcldpdGhQaXhlbFNpemUobGF5ZXJTaXplKTsKIApAQCAtOTYsNyArOTYs
NyBAQCBSZXRhaW5QdHI8TGVnYWN5VGlsZUxheWVyPiBMZWdhY3lUaWxlTGF5CiB7CiAgICAgaWYg
KCFjYW5SZXVzZUxheWVyV2l0aFNpemUoc2l6ZSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9sYXllclBvb2xNdXRleCk7CiAgICAgTGF5ZXJMaXN0JiByZXVzZUxp
c3QgPSBsaXN0T2ZMYXllcnNXaXRoU2l6ZShzaXplLCBNYXJrQXNVc2VkKTsKICAgICBpZiAocmV1
c2VMaXN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTEwNiw3ICsxMDYsNyBA
QCBSZXRhaW5QdHI8TGVnYWN5VGlsZUxheWVyPiBMZWdhY3lUaWxlTGF5CiAKIHZvaWQgTGVnYWN5
VGlsZUxheWVyUG9vbDo6c2V0Q2FwYWNpdHkodW5zaWduZWQgY2FwYWNpdHkpCiB7Ci0gICAgTXV0
ZXhMb2NrZXIgcmV1c2VMb2NrZXIobV9sYXllclBvb2xNdXRleCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIHJldXNlTG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOwogICAgIGlmIChjYXBhY2l0
eSA8IG1fY2FwYWNpdHkpCiAgICAgICAgIHNjaGVkdWxlUHJ1bmUoKTsKICAgICBtX2NhcGFjaXR5
ID0gY2FwYWNpdHk7CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29s
OjpzY2hlZHVsZVBydW5lKAogCiB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OnBydW5lKCkKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV9sYXllclBvb2xNdXRleCk7CisgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKICAgICBBU1NFUlQobV9uZWVk
c1BydW5lKTsKICAgICBtX25lZWRzUHJ1bmUgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBzaHJpbmtU
byA9IGRlY2F5ZWRDYXBhY2l0eSgpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgTGVnYWN5VGls
ZUxheWVyUG9vbDo6cHJ1bmUoKQogCiB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OmRyYWluKCkK
IHsKLSAgICBNdXRleExvY2tlciByZXVzZUxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgcmV1c2VMb2NrZXIobV9sYXllclBvb2xNdXRleCk7CiAgICAg
bV9yZXVzZUxpc3RzLmNsZWFyKCk7CiAgICAgbV9zaXplc0luUHJ1bmVPcmRlci5jbGVhcigpOwog
ICAgIG1fdG90YWxCeXRlcyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAkocmV2aXNpb24gMTg3ODg5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgQ3VybERvd25sb2FkTWFuYWdlcjo6fkN1
cmxEb3dubG9hZE1hbmFnZQogCiBib29sIEN1cmxEb3dubG9hZE1hbmFnZXI6OmFkZChDVVJMKiBj
dXJsSGFuZGxlKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgbV9wZW5kaW5nSGFuZGxl
TGlzdC5hcHBlbmQoY3VybEhhbmRsZSk7CiAgICAgc3RhcnRUaHJlYWRJZk5lZWRlZCgpOwpAQCAt
NzAsNyArNzAsNyBAQCBib29sIEN1cmxEb3dubG9hZE1hbmFnZXI6OmFkZChDVVJMKiBjdXJsCiAK
IGJvb2wgQ3VybERvd25sb2FkTWFuYWdlcjo6cmVtb3ZlKENVUkwqIGN1cmxIYW5kbGUpCiB7Ci0g
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrZXIobV9tdXRleCk7CiAKICAgICBtX3JlbW92ZWRIYW5kbGVMaXN0LmFwcGVuZChjdXJs
SGFuZGxlKTsKIApAQCAtNzksMTMgKzc5LDEzIEBAIGJvb2wgQ3VybERvd25sb2FkTWFuYWdlcjo6
cmVtb3ZlKENVUkwqIGMKIAogaW50IEN1cmxEb3dubG9hZE1hbmFnZXI6OmdldEFjdGl2ZURvd25s
b2FkQ291bnQoKSBjb25zdAogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAgIHJldHVybiBtX2Fj
dGl2ZUhhbmRsZUxpc3Quc2l6ZSgpOwogfQogCiBpbnQgQ3VybERvd25sb2FkTWFuYWdlcjo6Z2V0
UGVuZGluZ0Rvd25sb2FkQ291bnQoKSBjb25zdAogewotICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAg
IHJldHVybiBtX3BlbmRpbmdIYW5kbGVMaXN0LnNpemUoKTsKIH0KIApAQCAtMTExLDcgKzExMSw3
IEBAIHZvaWQgQ3VybERvd25sb2FkTWFuYWdlcjo6c3RvcFRocmVhZCgpCiAKIHZvaWQgQ3VybERv
d25sb2FkTWFuYWdlcjo6c3RvcFRocmVhZElmSWRsZSgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7
CiAKICAgICBpZiAoIWdldEFjdGl2ZURvd25sb2FkQ291bnQoKSAmJiAhZ2V0UGVuZGluZ0Rvd25s
b2FkQ291bnQoKSkKICAgICAgICAgc2V0UnVuVGhyZWFkKGZhbHNlKTsKQEAgLTExOSw3ICsxMTks
NyBAQCB2b2lkIEN1cmxEb3dubG9hZE1hbmFnZXI6OnN0b3BUaHJlYWRJZklkCiAKIHZvaWQgQ3Vy
bERvd25sb2FkTWFuYWdlcjo6dXBkYXRlSGFuZGxlTGlzdCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRl
eCk7CiAKICAgICAvLyBSZW1vdmUgY3VybCBlYXN5IGhhbmRsZXMgZnJvbSBtdWx0aSBsaXN0IAog
ICAgIGludCBzaXplID0gbV9yZW1vdmVkSGFuZGxlTGlzdC5zaXplKCk7CkBAIC0yNDUsNyArMjQ1
LDcgQEAgQ3VybERvd25sb2FkOjpDdXJsRG93bmxvYWQoKQogCiBDdXJsRG93bmxvYWQ6On5DdXJs
RG93bmxvYWQoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgaWYgKG1fdXJsKQogICAg
ICAgICBmYXN0RnJlZShtX3VybCk7CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBDdXJsRG93bmxv
YWQ6OmluaXQoQ3VybERvd25sb2FkTGlzdAogICAgIGlmICghbGlzdGVuZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgbV9jdXJsSGFuZGxlID0gY3VybF9l
YXN5X2luaXQoKTsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjppbml0
KEN1cmxEb3dubG9hZExpc3QKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIFVSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCByZXF1
ZXN0LnVybCgpKTsKIApAQCAtMzE3LDI1ICszMTcsMjUgQEAgYm9vbCBDdXJsRG93bmxvYWQ6OmNh
bmNlbCgpCiAKIFN0cmluZyBDdXJsRG93bmxvYWQ6OmdldFRlbXBQYXRoKCkgY29uc3QKIHsKLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tlcihtX211dGV4KTsKICAgICByZXR1cm4gbV90ZW1wUGF0aDsKIH0KIAogU3RyaW5nIEN1
cmxEb3dubG9hZDo6Z2V0VXJsKCkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICBy
ZXR1cm4gU3RyaW5nKG1fdXJsKTsKIH0KIAogUmVzb3VyY2VSZXNwb25zZSBDdXJsRG93bmxvYWQ6
OmdldFJlc3BvbnNlKCkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICByZXR1cm4g
bV9yZXNwb25zZTsKIH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6OmNsb3NlRmlsZSgpCiB7Ci0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9tdXRleCk7CiAKICAgICBpZiAobV90ZW1wSGFuZGxlICE9IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpIHsKICAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKG1fdGVtcEhhbmRsZSk7
CkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmFkZEhlYWRlcnMoY29uc3Qg
UmVzbwogCiB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcm
IGhlYWRlcikKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIGlmIChoZWFkZXIgPT0gIlxy
XG4iIHx8IGhlYWRlciA9PSAiXG4iKSB7CiAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIEN1cmxE
b3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zCiAKIHZvaWQgQ3VybERvd25sb2FkOjpkaWRS
ZWNlaXZlRGF0YSh2b2lkKiBkYXRhLCBpbnQgc2l6ZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsK
IAogICAgIFJlZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3RlZERvd25sb2FkKHRoaXMpOwogCkBA
IC00NjQsNyArNDY0LDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZEZpbmlzaCgpCiAKIHZvaWQg
Q3VybERvd25sb2FkOjpkaWRGYWlsKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRl
eCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIGNs
b3NlRmlsZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybERvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgJKHdvcmtpbmcgY29weSkK
QEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8Q1VSTCo+IG1fcGVuZGluZ0hh
bmRsZUxpc3Q7CiAgICAgVmVjdG9yPENVUkwqPiBtX2FjdGl2ZUhhbmRsZUxpc3Q7CiAgICAgVmVj
dG9yPENVUkwqPiBtX3JlbW92ZWRIYW5kbGVMaXN0OwotICAgIG11dGFibGUgTXV0ZXggbV9tdXRl
eDsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX211dGV4OwogICAgIGJvb2wgbV9ydW5U
aHJlYWQ7CiB9OwogCkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV90ZW1wSGFuZGxlOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9yZXNwb25zZTsKICAgICBib29sIG1fZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZTsKLSAg
ICBtdXRhYmxlIE11dGV4IG1fbXV0ZXg7CisgICAgbXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9t
dXRleDsKICAgICBDdXJsRG93bmxvYWRMaXN0ZW5lciAqbV9saXN0ZW5lcjsKIAogICAgIHN0YXRp
YyBDdXJsRG93bmxvYWRNYW5hZ2VyIG1fZG93bmxvYWRNYW5hZ2VyOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlTWFuYWdlci5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzMsMTAgKzEzMywxMCBAQCBzdGF0aWMgY2hhciogY29va2llSmFyUGF0aCgpCiAj
ZW5kaWYKIH0KIAotc3RhdGljIE11dGV4KiBzaGFyZWRSZXNvdXJjZU11dGV4KGN1cmxfbG9ja19k
YXRhIGRhdGEpIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIGNv
b2tpZU11dGV4LCAoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4
LCBkbnNNdXRleCwgKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRl
eCwgc2hhcmVNdXRleCwgKCkpOworc3RhdGljIERlcHJlY2F0ZWRNdXRleCogc2hhcmVkUmVzb3Vy
Y2VNdXRleChjdXJsX2xvY2tfZGF0YSBkYXRhKSB7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKERlcHJlY2F0ZWRNdXRleCwgY29va2llTXV0ZXgsICgpKTsKKyAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGVwcmVjYXRlZE11dGV4LCBkbnNNdXRleCwgKCkpOwor
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEZXByZWNhdGVkTXV0ZXgsIHNoYXJl
TXV0ZXgsICgpKTsKIAogICAgIHN3aXRjaCAoZGF0YSkgewogICAgICAgICBjYXNlIENVUkxfTE9D
S19EQVRBX0NPT0tJRToKQEAgLTE5MCwxMyArMTkwLDEzIEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0
ZVdlYlRpbWluZ0luZm9ybWF0aW8KIC8vIGNhY2hlLgogc3RhdGljIHZvaWQgY3VybF9sb2NrX2Nh
bGxiYWNrKENVUkwqIC8qIGhhbmRsZSAqLywgY3VybF9sb2NrX2RhdGEgZGF0YSwgY3VybF9sb2Nr
X2FjY2VzcyAvKiBhY2Nlc3MgKi8sIHZvaWQqIC8qIHVzZXJQdHIgKi8pCiB7Ci0gICAgaWYgKE11
dGV4KiBtdXRleCA9IHNoYXJlZFJlc291cmNlTXV0ZXgoZGF0YSkpCisgICAgaWYgKERlcHJlY2F0
ZWRNdXRleCogbXV0ZXggPSBzaGFyZWRSZXNvdXJjZU11dGV4KGRhdGEpKQogICAgICAgICBtdXRl
eC0+bG9jaygpOwogfQogCiBzdGF0aWMgdm9pZCBjdXJsX3VubG9ja19jYWxsYmFjayhDVVJMKiAv
KiBoYW5kbGUgKi8sIGN1cmxfbG9ja19kYXRhIGRhdGEsIHZvaWQqIC8qIHVzZXJQdHIgKi8pCiB7
Ci0gICAgaWYgKE11dGV4KiBtdXRleCA9IHNoYXJlZFJlc291cmNlTXV0ZXgoZGF0YSkpCisgICAg
aWYgKERlcHJlY2F0ZWRNdXRleCogbXV0ZXggPSBzaGFyZWRSZXNvdXJjZU11dGV4KGRhdGEpKQog
ICAgICAgICBtdXRleC0+dW5sb2NrKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0JKHJldmlzaW9uIDE4Nzg4OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtODUsOSArODUsOSBAQCBOU0RpY3Rpb25hcnkgKldlYkNvcmU6OlFMRGlyZWN0
b3J5QXR0cmliCiAgICAgcmV0dXJuIGRpY3Rpb25hcnk7CiB9CiAKLXN0YXRpYyBNdXRleCYgcWxQ
cmV2aWV3Q29udmVydGVyRGljdGlvbmFyeU11dGV4KCkKK3N0YXRpYyBEZXByZWNhdGVkTXV0ZXgm
IHFsUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnlNdXRleCgpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPE11dGV4PiBtdXRleDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGVwcmVj
YXRlZE11dGV4PiBtdXRleDsKICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKQEAgLTEwNyw3ICsxMDcs
NyBAQCB2b2lkIFdlYkNvcmU6OmFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhGCiB7CiAgICAgQVNT
RVJUKHVybCk7CiAgICAgQVNTRVJUKGNvbnZlcnRlcik7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhx
bFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2socWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeU11dGV4KCkpOwogICAgIFtR
TFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkgc2V0T2JqZWN0OmNvbnZlcnRlciBmb3JLZXk6
dXJsXTsKICAgICBbUUxDb250ZW50RGljdGlvbmFyeSgpIHNldE9iamVjdDooZmlsZU5hbWUgPyBm
aWxlTmFtZSA6IEAiIikgZm9yS2V5OnVybF07CiB9CkBAIC0xMjEsNyArMTIxLDcgQEAgTlNTdHJp
bmcgKldlYkNvcmU6OnFsUHJldmlld0NvbnZlcnRlclVUSQogewogICAgIGlkIGNvbnZlcnRlciA9
IG5pbDsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2socWxQcmV2aWV3Q29udmVydGVy
RGljdGlvbmFyeU11dGV4KCkpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhx
bFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TXV0ZXgoKSk7CiAgICAgICAgIGNvbnZlcnRlciA9
IFtRTFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkgb2JqZWN0Rm9yS2V5OnVybF07CiAgICAg
fQogICAgIGlmICghY29udmVydGVyKQpAQCAtMTMxLDcgKzEzMSw3IEBAIE5TU3RyaW5nICpXZWJD
b3JlOjpxbFByZXZpZXdDb252ZXJ0ZXJVVEkKIAogdm9pZCBXZWJDb3JlOjpyZW1vdmVRTFByZXZp
ZXdDb252ZXJ0ZXJGb3JVUkwoTlNVUkwgKnVybCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKHFs
UHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnlNdXRleCgpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9jayhxbFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TXV0ZXgoKSk7CiAgICAgW1FM
UHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnkoKSByZW1vdmVPYmplY3RGb3JLZXk6dXJsXTsKIAog
ICAgIC8vIERlbGV0ZSB0aGUgZmlsZSB3aGVuIHdlIHJlbW92ZSB0aGUgcHJldmlldyBjb252ZXJ0
ZXIKQEAgLTE2Niw3ICsxNjYsNyBAQCBjb25zdCBVUkwgV2ViQ29yZTo6c2FmZVFMVVJMRm9yRG9j
dW1lbnRVCiAgICAgaWQgY29udmVydGVyID0gbmlsOwogICAgIE5TVVJMICpuc0RvY3VtZW50VVJM
ID0gZG9jdW1lbnRVUkw7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKHFsUHJldmll
d0NvbnZlcnRlckRpY3Rpb25hcnlNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2socWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeU11dGV4KCkpOwogICAgICAgICBj
b252ZXJ0ZXIgPSBbUUxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeSgpIG9iamVjdEZvcktleTpu
c0RvY3VtZW50VVJMXTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIxLDcgKzEyMSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAgLy8g
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29wZW5pbmdUaHJlYWQpOwogICAgICAgICBzcWxp
dGUzKiBkYiA9IG1fZGI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2RhdGFiYXNlQ2xvc2luZ011dGV4KTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9kYXRhYmFzZUNsb3NpbmdNdXRleCk7CiAgICAgICAgICAgICBtX2RiID0g
MDsKICAgICAgICAgfQogICAgICAgICBzcWxpdGUzX2Nsb3NlKGRiKTsKQEAgLTE1Miw3ICsxNTIs
NyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbnRlcnJ1cHQoKQogewogICAgIG1faW50ZXJydXB0
ZWQgPSB0cnVlOwogICAgIHdoaWxlICghbV9sb2NraW5nTXV0ZXgudHJ5TG9jaygpKSB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlQ2xvc2luZ011dGV4KTsKKyAgICAgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlQ2xvc2luZ011dGV4KTsKICAg
ICAgICAgaWYgKCFtX2RiKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBzcWxpdGUzX2lu
dGVycnVwdChtX2RiKTsKQEAgLTE4MSw3ICsxODEsNyBAQCBpbnQ2NF90IFNRTGl0ZURhdGFiYXNl
OjptYXhpbXVtU2l6ZSgpCiAgICAgaW50NjRfdCBtYXhQYWdlQ291bnQgPSAwOwogCiAgICAgewot
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CiAgICAgICAgIGVu
YWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KCp0aGlzLCBBU0NJSUxpdGVyYWwoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCIpKTsKICAgICAgICAg
bWF4UGFnZUNvdW50ID0gc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApOwpAQCAtMjAxLDcgKzIw
MSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldE1heGltdW1TaXplKGludDYKICAgICBBU1NF
UlQoY3VycmVudFBhZ2VTaXplIHx8ICFtX2RiKTsKICAgICBpbnQ2NF90IG5ld01heFBhZ2VDb3Vu
dCA9IGN1cnJlbnRQYWdlU2l6ZSA/IHNpemUgLyBjdXJyZW50UGFnZVNpemUgOiAwOwogICAgIAot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogICAgIGVuYWJsZUF1dGhvcml6
ZXIoZmFsc2UpOwogCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudCgqdGhpcywgIlBSQUdN
QSBtYXhfcGFnZV9jb3VudCA9ICIgKyBTdHJpbmc6Om51bWJlcihuZXdNYXhQYWdlQ291bnQpKTsK
QEAgLTIxOCw3ICsyMTgsNyBAQCBpbnQgU1FMaXRlRGF0YWJhc2U6OnBhZ2VTaXplKCkKICAgICAv
LyBTaW5jZSB0aGUgcGFnZSBzaXplIG9mIGEgZGF0YWJhc2UgaXMgbG9ja2VkIGluIGF0IGNyZWF0
aW9uIGFuZCB0aGVyZWZvcmUgY2Fubm90IGJlIGR5bmFtaWMsIAogICAgIC8vIHdlIGNhbiBjYWNo
ZSB0aGUgdmFsdWUgZm9yIGZ1dHVyZSB1c2UKICAgICBpZiAobV9wYWdlU2l6ZSA9PSAtMSkgewot
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CiAgICAgICAgIGVu
YWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICAKICAgICAgICAgU1FMaXRlU3RhdGVtZW50
IHN0YXRlbWVudCgqdGhpcywgQVNDSUlMaXRlcmFsKCJQUkFHTUEgcGFnZV9zaXplIikpOwpAQCAt
MjM1LDcgKzIzNSw3IEBAIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6OmZyZWVTcGFjZVNpemUoKQog
ICAgIGludDY0X3QgZnJlZWxpc3RDb3VudCA9IDA7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKICAgICAgICAgZW5hYmxlQXV0aG9yaXplcihm
YWxzZSk7CiAgICAgICAgIC8vIE5vdGU6IGZyZWVsaXN0X2NvdW50IHdhcyBhZGRlZCBpbiBTUUxp
dGUgMy40LjEuCiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQoKnRoaXMsIEFTQ0lJ
TGl0ZXJhbCgiUFJBR01BIGZyZWVsaXN0X2NvdW50IikpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIGlu
dDY0X3QgU1FMaXRlRGF0YWJhc2U6OnRvdGFsU2l6ZSgpCiAgICAgaW50NjRfdCBwYWdlQ291bnQg
PSAwOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9j
ayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9j
ayk7CiAgICAgICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICBTUUxpdGVTdGF0
ZW1lbnQgc3RhdGVtZW50KCp0aGlzLCBBU0NJSUxpdGVyYWwoIlBSQUdNQSBwYWdlX2NvdW50Iikp
OwogICAgICAgICBwYWdlQ291bnQgPSBzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMCk7CkBAIC0z
MzAsNyArMzMwLDcgQEAgaW50IFNRTGl0ZURhdGFiYXNlOjpydW5WYWN1dW1Db21tYW5kKCkKIAog
aW50IFNRTGl0ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogICAgIGVuYWJsZUF1dGhvcml6ZXIo
ZmFsc2UpOwogCiAgICAgaWYgKCFleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwoIlBSQUdNQSBp
bmNyZW1lbnRhbF92YWN1dW0iKSkpCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBTUUxpdGVEYXRh
YmFzZTo6c2V0QXV0aG9yaXplcihQYXNzUgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CiAKICAgICBtX2F1dGhvcml6ZXIgPSBh
dXRoOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVi
bGljOgogICAgIAogICAgIHZvaWQgc2V0QXV0aG9yaXplcihQYXNzUmVmUHRyPERhdGFiYXNlQXV0
aG9yaXplcj4pOwogCi0gICAgTXV0ZXgmIGRhdGFiYXNlTXV0ZXgoKSB7IHJldHVybiBtX2xvY2tp
bmdNdXRleDsgfQorICAgIERlcHJlY2F0ZWRNdXRleCYgZGF0YWJhc2VNdXRleCgpIHsgcmV0dXJu
IG1fbG9ja2luZ011dGV4OyB9CiAgICAgYm9vbCBpc0F1dG9Db21taXRPbigpIGNvbnN0OwogCiAg
ICAgLy8gVGhlIFNRTGl0ZSBBVVRPX1ZBQ1VVTSBwcmFnbWEgY2FuIGJlIGVpdGhlciBOT05FLCBG
VUxMLCBvciBJTkNSRU1FTlRBTC4KQEAgLTE0OSwxMyArMTQ5LDEzIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzczsKICAgICBib29sIG1fc2hhcmFibGU7CiAgICAg
Ci0gICAgTXV0ZXggbV9hdXRob3JpemVyTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9hdXRo
b3JpemVyTG9jazsKICAgICBSZWZQdHI8RGF0YWJhc2VBdXRob3JpemVyPiBtX2F1dGhvcml6ZXI7
CiAKLSAgICBNdXRleCBtX2xvY2tpbmdNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9sb2Nr
aW5nTXV0ZXg7CiAgICAgVGhyZWFkSWRlbnRpZmllciBtX29wZW5pbmdUaHJlYWQ7CiAKLSAgICBN
dXRleCBtX2RhdGFiYXNlQ2xvc2luZ011dGV4OworICAgIERlcHJlY2F0ZWRNdXRleCBtX2RhdGFi
YXNlQ2xvc2luZ011dGV4OwogICAgIGJvb2wgbV9pbnRlcnJ1cHRlZDsKIAogICAgIGludCBtX29w
ZW5FcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnQuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBA
QCBpbnQgU1FMaXRlU3RhdGVtZW50OjpwcmVwYXJlKCkKIHsKICAgICBBU1NFUlQoIW1faXNQcmVw
YXJlZCk7CiAKLSAgICBNdXRleExvY2tlciBkYXRhYmFzZUxvY2sobV9kYXRhYmFzZS5kYXRhYmFz
ZU11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBkYXRhYmFzZUxvY2sobV9kYXRh
YmFzZS5kYXRhYmFzZU11dGV4KCkpOwogICAgIGlmIChtX2RhdGFiYXNlLmlzSW50ZXJydXB0ZWQo
KSkKICAgICAgICAgcmV0dXJuIFNRTElURV9JTlRFUlJVUFQ7CiAKQEAgLTg4LDcgKzg4LDcgQEAg
aW50IFNRTGl0ZVN0YXRlbWVudDo6cHJlcGFyZSgpCiAKIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0
ZXAoKQogewotICAgIE11dGV4TG9ja2VyIGRhdGFiYXNlTG9jayhtX2RhdGFiYXNlLmRhdGFiYXNl
TXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGRhdGFiYXNlTG9jayhtX2RhdGFi
YXNlLmRhdGFiYXNlTXV0ZXgoKSk7CiAgICAgaWYgKG1fZGF0YWJhc2UuaXNJbnRlcnJ1cHRlZCgp
KQogICAgICAgICByZXR1cm4gU1FMSVRFX0lOVEVSUlVQVDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyAr
MTIyLDcgQEAgV29ya2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkKCkKIGJvb2wgV29ya2VyVGhyZWFk
OjpzdGFydCgpCiB7CiAgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBpcyBuZWNlc3NhcnkgdG8gZW5z
dXJlIHRoYXQgbV90aHJlYWRJRCBpcyBpbml0aWFsaXplZCB3aGVuIHRoZSB0aHJlYWQgc3RhcnRz
LgotICAgIE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwogCiAgICAgaWYg
KG1fdGhyZWFkSUQpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZv
aWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogI2VuZGlmCiAKICAgICB7Ci0gICAgICAg
IE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKICAgICAgICAgbV93
b3JrZXJHbG9iYWxTY29wZSA9IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKG1fc3RhcnR1cERhdGEt
Pm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2VudCwgbV9zdGFydHVwRGF0YS0+
bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fc3RhcnR1cERhdGEtPm1fY29udGVudFNlY3VyaXR5
UG9saWN5VHlwZSwgbV9zdGFydHVwRGF0YS0+bV90b3BPcmlnaW4ucmVsZWFzZSgpKTsKIAogICAg
ICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkgewpAQCAtMTg5LDcgKzE4OSw3IEBAIHZv
aWQgV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQogdm9pZCBXb3JrZXJUaHJlYWQ6OnN0b3Ao
KQogewogICAgIC8vIE11dGV4IHByb3RlY3Rpb24gaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc3RvcCgp
IGNhbiBiZSBjYWxsZWQgYmVmb3JlIHRoZSBjb250ZXh0IGlzIGZ1bGx5IGNyZWF0ZWQuCi0gICAg
TXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOworICAgIERlcHJlY2F0ZWRN
dXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAKICAgICAvLyBFbnN1cmUg
dGhhdCB0YXNrcyBhcmUgYmVpbmcgaGFuZGxlZCBieSB0aHJlYWQgZXZlbnQgbG9vcC4gSWYgc2Ny
aXB0IGV4ZWN1dGlvbiB3ZXJlbid0IGZvcmJpZGRlbiwgYSB3aGlsZSgxKSBsb29wIGluIEpTIGNv
dWxkIGtlZXAgdGhlIHRocmVhZCBhbGl2ZSBmb3JldmVyLgogICAgIGlmIChtX3dvcmtlckdsb2Jh
bFNjb3BlKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQ
cm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
MSw3ICsxNTEsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6cG9zdERhdGFiYXNlVGFzayhzCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2RhdGFiYXNlVGFza011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fZGF0YWJhc2VUYXNrTXV0ZXgpOwogCiAgICAgbV9kYXRhYmFzZVRhc2tzLmFwcGVuZChXVEY6
Om1vdmUodGFzaykpOwogCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6
OnBlcmZvcm1OZXh0RGF0YWJhcwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gdGFz
azsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4
KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlVGFza011
dGV4KTsKICAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlVGFza3MuaXNFbXB0eSgpKTsKICAgICAg
ICAgdGFzayA9IG1fZGF0YWJhc2VUYXNrcy50YWtlRmlyc3QoKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCShyZXZp
c2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQ
cm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAg
IEhhc2hNYXA8VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLCBSZWZQdHI8VW5pcXVlSURCRGF0
YWJhc2U+PiBtX2lkYkRhdGFiYXNlczsKIAogICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxBc3lu
Y1Rhc2s+PiBtX2RhdGFiYXNlVGFza3M7Ci0gICAgTXV0ZXggbV9kYXRhYmFzZVRhc2tNdXRleDsK
KyAgICBEZXByZWNhdGVkTXV0ZXggbV9kYXRhYmFzZVRhc2tNdXRleDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAJKHJldmlzaW9u
IDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd24oVW5pcXVlSQogICAgIHJlZigpOwogCiAgICAg
ewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZVRhc2tNdXRleCk7CisgICAg
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZVRhc2tNdXRleCk7CiAg
ICAgICAgIG1fZGF0YWJhc2VUYXNrcy5jbGVhcigpOwogICAgIH0KIApAQCAtMTEyNSw3ICsxMTI1
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdE1haW5UaHJlYWRUYQogICAgIGlmICgh
bV9hY2NlcHRpbmdOZXdSZXF1ZXN0cyAmJiB0YXNrVHlwZSA9PSBEYXRhYmFzZVRhc2tUeXBlOjpO
b3JtYWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX21haW5U
aHJlYWRUYXNrTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tYWlu
VGhyZWFkVGFza011dGV4KTsKIAogICAgIG1fbWFpblRocmVhZFRhc2tzLmFwcGVuZChXVEY6Om1v
dmUodGFzaykpOwogCkBAIC0xMTQzLDcgKzExNDMsNyBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNl
OjpwZXJmb3JtTmV4dE1haW5UCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNr
OwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbWFpblRocmVhZFRhc2tNdXRl
eCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tYWluVGhyZWFkVGFz
a011dGV4KTsKIAogICAgICAgICAvLyBUaGlzIGRhdGFiYXNlIG1pZ2h0IGJlIHNodXR0aW5nIGRv
d24sIGluIHdoaWNoIGNhc2UgdGhlIHRhc2sgcXVldWUgbWlnaHQgYmUgZW1wdHkuCiAgICAgICAg
IGlmIChtX21haW5UaHJlYWRUYXNrcy5pc0VtcHR5KCkpCkBAIC0xMTY1LDcgKzExNjUsNyBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrCiAgICAgaWYgKCFtX2FjY2Vw
dGluZ05ld1JlcXVlc3RzICYmIHRhc2tUeXBlID09IERhdGFiYXNlVGFza1R5cGU6Ok5vcm1hbCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VUYXNr
TXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZVRhc2tN
dXRleCk7CiAKICAgICBtX2RhdGFiYXNlVGFza3MuYXBwZW5kKFdURjo6bW92ZSh0YXNrKSk7CiAK
QEAgLTExODYsNyArMTE4Niw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1OZXh0
RGF0YWIKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRhc2s7CiAgICAgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZVRhc2tNdXRleCk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZVRhc2tNdXRleCk7CiAKICAgICAg
ICAgLy8gVGhpcyBkYXRhYmFzZSBtaWdodCBiZSBzaHV0dGluZyBkb3duIG9uIHRoZSBtYWluIHRo
cmVhZCwgaW4gd2hpY2ggY2FzZSB0aGUgdGFzayBxdWV1ZSBtaWdodCBiZSBlbXB0eS4KICAgICAg
ICAgaWYgKG1fZGF0YWJhc2VUYXNrcy5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRh
YmFzZS5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMCwx
MCArMjEwLDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlQmFja2lu
Z1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKIAogICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxBc3lu
Y1Rhc2s+PiBtX2RhdGFiYXNlVGFza3M7Ci0gICAgTXV0ZXggbV9kYXRhYmFzZVRhc2tNdXRleDsK
KyAgICBEZXByZWNhdGVkTXV0ZXggbV9kYXRhYmFzZVRhc2tNdXRleDsKIAogICAgIERlcXVlPHN0
ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+PiBtX21haW5UaHJlYWRUYXNrczsKLSAgICBNdXRleCBt
X21haW5UaHJlYWRUYXNrTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fbWFpblRocmVhZFRh
c2tNdXRleDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NTksNyArNDU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0
aQogCiAgICAgLy8gUHVzaCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9uIG9uIG91
ciBzdGFjay4KICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNSZXBseVN0
YXRlTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY1Jl
cGx5U3RhdGVNdXRleCk7CiAgICAgICAgIGlmICghbV9zaG91bGRXYWl0Rm9yU3luY1JlcGxpZXMp
IHsKICAgICAgICAgICAgIGRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC00ODYsNyArNDg2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VEZWNvZGVyPiBDb25uZWN0aQogCiAgICAgLy8gRmluYWxseSwgcG9wIHRoZSBwZW5kaW5nIHN5
bmMgcmVwbHkgaW5mb3JtYXRpb24uCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOwogICAgICAgICBBU1NFUlQobV9wZW5kaW5nU3lu
Y1JlcGxpZXMubGFzdCgpLnN5bmNSZXF1ZXN0SUQgPT0gc3luY1JlcXVlc3RJRCk7CiAgICAgICAg
IG1fcGVuZGluZ1N5bmNSZXBsaWVzLnJlbW92ZUxhc3QoKTsKICAgICB9CkBAIC01MDgsNyArNTA4
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aQogCiAgICAgLy8g
UHVzaCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9uIG9uIG91ciBzdGFjay4KICAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOwor
ICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRl
eCk7CiAgICAgICAgIGlmICghbV9zaG91bGRXYWl0Rm9yU3luY1JlcGxpZXMpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNTI2LDcgKzUyNiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGkKIAogICAgIC8vIEZpbmFsbHksIHBvcCB0aGUgcGVuZGlu
ZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9uLgogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKICAgICAgICAgQVNTRVJUKG1fc2Vjb25k
YXJ5VGhyZWFkUGVuZGluZ1N5bmNSZXBseU1hcC5jb250YWlucyhzeW5jUmVxdWVzdElEKSk7CiAg
ICAgICAgIG1fc2Vjb25kYXJ5VGhyZWFkUGVuZGluZ1N5bmNSZXBseU1hcC5yZW1vdmUoc3luY1Jl
cXVlc3RJRCk7CiAgICAgfQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNz
YWdlRGVjb2Rlcj4gQ29ubmVjdGkKICAgICAgICAgU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9u
KCkuZGlzcGF0Y2hNZXNzYWdlcyhudWxscHRyKTsKICAgICAgICAgCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOworICAgICAg
ICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgp
OwogCiAgICAgICAgICAgICAvLyBTZWNvbmQsIGNoZWNrIGlmIHRoZXJlIGlzIGEgc3luYyByZXBs
eSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay4KICAgICAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5n
U3luY1JlcGxpZXMuaXNFbXB0eSgpKTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3RpCiAKIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0lu
Y29taW5nU3luY1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlcikK
IHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7CiAKICAg
ICAvLyBHbyB0aHJvdWdoIHRoZSBzdGFjayBvZiBzeW5jIHJlcXVlc3RzIHRoYXQgaGF2ZSBwZW5k
aW5nIHJlcGxpZXMgYW5kIHNlZSB3aGljaCBvbmUKICAgICAvLyB0aGlzIHJlcGx5IGlzIGZvci4K
QEAgLTc1MCw3ICs3NTAsNyBAQCB2b2lkIENvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSgp
CiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7CiAKICAgICAgICAgQVNTRVJUKG1f
c2hvdWxkV2FpdEZvclN5bmNSZXBsaWVzKTsKICAgICAgICAgbV9zaG91bGRXYWl0Rm9yU3luY1Jl
cGxpZXMgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjk4LDcgKzI5OCw3IEBAIHByaXZhdGU6CiAg
ICAgY2xhc3MgU3luY01lc3NhZ2VTdGF0ZTsKICAgICBmcmllbmQgY2xhc3MgU3luY01lc3NhZ2VT
dGF0ZTsKIAotICAgIE11dGV4IG1fc3luY1JlcGx5U3RhdGVNdXRleDsKKyAgICBEZXByZWNhdGVk
TXV0ZXggbV9zeW5jUmVwbHlTdGF0ZU11dGV4OwogICAgIGJvb2wgbV9zaG91bGRXYWl0Rm9yU3lu
Y1JlcGxpZXM7CiAgICAgVmVjdG9yPFBlbmRpbmdTeW5jUmVwbHk+IG1fcGVuZGluZ1N5bmNSZXBs
aWVzOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAJ
KHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
MCw3ICs2OTAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YXBwZW5kVXBkCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fcmVuZGVyUXVldWVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX3JlbmRlclF1ZXVlTXV0ZXgpOwogICAgIG1fcmVuZGVyUXVldWUuYXBwZW5k
KFdURjo6bW92ZShmdW5jdGlvbikpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gUmVuZGVyIHF1
ZXVlIGNhbiBiZSBhY2Nlc3NlZCBvbnkgZnJvbSBtYWluIHRocmVhZCBvciB1cGRhdGVQYWludE5v
ZGUgY2FsbCBzdGFjayEKICAgICBWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBtX3JlbmRl
clF1ZXVlOwotICAgIE11dGV4IG1fcmVuZGVyUXVldWVNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0
ZXggbV9yZW5kZXJRdWV1ZU11dGV4OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9z
aXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAJKHJldmlz
aW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZUNvbXBv
c2l0aQogICAgIGlmIChtX3RocmVhZElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRp
dGlvbk11dGV4KTsKICAgICBtX3RocmVhZElkZW50aWZpZXIgPSBjcmVhdGVUaHJlYWQoY29tcG9z
aXRpbmdUaHJlYWRFbnRyeSwgdGhpcywgIldlYkNvcmU6IFRocmVhZGVkQ29tcG9zaXRvciIpOwog
CiAgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbi53YWl0KG1faW5pdGlhbGl6ZVJ1bkxv
b3BDb25kaXRpb25NdXRleCk7CkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OmNyZWF0ZUNvbXBvc2l0aQogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJ1bkNvbXBv
c2l0aW5nVGhyZWFkKCkKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2lu
aXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CiAKICAgICAg
ICAgbV9jb21wb3NpdGluZ1J1bkxvb3AgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBvc2l0aW5nUnVu
TG9vcD4oWyZdIHsKICAgICAgICAgICAgIHJlbmRlckxheWVyVHJlZSgpOwpAQCAtMzIxLDcgKzMy
MSw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpydW5Db21wb3NpdGluZ1QKICAgICBtX3Nj
ZW5lLT5wdXJnZUdMUmVzb3VyY2VzKCk7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOwog
ICAgICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcCA9IG51bGxwdHI7CiAgICAgICAgIG1fY29udGV4
dCA9IG51bGxwdHI7CiAgICAgICAgIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbi5zaWduYWwo
KTsKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cnVuQ29tcG9z
aXRpbmdUCiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjp0ZXJtaW5hdGVDb21wb3NpdGluZ1Ro
cmVhZCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRp
dGlvbk11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGVybWluYXRl
UnVuTG9vcENvbmRpdGlvbk11dGV4KTsKIAogICAgIG1fc2NlbmUtPmRldGFjaCgpOwogICAgIG1f
Y29tcG9zaXRpbmdSdW5Mb29wLT5ydW5Mb29wKCkuc3RvcCgpOwpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaAkocmV2
aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTEsOSArMTExLDkgQEAgcHJpdmF0ZToKIAogICAgIFRocmVhZElkZW50aWZpZXIgbV90
aHJlYWRJZGVudGlmaWVyOwogICAgIFRocmVhZENvbmRpdGlvbiBtX2luaXRpYWxpemVSdW5Mb29w
Q29uZGl0aW9uOwotICAgIE11dGV4IG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsK
KyAgICBEZXByZWNhdGVkTXV0ZXggbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4Owog
ICAgIFRocmVhZENvbmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb247Ci0gICAgTXV0
ZXggbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4
IG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCShy
ZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCwx
MSArMTAwLDExIEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBIYXNoU2V0
PFN0cmluZz4gbV9yZWdpc3RlcmVkU2NoZW1lczsKLSAgICBNdXRleCBtX3JlZ2lzdGVyZWRTY2hl
bWVzTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fcmVnaXN0ZXJlZFNjaGVtZXNNdXRleDsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9j
b2w+PiBDdXN0b21Qcm90b2NvbE1hcDsKICAgICBDdXN0b21Qcm90b2NvbE1hcCBtX2N1c3RvbVBy
b3RvY29sTWFwOwotICAgIE11dGV4IG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleDsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXggbV9jdXN0b21Qcm90b2NvbE1hcE11dGV4OwogICAgIAogICAgIC8vIFdLQ3Vz
dG9tUHJvdG9jb2wgb2JqZWN0cyBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBtX2N1c3RvbVByb3Rv
Y29sTWFwIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KICAgICAvLyBXZSByZXR1cm4gYSBSZXRhaW5Q
dHIgaGVyZSBiZWNhdXNlIGl0IGlzIHVuc2FmZSB0byByZXR1cm4gYSByYXcgcG9pbnRlciBzaW5j
ZSB0aGUgb2JqZWN0IG1pZ2h0IGltbWVkaWF0ZWx5IGJlIGRlc3Ryb3llZCBmcm9tIGEgZGlmZmVy
ZW50IHRocmVhZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY1LDI4ICsxNjUsMjggQEAgdm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoYwogdm9pZCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OmFkZEN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9jb2wgKmN1c3RvbVByb3Rv
Y29sKQogewogICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbCk7Ci0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXgpOwogICAgIG1fY3VzdG9tUHJvdG9jb2xN
YXAuYWRkKGN1c3RvbVByb3RvY29sLmN1c3RvbVByb3RvY29sSUQsIGN1c3RvbVByb3RvY29sKTsK
IH0KIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlbW92ZUN1c3RvbVByb3RvY29sKFdL
Q3VzdG9tUHJvdG9jb2wgKmN1c3RvbVByb3RvY29sKQogewogICAgIEFTU0VSVChjdXN0b21Qcm90
b2NvbCk7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFwTXV0
ZXgpOwogICAgIG1fY3VzdG9tUHJvdG9jb2xNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sLmN1c3Rv
bVByb3RvY29sSUQpOwogfQogICAgIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lz
dGVyU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIEFTU0VSVCghc2NoZW1lLmlz
TnVsbCgpKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9yZWdpc3RlcmVkU2NoZW1lc011dGV4
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVtZXNN
dXRleCk7CiAgICAgbV9yZWdpc3RlcmVkU2NoZW1lcy5hZGQoc2NoZW1lKTsKIH0KICAgICAKIHZv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYg
c2NoZW1lKQogewogICAgIEFTU0VSVCghc2NoZW1lLmlzTnVsbCgpKTsKLSAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9yZWdpc3RlcmVkU2NoZW1lc011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVtZXNNdXRleCk7CiAgICAgbV9yZWdpc3RlcmVk
U2NoZW1lcy5yZW1vdmUoc2NoZW1lKTsKIH0KIApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGUKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9yZWdp
c3RlcmVkU2NoZW1lc011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
cmVnaXN0ZXJlZFNjaGVtZXNNdXRleCk7CiAgICAgcmV0dXJuIG1fcmVnaXN0ZXJlZFNjaGVtZXMu
Y29udGFpbnMoc2NoZW1lKTsKIH0KIApAQCAtMjYxLDcgKzI2MSw3IEBAICAgICBpZiAoIXByb3Rv
Y29sKQogCiBSZXRhaW5QdHI8V0tDdXN0b21Qcm90b2NvbD4gQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Ojpwcm90b2NvbEZvcklEKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiB7Ci0gICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXgpOwogCiAgICAgQ3VzdG9t
UHJvdG9jb2xNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jdXN0b21Qcm90b2NvbE1hcC5maW5k
KGN1c3RvbVByb3RvY29sSUQpOwogICAgIGlmIChpdCA9PSBtX2N1c3RvbVByb3RvY29sTWFwLmVu
ZCgpKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1Nl
Y2NvbXBCcm9rZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51
eC9TZWNjb21wRmlsdGVycy9TZWNjb21wQnJva2VyLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NlY2NvbXBCcm9rZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQg
bV9zb2NrZXQ7CiAKLSAgICBtdXRhYmxlIE11dGV4IG1fc29ja2V0TG9jazsKKyAgICBtdXRhYmxl
IERlcHJlY2F0ZWRNdXRleCBtX3NvY2tldExvY2s7CiAKICAgICAvLyBNYXBzIGZpbGVzIHRoYXQg
bWF5IGJlIHJlYWQgYnkgbWFsbG9jKCkgdG8gb3BlbiBmaWxlIGRlc2NyaXB0b3JzLgogICAgIEhh
c2hNYXA8U3RyaW5nLCBpbnQ+IG1fZmlsZURlc2NyaXB0b3JDYWNoZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbiogUGx1Z2luUHJvY2Vzc0NvCiAgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMu
YXBwZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRleCk7CisgICAgICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4KTsKICAg
ICAgICAgQVNTRVJUKCFtX3Rva2Vuc0FuZENvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdpblByb2Nl
c3NUb2tlbikpOwogCiAgICAgICAgIG1fdG9rZW5zQW5kQ29ubmVjdGlvbnMuc2V0KHBsdWdpblBy
b2Nlc3NUb2tlbiwgcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSk7CkBAIC0x
MDEsNyArMTAxLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbQog
ICAgIEFTU0VSVCh2ZWN0b3JJbmRleCAhPSBub3RGb3VuZCk7CiAKICAgICB7Ci0gICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25zTXV0ZXgpOworICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRleCk7
CiAgICAgICAgIEFTU0VSVChtX3Rva2Vuc0FuZENvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5Qcm9jZXNzVG9rZW4oKSkpOwogICAgICAgICAKICAgICAg
ICAgbV90b2tlbnNBbmRDb25uZWN0aW9ucy5yZW1vdmUocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24t
PnBsdWdpblByb2Nlc3NUb2tlbigpKTsKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cmVtCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCh1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9r
ZW4pCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRl
eCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rp
b25zTXV0ZXgpOwogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1fdG9rZW5zQW5k
Q29ubmVjdGlvbnMuZ2V0KHBsdWdpblByb2Nlc3NUb2tlbik7CiAKICAgICAvLyBJdCdzIE9LIGZv
ciBjb25uZWN0aW9uIHRvIGJlIG51bGwgaGVyZTsgaXQgd2lsbCBoYXBwZW4gaWYgdGhpcyB3ZWIg
cHJvY2VzcyBkb2Vzbid0IGtub3cKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCShyZXZpc2lvbiAxODc4ODkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBFdmVudERpc3BhdGNoZXI6On5FdmVudERp
c3BhdGNoZXIoKQogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiB2b2lkIEV2ZW50RGlzcGF0
Y2hlcjo6YWRkU2Nyb2xsaW5nVHJlZUZvclBhZ2UoV2ViUGFnZSogd2ViUGFnZSkKIHsKLSAgICBN
dXRleExvY2tlciBsb2NrZXIobV9zY3JvbGxpbmdUcmVlc011dGV4KTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2Nyb2xsaW5nVHJlZXNNdXRleCk7CiAKICAgICBBU1NFUlQo
d2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSk7CiAgICAgQVNTRVJU
KCFtX3Njcm9sbGluZ1RyZWVzLmNvbnRhaW5zKHdlYlBhZ2UtPnBhZ2VJRCgpKSk7CkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjphZGRTY3JvbGxpbmdUcmVlRm8KIAogdm9p
ZCBFdmVudERpc3BhdGNoZXI6OnJlbW92ZVNjcm9sbGluZ1RyZWVGb3JQYWdlKFdlYlBhZ2UqIHdl
YlBhZ2UpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2Nyb2xsaW5nVHJlZXNNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Njcm9sbGluZ1RyZWVzTXV0ZXgp
OwogICAgIEFTU0VSVChtX3Njcm9sbGluZ1RyZWVzLmNvbnRhaW5zKHdlYlBhZ2UtPnBhZ2VJRCgp
KSk7CiAKICAgICBtX3Njcm9sbGluZ1RyZWVzLnJlbW92ZSh3ZWJQYWdlLT5wYWdlSUQoKSk7CkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0
XwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3Njcm9sbGluZ1RyZWVzTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrZXIobV9zY3JvbGxpbmdUcmVlc011dGV4KTsKICAgICBpZiAoUmVmUHRyPFRocmVhZGVk
U2Nyb2xsaW5nVHJlZT4gc2Nyb2xsaW5nVHJlZSA9IG1fc2Nyb2xsaW5nVHJlZXMuZ2V0KHBhZ2VJ
RCkpIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3MgcHJldHR5IGhvcnJpYmxlIHRoYXQgd2UncmUg
dXBkYXRpbmcgdGhlIGJhY2svZm9yd2FyZCBzdGF0ZSBoZXJlLgogICAgICAgICAvLyBXZWJDb3Jl
IHNob3VsZCBhbHdheXMga25vdyB0aGUgY3VycmVudCBzdGF0ZSBhbmQga25vdyB3aGVuIGl0IGNo
YW5nZXMgc28gdGhlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZl
bnREaXNwYXRjaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwog
CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLSAgICBNdXRleCBtX3Njcm9sbGluZ1RyZWVz
TXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fc2Nyb2xsaW5nVHJlZXNNdXRleDsKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4g
bV9zY3JvbGxpbmdUcmVlczsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpX
aGVlbEV2ZW50RGVsdGFUcmFja2VyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YVRyYWNrZXI7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3Vw
L1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVh
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IF9XZWJLaXRTb3Vw
UmVxdWVzdElucHV0U3RyZWFtUHJpdgogICAgIHVpbnQ2NF90IGJ5dGVzUmVjZWl2ZWQ7CiAgICAg
dWludDY0X3QgYnl0ZXNSZWFkOwogCi0gICAgTXV0ZXggcmVhZExvY2s7CisgICAgRGVwcmVjYXRl
ZE11dGV4IHJlYWRMb2NrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1JlYWREYXRhPiBwZW5k
aW5nQXN5bmNSZWFkOwogfTsKIApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtCiAgICAgV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbSog
c3RyZWFtID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0oaW5wdXRTdHJlYW0pOwog
ICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyhzdHJlYW0sIGNh
bmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihzdHJlYW0tPnByaXYtPnJlYWRMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKHN0cmVhbS0+cHJpdi0+cmVhZExvY2spOwogCiAgICAgaWYgKCF3ZWJraXRTb3VwUmVxdWVz
dElucHV0U3RyZWFtSGFzRGF0YVRvUmVhZChzdHJlYW0pICYmICF3ZWJraXRTb3VwUmVxdWVzdElu
cHV0U3RyZWFtSXNXYWl0aW5nRm9yRGF0YShzdHJlYW0pKSB7CiAgICAgICAgIGdfdGFza19yZXR1
cm5faW50KHRhc2suZ2V0KCksIDApOwpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgd2Via2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbUFkZERhdGEKICAgICBpZiAod2Via2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbUZpbmlzaGVkKHN0cmVhbSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihzdHJlYW0tPnByaXYtPnJlYWRMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKHN0cmVhbS0+cHJpdi0+cmVhZExvY2spOwogCiAgICAgaWYgKGRhdGFMZW5n
dGgpIHsKICAgICAgICAgLy8gVHJ1bmNhdGUgdGhlIGRhdGFMZW5ndGggdG8gdGhlIGNvbnRlbnRM
ZW5ndGggaWYgaXQncyBrbm93bi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
QXJlYVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
QXJlYVN5bmMuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0L1N0b3JhZ2Uv
U3RvcmFnZUFyZWFTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZv
aWQgU3RvcmFnZUFyZWFTeW5jOjpzeW5jVGltZXJGaXJlZCgpCiAKICAgICBib29sIHBhcnRpYWxT
eW5jID0gZmFsc2U7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9j
ayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CiAK
ICAgICAgICAgLy8gRG8gbm90IHNjaGVkdWxlIGFub3RoZXIgc3luYyBpZiB3ZSdyZSBzdGlsbCB0
cnlpbmcgdG8gY29tcGxldGUgdGhlCiAgICAgICAgIC8vIHByZXZpb3VzIG9uZS4gQnV0LCBpZiB3
ZSdyZSBzaHV0dGluZyBkb3duLCBzY2hlZHVsZSBpdCBhbnl3YXkuCkBAIC0zNTIsNyArMzUyLDcg
QEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1JbXBvcnQoKQogCiB2b2lkIFN0b3JhZ2VB
cmVhU3luYzo6bWFya0ltcG9ydGVkKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9pbXBv
cnRMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1faW1wb3J0TG9jayk7
CiAgICAgbV9pbXBvcnRDb21wbGV0ZSA9IHRydWU7CiAgICAgbV9pbXBvcnRDb25kaXRpb24uc2ln
bmFsKCk7CiB9CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OmJsb2Nr
VW50aWxJbXBvcnRDbwogICAgIGlmICghbV9zdG9yYWdlQXJlYSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faW1wb3J0TG9jayk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX2ltcG9ydExvY2spOwogICAgIHdoaWxlICghbV9pbXBvcnRDb21w
bGV0ZSkKICAgICAgICAgbV9pbXBvcnRDb25kaXRpb24ud2FpdChtX2ltcG9ydExvY2spOwogICAg
IG1fc3RvcmFnZUFyZWEgPSBudWxscHRyOwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgU3RvcmFn
ZUFyZWFTeW5jOjpwZXJmb3JtU3luYygpCiAgICAgYm9vbCBjbGVhckl0ZW1zOwogICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fc3luY0xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
c3luY0xvY2spOwogCiAgICAgICAgIEFTU0VSVChtX3N5bmNTY2hlZHVsZWQpOwogCkBAIC00ODIs
NyArNDgyLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5jKCkKICAgICBzeW5j
KGNsZWFySXRlbXMsIGl0ZW1zKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fc3luY0xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3lu
Y0xvY2spOwogICAgICAgICBtX3N5bmNJblByb2dyZXNzID0gZmFsc2U7CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCShyZXZpc2lvbiAxODc4ODkp
CisrKyBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFN0cmluZyBtX2RhdGFi
YXNlSWRlbnRpZmllcjsKIAotICAgIE11dGV4IG1fc3luY0xvY2s7CisgICAgRGVwcmVjYXRlZE11
dGV4IG1fc3luY0xvY2s7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9pdGVtc1BlbmRp
bmdTeW5jOwogICAgIGJvb2wgbV9jbGVhckl0ZW1zV2hpbGVTeW5jaW5nOwogICAgIGJvb2wgbV9z
eW5jU2NoZWR1bGVkOwpAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3N5
bmNDbG9zZURhdGFiYXNlOwogCi0gICAgbXV0YWJsZSBNdXRleCBtX2ltcG9ydExvY2s7CisgICAg
bXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9pbXBvcnRMb2NrOwogICAgIFRocmVhZENvbmRpdGlv
biBtX2ltcG9ydENvbmRpdGlvbjsKICAgICBib29sIG1faW1wb3J0Q29tcGxldGU7CiAgICAgdm9p
ZCBtYXJrSW1wb3J0ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVHJh
Y2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3Jh
Z2VUcmFja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIFN0b3JhZ2VU
cmFja2VyOjpTdG9yYWdlVHJhY2tlcihjb25zdCBTdHIKIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6
c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CiAKICAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4o
KSkKICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQg
U3RvcmFnZVRyYWNrZXI6OnNldERhdGFiYXNlRGlyZWN0b3IKICAgICBtX3N0b3JhZ2VEaXJlY3Rv
cnlQYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAgICAgICBtX29yaWdpblNldC5jbGVhcigp
OwogICAgIH0KIApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmltcG9y
dE9yaWdpbklkZW50aWYKIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZmluaXNoZWRJbXBvcnRpbmdP
cmlnaW5JZGVudGlmaWVycygpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VN
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgp
OwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmdP
cmlnaW5zKCk7CiB9CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3lu
Y0ltcG9ydE9yaWdpbklkZQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCiAgICAgewot
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICAgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogCiAgICAgICAgIC8v
IERvbid0IGZvcmNlIGNyZWF0aW9uIG9mIFN0b3JhZ2VUcmFja2VyJ3MgZGIganVzdCBiZWNhdXNl
IGEgdHJhY2tlcgogICAgICAgICAvLyB3YXMgaW5pdGlhbGl6ZWQuIEl0IHdpbGwgYmUgY3JlYXRl
ZCBpZiBsb2NhbCBzdG9yYWdlIGRicyBhcmUgZm91bmQKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lk
IFN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlCiAgICAgICAgICAgICBpbnQgcmVz
dWx0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja09yaWdpbnMobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgICAgICAgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tPcmlnaW5zKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAgICAg
ICAgICAgICAgIHdoaWxlICgocmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JP
VykKICAgICAgICAgICAgICAgICAgICAgbV9vcmlnaW5TZXQuYWRkKHN0YXRlbWVudC5nZXRDb2x1
bW5UZXh0KDApLmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAgICAgIH0KQEAgLTIzMiwxMCArMjMy
LDEwIEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGUKICAgICBzeW5j
RmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpOwogICAgIAogICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgpOwogCiAgICAgICAgIGlmIChtX2NsaWVudCkgewot
ICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAg
ICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKICAg
ICAgICAgICAgIE9yaWdpblNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9vcmlnaW5TZXQuZW5k
KCk7CiAgICAgICAgICAgICBmb3IgKE9yaWdpblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29y
aWdpblNldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgICAgICAgbV9jbGll
bnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKCppdCk7CkBAIC0yNTcsNyArMjU3LDcgQEAgdm9p
ZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcgogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gcGF0aHM7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZU11
dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0
ZXgpOwogICAgICAgICBwYXRocyA9IGxpc3REaXJlY3RvcnkobV9zdG9yYWdlRGlyZWN0b3J5UGF0
aCwgIioubG9jYWxzdG9yYWdlIik7CiAgICAgfQogCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBT
dG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcgogICAgIC8vIGRlbGV0aW9ucyBmcm9t
IGRpc2sgYW5kIGZyb20gbV9vcmlnaW5TZXQuCiAgICAgT3JpZ2luU2V0IG9yaWdpblNldENvcHk7
CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7Cisg
ICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CiAg
ICAgICAgIGZvciAoT3JpZ2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fb3JpZ2luU2V0LmJl
Z2luKCksIGVuZCA9IG1fb3JpZ2luU2V0LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAg
ICAgICBvcmlnaW5TZXRDb3B5LmFkZCgoKml0KS5pc29sYXRlZENvcHkoKSk7CiAgICAgfQpAQCAt
MzA2LDcgKzMwNiw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnNldE9yaWdpbkRldGFpbHMoY28K
ICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9v
cmlnaW5TZXRNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9v
cmlnaW5TZXRNdXRleCk7CiAKICAgICAgICAgaWYgKG1fb3JpZ2luU2V0LmNvbnRhaW5zKG9yaWdp
bklkZW50aWZpZXIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzM3LDcgKzMzNyw3IEBAIHZv
aWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNTZXRPcmlnaW5EZXRhaWwKIAogICAgIFNRTGl0ZVRyYW5z
YWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKIAogICAgIG9wZW5UcmFja2VyRGF0YWJhc2Uo
dHJ1ZSk7CiAgICAgCkBAIC0zNTcsMTMgKzM1NywxMyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpz
eW5jU2V0T3JpZ2luRGV0YWlsCiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlz
aCBvcmlnaW4gJyVzJyBpbiB0aGUgdHJhY2tlciIsIG9yaWdpbklkZW50aWZpZXIuYXNjaWkoKS5k
YXRhKCkpOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRN
dXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRN
dXRleCk7CiAgICAgICAgIGlmICghbV9vcmlnaW5TZXQuY29udGFpbnMob3JpZ2luSWRlbnRpZmll
cikpCiAgICAgICAgICAgICBtX29yaWdpblNldC5hZGQob3JpZ2luSWRlbnRpZmllcik7CiAgICAg
fQogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9jbGllbnRNdXRleCk7Cisg
ICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9jbGllbnRNdXRleCk7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlm
eU9yaWdpbihvcmlnaW5JZGVudGlmaWVyKTsKICAgICB9CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9p
ZCBTdG9yYWdlVHJhY2tlcjo6b3JpZ2lucyhWZWN0b3I8UmVmUAogICAgIGlmICghbV9pc0FjdGl2
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2luU2V0
TXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRl
eCk7CiAKICAgICBmb3IgKE9yaWdpblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29yaWdpblNl
dC5iZWdpbigpLCBlbmQgPSBtX29yaWdpblNldC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQogICAg
ICAgICByZXN1bHQuYXBwZW5kKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKCppdCkpOwpAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRl
bGV0ZUFsbE9yaWdpbnMoKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKICAgICAgICAgd2lsbERlbGV0ZUFsbE9y
aWdpbnMoKTsKICAgICAgICAgbV9vcmlnaW5TZXQuY2xlYXIoKTsKICAgICB9CkBAIC00MTcsNyAr
NDE3LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbgogCiAgICAg
U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVy
OwogICAgIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKICAgICAKICAgICBv
cGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkp
CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9y
aWdpbgogICAgICAgICBkZWxldGVGaWxlKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAog
ICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9jbGllbnRNdXRleCk7
CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgp
OwogICAgICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5k
aXNwYXRjaERpZE1vZGlmeU9yaWdpbihzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CiAgICAg
ICAgIH0KQEAgLTQ5OSw3ICs0OTksNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmln
aW4oU2VjdXJpCiAgICAgU3RyaW5nIG9yaWdpbklkID0gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZp
ZXIoKTsKICAgICAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNl
dE11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNl
dE11dGV4KTsKICAgICAgICAgd2lsbERlbGV0ZU9yaWdpbihvcmlnaW5JZCk7CiAgICAgICAgIG1f
b3JpZ2luU2V0LnJlbW92ZShvcmlnaW5JZCk7CiAgICAgfQpAQCAtNTE2LDcgKzUxNiw3IEBAIHZv
aWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY28KIAogICAgIFNRTGl0ZVRyYW5z
YWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKICAgICAKICAgICBpZiAoIWNhbkRlbGV0ZU9y
aWdpbihvcmlnaW5JZGVudGlmaWVyKSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHRlZCB0
byBkZWxldGUgb3JpZ2luICclcycgd2hpbGUgaXQgd2FzIGJlaW5nIGNyZWF0ZWRcbiIsIG9yaWdp
bklkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpOwpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgU3Rv
cmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY28KICAgICAKICAgICBib29sIHNob3VsZERl
bGV0ZVRyYWNrZXJGaWxlcyA9IGZhbHNlOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAgICAgICBtX29yaWdpblNldC5yZW1vdmUob3JpZ2lu
SWRlbnRpZmllcik7CiAgICAgICAgIHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcyA9IG1fb3JpZ2lu
U2V0LmlzRW1wdHkoKTsKICAgICB9CkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBTdG9yYWdlVHJh
Y2tlcjo6c3luY0RlbGV0ZU9yaWdpbihjbwogICAgIH0KIAogICAgIHsKLSAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgpOwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4ob3JpZ2luSWRlbnRpZmllcik7
CiAgICAgfQpAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OndpbGxEZWxl
dGVPcmlnaW4oY28KIGJvb2wgU3RvcmFnZVRyYWNrZXI6OmNhbkRlbGV0ZU9yaWdpbihjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlTXV0ZXgu
dHJ5TG9jaygpKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7Cisg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKICAgICBy
ZXR1cm4gbV9vcmlnaW5zQmVpbmdEZWxldGVkLmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpOwog
fQogCkBAIC02MDEsOSArNjAxLDkgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6Y2FuY2VsRGVsZXRp
bmdPcmlnaQogICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAgICAgICBpZiAoIW1fb3JpZ2luc0JlaW5nRGVs
ZXRlZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX29yaWdpbnNCZWluZ0RlbGV0ZWQucmVtb3Zl
KG9yaWdpbklkZW50aWZpZXIpOwogICAgIH0KQEAgLTY0Nyw3ICs2NDcsNyBAQCBsb25nIGxvbmcg
U3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9yCiAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgp
OworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKIAog
ICAgIFN0cmluZyBwYXRoID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2luKG9yaWdpbi0+ZGF0YWJhc2VJ
ZGVudGlmaWVyKCkpOwogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTUgKzk1
LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKTsK
IAogICAgIC8vIE11dGV4IGZvciBtX2RhdGFiYXNlIGFuZCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRo
LgotICAgIE11dGV4IG1fZGF0YWJhc2VNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9kYXRh
YmFzZU11dGV4OwogICAgIFNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7CiAgICAgU3RyaW5nIG1f
c3RvcmFnZURpcmVjdG9yeVBhdGg7CiAKLSAgICBNdXRleCBtX2NsaWVudE11dGV4OworICAgIERl
cHJlY2F0ZWRNdXRleCBtX2NsaWVudE11dGV4OwogICAgIFN0b3JhZ2VUcmFja2VyQ2xpZW50KiBt
X2NsaWVudDsKIAogICAgIC8vIEd1YXJkIGZvciBtX29yaWdpblNldCBhbmQgbV9vcmlnaW5zQmVp
bmdEZWxldGVkLgotICAgIE11dGV4IG1fb3JpZ2luU2V0TXV0ZXg7CisgICAgRGVwcmVjYXRlZE11
dGV4IG1fb3JpZ2luU2V0TXV0ZXg7CiAgICAgdHlwZWRlZiBIYXNoU2V0PFN0cmluZz4gT3JpZ2lu
U2V0OwogICAgIE9yaWdpblNldCBtX29yaWdpblNldDsKICAgICBPcmlnaW5TZXQgbV9vcmlnaW5z
QmVpbmdEZWxldGVkOwpJbmRleDogU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Rml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0JKHJldmlzaW9uIDE4Nzg4
OSkKKysrIFNvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25D
b250ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OCw5ICs0OCw5IEBACiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLXN0YXRpYyBNdXRleCYgV2ViRml4
ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jaygpCitzdGF0aWMgRGVwcmVjYXRlZE11dGV4JiBXZWJG
aXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoTXV0ZXgsIG11dGV4LCAoKSk7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKERlcHJlY2F0ZWRNdXRleCwgbXV0ZXgsICgpKTsKICAgICByZXR1cm4gbXV0ZXg7
CiB9CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAodm9pZClzY3Jv
bGxPclpvb21DaGFuZ2VkOihDR1JlY3QpcG9zaXRpb25lZE9iamVjdHNSZWN0CiB7Ci0gICAgTXV0
ZXhMb2NrZXIgbG9jayhXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKCkpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxvY2so
KSk7CiAKICAgICBMYXllckluZm9NYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IF9wcml2YXRlLT5t
X3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuZW5kKCk7CiAgICAgZm9yIChMYXllckluZm9NYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gX3ByaXZhdGUtPm1fdmlld3BvcnRDb25zdHJhaW5lZExheWVy
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTE0MCw3ICsxNDAsNyBAQCAtICh2b2lk
KXNjcm9sbE9yWm9vbUNoYW5nZWQ6KENHUmVjdClwb3NpCiAKIC0gKHZvaWQpb3ZlcmZsb3dTY3Jv
bGxQb3NpdGlvbkZvckxheWVyOihDQUxheWVyICopc2Nyb2xsTGF5ZXIgY2hhbmdlZFRvOihDR1Bv
aW50KXNjcm9sbFBvc2l0aW9uCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhXZWJGaXhlZFBvc2l0
aW9uQ29udGVudERhdGFMb2NrKCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKFdl
YkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxvY2soKSk7CiAKICAgICBMYXllckluZm9NYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IF9wcml2YXRlLT5tX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMu
ZW5kKCk7CiAgICAgZm9yIChMYXllckluZm9NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gX3ByaXZh
dGUtPm1fdmlld3BvcnRDb25zdHJhaW5lZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKQEAgLTE3Myw3ICsxNzMsNyBAQCAtICh2b2lkKWRpZEZpbmlzaFNjcm9sbGluZ09yWm9vbWlu
ZwogCiAtICh2b2lkKXNldFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM6KFdURjo6SGFzaE1hcDxD
QUxheWVyICosIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpWaWV3cG9ydENvbnN0cmFpbnRzPj4m
KWxheWVyTWFwIHN0aWNreUNvbnRhaW5lck1hcDooV1RGOjpIYXNoTWFwPENBTGF5ZXIqLCBDQUxh
eWVyKj4mKXN0aWNreUNvbnRhaW5lcnMKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKFdlYkZpeGVk
UG9zaXRpb25Db250ZW50RGF0YUxvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2soV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jaygpKTsKIAogICAgIF9wcml2YXRlLT5t
X3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuY2xlYXIoKTsKIApAQCAtMTkwLDcgKzE5MCw3IEBA
IC0gKHZvaWQpc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVyczooV1QKIAogLSAoQk9PTCloYXNG
aXhlZE9yU3RpY2t5UG9zaXRpb25MYXllcnMKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKFdlYkZp
eGVkUG9zaXRpb25Db250ZW50RGF0YUxvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2soV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jaygpKTsKICAgICByZXR1cm4gIV9w
cml2YXRlLT5tX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuaXNFbXB0eSgpOwogfQogCkBAIC0y
MTAsNyArMjEwLDcgQEAgc3RhdGljIFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VGbAog
CiAtIChDR0Zsb2F0KW1pbmltdW1PZmZzZXRGcm9tRml4ZWRQb3NpdGlvbkxheWVyc1RvQW5jaG9y
RWRnZTooV2ViRml4ZWRQb3NpdGlvbkFuY2hvckVkZ2UpYW5jaG9yRWRnZSBvZlJlY3Q6KENHUmVj
dClyZWN0IGluTGF5ZXI6KENBTGF5ZXIgKilsYXllcgogewotICAgIE11dGV4TG9ja2VyIGxvY2so
V2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jaygpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9jayhXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKCkpOwogICAgIFZpZXdw
b3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VGbGFncyBhbmNob3JFZGdlRmxhZ3MgPSBhbmNob3JF
ZGdlRmxhZ3NGb3JBbmNob3JFZGdlKGFuY2hvckVkZ2UpOwogICAgIENHRmxvYXQgbWluaW11bU9m
ZnNldCA9IENHRkxPQVRfTUFYOwogICAgIExheWVySW5mb01hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gX3ByaXZhdGUtPm1fdmlld3BvcnRDb25zdHJhaW5lZExheWVycy5lbmQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCShyZXZp
c2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFu
YWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI2LDkgKzIyNiw5IEBAICsgKHZvaWQpc2NoZWR1
bGVFbXB0eURhdGFiYXNlUmVtb3ZhbAogI2lmIFBMQVRGT1JNKElPUykKIEBpbXBsZW1lbnRhdGlv
biBXZWJEYXRhYmFzZU1hbmFnZXIgKFdlYkRhdGFiYXNlTWFuYWdlckludGVybmFsKQogCi1zdGF0
aWMgTXV0ZXgmIHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jaygpCitzdGF0
aWMgRGVwcmVjYXRlZE11dGV4JiB0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxv
Y2soKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0ZXgs
ICgpKTsKKyAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGVwcmVjYXRlZE11dGV4
LCBtdXRleCwgKCkpOwogICAgIHJldHVybiBtdXRleDsKIH0KIApAQCAtMjYxLDcgKzI2MSw3IEBA
ICsgKHZvaWQpZGlkRmluaXNoTGFzdFRyYW5zYWN0aW9uCiAKICsgKHZvaWQpc3RhcnRCYWNrZ3Jv
dW5kVGFzawogewotICAgIE11dGV4TG9ja2VyIGxvY2sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFz
a0lkZW50aWZpZXJMb2NrKCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKHRyYW5z
YWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jaygpKTsKIAogICAgIC8vIElmIHRoZXJl
J3MgYWxyZWFkeSBhbiBleGlzdGluZyBiYWNrZ3JvdW5kIHRhc2sgZ29pbmcgb24sIHRoZXJlJ3Mg
bm8gbmVlZCB0byBzdGFydCBhIG5ldyBvbmUuCiAgICAgaWYgKGdldFRyYW5zYWN0aW9uQmFja2dy
b3VuZFRhc2tJZGVudGlmaWVyKCkgIT0gaW52YWxpZFdlYkJhY2tncm91bmRUYXNrSWRlbnRpZmll
cigpKQpAQCAtMjc1LDcgKzI3NSw3IEBAICsgKHZvaWQpc3RhcnRCYWNrZ3JvdW5kVGFzawogCiAr
ICh2b2lkKWVuZEJhY2tncm91bmRUYXNrCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayh0cmFuc2Fj
dGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKCkpOwog
CiAgICAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB3ZSB3ZXJlIHVuYWJsZSB0byBzdGFydCB0aGUg
YmFja2dyb3VuZCB0YXNrIHdoZW4gdGhlIGZpcnN0IHRyYW5zYWN0aW9uIGJlZ2FuLgogICAgIC8v
IERvbid0IHRyeSB0byBlbmQgdGhlIHRhc2sgaW4gdGhhdCBjYXNlLgpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNjMyLDcgKzM2MzIs
NyBAQCAtICh2b2lkKV9zeW5jaHJvbml6ZUN1c3RvbUZpeGVkUG9zaXRpb25MCiAKICAgICBJbnRS
ZWN0IG5ld1JlY3Q7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoX3ByaXZhdGUt
PnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRS
ZWN0TXV0ZXgpOwogICAgICAgICBpZiAoQ0dSZWN0SXNOdWxsKF9wcml2YXRlLT5wZW5kaW5nRml4
ZWRQb3NpdGlvbkxheW91dFJlY3QpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBuZXdS
ZWN0ID0gZW5jbG9zaW5nSW50UmVjdChfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlv
dXRSZWN0KTsKQEAgLTM2NDYsNyArMzY0Niw3IEBAIC0gKHZvaWQpX3N5bmNocm9uaXplQ3VzdG9t
Rml4ZWRQb3NpdGlvbkwKIC0gKHZvaWQpX3NldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0
SW5XZWJUaHJlYWQ6KENHUmVjdClyZWN0IHN5bmNocm9uaXplOihCT09MKXN5bmNocm9uaXplCiB7
CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoX3ByaXZhdGUtPnBlbmRpbmdGaXhl
ZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tlcihfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgpOwog
ICAgICAgICBfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0ID0gcmVjdDsK
ICAgICB9CiAgICAgaWYgKCFzeW5jaHJvbml6ZSkKQEAgLTM2NjAsNyArMzY2MCw3IEBAIC0gKHZv
aWQpX3NldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWMKIHsKICAgICBBU1NFUlQoV2ViVGhy
ZWFkSXNMb2NrZWQoKSk7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoX3ByaXZh
dGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4KTsKKyAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlv
dXRSZWN0TXV0ZXgpOwogICAgICAgICBfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlv
dXRSZWN0ID0gcmVjdDsKICAgICB9CiAgICAgW3NlbGYgX3N5bmNocm9uaXplQ3VzdG9tRml4ZWRQ
b3NpdGlvbkxheW91dFJlY3RdOwpAQCAtMzY2OCw3ICszNjY4LDcgQEAgLSAodm9pZClfc2V0Q3Vz
dG9tRml4ZWRQb3NpdGlvbkxheW91dFJlYwogCiAtIChCT09MKV9mZXRjaEN1c3RvbUZpeGVkUG9z
aXRpb25MYXlvdXRSZWN0OihOU1JlY3QqKXJlY3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
X3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4KTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxh
eW91dFJlY3RNdXRleCk7CiAgICAgaWYgKENHUmVjdElzTnVsbChfcHJpdmF0ZS0+cGVuZGluZ0Zp
eGVkUG9zaXRpb25MYXlvdXRSZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShyZXZpc2lvbiAxODc4ODkpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI0OSw3ICsyNDksNyBAQCBAaW50ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3Qg
ewogICAgIENHU2l6ZSBmaXhlZExheW91dFNpemU7CiAgICAgQk9PTCBtYWluVmlld0lzU2Nyb2xs
aW5nT3Jab29taW5nOwogICAgIGludDMyX3QgZGlkRHJhd1RpbGVzOwotICAgIFdURjo6TXV0ZXgg
cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXg7CisgICAgV1RGOjpEZXByZWNhdGVk
TXV0ZXggcGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXg7CiAgICAgQ0dSZWN0IHBl
bmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkljb25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkljb25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMCwxNCArMzIw
LDE0IEBAIEhCSVRNQVAgV2ViSWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0ZURlZmEKIHZvaWQgV2Vi
SWNvbkRhdGFiYXNlOjpkaWRSZW1vdmVBbGxJY29ucygpCiB7CiAgICAgLy8gUXVldWVpbmcgdGhl
IGVtcHR5IHN0cmluZyBpcyBhIHNwZWNpYWwgd2F5IG9mIHNheWluZyAidGhpcyBxdWV1ZWQgbm90
aWZpY2F0aW9uIGlzIHRoZSBkaWRSZW1vdmVBbGxJY29ucyBub3RpZmljYXRpb24iCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbm90aWZpY2F0aW9uTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9ub3RpZmljYXRpb25NdXRleCk7CiAgICAgbV9ub3RpZmljYXRpb25R
dWV1ZS5hcHBlbmQoU3RyaW5nKCkpOwogICAgIHNjaGVkdWxlTm90aWZpY2F0aW9uRGVsaXZlcnko
KTsKIH0KIAogdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRpZEltcG9ydEljb25VUkxGb3JQYWdlVVJM
KGNvbnN0IFdURjo6U3RyaW5nJiBwYWdlVVJMKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X25vdGlmaWNhdGlvbk11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bm90aWZpY2F0aW9uTXV0ZXgpOwogICAgIG1fbm90aWZpY2F0aW9uUXVldWUuYXBwZW5kKHBhZ2VV
UkwuaXNvbGF0ZWRDb3B5KCkpOwogICAgIHNjaGVkdWxlTm90aWZpY2F0aW9uRGVsaXZlcnkoKTsK
IH0KQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIFdlYkljb25EYXRhYmFzZTo6ZGVsaXZlck5vdGlm
aWNhdGlvCiAKICAgICBWZWN0b3I8U3RyaW5nPiBxdWV1ZTsKICAgICB7Ci0gICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX3NoYXJlZFdlYkljb25EYXRhYmFzZS0+bV9ub3RpZmljYXRpb25NdXRl
eCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zaGFyZWRXZWJJY29u
RGF0YWJhc2UtPm1fbm90aWZpY2F0aW9uTXV0ZXgpOwogICAgICAgICBxdWV1ZS5zd2FwKG1fc2hh
cmVkV2ViSWNvbkRhdGFiYXNlLT5tX25vdGlmaWNhdGlvblF1ZXVlKTsKICAgICAgICAgbV9zaGFy
ZWRXZWJJY29uRGF0YWJhc2UtPm1fZGVsaXZlcnlSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAJKHJldmlz
aW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0LDkgQEAgV2ViTG9jYWxpemFibGVTdHJpbmdz
QnVuZGxlIFdlYktpdExvY2FsaQogCiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBMb2NhbGl6ZWRT
dHJpbmcqPiBMb2NhbGl6ZWRTdHJpbmdNYXA7CiAKLXN0YXRpYyBNdXRleCYgbWFpbkJ1bmRsZUxv
Y1N0cmluZ3NNdXRleCgpCitzdGF0aWMgRGVwcmVjYXRlZE11dGV4JiBtYWluQnVuZGxlTG9jU3Ry
aW5nc011dGV4KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgs
IG11dGV4LCAoKSk7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKERlcHJlY2F0
ZWRNdXRleCwgbXV0ZXgsICgpKTsKICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKQEAgLTU2LDkgKzU2
LDkgQEAgc3RhdGljIExvY2FsaXplZFN0cmluZ01hcCYgbWFpbkJ1bmRsZUxvYwogICAgIHJldHVy
biBtYXA7CiB9CiAKLXN0YXRpYyBNdXRleCYgZnJhbWV3b3JrTG9jU3RyaW5nc011dGV4KCkKK3N0
YXRpYyBEZXByZWNhdGVkTXV0ZXgmIGZyYW1ld29ya0xvY1N0cmluZ3NNdXRleCgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBtdXRleCwgKCkpOworICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEZXByZWNhdGVkTXV0ZXgsIG11dGV4LCAoKSk7
CiAgICAgcmV0dXJuIG11dGV4OwogfQogCkBAIC0xNzUsMTIgKzE3NSwxMiBAQCBzdGF0aWMgQ0ZT
dHJpbmdSZWYgY29weUxvY2FsaXplZFN0cmluZ0ZyCiBzdGF0aWMgTG9jYWxpemVkU3RyaW5nKiBm
aW5kQ2FjaGVkU3RyaW5nKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5nc0J1bmRs
ZSwgY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAgICAgaWYgKCFzdHJpbmdzQnVuZGxlKSB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2sobWFpbkJ1bmRsZUxvY1N0cmluZ3NNdXRleCgpKTsKKyAgICAg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobWFpbkJ1bmRsZUxvY1N0cmluZ3NNdXRleCgp
KTsKICAgICAgICAgcmV0dXJuIG1haW5CdW5kbGVMb2NTdHJpbmdzKCkuZ2V0KGtleSk7CiAgICAg
fQogCiAgICAgaWYgKHN0cmluZ3NCdW5kbGUtPmJ1bmRsZSA9PSBXZWJLaXRMb2NhbGl6YWJsZVN0
cmluZ3NCdW5kbGUuYnVuZGxlKSB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2soZnJhbWV3b3Jr
TG9jU3RyaW5nc011dGV4KCkpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhm
cmFtZXdvcmtMb2NTdHJpbmdzTXV0ZXgoKSk7CiAgICAgICAgIHJldHVybiBmcmFtZXdvcmtMb2NT
dHJpbmdzKCkuZ2V0KGtleSk7CiAgICAgfQogCkBAIC0xOTAsMTIgKzE5MCwxMiBAQCBzdGF0aWMg
TG9jYWxpemVkU3RyaW5nKiBmaW5kQ2FjaGVkU3RyaW5nCiBzdGF0aWMgdm9pZCBjYWNoZVN0cmlu
ZyhXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmluZ3NCdW5kbGUsIGNvbnN0IFN0cmlu
ZyYga2V5LCBMb2NhbGl6ZWRTdHJpbmcqIHZhbHVlKQogewogICAgIGlmICghc3RyaW5nc0J1bmRs
ZSkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1haW5CdW5kbGVMb2NTdHJpbmdzTXV0ZXgo
KSk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1haW5CdW5kbGVMb2NTdHJp
bmdzTXV0ZXgoKSk7CiAgICAgICAgIG1haW5CdW5kbGVMb2NTdHJpbmdzKCkuc2V0KGtleSwgdmFs
dWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTXV0ZXhMb2NrZXIgbG9jayhmcmFt
ZXdvcmtMb2NTdHJpbmdzTXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2so
ZnJhbWV3b3JrTG9jU3RyaW5nc011dGV4KCkpOwogICAgIGZyYW1ld29ya0xvY1N0cmluZ3MoKS5z
ZXQoa2V5LCB2YWx1ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1
Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMTg3ODg5
KQorKysgU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBQbHVnaW5NYWluVGhyZWFkU2No
ZWR1bGVyOjpQbHVnaW5NYWluVGhyCiAKIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6
c2NoZWR1bGVDYWxsKE5QUCBucHAsIE1haW5UaHJlYWRGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCog
dXNlckRhdGEpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7CiAKICAgICBDYWxsUXVldWVN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9jYWxsUXVldWVNYXAuZmluZChucHApOwogICAgIGlmIChpdCA9
PSBtX2NhbGxRdWV1ZU1hcC5lbmQoKSkKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBQbHVnaW5NYWlu
VGhyZWFkU2NoZWR1bGVyOjpzY2hlZHVsZQogCiB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVs
ZXI6OnJlZ2lzdGVyUGx1Z2luKE5QUCBucHApCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3F1
ZXVlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7
CiAKICAgICBBU1NFUlQoIW1fY2FsbFF1ZXVlTWFwLmNvbnRhaW5zKG5wcCkpOwogICAgIG1fY2Fs
bFF1ZXVlTWFwLnNldChucHAsIERlcXVlPENhbGw+KCkpOwpAQCAtNjYsNyArNjYsNyBAQCB2b2lk
IFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnJlZ2lzdGVyCiAKIHZvaWQgUGx1Z2luTWFpblRo
cmVhZFNjaGVkdWxlcjo6dW5yZWdpc3RlclBsdWdpbihOUFAgbnBwKQogewotICAgIE11dGV4TG9j
a2VyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayht
X3F1ZXVlTXV0ZXgpOwogCiAgICAgQVNTRVJUKG1fY2FsbFF1ZXVlTWFwLmNvbnRhaW5zKG5wcCkp
OwogICAgIG1fY2FsbFF1ZXVlTWFwLnJlbW92ZShucHApOwpAQCAtNzcsNyArNzcsNyBAQCB2b2lk
IFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OmRpc3BhdGNoCiAgICAgZm9yIChhdXRvJiBjYWxs
IDogY2FsbHMpIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHBsdWctaW4gaGFzIGJlZW4gZGVz
dHJveWVkLgogICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fcXVldWVN
dXRleCk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3F1ZXVlTXV0
ZXgpOwogICAgICAgICAgICAgaWYgKCFtX2NhbGxRdWV1ZU1hcC5jb250YWlucyhucHApKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC93aW4v
UGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgJKHJldmlzaW9u
IDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNj
aGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIG1fY2FsbFBlbmRpbmc7CiAgICAgQ2FsbFF1ZXVlTWFwIG1fY2FsbFF1ZXVlTWFwOwot
ICAgIE11dGV4IG1fcXVldWVNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9xdWV1ZU11dGV4
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw5ICs0NCw5IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgamF2YVNjcmlwdFRocmVhZHNDb3UK
IHN0YXRpYyBib29sIGphdmFTY3JpcHRUaHJlYWRzU2hvdWxkVGVybWluYXRlOwogc3RhdGljIEpT
Q29udGV4dEdyb3VwUmVmIGphdmFTY3JpcHRUaHJlYWRzR3JvdXA7CiAKLXN0YXRpYyBNdXRleCYg
amF2YVNjcmlwdFRocmVhZHNNdXRleCgpCitzdGF0aWMgRGVwcmVjYXRlZE11dGV4JiBqYXZhU2Ny
aXB0VGhyZWFkc011dGV4KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
TXV0ZXgsIHN0YXRpY011dGV4LCAoKSk7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKERlcHJlY2F0ZWRNdXRleCwgc3RhdGljTXV0ZXgsICgpKTsKICAgICByZXR1cm4gc3RhdGlj
TXV0ZXg7CiB9CiAKQEAgLTcwLDI2ICs3MCwyNiBAQCB2b2lkIHJ1bkphdmFTY3JpcHRUaHJlYWQo
dm9pZCopCiAKICAgICBKU0dsb2JhbENvbnRleHRSZWYgY3R4OwogICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKICAgICAg
ICAgY3R4ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChqYXZhU2NyaXB0VGhyZWFkc0dy
b3VwLCAwKTsKICAgICB9CiAKICAgICBKU1N0cmluZ1JlZiBzY3JpcHRSZWY7CiAgICAgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkp
OwogICAgICAgICBzY3JpcHRSZWYgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3Jp
cHQpOwogICAgIH0KIAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICAg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkp
OwogICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgSlNF
dmFsdWF0ZVNjcmlwdChjdHgsIHNjcmlwdFJlZiwgMCwgMCwgMSwgJmV4Y2VwdGlvbik7CiAgICAg
ICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbik7CiAgICAgICAgIH0KIAogICAgICAgICB7Ci0gICAg
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAg
ICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNN
dXRleCgpKTsKICAgICAgICAgICAgIGNvbnN0IHNpemVfdCB2YWx1ZXNDb3VudCA9IDEwMjQ7CiAg
ICAgICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlc1t2YWx1ZXNDb3VudF07CiAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlc0NvdW50OyArK2kpCkBAIC05Nyw3ICs5Nyw3IEBA
IHZvaWQgcnVuSmF2YVNjcmlwdFRocmVhZCh2b2lkKikKICAgICAgICAgfQogCiAgICAgICAgIHsK
LSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkp
OworICAgICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhy
ZWFkc011dGV4KCkpOwogICAgICAgICAgICAgaWYgKGphdmFTY3JpcHRUaHJlYWRzU2hvdWxkVGVy
bWluYXRlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMDYsNyArMTA2
LDcgQEAgdm9pZCBydW5KYXZhU2NyaXB0VGhyZWFkKHZvaWQqKQogICAgICAgICBpZiAocmFuZCgp
ICUgNSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CiAgICAgICAgIFRocmVhZElkZW50
aWZpZXIgdGhyZWFkID0gY3VycmVudFRocmVhZCgpOwogICAgICAgICBkZXRhY2hUaHJlYWQodGhy
ZWFkKTsKICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5yZW1vdmUodGhyZWFkKTsKQEAgLTEx
NCw3ICsxMTQsNyBAQCB2b2lkIHJ1bkphdmFTY3JpcHRUaHJlYWQodm9pZCopCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011
dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVh
ZHNNdXRleCgpKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0UmVmKTsKICAgICBKU0dhcmJh
Z2VDb2xsZWN0KGN0eCk7CiAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjdHgpOwpAQCAtMTI0
LDcgKzEyNCw3IEBAIHZvaWQgc3RhcnRKYXZhU2NyaXB0VGhyZWFkcygpCiB7CiAgICAgamF2YVNj
cmlwdFRocmVhZHNHcm91cCA9IEpTQ29udGV4dEdyb3VwQ3JlYXRlKCk7CiAKLSAgICBNdXRleExv
Y2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGphdmFTY3JpcHRUaHJlYWRzQ291bnQ7ICsraSkKICAgICAgICAgamF2
YVNjcmlwdFRocmVhZHMoKS5hZGQoY3JlYXRlVGhyZWFkKCZydW5KYXZhU2NyaXB0VGhyZWFkLCAw
LCAwKSk7CkBAIC0xMzMsMTMgKzEzMywxMyBAQCB2b2lkIHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMo
KQogdm9pZCBzdG9wSmF2YVNjcmlwdFRocmVhZHMoKQogewogICAgIHsKLSAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKICAgICAgICAg
amF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUgPSB0cnVlOwogICAgIH0KIAogICAgIFZl
Y3RvcjxUaHJlYWRJZGVudGlmaWVyLCBqYXZhU2NyaXB0VGhyZWFkc0NvdW50PiB0aHJlYWRzOwog
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgo
KSk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVh
ZHNNdXRleCgpKTsKICAgICAgICAgY29weVRvVmVjdG9yKGphdmFTY3JpcHRUaHJlYWRzKCksIHRo
cmVhZHMpOwogICAgICAgICBBU1NFUlQodGhyZWFkcy5zaXplKCkgPT0gamF2YVNjcmlwdFRocmVh
ZHNDb3VudCk7CiAgICAgfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgc3RvcEphdmFTY3JpcHRU
aHJlYWRzKCkKICAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhyZWFkc1tpXSk7CiAK
ICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4
KCkpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJl
YWRzTXV0ZXgoKSk7CiAgICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCkuY2xlYXIoKTsKICAgICB9
CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtRdWV1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcAko
cmV2aXNpb24gMTg3ODg5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya1F1
ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciogZGlzcGF0Y2hBZnRlckxhYmVsID0gCiAgICAgCiBURVNUKFdURl9Xb3JrUXVldWUsIFNpbXBs
ZSkKIHsKLSAgICBNdXRleCBtX2xvY2s7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fbG9jazsKICAg
ICBUaHJlYWRDb25kaXRpb24gbV90ZXN0Q29tcGxldGVkOwogICAgIFZlY3RvcjxzdGQ6OnN0cmlu
Zz4gbV9mdW5jdGlvbkNhbGxPcmRlcjsKIApAQCAtNTYsNyArNTYsNyBAQCBURVNUKFdURl9Xb3Jr
UXVldWUsIFNpbXBsZSkKICAgICBpbnQgaW5pdGlhbFJlZkNvdW50ID0gcXVldWUtPnJlZkNvdW50
KCk7CiAgICAgRVhQRUNUX0VRKDEsIGluaXRpYWxSZWZDb3VudCk7CiAKLSAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CiAgICAgcXVldWUtPmRpc3BhdGNoKFsmXSh2b2lkKSB7CiAgICAgICAgIG1fZnVuY3Rpb25D
YWxsT3JkZXIuYXBwZW5kKHNpbXBsZVRlc3RMYWJlbCk7CiAgICAgICAgIGNhbGxlZFNpbXBsZVRl
c3QgPSB0cnVlOwpAQCAtNjksNyArNjksNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIFNpbXBsZSkK
ICAgICB9KTsKIAogICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0odm9pZCkgewotICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX2xvY2spOwogICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVuZCh0aGlyZFRl
c3RMYWJlbCk7CiAgICAgICAgIGNhbGxlZFRoaXJkVGVzdCA9IHRydWU7CiAKQEAgLTk2LDcgKzk2
LDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBTaW1wbGUpCiAKIFRFU1QoV1RGX1dvcmtRdWV1ZSwg
VHdvUXVldWVzKQogewotICAgIE11dGV4IG1fbG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9s
b2NrOwogICAgIFRocmVhZENvbmRpdGlvbiBtX3Rlc3RRdWV1ZTFDb21wbGV0ZWQsIG1fdGVzdFF1
ZXVlMkNvbXBsZXRlZDsKICAgICBWZWN0b3I8c3RkOjpzdHJpbmc+IG1fZnVuY3Rpb25DYWxsT3Jk
ZXI7CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIFR3b1F1ZXVlcykK
ICAgICBFWFBFQ1RfRVEoMSwgcXVldWUxLT5yZWZDb3VudCgpKTsKICAgICBFWFBFQ1RfRVEoMSwg
cXVldWUyLT5yZWZDb3VudCgpKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAKICAgICBxdWV1
ZTEtPmRpc3BhdGNoKFsmXSh2b2lkKSB7CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBw
ZW5kKHNpbXBsZVRlc3RMYWJlbCk7CkBAIC0xMjAsNyArMTIwLDcgQEAgVEVTVChXVEZfV29ya1F1
ZXVlLCBUd29RdWV1ZXMpCiAgICAgcXVldWUyLT5kaXNwYXRjaChbJl0odm9pZCkgewogICAgICAg
ICBzdGQ6OnRoaXNfdGhyZWFkOjpzbGVlcF9mb3Ioc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyg1
MCkpOwogCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAKICAgICAgICAgLy8gV2lsbCBmYWls
IGlmIHF1ZXVlMiB0b29rIHRoZSBtdXRleCBiZWZvcmUgcXVldWUxLgogICAgICAgICBFWFBFQ1Rf
VFJVRShjYWxsZWRUaGlyZFRlc3QpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIFRFU1QoV1RGX1dvcmtR
dWV1ZSwgVHdvUXVldWVzKQogICAgIH0pOwogCiAgICAgcXVldWUxLT5kaXNwYXRjaChbJl0odm9p
ZCkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9y
ZGVyLmFwcGVuZCh0aGlyZFRlc3RMYWJlbCk7CiAgICAgICAgIGNhbGxlZFRoaXJkVGVzdCA9IHRy
dWU7CiAgICAgICAgIApAQCAtMTU4LDcgKzE1OCw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgVHdv
UXVldWVzKQogCiBURVNUKFdURl9Xb3JrUXVldWUsIERpc3BhdGNoQWZ0ZXIpCiB7Ci0gICAgTXV0
ZXggbV9sb2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX2xvY2s7CiAgICAgVGhyZWFkQ29uZGl0
aW9uIG1fdGVzdENvbXBsZXRlZCwgbV9kaXNwYXRjaEFmdGVyVGVzdENvbXBsZXRlZDsKICAgICBW
ZWN0b3I8c3RkOjpzdHJpbmc+IG1fZnVuY3Rpb25DYWxsT3JkZXI7CiAKQEAgLTE2NywxNyArMTY3
LDE3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgRGlzcGF0Y2hBZnRlcikKIAogICAgIGF1dG8gcXVl
dWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5UZXN0LmRpc3BhdGNoQWZ0
ZXIiKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIERlcHJlY2F0ZWRN
dXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKIAogICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0odm9p
ZCkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9y
ZGVyLmFwcGVuZChzaW1wbGVUZXN0TGFiZWwpOwogICAgICAgICBjYWxsZWRTaW1wbGVUZXN0ID0g
dHJ1ZTsKICAgICAgICAgbV90ZXN0Q29tcGxldGVkLnNpZ25hbCgpOwogICAgIH0pOwogCiAgICAg
cXVldWUtPmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyg1MDApLCBbJl0o
dm9pZCkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBtX2Z1bmN0aW9uQ2Fs
bE9yZGVyLmFwcGVuZChkaXNwYXRjaEFmdGVyTGFiZWwpOwogICAgICAgICBjYWxsZWREaXNwYXRj
aEFmdGVyVGVzdCA9IHRydWU7CiAgICAgICAgIG1fZGlzcGF0Y2hBZnRlclRlc3RDb21wbGV0ZWQu
c2lnbmFsKCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nbGliL1dvcmtR
dWV1ZUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogVEVTVChXVEZfV29y
a1F1ZXVlLCBBc3luY0lPKQogewogICAgIHN0cnVjdCBUZXN0aW5nQ29udGV4dCB7Ci0gICAgICAg
IE11dGV4IG1fbG9jazsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4IG1fbG9jazsKICAgICAgICAg
VGhyZWFkQ29uZGl0aW9uIG1fdGVzdENvbXBsZXRlZDsKICAgICAgICAgR01haW5Db250ZXh0KiBt
X21haW5Db250ZXh0OwogICAgIH0gY29udGV4dDsKQEAgLTQ5LDcgKzQ5LDcgQEAgVEVTVChXVEZf
V29ya1F1ZXVlLCBBc3luY0lPKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY3VycmVudERpcmVjdG9y
eShnX2dldF9jdXJyZW50X2RpcigpKTsKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRH
UmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoY3VycmVudERpcmVjdG9yeS5nZXQoKSkpOwogCi0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKGNvbnRleHQubV9sb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKGNvbnRleHQubV9sb2NrKTsKICAgICBxdWV1ZS0+ZGlzcGF0Y2goWyZdKHZv
aWQpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoZ19tYWluX2NvbnRleHRfZ2V0X3RocmVhZF9kZWZh
dWx0KCkpOwogICAgICAgICBFWFBFQ1RfVFJVRShnX21haW5fY29udGV4dF9nZXRfdGhyZWFkX2Rl
ZmF1bHQoKSAhPSBjb250ZXh0Lm1fbWFpbkNvbnRleHQpOwpAQCAtNTcsNyArNTcsNyBAQCBURVNU
KFdURl9Xb3JrUXVldWUsIEFzeW5jSU8pCiAgICAgICAgIGdfZmlsZV9xdWVyeV9pbmZvX2FzeW5j
KGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwgR19GSUxFX1FVRVJZ
X0lORk9fTk9ORSwgR19QUklPUklUWV9ERUZBVUxULCBudWxscHRyLAogICAgICAgICAgICAgW10o
R09iamVjdCosIEdBc3luY1Jlc3VsdCosIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgICAg
ICAgICAgVGVzdGluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxUZXN0aW5nQ29udGV4
dCo+KHVzZXJEYXRhKTsKLSAgICAgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoY29udGV4
dC0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KGNvbnRleHQtPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGdfbWFpbl9jb250
ZXh0X2dldF90aHJlYWRfZGVmYXVsdCgpLCBjb250ZXh0LT5tX21haW5Db250ZXh0KTsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5tX3Rlc3RDb21wbGV0ZWQuc2lnbmFsKCk7CiAgICAgICAgICAg
ICB9LCAmY29udGV4dCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258261</attachid>
            <date>2015-08-04 20:19:49 -0700</date>
            <delta_ts>2015-08-04 21:26:19 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>235911</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE1LTA4LTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1lIE11dGV4IHRvIERlcHJlY2F0ZWRNdXRleAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwOgorICAg
ICAgICAoSlNDOjpTYW1wbGluZ1Rvb2w6OmRvUnVuKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdU
b29sOjpub3RpZnlPZlNjb3BlKToKKyAgICAgICAgKiBieXRlY29kZS9TYW1wbGluZ1Rvb2wuaDoK
KyAgICAgICAgKiBkZmcvREZHVGhyZWFkRGF0YS5oOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlz
dC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6On5Xb3JrbGlzdCk6CisgICAgICAg
IChKU0M6OkRGRzo6V29ya2xpc3Q6OmlzQWN0aXZlRm9yVk0pOgorICAgICAgICAoSlNDOjpERkc6
OldvcmtsaXN0OjplbnF1ZXVlKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6Y29tcGls
YXRpb25TdGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OndhaXRVbnRpbEFsbFBs
YW5zRm9yVk1BcmVSZWFkeSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZUFs
bFJlYWR5UGxhbnNGb3JWTSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNvbXBsZXRl
QWxsUmVhZHlQbGFuc0ZvclZNKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6dmlzaXRX
ZWFrUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZURlYWRQ
bGFucyk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnF1ZXVlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xp
c3Q6OnJ1blRocmVhZCk6CisgICAgICAgICogZGZnL0RGR1dvcmtsaXN0Lmg6CisgICAgICAgICog
ZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogaGVhcC9Db3BpZWRTcGFj
ZS5jcHA6CisgICAgICAgIChKU0M6OkNvcGllZFNwYWNlOjpkb25lRmlsbGluZ0Jsb2NrKToKKyAg
ICAgICAgKEpTQzo6Q29waWVkU3BhY2U6OmRvbmVDb3B5aW5nKToKKyAgICAgICAgKiBoZWFwL0Nv
cGllZFNwYWNlLmg6CisgICAgICAgICogaGVhcC9Db3BpZWRTcGFjZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6Q29waWVkU3BhY2U6OnJlY3ljbGVCb3Jyb3dlZEJsb2NrKToKKyAgICAgICAgKEpT
Qzo6Q29waWVkU3BhY2U6OmFsbG9jYXRlQmxvY2tGb3JDb3B5aW5nUGhhc2UpOgorICAgICAgICAq
IGhlYXAvSGVhcFRpbWVyLmg6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3Bw
OgorICAgICAgICAoSlNDOjpBY3RpdmVNYWNoaW5lVGhyZWFkc01hbmFnZXI6OkxvY2tlcjo6TG9j
a2VyKToKKyAgICAgICAgKEpTQzo6QWN0aXZlTWFjaGluZVRocmVhZHNNYW5hZ2VyOjphZGQpOgor
ICAgICAgICAoSlNDOjpBY3RpdmVNYWNoaW5lVGhyZWFkc01hbmFnZXI6OnJlbW92ZSk6CisgICAg
ICAgIChKU0M6OkFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlcjo6QWN0aXZlTWFjaGluZVRocmVh
ZHNNYW5hZ2VyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6On5NYWNoaW5lVGhyZWFk
cyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFkKToKKyAg
ICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OnJlbW92ZVRocmVhZElmRm91bmQpOgorICAgICAg
ICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2spOgorICAgICAg
ICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAg
ICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKToKKyAgICAg
ICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5oOgorICAgICAgICAqIGludGVycHJldGVyL0pT
U3RhY2suY3BwOgorICAgICAgICAoSlNDOjpzdGFja1N0YXRpc3RpY3NNdXRleCk6CisgICAgICAg
IChKU0M6OkpTU3RhY2s6OmFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KToKKyAgICAgICAgKEpTQzo6
SlNTdGFjazo6Y29tbWl0dGVkQnl0ZUNvdW50KToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6
CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oOgorCiAyMDE1LTA4LTA0ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVwZGF0
ZSBBcHBsZSBXaW5kb3dzIGJ1aWxkIGZvciBWUzIwMTUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCShyZXZpc2lvbiAxODc4ODkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgU2FtcGxpbmdUb29sOjpkb1J1bigpCiAK
ICNpZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5HKQogICAgIGlmIChDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IHNhbXBsZS5jb2RlQmxvY2soKSkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7CiAgICAgICAgIFNjcmlwdFNhbXBsZVJlY29y
ZCogcmVjb3JkID0gbV9zY29wZVNhbXBsZU1hcC0+Z2V0KGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCkpOwogICAgICAgICBBU1NFUlQocmVjb3JkKTsKICAgICAgICAgcmVjb3JkLT5zYW1wbGUo
Y29kZUJsb2NrLCBzYW1wbGUudlBDKCkpOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgU2FtcGxp
bmdUb29sOjpzYW1wbGUoKQogdm9pZCBTYW1wbGluZ1Rvb2w6Om5vdGlmeU9mU2NvcGUoVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBzY3JpcHQpCiB7CiAjaWYgRU5BQkxFKENPREVCTE9DS19TQU1Q
TElORykKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7Cisg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3NjcmlwdFNhbXBsZU1hcE11dGV4KTsK
ICAgICBtX3Njb3BlU2FtcGxlTWFwLT5zZXQoc2NyaXB0LCBhZG9wdFB0cihuZXcgU2NyaXB0U2Ft
cGxlUmVjb3JkKHZtLCBzY3JpcHQpKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCShy
ZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxp
bmdUb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOCw3ICszMzgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdW5zaWduZWQgbV9vcGNvZGVTYW1wbGVzSW5DVElGdW5jdGlvbnNbbnVtT3Bj
b2RlSURzXTsKICAgICAgICAgCiAjaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKLSAgICAg
ICAgTXV0ZXggbV9zY3JpcHRTYW1wbGVNYXBNdXRleDsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4
IG1fc2NyaXB0U2FtcGxlTWFwTXV0ZXg7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRT
YW1wbGVSZWNvcmRNYXA+IG1fc2NvcGVTYW1wbGVNYXA7CiAjZW5kaWYKICAgICB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHJlYWREYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHJlYWREYXRhLmgJKHJldmlzaW9uIDE4Nzg4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGhyZWFkRGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgV29ya2xpc3QqIG1f
d29ya2xpc3Q7CiAgICAgVGhyZWFkSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgTXV0ZXgg
bV9yaWdodFRvUnVuOworICAgIERlcHJlY2F0ZWRNdXRleCBtX3JpZ2h0VG9SdW47CiAgICAgU2Fm
ZXBvaW50KiBtX3NhZmVwb2ludDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3QuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBA
QCBXb3JrbGlzdDo6V29ya2xpc3QoQ1N0cmluZyB3b3JrbGlzdE5hbWUpCiBXb3JrbGlzdDo6fldv
cmtsaXN0KCkKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwor
ICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fdGhyZWFkcy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBtX3F1
ZXVlLmFwcGVuZChudWxscHRyKTsgLy8gVXNlIG51bGwgcGxhbiB0byBpbmRpY2F0ZSB0aGF0IHdl
IHdhbnQgdGhlIHRocmVhZCB0byB0ZXJtaW5hdGUuCiAgICAgICAgIG1fcGxhbkVucXVldWVkLmJy
b2FkY2FzdCgpOwpAQCAtNzcsNyArNzcsNyBAQCBSZWY8V29ya2xpc3Q+IFdvcmtsaXN0OjpjcmVh
dGUoQ1N0cmluZyB3CiAKIGJvb2wgV29ya2xpc3Q6OmlzQWN0aXZlRm9yVk0oVk0mIHZtKSBjb25z
dAogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICBQbGFuTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBtX3BsYW5zLmVuZCgpOwogICAgIGZvciAoUGxhbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9
IG1fcGxhbnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBpZiAoJml0
ZXItPnZhbHVlLT52bSA9PSAmdm0pCkBAIC04OSw3ICs4OSw3IEBAIGJvb2wgV29ya2xpc3Q6Omlz
QWN0aXZlRm9yVk0oVk0mIHZtKSBjb24KIHZvaWQgV29ya2xpc3Q6OmVucXVldWUoUGFzc1JlZlB0
cjxQbGFuPiBwYXNzZWRQbGFuKQogewogICAgIFJlZlB0cjxQbGFuPiBwbGFuID0gcGFzc2VkUGxh
bjsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlv
blF1ZXVlKCkpIHsKICAgICAgICAgZHVtcChsb2NrZXIsIFdURjo6ZGF0YUZpbGUoKSk7CiAgICAg
ICAgIGRhdGFMb2coIjogRW5xdWV1ZWluZyBwbGFuIHRvIG9wdGltaXplICIsIHBsYW4tPmtleSgp
LCAiXG4iKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFdvcmtsaXN0OjplbnF1ZXVlKFBhc3NS
ZWZQdHI8UGxhbj4gCiAKIFdvcmtsaXN0OjpTdGF0ZSBXb3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0
ZShDb21waWxhdGlvbktleSBrZXkpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIFBsYW5NYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlciA9PSBtX3Bs
YW5zLmVuZCgpKQogICAgICAgICByZXR1cm4gTm90S25vd247CkBAIC0xMTgsNyArMTE4LDcgQEAg
dm9pZCBXb3JrbGlzdDo6d2FpdFVudGlsQWxsUGxhbnNGb3JWTUFyZQogICAgIC8vIEFmdGVyIHdl
IHJlbGVhc2UgdGhpcyBsb2NrLCB3ZSBrbm93IHRoYXQgYWx0aG91Z2ggb3RoZXIgVk1zIG1heSBz
dGlsbAogICAgIC8vIGJlIGFkZGluZyBwbGFucywgb3VyIFZNIHdpbGwgbm90IGJlLgogICAgIAot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0
aW9uUXVldWUoKSkgewogICAgICAgICBkdW1wKGxvY2tlciwgV1RGOjpkYXRhRmlsZSgpKTsKQEAg
LTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFdvcmtsaXN0Ojp3YWl0VW50aWxBbGxQbGFuc0ZvclZNQXJl
CiB2b2lkIFdvcmtsaXN0OjpyZW1vdmVBbGxSZWFkeVBsYW5zRm9yVk0oVk0mIHZtLCBWZWN0b3I8
UmVmUHRyPFBsYW4+LCA4PiYgbXlSZWFkeVBsYW5zKQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2
bS5oZWFwKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3JlYWR5UGxhbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPFBsYW4+IHBsYW4gPSBt
X3JlYWR5UGxhbnNbaV07CiAgICAgICAgIGlmICgmcGxhbi0+dm0gIT0gJnZtKQpAQCAtMTkyLDcg
KzE5Miw3IEBAIFdvcmtsaXN0OjpTdGF0ZSBXb3JrbGlzdDo6Y29tcGxldGVBbGxSZWEKICAgICB9
CiAgICAgCiAgICAgaWYgKCEhcmVxdWVzdGVkS2V5ICYmIHJlc3VsdGluZ1N0YXRlID09IE5vdEtu
b3duKSB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGlmIChtX3BsYW5zLmNv
bnRhaW5zKHJlcXVlc3RlZEtleSkpCiAgICAgICAgICAgICByZXN1bHRpbmdTdGF0ZSA9IENvbXBp
bGluZzsKICAgICB9CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBXb3JrbGlzdDo6dmlzaXRXZWFr
UmVmZXJlbmNlcyhTbG90VgogewogICAgIFZNKiB2bSA9IHZpc2l0b3IuaGVhcCgpLT52bSgpOwog
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgZm9yIChQbGFuTWFwOjpp
dGVyYXRvciBpdGVyID0gbV9wbGFucy5iZWdpbigpOyBpdGVyICE9IG1fcGxhbnMuZW5kKCk7ICsr
aXRlcikgewogICAgICAgICAgICAgUGxhbiogcGxhbiA9IGl0ZXItPnZhbHVlLmdldCgpOwogICAg
ICAgICAgICAgaWYgKCZwbGFuLT52bSAhPSB2bSkKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdv
cmtsaXN0Ojp2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWCiB2b2lkIFdvcmtsaXN0OjpyZW1vdmVE
ZWFkUGxhbnMoVk0mIHZtKQogewogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICAgICAgSGFzaFNldDxDb21waWxhdGlvbktleT4gZGVhZFBsYW5LZXlzOwogICAgICAgICBmb3Ig
KFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmJlZ2luKCk7IGl0ZXIgIT0gbV9wbGFu
cy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFsdWUu
Z2V0KCk7CkBAIC0yOTUsMTcgKzI5NSwxNyBAQCB2b2lkIFdvcmtsaXN0OjpyZW1vdmVEZWFkUGxh
bnMoVk0mIHZtKQogCiBzaXplX3QgV29ya2xpc3Q6OnF1ZXVlTGVuZ3RoKCkKIHsKLSAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CiAgICAgcmV0dXJuIG1fcXVldWUuc2l6ZSgpOwogfQogCiB2b2lkIFdvcmtsaXN0
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAg
IGR1bXAobG9ja2VyLCBvdXQpOwogfQogCi12b2lkIFdvcmtsaXN0OjpkdW1wKGNvbnN0IE11dGV4
TG9ja2VyJiwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3ZvaWQgV29ya2xpc3Q6OmR1bXAoY29u
c3QgRGVwcmVjYXRlZE11dGV4TG9ja2VyJiwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAg
ICBvdXQucHJpbnQoCiAgICAgICAgICJXb3JrbGlzdCgiLCBSYXdQb2ludGVyKHRoaXMpLCAiKVtR
dWV1ZSBMZW5ndGggPSAiLCBtX3F1ZXVlLnNpemUoKSwKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lk
IFdvcmtsaXN0OjpydW5UaHJlYWQoVGhyZWFkRGF0YSogZGF0CiAgICAgZm9yICg7OykgewogICAg
ICAgICBSZWZQdHI8UGxhbj4gcGxhbjsKICAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CiAgICAgICAgICAgICB3aGlsZSAobV9xdWV1ZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgbV9wbGFuRW5xdWV1ZWQud2FpdChtX2xvY2spOwogICAgICAgICAgICAgCkBA
IC0zNDEsOSArMzQxLDkgQEAgdm9pZCBXb3JrbGlzdDo6cnVuVGhyZWFkKFRocmVhZERhdGEqIGRh
dAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIoZGF0YS0+bV9yaWdodFRvUnVuKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIoZGF0YS0+bV9yaWdodFRvUnVuKTsKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgICAgICAgICAgaWYg
KHBsYW4tPnN0YWdlID09IFBsYW46OkNhbmNlbGxlZCkgewogICAgICAgICAgICAgICAgICAgICBt
X251bWJlck9mQWN0aXZlVGhyZWFkcy0tOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIFdvcmtsaXN0OjpydW5UaHJlYWQoVGhyZWFkRGF0YSog
ZGF0CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcGxhbi0+dm0uaGVhcC5pc0NvbGxlY3Rp
bmcoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKHBsYW4tPnN0YWdlID09
IFBsYW46OkNhbmNlbGxlZCkgewogICAgICAgICAgICAgICAgICAgICBtX251bWJlck9mQWN0aXZl
VGhyZWFkcy0tOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTM3MCw3ICszNzAs
NyBAQCB2b2lkIFdvcmtsaXN0OjpydW5UaHJlYWQoVGhyZWFkRGF0YSogZGF0CiAgICAgICAgIH0K
IAogICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gV2UgY291bGQgaGF2ZSBiZWVuIGNhbmNlbGxlZCBiZXR3ZWVu
IHJlbGVhc2luZyByaWdodFRvUnVuIGFuZCBhY3F1aXJpbmcgbV9sb2NrLgogICAgICAgICAgICAg
Ly8gVGhpcyB3b3VsZCBtZWFuIHRoYXQgd2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBHQyBy
aWdodCBub3cuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5oCShy
ZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIHJlbW92ZUFsbFJlYWR5UGxhbnNGb3JWTShWTSYsIFZlY3RvcjxSZWZQdHI8UGxhbj4sIDg+
Jik7CiAKLSAgICB2b2lkIGR1bXAoY29uc3QgTXV0ZXhMb2NrZXImLCBQcmludFN0cmVhbSYpIGNv
bnN0OworICAgIHZvaWQgZHVtcChjb25zdCBEZXByZWNhdGVkTXV0ZXhMb2NrZXImLCBQcmludFN0
cmVhbSYpIGNvbnN0OwogICAgIAogICAgIENTdHJpbmcgbV90aHJlYWROYW1lOwogICAgIApAQCAt
MTAzLDkgKzEwMyw5IEBAIHByaXZhdGU6CiAgICAgLy8gYmUgY29tcGxldGVkLgogICAgIFZlY3Rv
cjxSZWZQdHI8UGxhbj4sIDE2PiBtX3JlYWR5UGxhbnM7CiAKLSAgICBNdXRleCBtX3N1c3BlbnNp
b25Mb2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX3N1c3BlbnNpb25Mb2NrOwogICAgIAotICAg
IG11dGFibGUgTXV0ZXggbV9sb2NrOworICAgIG11dGFibGUgRGVwcmVjYXRlZE11dGV4IG1fbG9j
azsKICAgICBUaHJlYWRDb25kaXRpb24gbV9wbGFuRW5xdWV1ZWQ7CiAgICAgVGhyZWFkQ29uZGl0
aW9uIG1fcGxhbkNvbXBpbGVkOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTg3ODg5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OCwxNCArNzgsMTQgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
ZW5xdWV1ZShzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrKQogICAgIHsKLSAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGOjptb3Zl
KHRhc2spKTsKICAgICAgICAgbV9jb25kaXRpb24uYnJvYWRjYXN0KCk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgd2FpdFVudGlsRW1wdHkoKQogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKICAgICAgICAgd2hpbGUgKCFtX3F1ZXVlLmlzRW1wdHkoKSB8fCBtX3dvcmtpbmcpCiAgICAg
ICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fbG9jayk7CiAgICAgfQpAQCAtOTYsNyArOTYsNyBA
QCBwcml2YXRlOgogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrOwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgICAgIERlcHJlY2F0ZWRN
dXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgICAgICAgICBtX3dvcmtpbmcgPSBm
YWxzZTsKICAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi5icm9hZGNhc3QoKTsKICAgICAgICAg
ICAgICAgICB3aGlsZSAobV9xdWV1ZS5pc0VtcHR5KCkpCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBNdXRleCBtX2xvY2s7CisgICAgRGVw
cmVjYXRlZE11dGV4IG1fbG9jazsKICAgICBUaHJlYWRDb25kaXRpb24gbV9jb25kaXRpb247CiAg
ICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4+IG1fcXVldWU7CiAgICAg
Ym9vbCBtX3dvcmtpbmcgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29waWVkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvcGllZFNwYWNlLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4
LDcgQEAgdm9pZCBDb3BpZWRTcGFjZTo6ZG9uZUZpbGxpbmdCbG9jayhDb3BpZQogICAgIH0KIAog
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7Cisg
ICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsK
ICAgICAgICAgQVNTRVJUKG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MgPiAwKTsKICAgICAgICAgQVNT
RVJUKG1faW5Db3B5aW5nUGhhc2UpOwogICAgICAgICBtX251bWJlck9mTG9hbmVkQmxvY2tzLS07
CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBDb3BpZWRTcGFjZTo6ZGlkU3RhcnRGdWxsQ29sbGVj
dGlvbgogdm9pZCBDb3BpZWRTcGFjZTo6ZG9uZUNvcHlpbmcoKQogewogICAgIHsKLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7CisgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsKICAgICAgICAgd2hpbGUg
KG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MgPiAwKQogICAgICAgICAgICAgbV9sb2FuZWRCbG9ja3ND
b25kaXRpb24ud2FpdChtX2xvYW5lZEJsb2Nrc0xvY2spOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luQ29weWluZ1BoYXNlOwogICAg
IGJvb2wgbV9zaG91bGREb0NvcHlQaGFzZTsKIAotICAgIE11dGV4IG1fbG9hbmVkQmxvY2tzTG9j
azsgCisgICAgRGVwcmVjYXRlZE11dGV4IG1fbG9hbmVkQmxvY2tzTG9jazsgCiAgICAgVGhyZWFk
Q29uZGl0aW9uIG1fbG9hbmVkQmxvY2tzQ29uZGl0aW9uOwogICAgIHNpemVfdCBtX251bWJlck9m
TG9hbmVkQmxvY2tzOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29w
aWVkU3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29waWVkU3BhY2VJbmxpbmVzLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTMsNyArMTEzLDcgQEAgaW5saW5lIHZvaWQgQ29waWVkU3BhY2U6OnJlY3ljbGVCb3Jyb3dlZAog
ICAgIENvcGllZEJsb2NrOjpkZXN0cm95KGJsb2NrKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsKICAgICAgICAgQVNTRVJUKG1fbnVt
YmVyT2ZMb2FuZWRCbG9ja3MgPiAwKTsKICAgICAgICAgQVNTRVJUKG1faW5Db3B5aW5nUGhhc2Up
OwogICAgICAgICBtX251bWJlck9mTG9hbmVkQmxvY2tzLS07CkBAIC0xMjgsNyArMTI4LDcgQEAg
aW5saW5lIENvcGllZEJsb2NrKiBDb3BpZWRTcGFjZTo6YWxsb2NhdAogICAgIENvcGllZEJsb2Nr
KiBibG9jayA9IENvcGllZEJsb2NrOjpjcmVhdGVOb1plcm9GaWxsKCk7CiAKICAgICB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvYW5lZEJsb2Nrc0xvY2spOworICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7CiAgICAgICAgIG1f
bnVtYmVyT2ZMb2FuZWRCbG9ja3MrKzsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBUaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBUaW1lci5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOwogICAgIENG
UnVuTG9vcFRpbWVyQ29udGV4dCBtX2NvbnRleHQ7CiAKLSAgICBNdXRleCBtX3NodXRkb3duTXV0
ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fc2h1dGRvd25NdXRleDsKICNlbGlmIFBMQVRGT1JN
KEVGTCkKICAgICBzdGF0aWMgYm9vbCB0aW1lckV2ZW50KHZvaWQqKTsKICAgICBFY29yZV9UaW1l
ciogYWRkKGRvdWJsZSBkZWxheSwgdm9pZCogYWdlbnQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCShyZXZpc2lvbiAxODc4
ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTggKzEwMywxOCBAQCBwdWJsaWM6CiAgICAgICAgIH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIE11dGV4TG9ja2VyIG1fbG9ja2VyOworICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbV9sb2NrZXI7CiAgICAgfTsKIAogICAgIHZvaWQgYWRkKE1h
Y2hpbmVUaHJlYWRzKiBtYWNoaW5lVGhyZWFkcykKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2Vy
IG1hbmFnZXJMb2NrKG1fbG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBtYW5h
Z2VyTG9jayhtX2xvY2spOwogICAgICAgICBtX3NldC5hZGQobWFjaGluZVRocmVhZHMpOwogICAg
IH0KIAogICAgIHZvaWQgcmVtb3ZlKE1hY2hpbmVUaHJlYWRzKiBtYWNoaW5lVGhyZWFkcykKICAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIG1hbmFnZXJMb2NrKG1fbG9jayk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBtYW5hZ2VyTG9jayhtX2xvY2spOwogICAgICAgICBhdXRvIHJl
Y29yZGVkTWFjaGluZVRocmVhZHMgPSBtX3NldC50YWtlKG1hY2hpbmVUaHJlYWRzKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocmVjb3JkZWRNYWNoaW5lVGhyZWFkcyA9IG1hY2hpbmVUaHJlYWRz
KTsKICAgICB9CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKIAogICAgIEFjdGl2ZU1hY2hp
bmVUaHJlYWRzTWFuYWdlcigpIHsgfQogICAgIAotICAgIE11dGV4IG1fbG9jazsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXggbV9sb2NrOwogICAgIE1hY2hpbmVUaHJlYWRzU2V0IG1fc2V0OwogCiAgICAg
ZnJpZW5kIEFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlciYgYWN0aXZlTWFjaGluZVRocmVhZHNN
YW5hZ2VyKCk7CkBAIC0yNjMsNyArMjYzLDcgQEAgTWFjaGluZVRocmVhZHM6On5NYWNoaW5lVGhy
ZWFkcygpCiAgICAgYWN0aXZlTWFjaGluZVRocmVhZHNNYW5hZ2VyKCkucmVtb3ZlKHRoaXMpOwog
ICAgIHRocmVhZFNwZWNpZmljS2V5RGVsZXRlKG1fdGhyZWFkU3BlY2lmaWMpOwogCi0gICAgTXV0
ZXhMb2NrZXIgcmVnaXN0ZXJlZFRocmVhZHNMb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIHJlZ2lzdGVyZWRUaHJlYWRzTG9jayhtX3JlZ2lz
dGVyZWRUaHJlYWRzTXV0ZXgpOwogICAgIGZvciAoVGhyZWFkKiB0ID0gbV9yZWdpc3RlcmVkVGhy
ZWFkczsgdDspIHsKICAgICAgICAgVGhyZWFkKiBuZXh0ID0gdC0+bmV4dDsKICAgICAgICAgZGVs
ZXRlIHQ7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBNYWNoaW5lVGhyZWFkczo6YWRkQ3VycmVu
dFRocmVhZCgpCiAgICAgdGhyZWFkU3BlY2lmaWNTZXQobV90aHJlYWRTcGVjaWZpYywgdGhpcyk7
CiAgICAgVGhyZWFkKiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZUZvckN1cnJlbnRUaHJlYWQoKTsK
IAotICAgIE11dGV4TG9ja2VyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011dGV4KTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXgpOwogCiAg
ICAgdGhyZWFkLT5uZXh0ID0gbV9yZWdpc3RlcmVkVGhyZWFkczsKICAgICBtX3JlZ2lzdGVyZWRU
aHJlYWRzID0gdGhyZWFkOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6
OnJlbW92ZVRocmVhZCh2b2lkKiAKIHRlbXBsYXRlPHR5cGVuYW1lIFBsYXRmb3JtVGhyZWFkPgog
dm9pZCBNYWNoaW5lVGhyZWFkczo6cmVtb3ZlVGhyZWFkSWZGb3VuZChQbGF0Zm9ybVRocmVhZCBw
bGF0Zm9ybVRocmVhZCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVh
ZHNNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9yZWdpc3RlcmVkVGhy
ZWFkc011dGV4KTsKICAgICBUaHJlYWQqIHQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOwogICAgIGlm
ICgqdCA9PSBwbGF0Zm9ybVRocmVhZCkgewogICAgICAgICBtX3JlZ2lzdGVyZWRUaHJlYWRzID0g
bV9yZWdpc3RlcmVkVGhyZWFkcy0+bmV4dDsKQEAgLTU2NCw3ICs1NjQsNyBAQCB2b2lkIE1hY2hp
bmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTCiAgICAgdGhyZWFkLT5mcmVlUmVnaXN0ZXJz
KHJlZ2lzdGVycyk7CiB9CiAKLWJvb2wgTWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVh
ZFN0YWNrcyhNdXRleExvY2tlciYsIHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNhcGFjaXR5LCBzaXpl
X3QqIHNpemUpCitib29sIE1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3Mo
RGVwcmVjYXRlZE11dGV4TG9ja2VyJiwgdm9pZCogYnVmZmVyLCBzaXplX3QgY2FwYWNpdHksIHNp
emVfdCogc2l6ZSkKIHsKICAgICAvLyBQcmV2ZW50IHR3byBWTXMgZnJvbSBzdXNwZW5kaW5nIGVh
Y2ggb3RoZXIncyB0aHJlYWRzIGF0IHRoZSBzYW1lIHRpbWUsCiAgICAgLy8gd2hpY2ggY2FuIGNh
dXNlIGRlYWRsb2NrOiA8cmRhcjovL3Byb2JsZW0vMjAzMDA4NDI+LgpAQCAtNjU4LDcgKzY1OCw3
IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OmdhdGhlckNvbnNlcnZhdGl2ZVIKICAgICBzaXplX3Qg
c2l6ZTsKICAgICBzaXplX3QgY2FwYWNpdHkgPSAwOwogICAgIHZvaWQqIGJ1ZmZlciA9IG51bGxw
dHI7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXgpOworICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CiAg
ICAgd2hpbGUgKCF0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MobG9jaywgYnVmZmVyLCBjYXBhY2l0
eSwgJnNpemUpKQogICAgICAgICBncm93QnVmZmVyKHNpemUsICZidWZmZXIsICZjYXBhY2l0eSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01h
cmtlci5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YWNoaW5lU3RhY2tNYXJrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTQgKzUyLDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdhdGhlckZyb21DdXJyZW50VGhyZWFkKENvbnNl
cnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVTZXQmLCBDb2RlQmxvY2tTZXQmLCB2b2lkKiBz
dGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIFJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVn
aXN0ZXJzKTsKIAogICAgICAgICB2b2lkIHRyeUNvcHlPdGhlclRocmVhZFN0YWNrKFRocmVhZCos
IHZvaWQqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCopOwotICAgICAgICBib29sIHRyeUNvcHlP
dGhlclRocmVhZFN0YWNrcyhNdXRleExvY2tlciYsIHZvaWQqLCBzaXplX3QgY2FwYWNpdHksIHNp
emVfdCopOworICAgICAgICBib29sIHRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhEZXByZWNhdGVk
TXV0ZXhMb2NrZXImLCB2b2lkKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QqKTsKIAogICAgICAg
ICBzdGF0aWMgdm9pZCByZW1vdmVUaHJlYWQodm9pZCopOwogCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFBsYXRmb3JtVGhyZWFkPgogICAgICAgICB2b2lkIHJlbW92ZVRocmVhZElmRm91bmQo
UGxhdGZvcm1UaHJlYWQpOwogCi0gICAgICAgIE11dGV4IG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRl
eDsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4IG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleDsKICAg
ICAgICAgVGhyZWFkKiBtX3JlZ2lzdGVyZWRUaHJlYWRzOwogICAgICAgICBXVEY6OlRocmVhZFNw
ZWNpZmljS2V5IG1fdGhyZWFkU3BlY2lmaWM7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAkocmV2aXNp
b24gMTg3ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5IEBAIG5hbWVzcGFjZSBKU0MgewogI2lm
ICFFTkFCTEUoSklUKQogc3RhdGljIHNpemVfdCBjb21taXR0ZWRCeXRlc0NvdW50ID0gMDsKIAot
c3RhdGljIE11dGV4JiBzdGFja1N0YXRpc3RpY3NNdXRleCgpCitzdGF0aWMgRGVwcmVjYXRlZE11
dGV4JiBzdGFja1N0YXRpc3RpY3NNdXRleCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKE11dGV4LCBzdGF0aWNNdXRleCwgKCkpOworICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChEZXByZWNhdGVkTXV0ZXgsIHN0YXRpY011dGV4LCAoKSk7CiAgICAgcmV0
dXJuIHN0YXRpY011dGV4OwogfSAgICAKICNlbmRpZiAvLyAhRU5BQkxFKEpJVCkKQEAgLTE0Niw3
ICsxNDYsNyBAQCB2b2lkIEpTU3RhY2s6OmluaXRpYWxpemVUaHJlYWRpbmcoKQogCiB2b2lkIEpT
U3RhY2s6OmFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcgYnl0ZUNvdW50KQogewotICAgIE11
dGV4TG9ja2VyIGxvY2tlcihzdGFja1N0YXRpc3RpY3NNdXRleCgpKTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKHN0YWNrU3RhdGlzdGljc011dGV4KCkpOwogICAgIEFTU0VSVChz
dGF0aWNfY2FzdDxsb25nPihjb21taXR0ZWRCeXRlc0NvdW50KSArIGJ5dGVDb3VudCA+IC0xKTsK
ICAgICBjb21taXR0ZWRCeXRlc0NvdW50ICs9IGJ5dGVDb3VudDsKIH0KQEAgLTE3Niw3ICsxNzYs
NyBAQCBSZWdpc3RlciogSlNTdGFjazo6aGlnaEFkZHJlc3MoKSBjb25zdAogc2l6ZV90IEpTU3Rh
Y2s6OmNvbW1pdHRlZEJ5dGVDb3VudCgpCiB7CiAjaWYgIUVOQUJMRShKSVQpCi0gICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKHN0YWNrU3RhdGlzdGljc011dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIoc3RhY2tTdGF0aXN0aWNzTXV0ZXgoKSk7CiAgICAgcmV0dXJuIGNvbW1p
dHRlZEJ5dGVzQ291bnQ7CiAjZWxzZQogICAgIC8vIFdoZW4gdXNpbmcgdGhlIEMgc3RhY2ssIHdl
IGRvbid0IGtub3cgaG93IG1hbnkgc3RhY2sgcGFnZXMgYXJlIGFjdHVhbGx5CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDgg
KzY0LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIE1haW4gdGhyZWFkIGNhbiBob2xk
IHRoaXMgbG9jayBmb3IgYSB3aGlsZSwgc28gdXNlIGFuIGFkYXB0aXZlIG11dGV4LgotICAgIHR5
cGVkZWYgTXV0ZXggTG9jazsKLSAgICB0eXBlZGVmIE11dGV4TG9ja2VyIExvY2tlcjsKKyAgICB0
eXBlZGVmIERlcHJlY2F0ZWRNdXRleCBMb2NrOworICAgIHR5cGVkZWYgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIExvY2tlcjsKIAogICAgIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lk
KiBjb250ZXh0KSBvdmVycmlkZTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaAkocmV2aXNpb24gMTg3ODg5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQCBwcml2YXRlOgogICAgIC8vICAgcGVyZm9ybWFuY2Us
IGJ1dCBpZiB3ZSBkaWQgaGF2ZSBjb250ZW50aW9uLCB3ZSB3b3VsZCB3YW50IGEgc2Vuc2libGUs
CiAgICAgLy8gICBwb3dlci1hd2FyZSBiYWNrb2ZmLiBBbiBhZGFwdGl2ZSBtdXRleCB3aWxsIGRv
IHRoaXMgYXMgYSBtYXR0ZXIgb2YgY291cnNlLAogICAgIC8vICAgYnV0IGEgc3BpbmxvY2sgd29u
J3QuCi0gICAgdHlwZWRlZiBNdXRleCBMb2NrOwotICAgIHR5cGVkZWYgTXV0ZXhMb2NrZXIgTG9j
a2VyOworICAgIHR5cGVkZWYgRGVwcmVjYXRlZE11dGV4IExvY2s7CisgICAgdHlwZWRlZiBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgTG9ja2VyOwogICAgIAogCiAgICAgdm9pZCBhZGREYXRhYmFzZVRv
QXRFeGl0KCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dURi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDUgQEAKKzIwMTUtMDgtMDQgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTXV0ZXggdG8gRGVwcmVj
YXRlZE11dGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDc2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9BdG9taWNzLmNwcDoKKyAgICAgICAgKFdURjo6Z2V0U3dhcExvY2spOgorICAgICAg
ICAoV1RGOjphdG9taWNTdGVwKToKKyAgICAgICAgKiB3dGYvTWVzc2FnZVF1ZXVlLmg6CisgICAg
ICAgIChXVEY6Ok1lc3NhZ2VRdWV1ZTo6aW5maW5pdGVUaW1lKToKKyAgICAgICAgKFdURjo6TWVz
c2FnZVF1ZXVlPERhdGFUeXBlPjo6YXBwZW5kKToKKyAgICAgICAgKFdURjo6TWVzc2FnZVF1ZXVl
PERhdGFUeXBlPjo6YXBwZW5kQW5kS2lsbCk6CisgICAgICAgIChXVEY6Ok1lc3NhZ2VRdWV1ZTxE
YXRhVHlwZT46OmFwcGVuZEFuZENoZWNrRW1wdHkpOgorICAgICAgICAoV1RGOjpNZXNzYWdlUXVl
dWU8RGF0YVR5cGU+OjpwcmVwZW5kKToKKyAgICAgICAgKFdURjo6TWVzc2FnZVF1ZXVlPERhdGFU
eXBlPjo6cmVtb3ZlSWYpOgorICAgICAgICAoV1RGOjpNZXNzYWdlUXVldWU8RGF0YVR5cGU+Ojpp
c0VtcHR5KToKKyAgICAgICAgKFdURjo6TWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6a2lsbCk6Cisg
ICAgICAgIChXVEY6Ok1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmtpbGxlZCk6CisgICAgICAgICog
d3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwOgorICAgICAgICAoV1RGOjpQYXJhbGxlbEVudmly
b25tZW50OjpUaHJlYWRQcml2YXRlOjpleGVjdXRlKToKKyAgICAgICAgKFdURjo6UGFyYWxsZWxF
bnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZTo6d2FpdEZvckZpbmlzaCk6CisgICAgICAgIChXVEY6
OlBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OndvcmtlclRocmVhZCk6CisgICAg
ICAgICogd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuaDoKKyAgICAgICAgKiB3dGYvUnVuTG9vcC5j
cHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnBlcmZvcm1Xb3JrKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6ZGlzcGF0Y2gpOgorICAgICAgICAqIHd0Zi9SdW5Mb29wLmg6CisgICAgICAgICog
d3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OnRocmVhZEVudHJ5UG9pbnQpOgorICAg
ICAgICAoV1RGOjpjcmVhdGVUaHJlYWQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAgICAgKFdU
Rjo6dGhyZWFkTWFwTXV0ZXgpOgorICAgICAgICAoV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKToK
KyAgICAgICAgKFdURjo6aWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZSk6CisgICAgICAgIChXVEY6
OmVzdGFibGlzaElkZW50aWZpZXJGb3JQdGhyZWFkSGFuZGxlKToKKyAgICAgICAgKFdURjo6Y2hh
bmdlVGhyZWFkUHJpb3JpdHkpOgorICAgICAgICAoV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlv
bik6CisgICAgICAgIChXVEY6OmRldGFjaFRocmVhZCk6CisgICAgICAgIChXVEY6OnRocmVhZERp
ZEV4aXQpOgorICAgICAgICAoV1RGOjpjdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdURjo6RGVw
cmVjYXRlZE11dGV4OjpEZXByZWNhdGVkTXV0ZXgpOgorICAgICAgICAoV1RGOjpEZXByZWNhdGVk
TXV0ZXg6On5EZXByZWNhdGVkTXV0ZXgpOgorICAgICAgICAoV1RGOjpEZXByZWNhdGVkTXV0ZXg6
OmxvY2spOgorICAgICAgICAoV1RGOjpEZXByZWNhdGVkTXV0ZXg6OnRyeUxvY2spOgorICAgICAg
ICAoV1RGOjpEZXByZWNhdGVkTXV0ZXg6OnVubG9jayk6CisgICAgICAgIChXVEY6OlRocmVhZENv
bmRpdGlvbjo6flRocmVhZENvbmRpdGlvbik6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRpdGlv
bjo6d2FpdCk6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KToKKyAg
ICAgICAgKFdURjo6TXV0ZXg6Ok11dGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6TXV0ZXg6
On5NdXRleCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok11dGV4Ojpsb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6TXV0ZXg6OnRyeUxvY2spOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpN
dXRleDo6dW5sb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nV2luLmNwcDoK
KyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCk6CisgICAgICAg
IChXVEY6OnRocmVhZE1hcE11dGV4KToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGlu
Zyk6CisgICAgICAgIChXVEY6OnN0b3JlVGhyZWFkSGFuZGxlQnlJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdURjo6dGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXVEY6OmNsZWFy
VGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaHJlYWQp
OgorICAgICAgICAoV1RGOjpEZXByZWNhdGVkTXV0ZXg6OkRlcHJlY2F0ZWRNdXRleCk6CisgICAg
ICAgIChXVEY6OkRlcHJlY2F0ZWRNdXRleDo6fkRlcHJlY2F0ZWRNdXRleCk6CisgICAgICAgIChX
VEY6OkRlcHJlY2F0ZWRNdXRleDo6bG9jayk6CisgICAgICAgIChXVEY6OkRlcHJlY2F0ZWRNdXRl
eDo6dHJ5TG9jayk6CisgICAgICAgIChXVEY6OkRlcHJlY2F0ZWRNdXRleDo6dW5sb2NrKToKKyAg
ICAgICAgKFdURjo6VGhyZWFkQ29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKToKKyAgICAgICAg
KFdURjo6VGhyZWFkQ29uZGl0aW9uOjp3YWl0KToKKyAgICAgICAgKFdURjo6VGhyZWFkQ29uZGl0
aW9uOjp0aW1lZFdhaXQpOgorICAgICAgICAoV1RGOjpNdXRleDo6TXV0ZXgpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpNdXRleDo6fk11dGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6TXV0
ZXg6OmxvY2spOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpNdXRleDo6dHJ5TG9jayk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Ok11dGV4Ojp1bmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIHd0
Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYvZHRvYS5jcHA6CisgICAgICAgICogd3RmL2R0
b2EuaDoKKyAgICAgICAgKiB3dGYvZWZsL0Rpc3BhdGNoUXVldWVFZmwuY3BwOgorICAgICAgICAo
RGlzcGF0Y2hRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoRGlzcGF0Y2hRdWV1ZTo6cGVyZm9y
bVdvcmspOgorICAgICAgICAoRGlzcGF0Y2hRdWV1ZTo6cGVyZm9ybVRpbWVyV29yayk6CisgICAg
ICAgIChEaXNwYXRjaFF1ZXVlOjppbnNlcnRUaW1lcldvcmtJdGVtKToKKyAgICAgICAgKERpc3Bh
dGNoUXVldWU6Ondha2VVcFRocmVhZCk6CisgICAgICAgIChEaXNwYXRjaFF1ZXVlOjpnZXROZXh0
VGltZU91dCk6CisgICAgICAgICogd3RmL2VmbC9EaXNwYXRjaFF1ZXVlRWZsLmg6CisgICAgICAg
ICogd3RmL2VmbC9SdW5Mb29wRWZsLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6d2FrZVVw
RXZlbnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOgorICAgICAgICAqIHd0Zi90
aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5jcHA6CisgICAgICAgIChXVEY6OkJpbmFyeVNlbWFwaG9y
ZTo6c2lnbmFsKToKKyAgICAgICAgKFdURjo6QmluYXJ5U2VtYXBob3JlOjp3YWl0KToKKyAgICAg
ICAgKiB3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaDoKKyAgICAgICAgKiB3dGYvd2luL1dv
cmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6aGFuZGxlQ2FsbGJhY2sp
OgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAg
IChXVEY6OldvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnRp
bWVyQ2FsbGJhY2spOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgor
CiAyMDE1LTA4LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgRml4IHF1aXJrcyB3aXRoIENNYWtlIGFuZCBWUzIwMTUKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0F0b21pY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0F0b21p
Y3MuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzIsMTYgKzcyLDE2IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogc3Rh
dGljIGNvbnN0IHNpemVfdCBrU3dhcExvY2tDb3VudCA9IDMyOwotc3RhdGljIE11dGV4IHNfc3dh
cExvY2tzW2tTd2FwTG9ja0NvdW50XTsKK3N0YXRpYyBEZXByZWNhdGVkTXV0ZXggc19zd2FwTG9j
a3Nba1N3YXBMb2NrQ291bnRdOwogCi1zdGF0aWMgaW5saW5lIE11dGV4JiBnZXRTd2FwTG9jayhj
b25zdCB2b2xhdGlsZSBpbnQ2NF90KiBhZGRyKQorc3RhdGljIGlubGluZSBEZXByZWNhdGVkTXV0
ZXgmIGdldFN3YXBMb2NrKGNvbnN0IHZvbGF0aWxlIGludDY0X3QqIGFkZHIpCiB7CiAgICAgcmV0
dXJuIHNfc3dhcExvY2tzWyhyZWludGVycHJldF9jYXN0PGludHB0cl90PihhZGRyKSA+PiAzVSkg
JSBrU3dhcExvY2tDb3VudF07CiB9CiAKIHN0YXRpYyBpbnQ2NF90IGF0b21pY1N0ZXAoaW50NjRf
dCB2b2xhdGlsZSogYWRkZW5kLCBpbnQ2NF90IHN0ZXApCiB7Ci0gICAgTXV0ZXgmIG11dGV4ID0g
Z2V0U3dhcExvY2soYWRkZW5kKTsKKyAgICBEZXByZWNhdGVkTXV0ZXgmIG11dGV4ID0gZ2V0U3dh
cExvY2soYWRkZW5kKTsKIAogICAgIG11dGV4LmxvY2soKTsKICAgICBpbnQ2NF90IHZhbHVlID0g
KmFkZGVuZCArIHN0ZXA7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NZXNzYWdlUXVldWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9NZXNzYWdlUXVldWUuaAkocmV2aXNpb24gMTg3ODg5
KQorKysgU291cmNlL1dURi93dGYvTWVzc2FnZVF1ZXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDcgKzc3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0YXRpYyBkb3VibGUgaW5maW5p
dGVUaW1lKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSBNdXRleCBtX211dGV4OworICAgICAgICBt
dXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX211dGV4OwogICAgICAgICBUaHJlYWRDb25kaXRpb24g
bV9jb25kaXRpb247CiAgICAgICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4+IG1f
cXVldWU7CiAgICAgICAgIGJvb2wgbV9raWxsZWQ7CkBAIC05MSw3ICs5MSw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgogICAgIGlubGluZSB2b2lk
IE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+
IG1lc3NhZ2UpCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAg
ICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgbV9xdWV1
ZS5hcHBlbmQoV1RGOjptb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgbV9jb25kaXRpb24uc2lnbmFs
KCk7CiAgICAgfQpAQCAtOTksNyArOTksNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEYXRhVHlwZT4KICAgICBpbmxpbmUgdm9pZCBNZXNzYWdlUXVldWU8RGF0YVR5
cGU+OjphcHBlbmRBbmRLaWxsKHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4gbWVzc2FnZSkKICAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBtX3F1ZXVlLmFwcGVuZChXVEY6
Om1vdmUobWVzc2FnZSkpOwogICAgICAgICBtX2tpbGxlZCA9IHRydWU7CiAgICAgICAgIG1fY29u
ZGl0aW9uLmJyb2FkY2FzdCgpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgogICAgIGlubGluZSBib29sIE1lc3NhZ2VR
dWV1ZTxEYXRhVHlwZT46OmFwcGVuZEFuZENoZWNrRW1wdHkoc3RkOjp1bmlxdWVfcHRyPERhdGFU
eXBlPiBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsK
KyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIGJv
b2wgd2FzRW1wdHkgPSBtX3F1ZXVlLmlzRW1wdHkoKTsKICAgICAgICAgbV9xdWV1ZS5hcHBlbmQo
V1RGOjptb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgbV9jb25kaXRpb24uc2lnbmFsKCk7CkBAIC0x
MTksNyArMTE5LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGF0
YVR5cGU+CiAgICAgaW5saW5lIHZvaWQgTWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6cHJlcGVuZChz
dGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+IG1lc3NhZ2UpCiAgICAgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayht
X211dGV4KTsKICAgICAgICAgbV9xdWV1ZS5wcmVwZW5kKFdURjo6bW92ZShtZXNzYWdlKSk7CiAg
ICAgICAgIG1fY29uZGl0aW9uLnNpZ25hbCgpOwogICAgIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+CiAgICAgaW5s
aW5lIGF1dG8gTWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6d2FpdEZvck1lc3NhZ2VGaWx0ZXJlZFdp
dGhUaW1lb3V0KE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQmIHJlc3VsdCwgUHJlZGljYXRlJiYgcHJl
ZGljYXRlLCBkb3VibGUgYWJzb2x1dGVUaW1lKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+
CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgYm9vbCB0aW1lZE91dCA9
IGZhbHNlOwogCiAgICAgICAgIGF1dG8gZm91bmQgPSBtX3F1ZXVlLmVuZCgpOwpAQCAtMTc0LDcg
KzE3NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBl
PgogICAgIGlubGluZSBhdXRvIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2Uo
KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+CiAgICAgewotICAgICAgICBNdXRleExvY2tl
ciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211
dGV4KTsKICAgICAgICAgaWYgKG1fa2lsbGVkKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIGlmIChtX3F1ZXVlLmlzRW1wdHkoKSkKQEAgLTE4Niw3ICsxODYsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KICAgICBpbmxpbmUg
YXV0byBNZXNzYWdlUXVldWU8RGF0YVR5cGU+Ojp0cnlHZXRNZXNzYWdlSWdub3JpbmdLaWxsZWQo
KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+CiAgICAgewotICAgICAgICBNdXRleExvY2tl
ciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211
dGV4KTsKICAgICAgICAgaWYgKG1fcXVldWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+CiAgICAgaW5saW5lIHZvaWQgTWVzc2FnZVF1ZXVlPERh
dGFUeXBlPjo6cmVtb3ZlSWYoUHJlZGljYXRlJiYgcHJlZGljYXRlKQogICAgIHsKLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2sobV9tdXRleCk7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBhdXRv
IGZvdW5kID0gbV9xdWV1ZS5maW5kSWYoWyZwcmVkaWNhdGVdKGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxEYXRhVHlwZT4mIHB0cikgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHB0cik7
CkBAIC0yMTQsNyArMjE0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRGF0YVR5cGU+CiAgICAgaW5saW5lIGJvb2wgTWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6aXNF
bXB0eSgpCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgaWYgKG1fa2ls
bGVkKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBtX3F1ZXVlLmlz
RW1wdHkoKTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEYXRhVHlwZT4KICAgICBpbmxpbmUgdm9pZCBNZXNzYWdlUXVldWU8RGF0YVR5
cGU+OjpraWxsKCkKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Cisg
ICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBtX2tp
bGxlZCA9IHRydWU7CiAgICAgICAgIG1fY29uZGl0aW9uLmJyb2FkY2FzdCgpOwogICAgIH0KQEAg
LTIzMSw3ICsyMzEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBE
YXRhVHlwZT4KICAgICBpbmxpbmUgYm9vbCBNZXNzYWdlUXVldWU8RGF0YVR5cGU+OjpraWxsZWQo
KSBjb25zdAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIHJldHVybiBt
X2tpbGxlZDsKICAgICB9CiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bh
cmFsbGVsSm9ic0dlbmVyaWMuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV1RGL3d0
Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3
IEBAIGJvb2wgUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZToKIAogdm9pZCBQYXJh
bGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjpleGVjdXRlKFRocmVhZEZ1bmN0aW9uIHRo
cmVhZEZ1bmN0aW9uLCB2b2lkKiBwYXJhbWV0ZXJzKQogewotICAgIE11dGV4TG9ja2VyIGxvY2so
bV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAKICAg
ICBtX3RocmVhZEZ1bmN0aW9uID0gdGhyZWFkRnVuY3Rpb247CiAgICAgbV9wYXJhbWV0ZXJzID0g
cGFyYW1ldGVyczsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFBhcmFsbGVsRW52aXJvbm1lbnQ6
OlRocmVhZFByaXZhdGU6CiAKIHZvaWQgUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0
ZTo6d2FpdEZvckZpbmlzaCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKIAogICAgIHdoaWxlIChtX3J1
bm5pbmcpCiAgICAgICAgIG1fdGhyZWFkQ29uZGl0aW9uLndhaXQobV9tdXRleCk7CkBAIC0xMjQs
NyArMTI0LDcgQEAgdm9pZCBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOgogdm9p
ZCBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQodm9pZCog
dGhyZWFkRGF0YSkKIHsKICAgICBUaHJlYWRQcml2YXRlKiBzaGFyZWRUaHJlYWQgPSByZWludGVy
cHJldF9jYXN0PFRocmVhZFByaXZhdGUqPih0aHJlYWREYXRhKTsKLSAgICBNdXRleExvY2tlciBs
b2NrKHNoYXJlZFRocmVhZC0+bV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2soc2hhcmVkVGhyZWFkLT5tX211dGV4KTsKIAogICAgIHdoaWxlIChzaGFyZWRUaHJlYWQtPm1f
dGhyZWFkSUQpIHsKICAgICAgICAgaWYgKHNoYXJlZFRocmVhZC0+bV9ydW5uaW5nKSB7CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBT
b3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICBib29sIG1fcnVubmluZzsKICAgICAgICAgUGFy
YWxsZWxFbnZpcm9ubWVudCogbV9wYXJlbnQ7CiAKLSAgICAgICAgbXV0YWJsZSBNdXRleCBtX211
dGV4OworICAgICAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX211dGV4OwogICAgICAgICBU
aHJlYWRDb25kaXRpb24gbV90aHJlYWRDb25kaXRpb247CiAKICAgICAgICAgVGhyZWFkRnVuY3Rp
b24gbV90aHJlYWRGdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCShyZXZpc2lvbiAxODc4ODkp
CisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyAr
OTIsNyBAQCB2b2lkIFJ1bkxvb3A6OnBlcmZvcm1Xb3JrKCkKICAgICB7CiAgICAgICAgIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbjsKICAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOworICAgICAgICAgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0aW9uUXVldWVMb2NrKTsKICAgICAgICAgICAgIGZ1
bmN0aW9uc1RvSGFuZGxlID0gbV9mdW5jdGlvblF1ZXVlLnNpemUoKTsKIAogICAgICAgICAgICAg
aWYgKG1fZnVuY3Rpb25RdWV1ZS5pc0VtcHR5KCkpCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBS
dW5Mb29wOjpwZXJmb3JtV29yaygpCiAgICAgZm9yIChzaXplX3QgZnVuY3Rpb25zSGFuZGxlZCA9
IDE7IGZ1bmN0aW9uc0hhbmRsZWQgPCBmdW5jdGlvbnNUb0hhbmRsZTsgKytmdW5jdGlvbnNIYW5k
bGVkKSB7CiAgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbjsKICAgICAgICAg
ewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOwor
ICAgICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0aW9uUXVldWVM
b2NrKTsKIAogICAgICAgICAgICAgLy8gRXZlbiBpZiB3ZSBzdGFydCBvZmYgd2l0aCBOIGZ1bmN0
aW9ucyB0byBoYW5kbGUgYW5kIHdlJ3ZlIG9ubHkgaGFuZGxlZCBsZXNzIHRoYW4gTiBmdW5jdGlv
bnMsIHRoZSBxdWV1ZQogICAgICAgICAgICAgLy8gc3RpbGwgbWlnaHQgYmUgZW1wdHkgYmVjYXVz
ZSB0aG9zZSBmdW5jdGlvbnMgbWlnaHQgaGF2ZSBiZWVuIGhhbmRsZWQgaW4gYW4gaW5uZXIgUnVu
TG9vcDo6cGVyZm9ybVdvcmsoKS4KQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFJ1bkxvb3A6OnBl
cmZvcm1Xb3JrKCkKIHZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBmdW5jdGlvbikKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0
aW9uUXVldWVMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1
bmN0aW9uUXVldWVMb2NrKTsKICAgICAgICAgbV9mdW5jdGlvblF1ZXVlLmFwcGVuZChXVEY6Om1v
dmUoZnVuY3Rpb24pKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgJKHJldmlzaW9uIDE4Nzg4OSkK
KysrIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEz
MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBlcmZvcm1Xb3JrKCk7CiAKLSAgICBNdXRleCBt
X2Z1bmN0aW9uUXVldWVMb2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX2Z1bmN0aW9uUXVldWVM
b2NrOwogICAgIERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsK
IAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE0NywxMCArMTQ3LDEwIEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5Mb29wU291cmNlOwogICAgIGludCBt
X25lc3RpbmdMZXZlbDsKICNlbGlmIFBMQVRGT1JNKEVGTCkKLSAgICBNdXRleCBtX3BpcGVMb2Nr
OworICAgIERlcHJlY2F0ZWRNdXRleCBtX3BpcGVMb2NrOwogICAgIEVmbFVuaXF1ZVB0cjxFY29y
ZV9QaXBlPiBtX3BpcGU7CiAKLSAgICBNdXRleCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkTG9jazsK
KyAgICBEZXByZWNhdGVkTXV0ZXggbV93YWtlVXBFdmVudFJlcXVlc3RlZExvY2s7CiAgICAgYm9v
bCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkOwogCiAgICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQo
dm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAkocmV2
aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsNyBAQCBzdHJ1Y3QgTmV3VGhyZWFkQ29udGV4dCB7CiBwdWJsaWM6
CiAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZW50cnlQ
b2ludDsKLSAgICBNdXRleCBjcmVhdGlvbk11dGV4OworICAgIERlcHJlY2F0ZWRNdXRleCBjcmVh
dGlvbk11dGV4OwogfTsKIAogc3RhdGljIHZvaWQgdGhyZWFkRW50cnlQb2ludCh2b2lkKiBjb250
ZXh0RGF0YSkKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIHZvaWQgdGhyZWFkRW50cnlQb2ludCh2
b2lkKiBjb250ZQogICAgIC8vIEJsb2NrIHVudGlsIG91ciBjcmVhdGluZyB0aHJlYWQgaGFzIGNv
bXBsZXRlZCBhbnkgZXh0cmEgc2V0dXAgd29yaywgaW5jbHVkaW5nCiAgICAgLy8gZXN0YWJsaXNo
aW5nIFRocmVhZElkZW50aWZpZXIuCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
Y29udGV4dC0+Y3JlYXRpb25NdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIoY29udGV4dC0+Y3JlYXRpb25NdXRleCk7CiAgICAgfQogCiAgICAgaW5pdGlhbGl6ZUN1
cnJlbnRUaHJlYWRJbnRlcm5hbChjb250ZXh0LT5uYW1lKTsKQEAgLTcwLDcgKzcwLDcgQEAgVGhy
ZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoY29uc3QgY2hhcgogICAgIE5ld1RocmVhZENvbnRl
eHQqIGNvbnRleHQgPSBuZXcgTmV3VGhyZWFkQ29udGV4dCB7IG5hbWUsIFdURjo6bW92ZShlbnRy
eVBvaW50KSwgeyB9IH07CiAKICAgICAvLyBQcmV2ZW50IHRoZSB0aHJlYWQgYm9keSBmcm9tIGV4
ZWN1dGluZyB1bnRpbCB3ZSd2ZSBlc3RhYmxpc2hlZCB0aGUgdGhyZWFkIGlkZW50aWZpZXIuCi0g
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGNvbnRleHQtPmNyZWF0aW9uTXV0ZXgpOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIoY29udGV4dC0+Y3JlYXRpb25NdXRleCk7CiAKICAgICBy
ZXR1cm4gY3JlYXRlVGhyZWFkSW50ZXJuYWwodGhyZWFkRW50cnlQb2ludCwgY29udGV4dCwgbmFt
ZSk7CiB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCShyZXZpc2lvbiAx
ODc4ODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDExICs3MCwxMSBAQCB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtTXV0ZXg7CiB0
eXBlZGVmIHZvaWQqIFBsYXRmb3JtQ29uZGl0aW9uOwogI2VuZGlmCiAgICAgCi1jbGFzcyBNdXRl
eCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTXV0ZXgpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK2NsYXNzIERlcHJlY2F0ZWRNdXRleCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RGVwcmVjYXRlZE11dGV4KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIE11dGV4KCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NdXRl
eCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZXByZWNhdGVkTXV0ZXgoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgfkRlcHJlY2F0ZWRNdXRleCgpOwogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgbG9jaygpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHRyeUxvY2soKTsK
QEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybU11dGV4IG1fbXV0ZXg7CiB9
OwogCi10eXBlZGVmIExvY2tlcjxNdXRleD4gTXV0ZXhMb2NrZXI7Cit0eXBlZGVmIExvY2tlcjxE
ZXByZWNhdGVkTXV0ZXg+IERlcHJlY2F0ZWRNdXRleExvY2tlcjsKIAogY2xhc3MgVGhyZWFkQ29u
ZGl0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRDb25kaXRpb24pOwpAQCAt
OTQsMTAgKzk0LDEwIEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkQ29u
ZGl0aW9uKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5UaHJlYWRDb25kaXRpb24oKTsKICAg
ICAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0KE11dGV4JiBtdXRleCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdChEZXByZWNhdGVkTXV0ZXgmIG11dGV4KTsKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbmRpdGlvbiB3YXMgc2lnbmFsZWQgYmVmb3JlIGFi
c29sdXRlVGltZSwgZmFsc2UgaWYgdGhlIGFic29sdXRlVGltZSB3YXMgcmVhY2hlZCBvciBpcyBp
biB0aGUgcGFzdC4KICAgICAvLyBUaGUgYWJzb2x1dGVUaW1lIGlzIGluIHNlY29uZHMsIHN0YXJ0
aW5nIG9uIEphbnVhcnkgMSwgMTk3MC4gVGhlIHRpbWUgaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNh
bWUgdGltZSB6b25lIGFzIFdURjo6Y3VycmVudFRpbWUoKS4KLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3VibGUgYWJzb2x1dGVUaW1lKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCB0aW1lZFdhaXQoRGVwcmVjYXRlZE11dGV4JiwgZG91YmxlIGFi
c29sdXRlVGltZSk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYnJvYWRjYXN0KCk7CiAgICAgCkBAIC0xMTMsOCArMTEz
LDggQEAgV1RGX0VYUE9SVF9QUklWQVRFIERXT1JEIGFic29sdXRlVGltZVRvVwogCiB9IC8vIG5h
bWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpNdXRleDsKLXVzaW5nIFdURjo6TXV0ZXhMb2NrZXI7
Cit1c2luZyBXVEY6OkRlcHJlY2F0ZWRNdXRleDsKK3VzaW5nIFdURjo6RGVwcmVjYXRlZE11dGV4
TG9ja2VyOwogdXNpbmcgV1RGOjpUaHJlYWRDb25kaXRpb247CiAKICNpZiBPUyhXSU5ET1dTKQpJ
bmRleDogU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAkocmV2aXNpb24gMTg3ODg5KQor
KysgU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsOSArMTAyLDkgQEAgdm9pZCB1bnNhZmVUaHJlYWRXYXNEZXRhY2hlZChUaHJlYWRJZGVu
dAogdm9pZCB0aHJlYWREaWRFeGl0KFRocmVhZElkZW50aWZpZXIpOwogdm9pZCB0aHJlYWRXYXNK
b2luZWQoVGhyZWFkSWRlbnRpZmllcik7CiAKLXN0YXRpYyBNdXRleCYgdGhyZWFkTWFwTXV0ZXgo
KQorc3RhdGljIERlcHJlY2F0ZWRNdXRleCYgdGhyZWFkTWFwTXV0ZXgoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0ZXgsICgpKTsKKyAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGVwcmVjYXRlZE11dGV4LCBtdXRleCwgKCkpOwogICAg
IHJldHVybiBtdXRleDsKIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRo
cmVhZGluZygpCiAgICAgVGhyZWFkSWRlbnRpZmllckRhdGE6OmluaXRpYWxpemVPbmNlKCk7CiAg
ICAgU3RhY2tTdGF0czo6aW5pdGlhbGl6ZSgpOwogICAgIHd0ZlRocmVhZERhdGEoKTsKLSAgICBz
X2R0b2FQNU11dGV4ID0gbmV3IE11dGV4OworICAgIHNfZHRvYVA1TXV0ZXggPSBuZXcgRGVwcmVj
YXRlZE11dGV4OwogICAgIGluaXRpYWxpemVEYXRlcygpOwogfQogCkBAIC0xMzgsNyArMTM4LDcg
QEAgc3RhdGljIFRocmVhZE1hcCYgdGhyZWFkTWFwKCkKIAogc3RhdGljIFRocmVhZElkZW50aWZp
ZXIgaWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZShjb25zdCBwdGhyZWFkX3QmIHB0aHJlYWRIYW5k
bGUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7CiAKICAgICBUaHJl
YWRNYXA6Oml0ZXJhdG9yIGkgPSB0aHJlYWRNYXAoKS5iZWdpbigpOwogICAgIGZvciAoOyBpICE9
IHRocmVhZE1hcCgpLmVuZCgpOyArK2kpIHsKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgVGhy
ZWFkSWRlbnRpZmllciBpZGVudGlmaWVyQnlQdGhyCiBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBl
c3RhYmxpc2hJZGVudGlmaWVyRm9yUHRocmVhZEhhbmRsZShjb25zdCBwdGhyZWFkX3QmIHB0aHJl
YWRIYW5kbGUpCiB7CiAgICAgQVNTRVJUKCFpZGVudGlmaWVyQnlQdGhyZWFkSGFuZGxlKHB0aHJl
YWRIYW5kbGUpKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Cisg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKICAgICBz
dGF0aWMgVGhyZWFkSWRlbnRpZmllciBpZGVudGlmaWVyQ291bnQgPSAxOwogICAgIHRocmVhZE1h
cCgpLmFkZChpZGVudGlmaWVyQ291bnQsIHN0ZDo6bWFrZV91bmlxdWU8UHRocmVhZFN0YXRlPihw
dGhyZWFkSGFuZGxlKSk7CiAgICAgcmV0dXJuIGlkZW50aWZpZXJDb3VudCsrOwpAQCAtMjE5LDcg
KzIxOSw3IEBAIHZvaWQgY2hhbmdlVGhyZWFkUHJpb3JpdHkoVGhyZWFkSWRlbnRpZmkKICAgICBB
U1NFUlQodGhyZWFkSUQpOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIodGhy
ZWFkTWFwTXV0ZXgoKSk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIodGhy
ZWFkTWFwTXV0ZXgoKSk7CiAgICAgICAgIHB0aHJlYWRIYW5kbGUgPSBwdGhyZWFkSGFuZGxlRm9y
SWRlbnRpZmllcldpdGhMb2NrQWxyZWFkeUhlbGQodGhyZWFkSUQpOwogICAgICAgICBBU1NFUlQo
cHRocmVhZEhhbmRsZSk7CiAgICAgfQpAQCAtMjQyLDcgKzI0Miw3IEBAIGludCB3YWl0Rm9yVGhy
ZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGkKIAogICAgIHsKICAgICAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBsb2NrIGFjcm9zcyB0aGUgY2FsbCB0byBqb2luLCBzaW5jZSB0aGF0IGNhbiBibG9j
ayBvdXIgdGhyZWFkIGFuZCBjYXVzZSBkZWFkbG9jay4KLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKHRocmVhZE1hcE11dGV4KCkpOwogICAgICAgICBwdGhyZWFkSGFuZGxlID0gcHRocmVhZEhh
bmRsZUZvcklkZW50aWZpZXJXaXRoTG9ja0FscmVhZHlIZWxkKHRocmVhZElEKTsKICAgICAgICAg
QVNTRVJUKHB0aHJlYWRIYW5kbGUpOwogICAgIH0KQEAgLTI1NCw3ICsyNTQsNyBAQCBpbnQgd2Fp
dEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpCiAgICAgZWxzZSBpZiAoam9pblJlc3Vs
dCkKICAgICAgICAgTE9HX0VSUk9SKCJUaHJlYWRJZGVudGlmaWVyICV1IHdhcyB1bmFibGUgdG8g
YmUgam9pbmVkLlxuIiwgdGhyZWFkSUQpOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVh
ZE1hcE11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFw
TXV0ZXgoKSk7CiAgICAgUHRocmVhZFN0YXRlKiBzdGF0ZSA9IHRocmVhZE1hcCgpLmdldCh0aHJl
YWRJRCk7CiAgICAgQVNTRVJUKHN0YXRlKTsKICAgICBBU1NFUlQoc3RhdGUtPmpvaW5hYmxlU3Rh
dGUoKSA9PSBQdGhyZWFkU3RhdGU6OkpvaW5hYmxlKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lk
IGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyIHRocmVhCiB7CiAgICAgQVNTRVJUKHRocmVh
ZElEKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwogICAgIHB0aHJl
YWRfdCBwdGhyZWFkSGFuZGxlID0gcHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXJXaXRoTG9ja0Fs
cmVhZHlIZWxkKHRocmVhZElEKTsKICAgICBBU1NFUlQocHRocmVhZEhhbmRsZSk7CiAKQEAgLTI5
MSw3ICsyOTEsNyBAQCB2b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyIHRocmVhCiAK
IHZvaWQgdGhyZWFkRGlkRXhpdChUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEKQogewotICAgIE11
dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwogICAgIFB0aHJlYWRTdGF0ZSogc3RhdGUg
PSB0aHJlYWRNYXAoKS5nZXQodGhyZWFkSUQpOwogICAgIEFTU0VSVChzdGF0ZSk7CiAgICAgCkBA
IC0zMTMsNyArMzEzLDcgQEAgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCkKICAgICBy
ZXR1cm4gaWQ7CiB9CiAKLU11dGV4OjpNdXRleCgpCitEZXByZWNhdGVkTXV0ZXg6OkRlcHJlY2F0
ZWRNdXRleCgpCiB7CiAgICAgcHRocmVhZF9tdXRleGF0dHJfdCBhdHRyOwogICAgIHB0aHJlYWRf
bXV0ZXhhdHRyX2luaXQoJmF0dHIpOwpAQCAtMzI1LDE5ICszMjUsMTkgQEAgTXV0ZXg6Ok11dGV4
KCkKICAgICBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95KCZhdHRyKTsKIH0KIAotTXV0ZXg6On5N
dXRleCgpCitEZXByZWNhdGVkTXV0ZXg6On5EZXByZWNhdGVkTXV0ZXgoKQogewogICAgIGludCBy
ZXN1bHQgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm1fbXV0ZXgpOwogICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCAhcmVzdWx0KTsKIH0KIAotdm9pZCBNdXRleDo6bG9jaygpCit2b2lkIERlcHJl
Y2F0ZWRNdXRleDo6bG9jaygpCiB7CiAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfbG9j
aygmbV9tdXRleCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwogfQogCi1i
b29sIE11dGV4Ojp0cnlMb2NrKCkKK2Jvb2wgRGVwcmVjYXRlZE11dGV4Ojp0cnlMb2NrKCkKIHsK
ICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF90cnlsb2NrKCZtX211dGV4KTsKIApAQCAt
MzUwLDcgKzM1MCw3IEBAIGJvb2wgTXV0ZXg6OnRyeUxvY2soKQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBNdXRleDo6dW5sb2NrKCkKK3ZvaWQgRGVwcmVjYXRlZE11dGV4Ojp1bmxvY2so
KQogewogICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmbV9tdXRleCk7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwpAQCAtMzY2LDEzICszNjYsMTMgQEAg
VGhyZWFkQ29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKCkKICAgICBwdGhyZWFkX2NvbmRfZGVz
dHJveSgmbV9jb25kaXRpb24pOwogfQogICAgIAotdm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQo
TXV0ZXgmIG11dGV4KQordm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQoRGVwcmVjYXRlZE11dGV4
JiBtdXRleCkKIHsKICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9jb25kX3dhaXQoJm1fY29uZGl0
aW9uLCAmbXV0ZXguaW1wbCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCk7
CiB9CiAKLWJvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoTXV0ZXgmIG11dGV4LCBkb3Vi
bGUgYWJzb2x1dGVUaW1lKQorYm9vbCBUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdChEZXByZWNh
dGVkTXV0ZXgmIG11dGV4LCBkb3VibGUgYWJzb2x1dGVUaW1lKQogewogICAgIGlmIChhYnNvbHV0
ZVRpbWUgPCBjdXJyZW50VGltZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZ1dpbi5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZ1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw5ICsxNDMsOSBAQCB2b2lkIGlu
aXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29uCiAjZW5kaWYKIH0KIAotc3RhdGljIE11
dGV4JiB0aHJlYWRNYXBNdXRleCgpCitzdGF0aWMgRGVwcmVjYXRlZE11dGV4JiB0aHJlYWRNYXBN
dXRleCgpCiB7Ci0gICAgc3RhdGljIE11dGV4IG11dGV4OworICAgIHN0YXRpYyBEZXByZWNhdGVk
TXV0ZXggbXV0ZXg7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCkBAIC0xNjUsNyArMTY1LDcgQEAg
dm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKICAgICB0aHJlYWRNYXBNdXRleCgpOwogICAgIGlu
aXRpYWxpemVSYW5kb21OdW1iZXJHZW5lcmF0b3IoKTsKICAgICB3dGZUaHJlYWREYXRhKCk7Ci0g
ICAgc19kdG9hUDVNdXRleCA9IG5ldyBNdXRleDsKKyAgICBzX2R0b2FQNU11dGV4ID0gbmV3IERl
cHJlY2F0ZWRNdXRleDsKICAgICBpbml0aWFsaXplRGF0ZXMoKTsKIH0KIApAQCAtMTc3LDIwICsx
NzcsMjAgQEAgc3RhdGljIEhhc2hNYXA8RFdPUkQsIEhBTkRMRT4mIHRocmVhZE1hcAogCiBzdGF0
aWMgdm9pZCBzdG9yZVRocmVhZEhhbmRsZUJ5SWRlbnRpZmllcihEV09SRCB0aHJlYWRJRCwgSEFO
RExFIHRocmVhZEhhbmRsZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0
ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgp
KTsKICAgICBBU1NFUlQoIXRocmVhZE1hcCgpLmNvbnRhaW5zKHRocmVhZElEKSk7CiAgICAgdGhy
ZWFkTWFwKCkuYWRkKHRocmVhZElELCB0aHJlYWRIYW5kbGUpOwogfQogCiBzdGF0aWMgSEFORExF
IHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIoVGhyZWFkSWRlbnRpZmllciBpZCkKIHsKLSAgICBN
dXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKICAgICByZXR1cm4gdGhyZWFkTWFwKCku
Z2V0KGlkKTsKIH0KIAogc3RhdGljIHZvaWQgY2xlYXJUaHJlYWRIYW5kbGVGb3JJZGVudGlmaWVy
KFRocmVhZElkZW50aWZpZXIgaWQpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1h
cE11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0
ZXgoKSk7CiAgICAgQVNTRVJUKHRocmVhZE1hcCgpLmNvbnRhaW5zKGlkKSk7CiAgICAgdGhyZWFk
TWFwKCkucmVtb3ZlKGlkKTsKIH0KQEAgLTI3NywyNSArMjc3LDI1IEBAIFRocmVhZElkZW50aWZp
ZXIgY3VycmVudFRocmVhZCgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRocmVhZElkZW50aWZp
ZXI+KEdldEN1cnJlbnRUaHJlYWRJZCgpKTsKIH0KIAotTXV0ZXg6Ok11dGV4KCkKK0RlcHJlY2F0
ZWRNdXRleDo6RGVwcmVjYXRlZE11dGV4KCkKIHsKICAgICBtX211dGV4Lm1fcmVjdXJzaW9uQ291
bnQgPSAwOwogICAgIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oJm1fbXV0ZXgubV9pbnRlcm5h
bE11dGV4KTsKIH0KIAotTXV0ZXg6On5NdXRleCgpCitEZXByZWNhdGVkTXV0ZXg6On5EZXByZWNh
dGVkTXV0ZXgoKQogewogICAgIERlbGV0ZUNyaXRpY2FsU2VjdGlvbigmbV9tdXRleC5tX2ludGVy
bmFsTXV0ZXgpOwogfQogCi12b2lkIE11dGV4Ojpsb2NrKCkKK3ZvaWQgRGVwcmVjYXRlZE11dGV4
Ojpsb2NrKCkKIHsKICAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmbV9tdXRleC5tX2ludGVybmFs
TXV0ZXgpOwogICAgICsrbV9tdXRleC5tX3JlY3Vyc2lvbkNvdW50OwogfQogICAgIAogI3ByYWdt
YSB3YXJuaW5nKHN1cHByZXNzOiAyNjExNSkKLWJvb2wgTXV0ZXg6OnRyeUxvY2soKQorYm9vbCBE
ZXByZWNhdGVkTXV0ZXg6OnRyeUxvY2soKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGlzIG1vZGVs
ZWQgYWZ0ZXIgdGhlIGJlaGF2aW9yIG9mIHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaywKICAgICAvLyB3
aGljaCB3aWxsIHJldHVybiBhbiBlcnJvciBpZiB0aGUgbG9jayBpcyBhbHJlYWR5IG93bmVkIGJ5
IHRoZQpAQCAtMzIxLDcgKzMyMSw3IEBAIGJvb2wgTXV0ZXg6OnRyeUxvY2soKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBNdXRleDo6dW5sb2NrKCkKK3ZvaWQgRGVwcmVjYXRlZE11dGV4
Ojp1bmxvY2soKQogewogICAgIEFTU0VSVChtX211dGV4Lm1fcmVjdXJzaW9uQ291bnQpOwogICAg
IC0tbV9tdXRleC5tX3JlY3Vyc2lvbkNvdW50OwpAQCAtNDU4LDEyICs0NTgsMTIgQEAgVGhyZWFk
Q29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKCkKICAgICBDbG9zZUhhbmRsZShtX2NvbmRpdGlv
bi5tX3VuYmxvY2tMb2NrKTsKIH0KIAotdm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQoTXV0ZXgm
IG11dGV4KQordm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQoRGVwcmVjYXRlZE11dGV4JiBtdXRl
eCkKIHsKICAgICBtX2NvbmRpdGlvbi50aW1lZFdhaXQobXV0ZXguaW1wbCgpLCBJTkZJTklURSk7
CiB9CiAKLWJvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoTXV0ZXgmIG11dGV4LCBkb3Vi
bGUgYWJzb2x1dGVUaW1lKQorYm9vbCBUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdChEZXByZWNh
dGVkTXV0ZXgmIG11dGV4LCBkb3VibGUgYWJzb2x1dGVUaW1lKQogewogICAgIERXT1JEIGludGVy
dmFsID0gYWJzb2x1dGVUaW1lVG9XYWl0VGltZW91dEludGVydmFsKGFic29sdXRlVGltZSk7CiAK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV1RGL3d0Zi9X
b3JrUXVldWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDEwICsxMTMsMTAgQEAgcHJpdmF0ZToK
ICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgdm9sYXRpbGUgTE9ORyBtX2lzV29ya1RocmVhZFJlZ2lz
dGVyZWQ7CiAKLSAgICBNdXRleCBtX3dvcmtJdGVtUXVldWVMb2NrOworICAgIERlcHJlY2F0ZWRN
dXRleCBtX3dvcmtJdGVtUXVldWVMb2NrOwogICAgIFZlY3RvcjxSZWZQdHI8V29ya0l0ZW1XaW4+
PiBtX3dvcmtJdGVtUXVldWU7CiAKLSAgICBNdXRleCBtX2hhbmRsZXNMb2NrOworICAgIERlcHJl
Y2F0ZWRNdXRleCBtX2hhbmRsZXNMb2NrOwogICAgIEhhc2hNYXA8SEFORExFLCBSZWZQdHI8SGFu
ZGxlV29ya0l0ZW0+PiBtX2hhbmRsZXM7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOwpJbmRl
eDogU291cmNlL1dURi93dGYvZHRvYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
ZHRvYS5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XVEYvd3RmL2R0b2EuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1NdXRl
eCogc19kdG9hUDVNdXRleDsKK0RlcHJlY2F0ZWRNdXRleCogc19kdG9hUDVNdXRleDsKIAogdHlw
ZWRlZiB1bmlvbiB7CiAgICAgZG91YmxlIGQ7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9kdG9hLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvZHRvYS5oCShyZXZpc2lvbiAxODc4ODkpCisr
KyBTb3VyY2UvV1RGL3d0Zi9kdG9hLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDkgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKLWNsYXNzIE11dGV4OworY2xhc3MgRGVwcmVjYXRlZE11dGV4
OwogCi1leHRlcm4gTXV0ZXgqIHNfZHRvYVA1TXV0ZXg7CitleHRlcm4gRGVwcmVjYXRlZE11dGV4
KiBzX2R0b2FQNU11dGV4OwogCiB0eXBlZGVmIGNoYXIgRHRvYUJ1ZmZlcls4MF07CiAKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlRWZsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZUVmbC5jcHAJKHJldmlzaW9uIDE4Nzg4OSkK
KysrIFNvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlRWZsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTUsNyArOTUsNyBAQCBEaXNwYXRjaFF1ZXVlOjp+RGlzcGF0Y2hRdWV1ZSgpCiB2b2lk
IERpc3BhdGNoUXVldWU6OmRpc3BhdGNoKHN0ZDo6dW5pcXVlX3B0cjxXb3JrSXRlbT4gaXRlbSkK
IHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtc0xvY2spOwor
ICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1zTG9jayk7CiAg
ICAgICAgIG1fd29ya0l0ZW1zLmFwcGVuZChXVEY6Om1vdmUoaXRlbSkpOwogICAgIH0KIApAQCAt
MTQ2LDcgKzE0Niw3IEBAIHZvaWQgRGlzcGF0Y2hRdWV1ZTo6cGVyZm9ybVdvcmsoKQogICAgICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdvcmtJdGVtPj4gd29ya0l0ZW1zOwogCiAgICAgICAg
IHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtc0xvY2spOworICAg
ICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtc0xvY2spOwog
ICAgICAgICAgICAgaWYgKG1fd29ya0l0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIERpc3BhdGNoUXVldWU6OnBlcmZvcm1U
aW1lcldvcmsoKQogCiAgICAgewogICAgICAgICAvLyBQcm90ZWN0cyBtX3RpbWVyV29ya0l0ZW1z
LgotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV90aW1lcldvcmtJdGVtc0xvY2spOworICAg
ICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGltZXJXb3JrSXRlbXNMb2NrKTsK
ICAgICAgICAgaWYgKG1fdGltZXJXb3JrSXRlbXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBEaXNwYXRjaFF1ZXVlOjppbnNlcnRUaW1l
cldvcmtJdGVtKAogCiAgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKIAotICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3RpbWVyV29ya0l0ZW1zTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tlcihtX3RpbWVyV29ya0l0ZW1zTG9jayk7CiAgICAgLy8gVGhlIGl0ZW1zIHNob3VsZCBi
ZSBvcmRlcmVkIGJ5IGV4cGlyZSB0aW1lLgogICAgIGZvciAoOyBwb3NpdGlvbiA8IG1fdGltZXJX
b3JrSXRlbXMuc2l6ZSgpOyArK3Bvc2l0aW9uKQogICAgICAgICBpZiAoaXRlbS0+ZXhwaXJhdGlv
blRpbWVOYW5vU2Vjb25kcygpIDwgbV90aW1lcldvcmtJdGVtc1twb3NpdGlvbl0tPmV4cGlyYXRp
b25UaW1lTmFub1NlY29uZHMoKSkKQEAgLTIyOSwxNCArMjI5LDE0IEBAIHZvaWQgRGlzcGF0Y2hR
dWV1ZTo6ZGlzcGF0Y2hRdWV1ZVRocmVhZCgKIAogdm9pZCBEaXNwYXRjaFF1ZXVlOjp3YWtlVXBU
aHJlYWQoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dyaXRlVG9QaXBlRGVzY3JpcHRv
ckxvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV93cml0ZVRvUGlwZURl
c2NyaXB0b3JMb2NrKTsKICAgICBpZiAod3JpdGUobV93cml0ZVRvUGlwZURlc2NyaXB0b3IsICZ3
YWtlVXBUaHJlYWRNZXNzYWdlLCBzaXplb2YoY2hhcikpID09IC0xKQogICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byB3YWtlIHVwIERpc3BhdGNoUXVldWUgVGhyZWFkIik7CiB9CiAKIHRpbWV2
YWwqIERpc3BhdGNoUXVldWU6OmdldE5leHRUaW1lT3V0KCkgY29uc3QKIHsKLSAgICBNdXRleExv
Y2tlciBsb2NrZXIobV90aW1lcldvcmtJdGVtc0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV90aW1lcldvcmtJdGVtc0xvY2spOwogICAgIGlmIChtX3RpbWVyV29ya0l0
ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L2VmbC9EaXNwYXRjaFF1ZXVlRWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvZWZs
L0Rpc3BhdGNoUXVldWVFZmwuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dURi93dGYv
ZWZsL0Rpc3BhdGNoUXVldWVFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBw
cml2YXRlOgogICAgIGludCBtX21heEZpbGVEZXNjcmlwdG9yOwogICAgIGludCBtX3JlYWRGcm9t
UGlwZURlc2NyaXB0b3I7CiAgICAgaW50IG1fd3JpdGVUb1BpcGVEZXNjcmlwdG9yOwotICAgIE11
dGV4IG1fd3JpdGVUb1BpcGVEZXNjcmlwdG9yTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV93
cml0ZVRvUGlwZURlc2NyaXB0b3JMb2NrOwogCiAgICAgYm9vbCBtX2lzVGhyZWFkUnVubmluZzsK
IApAQCAtNzEsMTAgKzcxLDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBtX3NvY2tldEV2ZW50SGFuZGxlcjsKIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V29y
a0l0ZW0+PiBtX3dvcmtJdGVtczsKLSAgICBNdXRleCBtX3dvcmtJdGVtc0xvY2s7CisgICAgRGVw
cmVjYXRlZE11dGV4IG1fd29ya0l0ZW1zTG9jazsKIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8VGltZXJXb3JrSXRlbT4+IG1fdGltZXJXb3JrSXRlbXM7Ci0gICAgbXV0YWJsZSBNdXRleCBt
X3RpbWVyV29ya0l0ZW1zTG9jazsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX3RpbWVy
V29ya0l0ZW1zTG9jazsKIH07CiAKICNlbmRpZiAvLyBEaXNwYXRjaFF1ZXVlRWZsX2gKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL2VmbC9SdW5Mb29wRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9lZmwvUnVuTG9vcEVmbC5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9X
VEYvd3RmL2VmbC9SdW5Mb29wRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBA
QCB2b2lkIFJ1bkxvb3A6Ondha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvCiAgICAgUnVuTG9vcCog
bG9vcCA9IHN0YXRpY19jYXN0PFJ1bkxvb3AqPihkYXRhKTsKIAogICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKGxvb3AtPm1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWRMb2NrKTsKKyAgICAg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihsb29wLT5tX3dha2VVcEV2ZW50UmVxdWVz
dGVkTG9jayk7CiAgICAgICAgIGxvb3AtPm1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQgPSBmYWxzZTsK
ICAgICB9CiAKQEAgLTY5LDE0ICs2OSwxNCBAQCB2b2lkIFJ1bkxvb3A6Ondha2VVcEV2ZW50KHZv
aWQqIGRhdGEsIHZvCiB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiB7CiAgICAgewotICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV93YWtlVXBFdmVudFJlcXVlc3RlZExvY2spOworICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWRMb2NrKTsK
ICAgICAgICAgaWYgKG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQgPSB0cnVlOwogICAgIH0KIAogICAgIHsK
LSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGlwZUxvY2spOworICAgICAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGlwZUxvY2spOwogICAgICAgICBlY29yZV9waXBlX3dy
aXRlKG1fcGlwZS5nZXQoKSwgd2FrdXBFY29yZVBpcGVNZXNzYWdlLCBlY29yZVBpcGVNZXNzYWdl
U2l6ZSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1h
cGhvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2Vt
YXBob3JlLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dURi93dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIEJpbmFy
eVNlbWFwaG9yZTo6fkJpbmFyeVNlbWFwaG9yZSgpCiAKIHZvaWQgQmluYXJ5U2VtYXBob3JlOjpz
aWduYWwoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgbV9pc1NldCA9IHRydWU7CiAg
ICAgbV9jb25kaXRpb24uc2lnbmFsKCk7CkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgQmluYXJ5U2Vt
YXBob3JlOjpzaWduYWwoKQogCiBib29sIEJpbmFyeVNlbWFwaG9yZTo6d2FpdChkb3VibGUgYWJz
b2x1dGVUaW1lKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgYm9vbCB0aW1lZE91dCA9
IGZhbHNlOwogICAgIHdoaWxlICghbV9pc1NldCkgewpJbmRleDogU291cmNlL1dURi93dGYvdGhy
ZWFkcy9CaW5hcnlTZW1hcGhvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV1RGL3d0
Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU2V0OwogCi0gICAgTXV0ZXggbV9t
dXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9tdXRleDsKICAgICBUaHJlYWRDb25kaXRpb24g
bV9jb25kaXRpb247CiB9OwogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAko
cmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBXb3JrUXVldWU6OmhhbmRsZUNh
bGxiYWNrKHZvaWQqIGNvbgogICAgIFJlZlB0cjxXb3JrUXVldWU+IHF1ZXVlID0gaXRlbS0+cXVl
dWUoKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhxdWV1ZS0+bV93b3JrSXRl
bVF1ZXVlTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKHF1ZXVlLT5t
X3dvcmtJdGVtUXVldWVMb2NrKTsKICAgICAgICAgcXVldWUtPm1fd29ya0l0ZW1RdWV1ZS5hcHBl
bmQoaXRlbSk7CiAKICAgICAgICAgLy8gSWYgbm8gb3RoZXIgdGhyZWFkIGlzIHBlcmZvcm1pbmcg
d29yaywgd2UgY2FuIGRvIGl0IG9uIHRoaXMgdGhyZWFkLgpAQCAtMTIwLDcgKzEyMCw3IEBAIHZv
aWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyQXNXb3JrVGhyZWFkKCkKIHZvaWQgV29ya1F1ZXVlOjpw
bGF0Zm9ybUludmFsaWRhdGUoKQogewogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBNdXRleExv
Y2tlciBsb2NrKG1faGFuZGxlc0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
KG1faGFuZGxlc0xvY2spOwogICAgIEFTU0VSVChtX2hhbmRsZXMuaXNFbXB0eSgpKTsKICNlbmRp
ZgogCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0
ZSgpCiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVu
Y3Rpb24pCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1RdWV1ZUxvY2spOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRlbVF1ZXVlTG9jayk7CiAg
ICAgcmVmKCk7CiAgICAgbV93b3JrSXRlbVF1ZXVlLmFwcGVuZChXb3JrSXRlbVdpbjo6Y3JlYXRl
KGZ1bmN0aW9uLCB0aGlzKSk7CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdHJ1Y3QgVGltZXJDb250
ZXh0IDogcHVibGljIFRocmVhZFNhZmVSCiAKICAgICBXb3JrUXVldWUqIHF1ZXVlOwogICAgIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbjsKLSAgICBNdXRleCB0aW1lck11dGV4OworICAg
IERlcHJlY2F0ZWRNdXRleCB0aW1lck11dGV4OwogICAgIEhBTkRMRSB0aW1lcjsKIAogcHJpdmF0
ZToKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6dGltZXJDYWxsYmFjayh2b2lk
KiBjb250CiAKICAgICB0aW1lckNvbnRleHQtPnF1ZXVlLT5kaXNwYXRjaCh0aW1lckNvbnRleHQt
PmZ1bmN0aW9uKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2sodGltZXJDb250ZXh0LT50aW1lck11
dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayh0aW1lckNvbnRleHQtPnRpbWVy
TXV0ZXgpOwogICAgIEFTU0VSVCh0aW1lckNvbnRleHQtPnRpbWVyKTsKICAgICBBU1NFUlQodGlt
ZXJDb250ZXh0LT5xdWV1ZS0+bV90aW1lclF1ZXVlKTsKICAgICBpZiAoITo6RGVsZXRlVGltZXJR
dWV1ZVRpbWVyKHRpbWVyQ29udGV4dC0+cXVldWUtPm1fdGltZXJRdWV1ZSwgdGltZXJDb250ZXh0
LT50aW1lciwgMCkpIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hBZnRlcihzdGQ6OmNocm9uCiAgICAgICAgIC8vIFRoZSB0aW1lciBjYWxsYmFjayBjb3VsZCBm
aXJlIGJlZm9yZSA6OkNyZWF0ZVRpbWVyUXVldWVUaW1lciBldmVuIHJldHVybnMsIHNvIHdlIHBy
b3RlY3QKICAgICAgICAgLy8gY29udGV4dC0+dGltZXIgd2l0aCBhIG11dGV4IHRvIGVuc3VyZSB0
aGUgdGltZXIgY2FsbGJhY2sgZG9lc24ndCBhY2Nlc3MgaXQgYmVmb3JlIHRoZQogICAgICAgICAv
LyB0aW1lciBoYW5kbGUgaGFzIGJlZW4gc3RvcmVkIGluIGl0LgotICAgICAgICBNdXRleExvY2tl
ciBsb2NrKGNvbnRleHQtPnRpbWVyTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9jayhjb250ZXh0LT50aW1lck11dGV4KTsKIAogICAgICAgICAvLyBTaW5jZSBvdXIgdGlt
ZXIgY2FsbGJhY2sgaXMgcXVpY2ssIHdlIGNhbiBleGVjdXRlIGluIHRoZSB0aW1lciB0aHJlYWQg
aXRzZWxmIGFuZCBhdm9pZAogICAgICAgICAvLyBhbiBleHRyYSB0aHJlYWQgc3dpdGNoIG92ZXIg
dG8gYSB3b3JrZXIgdGhyZWFkLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3OTMyKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgzIEBA
CisyMDE1LTA4LTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1lIE11dGV4IHRvIERlcHJlY2F0ZWRNdXRleAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBqdXN0
IGEgcmVuYW1pbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpBc3luY0F1ZGlv
RGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6cnVuTG9vcCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmFkZEF1ZGlvQ29uc3VtZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6cmVtb3ZlQXVkaW9Db25zdW1lcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzZXRBdWRpb0Zvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8pOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpydW5UcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6aW5Qcm9ncmVzc1RyYW5zYWN0aW9u
Q29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpoYXNQZW5kaW5nVHJhbnNh
Y3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OnBlcmZvcm1PcGVuQW5kVmVy
aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OmlzSW50ZXJydXB0
ZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6ZGF0YWJhc2VUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZXRQYXVzZWQpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6c2V0UGF1c2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpoYW5kbGVQYXVzZWRRdWV1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6cmV0cnlDYW5Fc3RhYmxpc2hEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Omhhc0VudHJ5Rm9yT3JpZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Y2xvc2VBbGxEYXRhYmFzZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmln
aW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXREYXRhYmFzZURldGFp
bHMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkb25lQ3JlYXRpbmdEYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmdldE9wZW5EYXRhYmFzZXMp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cXVvdGFGb3JPcmlnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcGVuRGF0YWJhc2VNdXRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFiYXNlc1BhdXNlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpu
b3RpZmljYXRpb25NdXRleCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNj
aGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6bm90aWZ5RGF0YWJhc2VzQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpbkxvY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNr
V3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMQ2FsbGJhY2tXcmFwcGVyOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6OnVud3JhcCk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6Omhhc0NhbGxiYWNrKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmRvQ2xlYW51cCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmVucXVldWVTdGF0ZW1lbnRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Z2V0TmV4dFN0YXRlbWVudCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNjaGVkdWxlRXhlY3V0aW9uVGVy
bWluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNF
eGVjdXRpb25UZXJtaW5hdGluZyk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5oOgorICAgICAgICAqIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1l
c3NhZ2VUb1JlbW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OnRy
eUdldE1lc3NhZ2VGcm9tUmVtb3RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hh
bm5lbDo6aXNDb25uZWN0ZWRUbyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWw6Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENo
YW5uZWw6OmxvY2FsbHlFbnRhbmdsZWRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsOjpzZXRSZW1vdGVQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjplbnRhbmdsZWRDaGFubmVsKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpjbG9zZUludGVybmFsKToKKyAgICAg
ICAgKiBkb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oOgorICAgICAgICAq
IGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2U6OnJlbW92ZUFsbEljb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6
c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJh
c2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6Okljb25EYXRhYmFzZTo6cmV0YWluSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6SWNvbkRhdGFiYXNlOjpwZXJmb3JtUmV0YWluSWNvbkZvclBhZ2VVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpyZWxlYXNlSWNvbkZvclBhZ2VVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpwZXJmb3JtUmVsZWFzZUljb25Gb3JQYWdlVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c2V0SWNvblVSTEZvclBhZ2VVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZv
ckljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0lj
b25EYXRhS25vd25Gb3JJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6
cGFnZVVSTE1hcHBpbmdDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnJl
dGFpbmVkUGFnZVVSTENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6aWNv
blJlY29yZENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6aWNvblJlY29y
ZENvdW50V2l0aERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjp3YWtlU3lu
Y1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmlzT3BlbkJlc2lkZXNN
YWluVGhyZWFkQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGF0
YWJhc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVQ
YWdlVVJMUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6aWNvbkRhdGFi
YXNlU3luY1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnBlcmZvcm1P
cGVuSW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpwZXJm
b3JtVVJMSW1wb3J0KToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY1RocmVh
ZE1haW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cGVyZm9ybVBlbmRp
bmdSZXRhaW5BbmRSZWxlYXNlT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2U6OnJlYWRGcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNl
Ojp3cml0ZVRvRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpwcnVu
ZVVucmV0YWluZWRJY29ucyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmNsZWFu
dXBTeW5jVGhyZWFkKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWU6OnNob3VsZEhhbmRsZVdoZWVsRXZlbnRTeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzZXRNYWluRnJhbWVQaW5TdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjptYWluRnJhbWVTY3JvbGxQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzZXRNYWluRnJhbWVTY3JvbGxQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjppc1BvaW50SW5Ob25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjppc1J1
YmJlckJhbmRJblByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNl
dE1haW5GcmFtZUlzUnViYmVyQmFuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlOjppc1Njcm9sbFNuYXBJblByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWU6OnNldE1haW5GcmFtZUlzU2Nyb2xsU25hcHBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZTo6c2V0Q2FuUnViYmVyQmFuZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlOjpydWJiZXJCYW5kc0F0Qm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRUb3ApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWU6OnNjcm9sbFBpbm5pbmdCZWhhdmlvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlOjp3aWxsV2hlZWxFdmVudFN0YXJ0U3dpcGVHZXN0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWU6OmxhdGNoZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWU6OnNldExhdGNoZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWU6OmNsZWFyTGF0Y2hlZE5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlTG9hZGVyOjp3YWl0Rm9yTG9hZGVyVGhyZWFkQ29t
cGxldGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFJlY2VpdmVkTWVt
b3J5UHJlc3N1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpj
bGVhck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6c2hvdWxkV2FpdEZvck1lbW9yeUNsZWFyTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlSWZOZWVkZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZy
ZXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c2V0TW9ub3Rvbmlj
QW5pbWF0aW9uU3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6bXV0ZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXREZWxheUNhbGxiYWNrcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmNsZWFyTWFpblRocmVh
ZFBlbmRpbmdGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6ZGlzcGF0Y2hOb3RpZmljYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y2FsbGJh
Y2tDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6On5BVkZXcmFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6Om1hcExvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6QVZGV3JhcHBlcjo6YWRkVG9NYXApOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6
cmVtb3ZlRnJvbU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpwZXJpb2RpY1Rp
bWVPYnNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nl
c3NOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bG9hZFBsYXlh
YmxlQ29tcGxldGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6Omxv
YWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFw
cGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBl
cjo6cHJvY2Vzc0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdpYmxlT3V0
cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVy
OjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lcjo6dGFnc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVz
aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6
ZGlzcGxheUxpbmtGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVtb3ZlTGlzdGVuZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpu
b3RpZnlEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6SW52b2tlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6b25NZWRpYVBs
YXllckRlbGV0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUNhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0VGlsZXNPcGFxdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkb0xheW91dFRpbGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0Q3VycmVudFNjYWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0U2NhbGVDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05vdyk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lUaWxlQ2FjaGU6OmxheW91dFRpbGVzTm93Rm9yUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbE5vblZpc2libGVUaWxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbFRpbGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlRm9yZWdyb3VuZFRpbGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0Q29udGVudFJlcGxhY2VtZW50SW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpjb250ZW50UmVwbGFjZW1lbnRJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnRpbGVDcmVhdGlvblRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjp1cGRhdGVUaWxp
bmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0VGlsaW5nTW9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmRvUGVuZGluZ1JlcGFpbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6Zmx1c2hTYXZlZERpc3BsYXlS
ZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnByZXBhcmVUb0RyYXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW06CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lUaWxlTGF5ZXJQb29sOjphZGRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lUaWxlTGF5ZXJQb29sOjp0YWtlTGF5ZXJXaXRoU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lUaWxlTGF5ZXJQb29sOjpzZXRDYXBhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lUaWxlTGF5ZXJQb29sOjpwcnVuZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlTGF5
ZXJQb29sOjpkcmFpbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWRNYW5hZ2VyOjphZGQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkTWFuYWdlcjo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxEb3dubG9hZE1hbmFnZXI6OmdldEFjdGl2ZURvd25sb2FkQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkTWFuYWdlcjo6Z2V0UGVuZGluZ0Rvd25sb2Fk
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkTWFuYWdlcjo6c3RvcFRocmVh
ZElmSWRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWRNYW5hZ2VyOjp1cGRhdGVI
YW5kbGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxEb3dubG9hZDo6fkN1cmxEb3dubG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybERvd25sb2FkOjpnZXRUZW1wUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
RG93bmxvYWQ6OmdldFVybCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmdldFJl
c3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxEb3dubG9hZDo6Y2xvc2VGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxEb3dubG9hZDo6ZGlkRmFpbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llSmFyUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRSZXNvdXJjZU11dGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OmN1cmxfbG9ja19jYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjdXJsX3VubG9ja19j
YWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UUxEaXJlY3RvcnlBdHRyaWJ1dGVzKToKKyAgICAgICAgKHFsUHJl
dmlld0NvbnZlcnRlckRpY3Rpb25hcnlNdXRleCk6CisgICAgICAgIChXZWJDb3JlOjphZGRRTFBy
ZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpxbFByZXZp
ZXdDb252ZXJ0ZXJVVElGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlUUxQcmV2aWV3
Q29udmVydGVyRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OnNhZmVRTFVSTEZvckRvY3VtZW50
VVJMQW5kUmVzb3VyY2VVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6bWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2U6OnNldE1heGltdW1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlOjpwYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6ZnJlZVNw
YWNlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6dG90YWxTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNv
bW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldEF1dGhvcml6ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2U6OmRhdGFiYXNlTXV0ZXgpOgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50OjpwcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c3RlcCk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6Ondv
cmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnN0b3ApOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisKIDIwMTUtMDgtMDQgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBDVFRFIHRoZSBkYXRhYmFzZSB0
YXNrIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBc3luY0F1ZGlvRGVjb2Rl
cjo6QXN5bmNBdWRpb0RlY29kZXIoKQogewogICAgIC8vIFN0YXJ0IHdvcmtlciB0aHJlYWQuCi0g
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOworICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAgICAgbV90aHJlYWRJ
RCA9IGNyZWF0ZVRocmVhZChBc3luY0F1ZGlvRGVjb2Rlcjo6dGhyZWFkRW50cnksIHRoaXMsICJB
dWRpbyBEZWNvZGVyIik7CiB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBBc3luY0F1ZGlvRGVj
b2Rlcjo6cnVuTG9vcCgpCiAKICAgICB7CiAgICAgICAgIC8vIFdhaXQgZm9yIHVudGlsIHdlIGhh
dmUgbV90aHJlYWRJRCBlc3RhYmxpc2hlZCBiZWZvcmUgc3RhcnRpbmcgdGhlIHJ1biBsb29wLgot
ICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CisgICAgICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAgICAg
fQogCiAgICAgLy8gS2VlcCBydW5uaW5nIGRlY29kaW5nIHRhc2tzIHVudGlsIHdlJ3JlIGtpbGxl
ZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5j
QXVkaW9EZWNvZGVyLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyAr
ODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuTG9vcCgpOwogCiAgICAgV1RGOjpUaHJlYWRJ
ZGVudGlmaWVyIG1fdGhyZWFkSUQ7Ci0gICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4Owor
ICAgIERlcHJlY2F0ZWRNdXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CiAgICAgTWVzc2FnZVF1
ZXVlPERlY29kaW5nVGFzaz4gbV9xdWV1ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkocmV2aXNpb24gMTg3ODg5KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgwLDcgKzM4MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25uZWN0
aW9uQ291bnQgeyAwIH07CiAKICAgICAvLyBHcmFwaCBsb2NraW5nLgotICAgIE11dGV4IG1fY29u
dGV4dEdyYXBoTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fY29udGV4dEdyYXBoTXV0ZXg7
CiAgICAgdm9sYXRpbGUgVGhyZWFkSWRlbnRpZmllciBtX2F1ZGlvVGhyZWFkIHsgMCB9OwogICAg
IHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9ncmFwaE93bmVyVGhyZWFkOyAvLyBpZiB0aGUg
bG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVy
d2lzZSA9PSBVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNl
LmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTMgKzYz
LDEzIEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIE1lZGlhU3QKIAogdm9pZCBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlOjphZGRBdWRpb0NvbnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyPiBjb25zdW1lcikKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOwogICAgIG1fYXVkaW9Db25zdW1lcnMuYXBwZW5kKGNvbnN1
bWVyKTsKIH0KIAogYm9vbCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpyZW1vdmVBdWRpb0NvbnN1
bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIpCiB7Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKICAgICBzaXplX3QgcG9zID0gbV9hdWRp
b0NvbnN1bWVycy5maW5kKGNvbnN1bWVyKTsKICAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7CiAg
ICAgICAgIG1fYXVkaW9Db25zdW1lcnMucmVtb3ZlKHBvcyk7CkBAIC04MCwxNCArODAsMTQgQEAg
Ym9vbCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpyZW1vdmVBdWRpbwogCiB2b2lkIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2U6OnNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3Vt
ZXJzTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3Vt
ZXJzTG9jayk7CiAgICAgZm9yIChhdXRvJiBjb25zdW1lciA6IG1fYXVkaW9Db25zdW1lcnMpCiAg
ICAgICAgIGNvbnN1bWVyLT5zZXRGb3JtYXQobnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSk7
CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVz
KiBidXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOwogICAgIGZvciAoYXV0byYgY29uc3VtZXIgOiBtX2F1ZGlv
Q29uc3VtZXJzKQogICAgICAgICBjb25zdW1lci0+Y29uc3VtZUF1ZGlvKGJ1cywgbnVtYmVyT2ZG
cmFtZXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZSgpOwogCiAgICAgU3RyaW5nIG1fZGV2aWNlSWQ7Ci0gICAgTXV0ZXggbV9hdWRp
b0NvbnN1bWVyc0xvY2s7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fYXVkaW9Db25zdW1lcnNMb2Nr
OwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPj4gbV9hdWRpb0Nv
bnN1bWVyczsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIG1fY3VycmVudFN0YXRlczsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2
b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRh
YmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAKICAgICB7
Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4
KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzc011dGV4KTsKIAogICAgICAgICAvLyBDbGVhbiB1cCB0cmFuc2FjdGlvbnMgdGhhdCBo
YXZlIG5vdCBiZWVuIHNjaGVkdWxlZCB5ZXQ6CiAgICAgICAgIC8vIFRyYW5zYWN0aW9uIHBoYXNl
IDEgY2xlYW51cC4gU2VlIGNvbW1lbnQgb24gIldoYXQgaGFwcGVucyBpZiBhCkBAIC0xNzQsNyAr
MTc0LDcgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAKIFBhc3NSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiBEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24oUGFzc1Jl
ZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24sIGJvb2wgcmVhZE9ubHksIGNvbnN0IENo
YW5nZVZlcnNpb25EYXRhKiBkYXRhKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIGlmICghbV9pc1RyYW5zYWN0aW9u
UXVldWVFbmFibGVkKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMjAyLDE0ICsyMDIsMTQgQEAg
dm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoUwogCiB2b2lkIERhdGFiYXNl
OjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoKQogewotICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIG1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQog
CiBib29sIERhdGFiYXNlOjpoYXNQZW5kaW5nVHJhbnNhY3Rpb24oKQogewotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIHJl
dHVybiBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyB8fCAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1w
dHkoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgRGF0YWJhc2VUYWJsZU5hbWVz
VGFzazsKIAogICAgIERlcXVlPFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+PiBtX3RyYW5z
YWN0aW9uUXVldWU7Ci0gICAgTXV0ZXggbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKKyAg
ICBEZXByZWNhdGVkTXV0ZXggbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKICAgICBib29s
IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzOwogICAgIGJvb2wgbV9pc1RyYW5zYWN0aW9uUXVldWVF
bmFibGVkOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQmFja2VuZEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBib29sIERhdGFiYXNlQmFja2Vu
ZEJhc2U6OnBlcmZvcm1PcGVuQW5kCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHsKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHdlIHdhaXQgdGlsbCB0aGUgYmFja2dyb3VuZCByZW1vdmFsIG9mIHRoZSBl
bXB0eSBkYXRhYmFzZSBmaWxlcyBmaW5pc2hlZCBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4gYW55IGRh
dGFiYXNlLgotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoRGF0YWJhc2VUcmFja2VyOjpvcGVu
RGF0YWJhc2VNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihE
YXRhYmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11dGV4KCkpOwogICAgIH0KICNlbmRpZgogCkBA
IC01OTMsNyArNTkzLDcgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmRCYXNlOjppbnRlcnJ1cHQoKQog
CiBib29sIERhdGFiYXNlQmFja2VuZEJhc2U6OmlzSW50ZXJydXB0ZWQoKQogewotICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX3NxbGl0ZURhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSk7CisgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3NxbGl0ZURhdGFiYXNlLmRhdGFiYXNlTXV0ZXgo
KSk7CiAgICAgcmV0dXJuIG1fc3FsaXRlRGF0YWJhc2UuaXNJbnRlcnJ1cHRlZCgpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBEYXRhYmFzZVRocmVhZCogRGF0YWJhc2VDb250ZXh0OjpkYXRhYmFzCiB7
CiAgICAgaWYgKCFtX2RhdGFiYXNlVGhyZWFkICYmICFtX2hhc09wZW5EYXRhYmFzZXMpIHsKICNp
ZiBQTEFURk9STShJT1MpCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9kYXRhYmFzZVRocmVh
ZE11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9kYXRhYmFzZVRo
cmVhZE11dGV4KTsKICNlbmRpZgogICAgICAgICAvLyBJdCdzIE9LIHRvIGFzayBmb3IgdGhlIG1f
ZGF0YWJhc2VUaHJlYWQgYWZ0ZXIgd2UndmUgcmVxdWVzdGVkCiAgICAgICAgIC8vIHRlcm1pbmF0
aW9uIGJlY2F1c2Ugd2UncmUgc3RpbGwgdXNpbmcgaXQgdG8gZXhlY3V0ZSB0aGUgY2xvc2luZwpA
QCAtMTgzLDcgKzE4Myw3IEBAIERhdGFiYXNlVGhyZWFkKiBEYXRhYmFzZUNvbnRleHQ6OmRhdGFi
YXMKICNpZiBQTEFURk9STShJT1MpCiB2b2lkIERhdGFiYXNlQ29udGV4dDo6c2V0UGF1c2VkKGJv
b2wgcGF1c2VkKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9kYXRhYmFzZVRocmVhZE11dGV4
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX2RhdGFiYXNlVGhyZWFkTXV0ZXgp
OwogCiAgICAgbV9wYXVzZWQgPSBwYXVzZWQ7CiAgICAgaWYgKG1fZGF0YWJhc2VUaHJlYWQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VDb250ZXh0LmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2
LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRGF0YWJhc2VNYW5hZ2VyOwogCiAjaWYg
UExBVEZPUk0oSU9TKQotICAgIE11dGV4IG1fZGF0YWJhc2VUaHJlYWRNdXRleDsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXggbV9kYXRhYmFzZVRocmVhZE11dGV4OwogICAgIGJvb2wgbV9wYXVzZWQ7CiAj
ZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUYXNrLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcg
KzU5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbV90YXNrQ29tcGxldGVkOwot
ICAgIE11dGV4IG1fc3luY2hyb25vdXNNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9zeW5j
aHJvbm91c011dGV4OwogICAgIFRocmVhZENvbmRpdGlvbiBtX3N5bmNocm9ub3VzQ29uZGl0aW9u
OwogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1faGFzQ2hlY2tlZEZvclRlcm1pbmF0aW9uOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRocmVhZC5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3
ICs2NCw3IEBAIERhdGFiYXNlVGhyZWFkOjp+RGF0YWJhc2VUaHJlYWQoKQogCiBib29sIERhdGFi
YXNlVGhyZWFkOjpzdGFydCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0
aW9uTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRp
b25NdXRleCk7CiAKICAgICBpZiAobV90aHJlYWRJRCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMzgsNyArMTM4LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6c2V0UGF1c2VkKGJvb2wgcGF1
cwogICAgIGlmIChtX3BhdXNlZCA9PSBwYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIE11
dGV4TG9ja2VyIHBhdXNlZExvY2tlcihtX3BhdXNlZE11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgcGF1c2VkTG9ja2VyKG1fcGF1c2VkTXV0ZXgpOwogICAgIG1fcGF1c2VkID0gcGF1
c2VkOwogICAgIGlmICghbV9wYXVzZWQpCiAgICAgICAgIHNjaGVkdWxlVGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPERhdGFiYXNlVW5wYXVzZVRhc2s+KCp0aGlzKSk7CkBAIC0xNTUsNyArMTU1LDcgQEAg
dm9pZCBEYXRhYmFzZVRocmVhZDo6aGFuZGxlUGF1c2VkUXVldWUoKQogCiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxEYXRhYmFzZVRhc2s+IHRhc2socGF1c2VkVGFzay5yZWxlYXNlKCkpOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBwYXVzZWRMb2NrZXIobV9wYXVzZWRNdXRl
eCk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgcGF1c2VkTG9ja2VyKG1fcGF1
c2VkTXV0ZXgpOwogICAgICAgICAgICAgaWYgKG1fcGF1c2VkKSB7CiAgICAgICAgICAgICAgICAg
bV9wYXVzZWRRdWV1ZS5hcHBlbmQoV1RGOjptb3ZlKHRhc2spKTsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFz
ZVRocmVhZCgpCiB7CiAgICAgewogICAgICAgICAvLyBXYWl0IGZvciBEYXRhYmFzZVRocmVhZDo6
c3RhcnQoKSB0byBjb21wbGV0ZS4KLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENy
ZWF0aW9uTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVh
ZENyZWF0aW9uTXV0ZXgpOwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlN0YXJ0ZWQgRGF0YWJh
c2VUaHJlYWQgJXAiLCB0aGlzKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgJKHJldmlzaW9uIDE4Nzg4
OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTQgKzc3LDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQgZGF0YWJhc2VUaHJlYWRTdGFydCh2b2lkKik7CiAgICAgdm9pZCBkYXRhYmFzZVRocmVh
ZCgpOwogCi0gICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4OworICAgIERlcHJlY2F0ZWRN
dXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CiAgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVh
ZElEOwogICAgIFJlZlB0cjxEYXRhYmFzZVRocmVhZD4gbV9zZWxmUmVmOwogCiAgICAgTWVzc2Fn
ZVF1ZXVlPERhdGFiYXNlVGFzaz4gbV9xdWV1ZTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgTWVz
c2FnZVF1ZXVlPERhdGFiYXNlVGFzaz4gbV9wYXVzZWRRdWV1ZTsKLSAgICBNdXRleCBtX3BhdXNl
ZE11dGV4OworICAgIERlcHJlY2F0ZWRNdXRleCBtX3BhdXNlZE11dGV4OwogICAgIHZvbGF0aWxl
IGJvb2wgbV9wYXVzZWQ7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2aXNpb24gMTg3
ODg5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIERhdGFiYXNlVHJhY2tlcjo6
RGF0YWJhc2VUcmFja2VyKGNvbnN0IFMKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFi
YXNlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgIEFTU0VSVCghbV9kYXRhYmFzZS5p
c09wZW4oKSk7CiAgICAgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGggPSBwYXRoLmlzb2xhdGVkQ29w
eSgpOwogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpjYW5Fc3Rh
Ymxpc2hEYXRhYmEKIHsKICAgICBlcnJvciA9IERhdGFiYXNlRXJyb3I6Ok5vbmU7CiAKLSAgICBN
dXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiA9IGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CiAKICAgICBpZiAoaXNE
ZWxldGluZ0RhdGFiYXNlT3JPcmlnaW5Gb3Iob3JpZ2luLCBuYW1lKSkgewpAQCAtMjE4LDcgKzIx
OCw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpyZXRyeUNhbkVzdGFibGlzaEQKIHsKICAgICBl
cnJvciA9IERhdGFiYXNlRXJyb3I6Ok5vbmU7CiAKLSAgICBNdXRleExvY2tlciBsb2NrRGF0YWJh
c2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFi
YXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCk7CiAKICAgICAvLyBXZSBoYXZlIGFscmVhZHkgZWxpbWluYXRl
ZCBvdGhlciB0eXBlcyBvZiBlcnJvcnMgaW4gY2FuRXN0YWJsaXNoRGF0YWJhc2UoKS4KQEAgLTI1
Nyw3ICsyNTcsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JPcmlnaW5OCiAK
IGJvb2wgRGF0YWJhc2VUcmFja2VyOjpoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiog
b3JpZ2luKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQp
OworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJk
KTsKICAgICByZXR1cm4gaGFzRW50cnlGb3JPcmlnaW5Ob0xvY2sob3JpZ2luKTsKIH0KIApAQCAt
Mjg2LDcgKzI4Niw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZVRyYWNrZXI6OmdldE0K
IHsKICAgICAvLyBUaGUgbWF4aW11bSBzaXplIGZvciBhIGRhdGFiYXNlIGlzIHRoZSBmdWxsIHF1
b3RhIGZvciBpdHMgb3JpZ2luLCBtaW51cyB0aGUgY3VycmVudCB1c2FnZSB3aXRoaW4gdGhlIG9y
aWdpbiwKICAgICAvLyBwbHVzIHRoZSBjdXJyZW50IHVzYWdlIG9mIHRoZSBnaXZlbiBkYXRhYmFz
ZQotICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICBT
ZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCk7CiAKICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEgPSBxdW90YUZvck9yaWdpbk5vTG9jayhvcmlnaW4p
OwpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpjbG9zZUFsbERhdGFi
YXNlcygKIHsKICAgICBWZWN0b3I8UmVmPERhdGFiYXNlPj4gb3BlbkRhdGFiYXNlczsKICAgICB7
Ci0gICAgICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VN
YXBHdWFyZCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBM
b2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNl
TWFwKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmb3IgKGF1dG8mIG5hbWVNYXAgOiBt
X29wZW5EYXRhYmFzZU1hcC0+dmFsdWVzKCkpIHsKQEAgLTMyOSw3ICszMjksNyBAQCB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxE
YXRhYmFzZUJhY2tlbmRCYXNlPj4gb3BlbkRhdGFiYXNlczsKICAgICB7Ci0gICAgICAgIE11dGV4
TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAg
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFi
YXNlTWFwR3VhcmQpOwogCiAgICAgICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC00MTQsMTMgKzQxNCwxMyBAQCBTdHJpbmcgRGF0YWJhc2VUcmFja2Vy
OjpmdWxsUGF0aEZvckRhdGFiCiAKIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRoRm9y
RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29s
IGNyZWF0ZUlmTm90RXhpc3RzKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2Rh
dGFiYXNlR3VhcmQpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9k
YXRhYmFzZUd1YXJkKTsKICAgICByZXR1cm4gZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9jayhvcmln
aW4sIG5hbWUsIGNyZWF0ZUlmTm90RXhpc3RzKS5pc29sYXRlZENvcHkoKTsKIH0KIAogdm9pZCBE
YXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBv
cmlnaW5zUmVzdWx0KQogewotICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNl
R3VhcmQpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFz
ZUd1YXJkKTsKIAogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4
aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC00NzMsNyArNDczLDcgQEAg
Ym9vbCBEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlTmFtZXNGb3JPcgogewogICAgIFZlY3RvcjxT
dHJpbmc+IHRlbXA7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9k
YXRhYmFzZUd1YXJkKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tEYXRhYmFz
ZShtX2RhdGFiYXNlR3VhcmQpOwogICAgICAgICBpZiAoIWRhdGFiYXNlTmFtZXNGb3JPcmlnaW5O
b0xvY2sob3JpZ2luLCB0ZW1wKSkKICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
NDkwLDcgKzQ5MCw3IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHMK
ICAgICBpbnQ2NF90IGV4cGVjdGVkVXNhZ2U7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICAgICAgb3BlblRyYWNr
ZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgICAgICBpZiAoIW1fZGF0
YWJhc2UuaXNPcGVuKCkpCkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OnNldERhdGFiYXNlRGV0YWlscwogICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2lu
LT5kYXRhYmFzZUlkZW50aWZpZXIoKTsKICAgICBpbnQ2NF90IGd1aWQgPSAwOwogCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogCiAgICAgb3BlblRyYWNr
ZXJEYXRhYmFzZShDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlz
T3BlbigpKQpAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXREYXRh
YmFzZURldGFpbHMKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVhdGluZ0RhdGFiYXNl
KERhdGFiYXNlKiBkYXRhYmFzZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9k
YXRhYmFzZUd1YXJkKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1f
ZGF0YWJhc2VHdWFyZCk7CiAgICAgZG9uZUNyZWF0aW5nRGF0YWJhc2UoZGF0YWJhc2UtPnNlY3Vy
aXR5T3JpZ2luKCksIGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOwogfQogCkBAIC01ODQs
NyArNTg0LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZShEYQogICAg
ICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1h
cExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogCiAgICAg
ICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCiAgICAgICAgICAgICBtX29wZW5EYXRhYmFzZU1h
cCA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7CkBAIC02MTQsNyArNjE0
LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZQogICAgICAgICBy
ZXR1cm47CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2so
bV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBv
cGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogCiAgICAgICAgIGlm
ICghbV9vcGVuRGF0YWJhc2VNYXApIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0
YWJhc2UKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmdldE9wZW5EYXRhYmFzZXMoU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBIYXNoU2V0PFJlZlB0cjxEYXRhYmFz
ZT4+KiBkYXRhYmFzZXMpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayht
X29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgb3BlbkRh
dGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKICAgICBpZiAoIW1fb3BlbkRh
dGFiYXNlTWFwKQogICAgICAgICByZXR1cm47CiAKQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6Z2V0T3BlbkRhdGFiYXNlcyhTCiAKIFJlZlB0cjxPcmlnaW5Mb2NrPiBE
YXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tGb3IoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgU3Ry
aW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCk7CiAK
ICAgICAvLyBUaGUgb3JpZ2luTG9ja01hcCBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIERhdGFi
YXNlVGhyZWFkcyBzaW5jZQpAQCAtNzUyLDEzICs3NTIsMTMgQEAgdW5zaWduZWQgbG9uZyBsb25n
IERhdGFiYXNlVHJhY2tlcjo6cXVvdAogCiB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFj
a2VyOjpxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIE11dGV4
TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICByZXR1cm4gcXVvdGFG
b3JPcmlnaW5Ob0xvY2sob3JpZ2luKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldFF1
b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICBp
ZiAocXVvdGFGb3JPcmlnaW5Ob0xvY2sob3JpZ2luKSA9PSBxdW90YSkKICAgICAgICAgcmV0dXJu
OwpAQCAtODg5LDcgKzg4OSw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4o
U2VjdXIKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBkYXRhYmFzZU5hbWVzOwogICAgIHsKLSAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICAg
ICAgb3BlblRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgICAg
ICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC05MTUsNyArOTE1LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihTZWN1
cgogICAgIH0KIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0
YWJhc2VHdWFyZCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2Uo
bV9kYXRhYmFzZUd1YXJkKTsKICAgICAgICAgZGVsZXRlT3JpZ2luTG9ja0ZvcihvcmlnaW4pOwog
ICAgICAgICBkb25lRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIApAQCAtMTA5Niw3ICsxMDk2LDcg
QEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVEZWxldGluZ09yaWdpbgogYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZSht
X2RhdGFiYXNlR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFi
YXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENy
ZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExMSwxMiArMTExMSwxMiBAQCBib29sIERh
dGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjCiAgICAgLy8gV2UgZHJvcCB0aGUgbG9j
ayBoZXJlIGJlY2F1c2UgaG9sZGluZyBsb2NrcyBkdXJpbmcgYSBjYWxsIHRvIGRlbGV0ZURhdGFi
YXNlRmlsZSB3aWxsIGRlYWRsb2NrLgogICAgIGlmICghZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdp
biwgbmFtZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9y
IGRhdGFiYXNlICVzIGluIG9yaWdpbiAlcyIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+
ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBNdXRleExvY2tl
ciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgICAgICBkb25lRGVsZXRp
bmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogCiAgICAg
U1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiREVMRVRFIEZST00gRGF0YWJh
c2VzIFdIRVJFIG9yaWdpbj0/IEFORCBuYW1lPT8iKTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxJVEVfT0spIHsKQEAgLTExNTYsNyArMTE1Niw3IEBAIGJvb2wgRGF0YWJhc2VU
cmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUKIAogI2lmbmRlZiBOREVCVUcKICAgICB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAg
ICAgIEFTU0VSVChpc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihvcmlnaW4sIG5hbWUpKTsK
ICAgICB9CiAjZW5kaWYKQEAgLTExNjcsNyArMTE2Nyw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2Vy
OjpkZWxldGVEYXRhYmFzZUZpbGUKICAgICAvLyBEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENs
b3NlKCksIHNpbmNlIHRoYXQgY2FuIGNhdXNlIGEgZGVhZGxvY2sKICAgICAvLyBkdXJpbmcgdGhl
IHN5bmNocm9ub3VzIERhdGFiYXNlVGhyZWFkIGNhbGwgaXQgdHJpZ2dlcnMuCiAgICAgewotICAg
ICAgICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3Vh
cmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayht
X29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlTWFwKSB7
CiAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgc29tZSBvcGVuIGRhdGFiYXNlcywgbGV0cyBjaGVj
ayBpZiB0aGV5IGFyZSBmb3IgdGhpcyBvcmlnaW4uCiAgICAgICAgICAgICBEYXRhYmFzZU5hbWVN
YXAqIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+Z2V0KG9yaWdpbik7CkBAIC0xMjEwLDcg
KzEyMTAsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lCiAgICAg
CiAgICAgewogICAgICAgICAvLyBBY3F1aXJlIHRoZSBsb2NrIGJlZm9yZSBjYWxsaW5nIG9wZW5U
cmFja2VyRGF0YWJhc2UuCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFi
YXNlR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1f
ZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlm
RG9lc05vdEV4aXN0KTsKICAgICB9CiAKQEAgLTEyMjYsNyArMTIyNiw3IEBAIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmUKICAgICAvLyBEYXRhYmFzZTo6bWFya0FzRGVs
ZXRlZEFuZENsb3NlKCksIHNpbmNlIHRoYXQgY2FuIGNhdXNlIGEgZGVhZGxvY2sKICAgICAvLyBk
dXJpbmcgdGhlIHN5bmNocm9ub3VzIERhdGFiYXNlVGhyZWFkIGNhbGwgaXQgdHJpZ2dlcnMuCiAg
ICAgewotICAgICAgICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFi
YXNlTWFwR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNl
TWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFi
YXNlTWFwKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9wZW5EYXRhYmFzZSA6ICptX29wZW5E
YXRhYmFzZU1hcCkgewogICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9IG9wZW5EYXRhYmFz
ZS5rZXk7CkBAIC0xMzMwLDkgKzEzMzAsOSBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRl
RGF0YWJhc2VGaWxlCiAgICAgcmV0dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNl
RmlsZShwYXRoKTsKIH0KIAotTXV0ZXgmIERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNlTXV0
ZXgoKQorRGVwcmVjYXRlZE11dGV4JiBEYXRhYmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11dGV4
KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0ZXg+IG11dGV4OworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxEZXByZWNhdGVkTXV0ZXg+IG11dGV4OwogICAgIHJldHVybiBtdXRl
eDsKIH0KIApAQCAtMTM1MCw3ICsxMzUwLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmVtcHR5
RGF0YWJhc2VGaWxlcwogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0RGF0YWJhc2VzUGF1c2Vk
KGJvb2wgcGF1c2VkKQogewotICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9v
cGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIG9wZW5EYXRh
YmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CiAgICAgaWYgKCFtX29wZW5EYXRh
YmFzZU1hcCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzcxLDkgKzEzNzEsOSBAQCB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6c2V0Q2xpZW50KERhdGFiYXNlCiAgICAgbV9jbGllbnQgPSBjbGllbnQ7
CiB9CiAKLXN0YXRpYyBNdXRleCYgbm90aWZpY2F0aW9uTXV0ZXgoKQorc3RhdGljIERlcHJlY2F0
ZWRNdXRleCYgbm90aWZpY2F0aW9uTXV0ZXgoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxNdXRleD4gbXV0ZXg7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERlcHJlY2F0ZWRNdXRl
eD4gbXV0ZXg7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCkBAIC0xMzg3LDcgKzEzODcsNyBAQCBz
dGF0aWMgTm90aWZpY2F0aW9uUXVldWUmIG5vdGlmaWNhdGlvblF1CiAKIHZvaWQgRGF0YWJhc2VU
cmFja2VyOjpzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG5vdGlm
aWNhdGlvbk11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobm90aWZp
Y2F0aW9uTXV0ZXgoKSk7CiAKICAgICBub3RpZmljYXRpb25RdWV1ZSgpLmFwcGVuZChzdGQ6OnBh
aXI8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU3RyaW5nPihvcmlnaW4tPmlzb2xhdGVkQ29weSgp
LCBuYW1lLmlzb2xhdGVkQ29weSgpKSk7CiAgICAgc2NoZWR1bGVGb3JOb3RpZmljYXRpb24oKTsK
QEAgLTE0MTMsNyArMTQxMyw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpub3RpZnlEYXRhYmFz
ZXNDaGEKIAogICAgIE5vdGlmaWNhdGlvblF1ZXVlIG5vdGlmaWNhdGlvbnM7CiAgICAgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobm90aWZpY2F0aW9uTXV0ZXgoKSk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobm90aWZpY2F0aW9uTXV0ZXgoKSk7CiAKICAgICAg
ICAgbm90aWZpY2F0aW9ucy5zd2FwKG5vdGlmaWNhdGlvblF1ZXVlKCkpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2Vy
LmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBw
dWJsaWM6CiAgICAgLy8gTW9iaWxlU2FmYXJpIHdpbGwgZ3JhYiB0aGlzIG11dGV4IG9uIHRoZSBt
YWluIHRocmVhZCBiZWZvcmUgZGlzcGF0Y2hpbmcgdGhlIHRhc2sgdG8gCiAgICAgLy8gY2xlYW4g
dXAgemVybyBieXRlIGRhdGFiYXNlIGZpbGVzLiAgQW55IG9wZXJhdGlvbnMgdG8gb3BlbiBuZXcg
ZGF0YWJhc2Ugd2lsbCBoYXZlIHRvCiAgICAgLy8gd2FpdCBmb3IgdGhhdCB0YXNrIHRvIGZpbmlz
aCBieSB3YWl0aW5nIG9uIHRoaXMgbXV0ZXguCi0gICAgc3RhdGljIE11dGV4JiBvcGVuRGF0YWJh
c2VNdXRleCgpOworICAgIHN0YXRpYyBEZXByZWNhdGVkTXV0ZXgmIG9wZW5EYXRhYmFzZU11dGV4
KCk7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZW1wdHlEYXRhYmFzZUZp
bGVzUmVtb3ZhbFRhc2tXaWxsQmVTY2hlZHVsZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCBlbXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFza0RpZEZpbmlzaCgpOwpAQCAtMTU0
LDExICsxNTQsMTEgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBEYXRh
YmFzZVNldCo+IERhdGFiYXNlTmFtZU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiwgRGF0YWJhc2VOYW1lTWFwKj4gRGF0YWJhc2VPcmlnaW5NYXA7CiAKLSAg
ICBNdXRleCBtX29wZW5EYXRhYmFzZU1hcEd1YXJkOworICAgIERlcHJlY2F0ZWRNdXRleCBtX29w
ZW5EYXRhYmFzZU1hcEd1YXJkOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNl
T3JpZ2luTWFwPiBtX29wZW5EYXRhYmFzZU1hcDsKIAogICAgIC8vIFRoaXMgbG9jayBwcm90ZWN0
cyBtX2RhdGFiYXNlLCBtX29yaWdpbkxvY2tNYXAsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBt
X29yaWdpbnNCZWluZ0RlbGV0ZWQsIG1fYmVpbmdDcmVhdGVkLCBhbmQgbV9iZWluZ0RlbGV0ZWQu
Ci0gICAgTXV0ZXggbV9kYXRhYmFzZUd1YXJkOworICAgIERlcHJlY2F0ZWRNdXRleCBtX2RhdGFi
YXNlR3VhcmQ7CiAgICAgU1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKIAogICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxPcmlnaW5Mb2NrPj4gT3JpZ2luTG9ja01hcDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCShy
ZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09y
aWdpbkxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBTdHJpbmcgbG9ja0ZpbGVOYW1lRm9yUGF0aChTdHJpbmcgb3JpZ2luUGF0aCk7CiAK
ICAgICBTdHJpbmcgbV9sb2NrRmlsZU5hbWU7Ci0gICAgTXV0ZXggbV9tdXRleDsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXggbV9tdXRleDsKICNpZiBVU0UoRklMRV9MT0NLKQogICAgIFBsYXRmb3JtRmls
ZUhhbmRsZSBtX2xvY2tIYW5kbGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaAkocmV2aXNp
b24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxs
YmFja1dyYXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRQdHI7
CiAgICAgICAgIFQqIGNhbGxiYWNrOwogICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9tdXRleCk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbXV0ZXgpOwogICAgICAgICAgICAgaWYgKCFtX2NhbGxiYWNrKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxUPiB1
bndyYXAoKQogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAg
ICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAgICAgICBBU1NF
UlQoIW1fY2FsbGJhY2sgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJl
YWQoKSk7CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG51bGxwdHI7CiAgICAg
ICAgIHJldHVybiBtX2NhbGxiYWNrLnJlbGVhc2UoKTsKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrOyB9CiAK
IHByaXZhdGU6Ci0gICAgTXV0ZXggbV9tdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9tdXRl
eDsKICAgICBSZWZQdHI8VD4gbV9jYWxsYmFjazsKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
QmFja2VuZC5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgyLDcgKzM4Miw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXAoKQog
CiAgICAgcmVsZWFzZU9yaWdpbkxvY2tJZk5lZWRlZCgpOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fc3RhdGVtZW50TXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9zdGF0ZW1lbnRNdXRleCk7CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwogCiAgICAg
aWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKQEAgLTQ2Niw3ICs0NjYsNyBAQCBTUUxUcmFuc2Fj
dGlvbkJhY2tlbmQ6OlN0YXRlRnVuY3Rpb24gU1FMCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kOjplbnF1ZXVlU3RhdGVtZW50QmFja2VuZChQYXNzUmVmUHRyPFNRTFN0YXRlbWVudEJhY2tl
bmQ+IHN0YXRlbWVudEJhY2tlbmQpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3RhdGVt
ZW50TXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zdGF0ZW1lbnRN
dXRleCk7CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5hcHBlbmQoc3RhdGVtZW50QmFja2VuZCk7CiB9
CiAKQEAgLTY2Niw3ICs2NjYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Z2V0TmV4
dFN0YXRlCiB7CiAgICAgbV9jdXJyZW50U3RhdGVtZW50QmFja2VuZCA9IG51bGxwdHI7CiAKLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9zdGF0ZW1lbnRNdXRleCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4KTsKICAgICBpZiAoIW1fc3RhdGVtZW50
UXVldWUuaXNFbXB0eSgpKQogICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRCYWNrZW5kID0gbV9z
dGF0ZW1lbnRRdWV1ZS50YWtlRmlyc3QoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaAko
cmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX3JlYWRPbmx5OwogICAgIGJvb2wgbV9oYXNWZXJzaW9uTWlz
bWF0Y2g7CiAKLSAgICBNdXRleCBtX3N0YXRlbWVudE11dGV4OworICAgIERlcHJlY2F0ZWRNdXRl
eCBtX3N0YXRlbWVudE11dGV4OwogICAgIERlcXVlPFJlZlB0cjxTUUxTdGF0ZW1lbnRCYWNrZW5k
Pj4gbV9zdGF0ZW1lbnRRdWV1ZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVUcmFuc2Fj
dGlvbj4gbV9zcWxpdGVUcmFuc2FjdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxODc4
ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6c2NoZWR1bGVFeGUKICAgICAvLyBUaGUgbXV0ZXggcHJvdmlkZXMgYSBtZW1v
cnkgYmFycmllciB0byBlbnN1cmUgdGhhdCBvbmNlCiAgICAgLy8gdGVybWluYXRpb24gaXMgc2No
ZWR1bGVkLCBpc0V4ZWN1dGlvblRlcm1pbmF0aW5nIHdpbGwKICAgICAvLyBhY2N1cmF0ZWx5IHJl
ZmxlY3QgdGhhdCBzdGF0ZSB3aGVuIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkLgotICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zY2hlZHVsZWRUZXJtaW5hdGlvbk11dGV4KTsKICAg
ICBpZiAobV92bS0+d2F0Y2hkb2cpCiAgICAgICAgIG1fdm0tPndhdGNoZG9nLT5maXJlKCk7CiB9
CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVs
ZUV4ZQogYm9vbCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppc0V4ZWN1dGlvblRlcm1pbmF0aW5n
KCkgY29uc3QKIHsKICAgICAvLyBTZWUgY29tbWVudHMgaW4gc2NoZWR1bGVFeGVjdXRpb25UZXJt
aW5hdGlvbiByZWdhcmRpbmcgbXV0ZXggdXNhZ2UuCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
c2NoZWR1bGVkVGVybWluYXRpb25NdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwogICAgIGlmIChtX3ZtLT53YXRjaGRv
ZykKICAgICAgICAgcmV0dXJuIG1fdm0tPndhdGNoZG9nLT5kaWRGaXJlKCk7CiAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05
Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV29ya2VyR2xvYmFsU2Nv
cGUqIG1fd29ya2VyR2xvYmFsU2NvcGU7CiAgICAgICAgIEpTQzo6U3Ryb25nPEpTV29ya2VyR2xv
YmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyOwogICAgICAgICBib29sIG1fZXhl
Y3V0aW9uRm9yYmlkZGVuOwotICAgICAgICBtdXRhYmxlIE11dGV4IG1fc2NoZWR1bGVkVGVybWlu
YXRpb25NdXRleDsKKyAgICAgICAgbXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9zY2hlZHVsZWRU
ZXJtaW5hdGlvbk11dGV4OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODgsNyArODgsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6ZGlzZW50YW5nbGUoKQog
CiB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90ZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fY2hh
bm5lbC0+bV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9jaGFubmVs
LT5tX211dGV4KTsKICAgICBpZiAoIW1fY2hhbm5lbC0+bV9vdXRnb2luZ1F1ZXVlKQogICAgICAg
ICByZXR1cm47CiAgICAgYm9vbCB3YXNFbXB0eSA9IG1fY2hhbm5lbC0+bV9vdXRnb2luZ1F1ZXVl
LT5hcHBlbmRBbmRDaGVja0VtcHR5KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWw6OkV2ZW50RGF0YT4obWVzc2FnZSwgV1RGOjptb3ZlKGNoYW5uZWxzKSkpOwpAQCAt
OTgsNyArOTgsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlCiAK
IGJvb2wgTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90ZShSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiYgY2hhbm5lbHMpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX2No
YW5uZWwtPm1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fY2hhbm5l
bC0+bV9tdXRleCk7CiAgICAgYXV0byByZXN1bHQgPSBtX2NoYW5uZWwtPm1faW5jb21pbmdRdWV1
ZS0+dHJ5R2V0TWVzc2FnZSgpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMjEsMjAgKzEyMSwyMCBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2xvc2Uo
KQogYm9vbCBNZXNzYWdlUG9ydENoYW5uZWw6OmlzQ29ubmVjdGVkVG8oTWVzc2FnZVBvcnQqIHBv
cnQpCiB7CiAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGF0IHRoZSByZXN1bHQgcmVt
YWlucyB0aGUgc2FtZSBhZnRlciB3ZSByZWxlYXNlIHRoZSBsb2NrPwotICAgIE11dGV4TG9ja2Vy
IGxvY2sobV9jaGFubmVsLT5tX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
ayhtX2NoYW5uZWwtPm1fbXV0ZXgpOwogICAgIHJldHVybiBtX2NoYW5uZWwtPm1fcmVtb3RlUG9y
dCA9PSBwb3J0OwogfQogCiBib29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6aGFzUGVuZGluZ0FjdGl2
aXR5KCkKIHsKICAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoYXQgdGhlIHJlc3VsdCBy
ZW1haW5zIHRoZSBzYW1lIGFmdGVyIHdlIHJlbGVhc2UgdGhlIGxvY2s/Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX2NoYW5uZWwtPm1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrKG1fY2hhbm5lbC0+bV9tdXRleCk7CiAgICAgcmV0dXJuICFtX2NoYW5uZWwtPm1faW5jb21p
bmdRdWV1ZS0+aXNFbXB0eSgpOwogfQogCiBNZXNzYWdlUG9ydCogTWVzc2FnZVBvcnRDaGFubmVs
Ojpsb2NhbGx5RW50YW5nbGVkUG9ydChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9jaGFubmVsLT5tX211dGV4KTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX2NoYW5uZWwtPm1fbXV0ZXgpOwogICAgIC8vIFNl
ZSBpZiBib3RoIGNvbnRleHRzIGFyZSBydW4gYnkgdGhlIHNhbWUgdGhyZWFkIChhcmUgdGhlIHNh
bWUgY29udGV4dCwgb3IgYXJlIGJvdGggZG9jdW1lbnRzKS4KICAgICBpZiAobV9jaGFubmVsLT5t
X3JlbW90ZVBvcnQpIHsKICAgICAgICAgLy8gVGhlIHJlbW90ZSBwb3J0J3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCBpcyBndWFyYW50ZWVkIG5vdCB0byBjaGFuZ2UgaGVyZSAtIE1lc3NhZ2VQb3J0
Ojpjb250ZXh0RGVzdHJveWVkKCkKQEAgLTE2NCw3ICsxNjQsNyBAQCBQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6flBsYXRmb3JtTWVzCiAKIHZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWw6OnNldFJlbW90ZVBvcnQoTWVzc2FnZVBvcnQqIHBvcnQpCiB7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9jayhtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsK
ICAgICAvLyBTaG91bGQgbmV2ZXIgc2V0IHBvcnQgaWYgaXQgaXMgYWxyZWFkeSBzZXQuCiAgICAg
QVNTRVJUKCFwb3J0IHx8ICFtX3JlbW90ZVBvcnQpOwogICAgIG1fcmVtb3RlUG9ydCA9IHBvcnQ7
CkBAIC0xNzUsMTMgKzE3NSwxMyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsPiBQCiAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGF0IHRoZSByZXN1bHQgcmVt
YWlucyB0aGUgc2FtZSBhZnRlciB3ZSByZWxlYXNlIHRoZSBsb2NrPwogICAgIC8vIFRoaXMgbG9j
ayBvbmx5IGd1YXJhbnRlZXMgdGhhdCB0aGUgcmV0dXJuZWQgcG9pbnRlciB3aWxsIG5vdCBiZSBw
b2ludGluZyB0byByZWxlYXNlZCBtZW1vcnksCiAgICAgLy8gYnV0IG5vdCB0aGF0IGl0IHdpbGwg
c3RpbGwgYmUgcG9pbnRpbmcgdG8gdGhpcyBvYmplY3QncyBlbnRhbmdsZWQgcG9ydCBjaGFubmVs
LgotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2sobV9tdXRleCk7CiAgICAgcmV0dXJuIG1fZW50YW5nbGVkQ2hhbm5lbDsKIH0KIAog
dm9pZCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2xvc2VJbnRlcm5hbCgpCiB7Ci0gICAg
TXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
ayhtX211dGV4KTsKICAgICAvLyBEaXNlbnRhbmdsZSBvdXJzZWx2ZXMgZnJvbSB0aGUgb3RoZXIg
ZW5kLiBXZSBzdGlsbCBtYWludGFpbiBhIHJlZmVyZW5jZSB0byBvdXIgaW5jb21pbmcgcXVldWUs
IHNpbmNlIHByZXZpb3VzbHktZXhpc3RpbmcgbWVzc2FnZXMgc2hvdWxkIHN0aWxsIGJlIGRlbGl2
ZXJlZC4KICAgICBtX3JlbW90ZVBvcnQgPSBudWxscHRyOwogICAgIG1fZW50YW5nbGVkQ2hhbm5l
bCA9IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZh
dWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk1LDggKzk1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIHNldFJlbW90ZVBvcnQoTWVzc2FnZVBvcnQqKTsKICAgICAgICAgdm9pZCBjbG9zZUlu
dGVybmFsKCk7CiAKLSAgICAgICAgLy8gTXV0ZXggdXNlZCB0byBlbnN1cmUgZXhjbHVzaXZlIGFj
Y2VzcyB0byB0aGUgb2JqZWN0IGludGVybmFscy4KLSAgICAgICAgTXV0ZXggbV9tdXRleDsKKyAg
ICAgICAgLy8gRGVwcmVjYXRlZE11dGV4IHVzZWQgdG8gZW5zdXJlIGV4Y2x1c2l2ZSBhY2Nlc3Mg
dG8gdGhlIG9iamVjdCBpbnRlcm5hbHMuCisgICAgICAgIERlcHJlY2F0ZWRNdXRleCBtX211dGV4
OwogCiAgICAgICAgIC8vIFBvaW50ZXIgdG8gb3VyIGVudGFuZ2xlZCBwYWlyIC0gY2xlYXJlZCB3
aGVuIGNsb3NlKCkgaXMgY2FsbGVkLgogICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWw+IG1fZW50YW5nbGVkQ2hhbm5lbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2
LDcgKzE4Niw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29ucygpCiAgICAgCiAg
ICAgLy8gQ2xlYXIgdGhlIGluLW1lbW9yeSByZWNvcmQgb2YgZXZlcnkgSWNvblJlY29yZCwgYW55
dGhpbmcgd2FpdGluZyB0byBiZSByZWFkIGZyb20gZGlzaywgYW5kIGFueXRoaW5nIHdhaXRpbmcg
dG8gYmUgd3JpdHRlbiB0byBkaXNrCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV91cmxBbmRJY29uTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV91cmxBbmRJY29uTG9jayk7CiAgICAgICAgIAogICAgICAgICAvLyBDbGVhciB0aGUgSWNvblJl
Y29yZHMgZm9yIGV2ZXJ5IHBhZ2UgVVJMIC0gUmVmQ291bnRpbmcgd2lsbCBjYXVzZSB0aGUgSWNv
blJlY29yZHMgdGhlbXNlbHZlcyB0byBiZSBkZWxldGVkCiAgICAgICAgIC8vIFdlIGRvbid0IGRl
bGV0ZSB0aGUgYWN0dWFsIFBhZ2VSZWNvcmRzIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgInJldGFpbiBp
Y29uIGZvciB1cmwiIGNvdW50IHRvIGtlZXAgdHJhY2sgb2YKQEAgLTIwMCwxNCArMjAwLDE0IEBA
IHZvaWQgSWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29ucygpCiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAvLyBDbGVhciBhbGwgaW4tbWVtb3J5IHJlY29yZHMgb2YgdGhpbmdzIHRoYXQg
bmVlZCB0byBiZSBzeW5jZWQgb3V0IHRvIGRpc2sKICAgICAgICAgewotICAgICAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKKyAgICAgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2spOwogICAgICAgICAgICAgbV9w
YWdlVVJMc1BlbmRpbmdTeW5jLmNsZWFyKCk7CiAgICAgICAgICAgICBtX2ljb25zUGVuZGluZ1N5
bmMuY2xlYXIoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ2xlYXIgYWxsIGlu
LW1lbW9yeSByZWNvcmRzIG9mIHRoaW5ncyB0aGF0IG5lZWQgdG8gYmUgcmVhZCBpbiBmcm9tIGRp
c2sKICAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1Jl
YWRpbmdMb2NrKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9w
ZW5kaW5nUmVhZGluZ0xvY2spOwogICAgICAgICAgICAgbV9wYWdlVVJMc1BlbmRpbmdJbXBvcnQu
Y2xlYXIoKTsKICAgICAgICAgICAgIG1fcGFnZVVSTHNJbnRlcmVzdGVkSW5JY29ucy5jbGVhcigp
OwogICAgICAgICAgICAgbV9pY29uc1BlbmRpbmdSZWFkaW5nLmNsZWFyKCk7CkBAIC0yMjksNyAr
MjI5LDcgQEAgSW1hZ2UqIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9yUAogICAgIGlm
ICghaXNPcGVuKCkgfHwgIWRvY3VtZW50Q2FuSGF2ZUljb24ocGFnZVVSTE9yaWdpbmFsKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9j
ayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsK
IAogICAgIHBlcmZvcm1QZW5kaW5nUmV0YWluQW5kUmVsZWFzZU9wZXJhdGlvbnMoKTsKICAgICAK
QEAgLTI0NSw3ICsyNDUsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25G
b3JQCiAgICAgLy8gMSAtIFRoZSBpbml0aWFsIHVybCBpbXBvcnQgaXMgaW5jb21wbGV0ZSBhbmQg
dGhpcyBwYWdlVVJMIHdhcyBtYXJrZWQgdG8gYmUgbm90aWZpZWQgb25jZSBpdCBpcyBjb21wbGV0
ZSBpZiBhbiBpY29uVVJMIGV4aXN0cwogICAgIC8vIDIgLSBUaGUgaW5pdGlhbCB1cmwgaW1wb3J0
IElTIGNvbXBsZXRlIGFuZCB0aGlzIHBhZ2VVUkwgaGFzIG5vIGljb24KICAgICBpZiAoIXBhZ2VS
ZWNvcmQpIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2Nr
KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5n
TG9jayk7CiAgICAgICAgIAogICAgICAgICAvLyBJbXBvcnQgaXMgb25nb2luZywgdGhlcmUgbWln
aHQgYmUgYW4gaWNvbi4gIEluIHRoaXMgY2FzZSwgcmVnaXN0ZXIgdG8gYmUgbm90aWZpZWQgd2hl
biB0aGUgaWNvbiBjb21lcyBpbgogICAgICAgICAvLyBJZiB3ZSBldmVyIHJlYWNoIHRoaXMgY29u
ZGl0aW9uLCB3ZSBrbm93IHdlJ3ZlIGFscmVhZHkgbWFkZSB0aGUgcGFnZVVSTCBjb3B5CkBAIC0y
NzYsNyArMjc2LDcgQEAgSW1hZ2UqIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9yUAog
ICAgICAgICBpZiAocGFnZVVSTENvcHkuaXNOdWxsKCkpCiAgICAgICAgICAgICBwYWdlVVJMQ29w
eSA9IHBhZ2VVUkxPcmlnaW5hbC5pc29sYXRlZENvcHkoKTsKICAgICAKLSAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CiAgICAgICAgIG1fcGFnZVVS
THNJbnRlcmVzdGVkSW5JY29ucy5hZGQocGFnZVVSTENvcHkpOwogICAgICAgICBtX2ljb25zUGVu
ZGluZ1JlYWRpbmcuYWRkKGljb25SZWNvcmQpOwogICAgICAgICB3YWtlU3luY1RocmVhZCgpOwpA
QCAtMzA3LDcgKzMwNyw3IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBJY29uRGF0YWJhc2U6OnN5bmNo
cm8KICAgICBpZiAoIWljb24pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgcmV0dXJuIGljb24tPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CiB9CiAKQEAgLTMyOSw3ICszMjksNyBAQCBTdHJpbmcgSWNvbkRhdGFiYXNl
OjpzeW5jaHJvbm91c0ljb25VUkxGCiAgICAgaWYgKCFpc09wZW4oKSB8fCAhZG9jdW1lbnRDYW5I
YXZlSWNvbihwYWdlVVJMT3JpZ2luYWwpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
ICAgIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIAogICAgIFBh
Z2VVUkxSZWNvcmQqIHBhZ2VSZWNvcmQgPSBtX3BhZ2VVUkxUb1JlY29yZE1hcC5nZXQocGFnZVVS
TE9yaWdpbmFsKTsKICAgICBpZiAoIXBhZ2VSZWNvcmQpCkBAIC00MTcsNyArNDE3LDcgQEAgdm9p
ZCBJY29uRGF0YWJhc2U6OnJldGFpbkljb25Gb3JQYWdlVVJMKAogICAgICAgICByZXR1cm47CiAK
ICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybHNUb1JldGFpbk9yUmVsZWFz
ZUxvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsc1RvUmV0
YWluT3JSZWxlYXNlTG9jayk7CiAgICAgICAgIG1fdXJsc1RvUmV0YWluLmFkZChwYWdlVVJMLmlz
b2xhdGVkQ29weSgpKTsKICAgICAgICAgbV9yZXRhaW5PclJlbGVhc2VJY29uUmVxdWVzdGVkID0g
dHJ1ZTsKICAgICB9CkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBlcmZv
cm1SZXRhaW5JY29uRm9yUAogICAgICAgICBpZiAoIW1faWNvblVSTEltcG9ydENvbXBsZXRlKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRp
bmdTeW5jTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5k
aW5nU3luY0xvY2spOwogICAgICAgICAvLyBJZiB0aGlzIHBhZ2VVUkwgd2FpdGluZyB0byBiZSBz
eW5jJ2VkLCB1cGRhdGUgdGhlIHN5bmMgcmVjb3JkCiAgICAgICAgIC8vIFRoaXMgc2F2ZXMgdXMg
aW4gdGhlIGNhc2Ugd2hlcmUgYSBwYWdlIHdhcyByZWFkeSB0byBiZSBkZWxldGVkIGZyb20gdGhl
IGRhdGFiYXNlIGJ1dCB3YXMganVzdCByZXRhaW5lZCAtIHNvIHRoZXJlcyBubyBuZWVkIHRvIGRl
bGV0ZSBpdCEKICAgICAgICAgaWYgKCFtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgJiYgbV9wYWdl
VVJMc1BlbmRpbmdTeW5jLmNvbnRhaW5zKHBhZ2VVUkwpKSB7CkBAIC00NzAsNyArNDcwLDcgQEAg
dm9pZCBJY29uRGF0YWJhc2U6OnJlbGVhc2VJY29uRm9yUGFnZVVSTAogICAgICAgICByZXR1cm47
CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybHNUb1JldGFpbk9yUmVs
ZWFzZUxvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsc1Rv
UmV0YWluT3JSZWxlYXNlTG9jayk7CiAgICAgICAgIG1fdXJsc1RvUmVsZWFzZS5hZGQocGFnZVVS
TC5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIG1fcmV0YWluT3JSZWxlYXNlSWNvblJlcXVlc3Rl
ZCA9IHRydWU7CiAgICAgfQpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpw
ZXJmb3JtUmVsZWFzZUljb25Gb3IKICAgICBBU1NFUlQoIWljb25SZWNvcmQgfHwgKGljb25SZWNv
cmQgJiYgbV9pY29uVVJMVG9SZWNvcmRNYXAuZ2V0KGljb25SZWNvcmQtPmljb25VUkwoKSkgPT0g
aWNvblJlY29yZCkpOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5k
aW5nUmVhZGluZ0xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
cGVuZGluZ1JlYWRpbmdMb2NrKTsKICAgICAgICAgCiAgICAgICAgIC8vIFNpbmNlIHRoaXMgcGFn
ZVVSTCBpcyBnb2luZyBhd2F5LCB0aGVyZSdzIG5vIHJlYXNvbiBhbnlvbmUgd291bGQgZXZlciBi
ZSBpbnRlcmVzdGVkIGluIGl0cyByZWFkIHJlc3VsdHMgICAgCiAgICAgICAgIGlmICghbV9pY29u
VVJMSW1wb3J0Q29tcGxldGUpCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6
OnBlcmZvcm1SZWxlYXNlSWNvbkZvcgogICAgIAogICAgIC8vIE1hcmsgc3R1ZmYgZm9yIGRlbGV0
aW9uIGZyb20gdGhlIGRhdGFiYXNlIG9ubHkgaWYgd2UncmUgbm90IGluIHByaXZhdGUgYnJvd3Np
bmcKICAgICBpZiAoIW1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKICAgICAgICAgbV9wYWdlVVJMc1BlbmRp
bmdTeW5jLnNldChwYWdlVVJMT3JpZ2luYWwuaXNvbGF0ZWRDb3B5KCksIHBhZ2VSZWNvcmQtPnNu
YXBzaG90KHRydWUpKTsKICAgICAKICAgICAgICAgLy8gSWYgdGhpcyBwYWdlIGlzIHRoZSBsYXN0
IHBhZ2UgdG8gcmVmZXIgdG8gYSBwYXJ0aWN1bGFyIEljb25SZWNvcmQsIHRoYXQgSWNvblJlY29y
ZCBuZWVkcyB0bwpAQCAtNTQ4LDEyICs1NDgsMTIgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldElj
b25EYXRhRm9ySWNvblVSTAogICAgIAogICAgIFZlY3RvcjxTdHJpbmc+IHBhZ2VVUkxzOwogICAg
IHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOworICAgICAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIAog
ICAgICAgICAvLyBJZiB0aGlzIGljb24gd2FzIHBlbmRpbmcgYSByZWFkLCByZW1vdmUgaXQgZnJv
bSB0aGF0IHNldCBiZWNhdXNlIHRoaXMgbmV3IGRhdGEgc2hvdWxkIG92ZXJyaWRlIHdoYXQgaXMg
b24gZGlzawogICAgICAgICBSZWZQdHI8SWNvblJlY29yZD4gaWNvbiA9IG1faWNvblVSTFRvUmVj
b3JkTWFwLmdldChpY29uVVJMKTsKICAgICAgICAgaWYgKGljb24pIHsKLSAgICAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CisgICAgICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKICAgICAgICAg
ICAgIG1faWNvbnNQZW5kaW5nUmVhZGluZy5yZW1vdmUoaWNvbi5nZXQoKSk7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgaWNvbiA9IGdldE9yQ3JlYXRlSWNvblJlY29yZChpY29uVVJMKTsK
QEAgLTU2Nyw3ICs1NjcsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29u
VVJMCiAgICAgICAgIAogICAgICAgICAvLyBNYXJrIHRoZSBJY29uUmVjb3JkIGFzIHJlcXVpcmlu
ZyBhbiB1cGRhdGUgdG8gdGhlIGRhdGFiYXNlIG9ubHkgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBk
aXNhYmxlZAogICAgICAgICBpZiAoIW1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewotICAgICAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKKyAgICAgICAgICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2spOwogICAgICAg
ICAgICAgbV9pY29uc1BlbmRpbmdTeW5jLnNldChpY29uVVJMLCBpY29uLT5zbmFwc2hvdCgpKTsK
ICAgICAgICAgfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldElj
b25VUkxGb3JQYWdlVVJMKAogICAgIFN0cmluZyBpY29uVVJMLCBwYWdlVVJMOwogICAgIAogICAg
IHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOworICAgICAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogCiAgICAg
ICAgIFBhZ2VVUkxSZWNvcmQqIHBhZ2VSZWNvcmQgPSBtX3BhZ2VVUkxUb1JlY29yZE1hcC5nZXQo
cGFnZVVSTE9yaWdpbmFsKTsKICAgICAgICAgCkBAIC02MzYsMTMgKzYzNiwxMyBAQCB2b2lkIElj
b25EYXRhYmFzZTo6c2V0SWNvblVSTEZvclBhZ2VVUkwoCiAgICAgICAgICAgICBBU1NFUlQoaWNv
blJlY29yZC0+cmV0YWluaW5nUGFnZVVSTHMoKS5zaXplKCkgPT0gMCk7CiAgICAgICAgICAgICBM
T0coSWNvbkRhdGFiYXNlLCAiSWNvbiBmb3IgaWNvbiB1cmwgJXMgaXMgYWJvdXQgdG8gYmUgZGVz
dHJveWVkIC0gcmVtb3ZpbmcgbWFwcGluZyBmb3IgaXQiLCB1cmxGb3JMb2dnaW5nKGljb25SZWNv
cmQtPmljb25VUkwoKSkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgbV9pY29uVVJMVG9S
ZWNvcmRNYXAucmVtb3ZlKGljb25SZWNvcmQtPmljb25VUkwoKSk7Ci0gICAgICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOworICAgICAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CiAgICAgICAgICAg
ICBtX2ljb25zUGVuZGluZ1JlYWRpbmcucmVtb3ZlKGljb25SZWNvcmQuZ2V0KCkpOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICAvLyBBbmQgbWFyayB0aGlzIG1hcHBpbmcgdG8gYmUgYWRk
ZWQgdG8gdGhlIGRhdGFiYXNlCiAgICAgICAgIGlmICghbV9wcml2YXRlQnJvd3NpbmdFbmFibGVk
KSB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2spOwor
ICAgICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdTeW5jTG9j
ayk7CiAgICAgICAgICAgICBtX3BhZ2VVUkxzUGVuZGluZ1N5bmMuc2V0KHBhZ2VVUkwsIHBhZ2VS
ZWNvcmQtPnNuYXBzaG90KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBJZiB0aGUg
aWNvbiBpcyBvbiBpdHMgbGFzdCByZWYsIG1hcmsgaXQgZm9yIGRlbGV0aW9uCkBAIC02NzQsNyAr
Njc0LDcgQEAgSWNvbkxvYWREZWNpc2lvbiBJY29uRGF0YWJhc2U6OnN5bmNocm9ubwogICAgIC8v
IDEgLSBXaGVuIHdlIHJlYWQgdGhlIGljb24gdXJscyBmcm9tIGRpc2ssIGdldHRpbmcgdGhlIHRp
bWVTdGFtcCBhdCB0aGUgc2FtZSB0aW1lCiAgICAgLy8gMiAtIFdoZW4gd2UgZ2V0IGEgbmV3IGlj
b24gZnJvbSB0aGUgbG9hZGVyLCBpbiB3aGljaCBjYXNlIHRoZSB0aW1lc3RhbXAgaXMgc2V0IGF0
IHRoYXQgdGltZQogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNv
bkxvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNv
bkxvY2spOwogICAgICAgICBpZiAoSWNvblJlY29yZCogaWNvbiA9IG1faWNvblVSTFRvUmVjb3Jk
TWFwLmdldChpY29uVVJMKSkgewogICAgICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIkZvdW5k
IGV4cGlyYXRpb24gdGltZSBvbiBhIHByZXNlbnQgaWNvbiBiYXNlZCBvbiBleGlzdGluZyBJY29u
UmVjb3JkIik7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihjdXJyZW50VGlt
ZSgpKSAtIHN0YXRpY19jYXN0PGludD4oaWNvbi0+Z2V0VGltZXN0YW1wKCkpID4gaWNvbkV4cGly
YXRpb25UaW1lID8gSWNvbkxvYWRZZXMgOiBJY29uTG9hZE5vOwpAQCAtNjgyLDcgKzY4Miw3IEBA
IEljb25Mb2FkRGVjaXNpb24gSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm8KICAgICB9CiAgICAgCiAg
ICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHJlY29yZCBmb3IgaXQsIGJ1dCB3ZSAqaGF2ZSogaW1w
b3J0ZWQgYWxsIGljb25VUkxzIGZyb20gZGlzaywgdGhlbiB3ZSBzaG91bGQgbG9hZCBpdCBub3cK
LSAgICBNdXRleExvY2tlciByZWFkaW5nTG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgcmVhZGluZ0xvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9j
ayk7CiAgICAgaWYgKG1faWNvblVSTEltcG9ydENvbXBsZXRlKQogICAgICAgICByZXR1cm4gSWNv
bkxvYWRZZXM7CiAgICAgICAgIApAQCAtNjk5LDcgKzY5OSw3IEBAIGJvb2wgSWNvbkRhdGFiYXNl
OjpzeW5jaHJvbm91c0ljb25EYXRhS24KIHsKICAgICBBU1NFUlRfTk9UX1NZTkNfVEhSRUFEKCk7
CiAgICAgCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgaWYgKElj
b25SZWNvcmQqIGljb24gPSBtX2ljb25VUkxUb1JlY29yZE1hcC5nZXQoaWNvblVSTCkpCiAgICAg
ICAgIHJldHVybiBpY29uLT5pbWFnZURhdGFTdGF0dXMoKSAhPSBJbWFnZURhdGFTdGF0dXNVbmtu
b3duOwogCkBAIC03NTQsMjYgKzc1NCwyNiBAQCB2b2lkIEljb25EYXRhYmFzZTo6Y2hlY2tJbnRl
Z3JpdHlCZWZvcmVPCiAKIHNpemVfdCBJY29uRGF0YWJhc2U6OnBhZ2VVUkxNYXBwaW5nQ291bnQo
KQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIHJldHVybiBt
X3BhZ2VVUkxUb1JlY29yZE1hcC5zaXplKCk7CiB9CiAKIHNpemVfdCBJY29uRGF0YWJhc2U6OnJl
dGFpbmVkUGFnZVVSTENvdW50KCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJ
Y29uTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25M
b2NrKTsKICAgICBwZXJmb3JtUGVuZGluZ1JldGFpbkFuZFJlbGVhc2VPcGVyYXRpb25zKCk7CiAg
ICAgcmV0dXJuIG1fcmV0YWluZWRQYWdlVVJMcy5zaXplKCk7CiB9CiAKIHNpemVfdCBJY29uRGF0
YWJhc2U6Omljb25SZWNvcmRDb3VudCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJs
QW5kSWNvbkxvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJ
Y29uTG9jayk7CiAgICAgcmV0dXJuIG1faWNvblVSTFRvUmVjb3JkTWFwLnNpemUoKTsKIH0KIAog
c2l6ZV90IEljb25EYXRhYmFzZTo6aWNvblJlY29yZENvdW50V2l0aERhdGEoKQogewotICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIHNpemVfdCByZXN1bHQgPSAwOwog
ICAgIAogICAgIEhhc2hNYXA8U3RyaW5nLCBJY29uUmVjb3JkKj46Oml0ZXJhdG9yIGkgPSBtX2lj
b25VUkxUb1JlY29yZE1hcC5iZWdpbigpOwpAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgSWNvbkRh
dGFiYXNlOjpub3RpZnlQZW5kaW5nTG9hZERlY2kKIAogdm9pZCBJY29uRGF0YWJhc2U6Ondha2VT
eW5jVGhyZWFkKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CisgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKIAogICAgIGlmICghbV9k
aXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVN5bmNUaHJlYWRIYXNXb3JrVG9EbykKICAgICAg
ICAgbV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVN5bmNUaHJlYWRIYXNXb3JrVG9EbyA9
IHN0ZDo6bWFrZV91bmlxdWU8U3VkZGVuVGVybWluYXRpb25EaXNhYmxlcj4oKTsKQEAgLTg3NCwx
MyArODc0LDEzIEBAIGJvb2wgSWNvbkRhdGFiYXNlOjppc09wZW4oKSBjb25zdAogCiBib29sIElj
b25EYXRhYmFzZTo6aXNPcGVuQmVzaWRlc01haW5UaHJlYWRDYWxsYmFja3MoKSBjb25zdAogewot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgIHJldHVybiBtX3N5bmNUaHJlYWRSdW5uaW5n
IHx8IG1fc3luY0RCLmlzT3BlbigpOwogfQogCiBTdHJpbmcgSWNvbkRhdGFiYXNlOjpkYXRhYmFz
ZVBhdGgoKSBjb25zdAogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgIHJldHVybiBt
X2NvbXBsZXRlRGF0YWJhc2VQYXRoLmlzb2xhdGVkQ29weSgpOwogfQogCkBAIC05MTYsNyArOTE2
LDcgQEAgUGFnZVVSTFJlY29yZCogSWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0ZQogCiAgICAgUGFn
ZVVSTFJlY29yZCogcGFnZVJlY29yZCA9IG1fcGFnZVVSTFRvUmVjb3JkTWFwLmdldChwYWdlVVJM
KTsKICAgICAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwog
ICAgIGlmICghbV9pY29uVVJMSW1wb3J0Q29tcGxldGUpIHsKICAgICAgICAgLy8gSWYgdGhlIGlu
aXRpYWwgaW1wb3J0IG9mIGFsbCBVUkxzIGhhc24ndCBjb21wbGV0ZWQgYW5kIHdlIGhhdmUgbm8g
cGFnZSByZWNvcmQsIHdlIGFzc3VtZSB3ZSAqbWlnaHQqIGtub3cgYWJvdXQgdGhpcyBsYXRlciBh
bmQgY3JlYXRlIGEgcmVjb3JkIGZvciBpdAogICAgICAgICBpZiAoIXBhZ2VSZWNvcmQpIHsKQEAg
LTk4NSw3ICs5ODUsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVh
CiAgICAgfQogICAgIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xv
Y2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwog
ICAgICAgICBpZiAoIW1fc3luY0RCLm9wZW4obV9jb21wbGV0ZURhdGFiYXNlUGF0aCkpIHsKICAg
ICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4gaWNvbiBkYXRhYmFzZSBhdCBwYXRo
ICVzIC0gJXMiLCBtX2NvbXBsZXRlRGF0YWJhc2VQYXRoLmFzY2lpKCkuZGF0YSgpLCBtX3N5bmNE
Qi5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTEzLDcgKzExMTMs
NyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cGVyZm9ybU9wZW5Jbml0aWFsaXphCiAgICAgICAgICAg
ICBtX3N5bmNEQi5jbG9zZSgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOworICAgICAgICAgICAgICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CiAgICAgICAgICAgICAg
ICAgLy8gU2hvdWxkJ3ZlIGJlZW4gY29uc3VtZWQgYnkgU1FMaXRlLCBkZWxldGUganVzdCB0byBt
YWtlIHN1cmUgd2UgZG9uJ3Qgc2VlIGl0IGFnYWluIGluIHRoZSBmdXR1cmU7CiAgICAgICAgICAg
ICAgICAgZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoICsgIi1qb3VybmFsIik7CiAg
ICAgICAgICAgICAgICAgZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoKTsKQEAgLTEy
MTUsNyArMTIxNSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0KCkKICAg
ICAgICAgU3RyaW5nIGljb25VUkwgPSBxdWVyeS5nZXRDb2x1bW5UZXh0KDEpOwogCiAgICAgICAg
IHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKyAg
ICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7
CiAKICAgICAgICAgICAgIFBhZ2VVUkxSZWNvcmQqIHBhZ2VSZWNvcmQgPSBtX3BhZ2VVUkxUb1Jl
Y29yZE1hcC5nZXQocGFnZVVSTCk7CiAgICAgICAgICAgICAKQEAgLTEyNDgsNyArMTI0OCw3IEBA
IHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0KCkKICAgICAgICAgLy8gb25lIGZv
ciB0aGUgVVJMIGFuZCBvbmUgZm9yIHRoZSBJbWFnZSBpdHNlbGYKICAgICAgICAgLy8gTm90ZSB0
aGF0IFdlYkljb25EYXRhYmFzZSBpcyBub3QgbmVjY2Vzc2FyaWx5IEFQSSBzbyB3ZSBtaWdodCBi
ZSBhYmxlIHRvIG1ha2UgdGhpcyBjaGFuZ2UKICAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAgICAgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwogICAgICAgICAgICAg
aWYgKG1fcGFnZVVSTHNQZW5kaW5nSW1wb3J0LmNvbnRhaW5zKHBhZ2VVUkwpKSB7CiAgICAgICAg
ICAgICAgICAgZGlzcGF0Y2hEaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTE9uTWFpblRocmVhZChw
YWdlVVJMKTsKICAgICAgICAgICAgICAgICBtX3BhZ2VVUkxzUGVuZGluZ0ltcG9ydC5yZW1vdmUo
cGFnZVVSTCk7CkBAIC0xMjcxLDcgKzEyNzEsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cGVyZm9y
bVVSTEltcG9ydCgpCiAgICAgLy8gYnV0IGFmdGVyIG1faWNvblVSTEltcG9ydENvbXBsZXRlIGlz
IHNldCB0byB0cnVlLCB3ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgc2V0IGFueW1vcmUKICAgICBW
ZWN0b3I8U3RyaW5nPiB1cmxzOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
cGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tl
cihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CiAKICAgICAgICAgdXJscy5hcHBlbmRSYW5nZShtX3Bh
Z2VVUkxzUGVuZGluZ0ltcG9ydC5iZWdpbigpLCBtX3BhZ2VVUkxzUGVuZGluZ0ltcG9ydC5lbmQo
KSk7CiAgICAgICAgIG1fcGFnZVVSTHNQZW5kaW5nSW1wb3J0LmNsZWFyKCk7ICAgICAgICAKQEAg
LTEyODQsNyArMTI4NCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0KCkK
ICAgICAvLyBSZW1vdmUgdW5yZXRhaW5lZCBvbmVzIGlmIGRhdGFiYXNlIGNsZWFudXAgaXMgYWxs
b3dlZAogICAgIC8vIEtlZXAgYSBzZXQgb2Ygb25lcyB0aGF0IGFyZSByZXRhaW5lZCBhbmQgcGVu
ZGluZyBub3RpZmljYXRpb24KICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Vy
bEFuZEljb25Mb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Vy
bEFuZEljb25Mb2NrKTsKIAogICAgICAgICBwZXJmb3JtUGVuZGluZ1JldGFpbkFuZFJlbGVhc2VP
cGVyYXRpb25zKCk7CiAKQEAgLTEzMDEsMTIgKzEzMDEsMTIgQEAgdm9pZCBJY29uRGF0YWJhc2U6
OnBlcmZvcm1VUkxJbXBvcnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9pY29uVVJMVG9S
ZWNvcmRNYXAucmVtb3ZlKGljb25SZWNvcmQtPmljb25VUkwoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5k
aW5nUmVhZGluZ0xvY2spOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZVVSTHNJ
bnRlcmVzdGVkSW5JY29ucy5yZW1vdmUodXJsc1tpXSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pY29uc1BlbmRpbmdSZWFkaW5nLnJlbW92ZShpY29uUmVjb3JkKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2spOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9wZW5kaW5nU3luY0xvY2spOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faWNvbnNQ
ZW5kaW5nU3luYy5zZXQoaWNvblJlY29yZC0+aWNvblVSTCgpLCBpY29uUmVjb3JkLT5zbmFwc2hv
dCh0cnVlKSk7ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTM3MSw3ICsxMzcxLDcgQEAgdm9pZCBJY29uRGF0
YWJhc2U6OnN5bmNUaHJlYWRNYWluTG9vcCgpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7Cisg
ICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2sp
OwogICAgICAgICAgICAgcGVyZm9ybVBlbmRpbmdSZXRhaW5BbmRSZWxlYXNlT3BlcmF0aW9ucygp
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgdm9pZCBJY29uRGF0
YWJhc2U6OnBlcmZvcm1QZW5kaW5nUmV0YWluQQogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4g
dG9SZWxlYXNlOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBwZW5kaW5nV29ya0xvY2tl
cihtX3VybHNUb1JldGFpbk9yUmVsZWFzZUxvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgcGVuZGluZ1dvcmtMb2NrZXIobV91cmxzVG9SZXRhaW5PclJlbGVhc2VMb2NrKTsKICAg
ICAgICAgaWYgKCFtX3JldGFpbk9yUmVsZWFzZUljb25SZXF1ZXN0ZWQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTE0ODgsNyArMTQ4OCw3IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpyZWFkRnJv
bURhdGFiYXNlKCkKICAgICAvLyBUaGlzIHdheSB3ZSB3b24ndCBob2xkIHRoZSBsb2NrIGZvciBh
IGxvbmcgcGVyaW9kIG9mIHRpbWUKICAgICBWZWN0b3I8SWNvblJlY29yZCo+IGljb25zOwogICAg
IHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAg
ICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7
CiAgICAgICAgIGljb25zLmFwcGVuZFJhbmdlKG1faWNvbnNQZW5kaW5nUmVhZGluZy5iZWdpbigp
LCBtX2ljb25zUGVuZGluZ1JlYWRpbmcuZW5kKCkpOwogICAgIH0KICAgICAKQEAgLTE1MDEsOSAr
MTUwMSw5IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpyZWFkRnJvbURhdGFiYXNlKCkKIAogICAgICAg
ICAvLyBWZXJpZnkgdGhpcyBpY29uIHN0aWxsIHdhbnRzIHRvIGJlIHJlYWQgZnJvbSBkaXNrCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIHVybExvY2tlcihtX3VybEFuZEljb25M
b2NrKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciB1cmxMb2NrZXIobV91cmxB
bmRJY29uTG9jayk7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTXV0ZXhMb2NrZXIg
cmVhZExvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CisgICAgICAgICAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIHJlYWRMb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtX2ljb25zUGVuZGluZ1JlYWRpbmcuY29u
dGFpbnMoaWNvbnNbaV0pKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgbmV3IGRh
dGEKQEAgLTE1OTEsMTEgKzE1OTEsMTEgQEAgYm9vbCBJY29uRGF0YWJhc2U6OndyaXRlVG9EYXRh
YmFzZSgpCiAgICAgLy8gd2UnbGwgcGljayBpdCB1cCBvbiB0aGUgbmV4dCBwYXNzLiAgVGhpcyBn
cmVhdGx5IHNpbXBsaWZpZXMgdGhlIGxvY2tpbmcgc3RyYXRlZ3kgZm9yIHRoaXMgbWV0aG9kIGFu
ZCByZW1haW5zIGNvaGVzaXZlIHdpdGggY2hhbmdlcwogICAgIC8vIGFza2VkIGZvciBieSB0aGUg
ZGF0YWJhc2Ugb24gdGhlIG1haW4gdGhyZWFkCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBs
b2NrZXIobV91cmxBbmRJY29uTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgICAgIFZlY3RvcjxJY29uU25hcHNob3Q+IGlj
b25TbmFwc2hvdHM7CiAgICAgICAgIFZlY3RvcjxQYWdlVVJMU25hcHNob3Q+IHBhZ2VTbmFwc2hv
dHM7CiAgICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdT
eW5jTG9jayk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVu
ZGluZ1N5bmNMb2NrKTsKIAogICAgICAgICAgICAgaWNvblNuYXBzaG90cy5hcHBlbmRSYW5nZSht
X2ljb25zUGVuZGluZ1N5bmMuYmVnaW4oKS52YWx1ZXMoKSwgbV9pY29uc1BlbmRpbmdTeW5jLmVu
ZCgpLnZhbHVlcygpKTsKICAgICAgICAgICAgIG1faWNvbnNQZW5kaW5nU3luYy5jbGVhcigpOwpA
QCAtMTY1OCw3ICsxNjU4LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBydW5lVW5yZXRhaW5lZElj
b25zKAogICAgIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBwYWdlU1FM
LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV91
cmxBbmRJY29uTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV91
cmxBbmRJY29uTG9jayk7CiAgICAgICAgIGlmICghbV9wYWdlVVJMVG9SZWNvcmRNYXAuY29udGFp
bnMocGFnZVNRTC5nZXRDb2x1bW5UZXh0KDEpKSkKICAgICAgICAgICAgIHBhZ2VJRHNUb0RlbGV0
ZS5hcHBlbmQocGFnZVNRTC5nZXRDb2x1bW5JbnQ2NCgwKSk7CiAgICAgfQpAQCAtMTc5MSw3ICsx
NzkxLDcgQEAgdm9pZCogSWNvbkRhdGFiYXNlOjpjbGVhbnVwU3luY1RocmVhZCgpCiAgICAgd3Jp
dGVUb0RhdGFiYXNlKCk7CiAgICAgCiAgICAgLy8gQ2xvc2UgdGhlIGRhdGFiYXNlCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9zeW5jTG9jayk7CiAgICAgCiAgICAgbV9kYXRhYmFzZURpcmVjdG9yeSA9IFN0cmlu
ZygpOwogICAgIG1fY29tcGxldGVEYXRhYmFzZVBhdGggPSBTdHJpbmcoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCShyZXZpc2lvbiAxODc4ODkpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRW5hYmxlZDsKICAg
ICBib29sIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKIAotICAgIG11dGFibGUgTXV0ZXggbV9z
eW5jTG9jazsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX3N5bmNMb2NrOwogICAgIFRo
cmVhZENvbmRpdGlvbiBtX3N5bmNDb25kaXRpb247CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJl
Y3Rvcnk7CiAgICAgLy8gSG9sZGluZyBtX3N5bmNMb2NrIGlzIHJlcXVpcmVkIHdoZW4gYWNjZXNz
aW5nIG1fY29tcGxldGVEYXRhYmFzZVBhdGgKQEAgLTE1MywyNCArMTUzLDI0IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3N5bmNUaHJlYWRIYXNXb3JrVG9EbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3VkZGVuVGVybWluYXRpb25EaXNhYmxlcj4gbV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGls
ZVN5bmNUaHJlYWRIYXNXb3JrVG9EbzsKIAotICAgIE11dGV4IG1fdXJsQW5kSWNvbkxvY2s7Cisg
ICAgRGVwcmVjYXRlZE11dGV4IG1fdXJsQW5kSWNvbkxvY2s7CiAgICAgLy8gSG9sZGluZyBtX3Vy
bEFuZEljb25Mb2NrIGlzIHJlcXVpcmVkIHdoZW4gYWNjZXNzaW5nIGFueSBvZiB0aGUgZm9sbG93
aW5nIGRhdGEgc3RydWN0dXJlcyBvciB0aGUgb2JqZWN0cyB0aGV5IGNvbnRhaW4KICAgICBIYXNo
TWFwPFN0cmluZywgSWNvblJlY29yZCo+IG1faWNvblVSTFRvUmVjb3JkTWFwOwogICAgIEhhc2hN
YXA8U3RyaW5nLCBQYWdlVVJMUmVjb3JkKj4gbV9wYWdlVVJMVG9SZWNvcmRNYXA7CiAgICAgSGFz
aFNldDxTdHJpbmc+IG1fcmV0YWluZWRQYWdlVVJMczsKIAotICAgIE11dGV4IG1fcGVuZGluZ1N5
bmNMb2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX3BlbmRpbmdTeW5jTG9jazsKICAgICAvLyBI
b2xkaW5nIG1fcGVuZGluZ1N5bmNMb2NrIGlzIHJlcXVpcmVkIHdoZW4gYWNjZXNzaW5nIGFueSBv
ZiB0aGUgZm9sbG93aW5nIGRhdGEgc3RydWN0dXJlcwogICAgIEhhc2hNYXA8U3RyaW5nLCBQYWdl
VVJMU25hcHNob3Q+IG1fcGFnZVVSTHNQZW5kaW5nU3luYzsKICAgICBIYXNoTWFwPFN0cmluZywg
SWNvblNuYXBzaG90PiBtX2ljb25zUGVuZGluZ1N5bmM7CiAgICAgCi0gICAgTXV0ZXggbV9wZW5k
aW5nUmVhZGluZ0xvY2s7ICAgIAorICAgIERlcHJlY2F0ZWRNdXRleCBtX3BlbmRpbmdSZWFkaW5n
TG9jazsgICAgCiAgICAgLy8gSG9sZGluZyBtX3BlbmRpbmdTeW5jTG9jayBpcyByZXF1aXJlZCB3
aGVuIGFjY2Vzc2luZyBhbnkgb2YgdGhlIGZvbGxvd2luZyBkYXRhIHN0cnVjdHVyZXMgLSB3aGVu
IGRlYWxpbmcgd2l0aCBJY29uUmVjb3JkKnMsIGhvbGRpbmcgbV91cmxBbmRJY29uTG9jayBpcyBh
bHNvIHJlcXVpcmVkCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcGFnZVVSTHNQZW5kaW5nSW1wb3J0
OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3BhZ2VVUkxzSW50ZXJlc3RlZEluSWNvbnM7CiAgICAg
SGFzaFNldDxJY29uUmVjb3JkKj4gbV9pY29uc1BlbmRpbmdSZWFkaW5nOwogCi0gICAgTXV0ZXgg
bV91cmxzVG9SZXRhaW5PclJlbGVhc2VMb2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX3VybHNU
b1JldGFpbk9yUmVsZWFzZUxvY2s7CiAgICAgLy8gSG9sZGluZyBtX3VybHNUb1JldGFpbk9yUmVs
ZWFzZUxvY2sgaXMgcmVxdWlyZWQgd2hlbiBhY2Nlc3NpbmcgYW55IG9mIHRoZSBmb2xsb3dpbmcg
ZGF0YSBzdHJ1Y3R1cmVzLgogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV91cmxzVG9SZXRh
aW47CiAgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBtX3VybHNUb1JlbGVhc2U7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAkocmV2
aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgU2Nyb2xsaW5nVHJlZTo6
flNjcm9sbGluZ1RyZWUoKQogYm9vbCBTY3JvbGxpbmdUcmVlOjpzaG91bGRIYW5kbGVXaGVlbEV2
ZW50U3luY2hyb25vdXNseShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7
CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgZXZlbnQgaGFuZGxpbmcgdGhy
ZWFkCi0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9jayhtX211dGV4KTsKIAogICAgIGJvb2wgc2hvdWxkU2V0TGF0Y2ggPSB3aGVlbEV2
ZW50LnNob3VsZENvbnNpZGVyTGF0Y2hpbmcoKTsKICAgICAKQEAgLTExNSw3ICsxMTUsNyBAQCB2
b2lkIFNjcm9sbGluZ1RyZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZShzCiAgICAgICAgICYmIChyb290
U3RhdGVOb2RlQ2hhbmdlZAogICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Tm9uRmFzdFNjcm9sbGFibGVS
ZWdpb24pCiAgICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKSkgewotICAgICAgICBNdXRleExvY2tlciBsb2Nr
KG1fbXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsK
IAogICAgICAgICBpZiAocm9vdFN0YXRlTm9kZUNoYW5nZWQgfHwgcm9vdE5vZGUtPmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKICAgICAgICAgICAg
IG1fbWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24gPSBGbG9hdFBvaW50KCk7CkBAIC0yMDgsNyArMjA4
LDcgQEAgU2Nyb2xsaW5nVHJlZU5vZGUqIFNjcm9sbGluZ1RyZWU6Om5vZGVGbwogCiB2b2lkIFNj
cm9sbGluZ1RyZWU6OnNldE1haW5GcmFtZVBpblN0YXRlKGJvb2wgcGlubmVkVG9UaGVMZWZ0LCBi
b29sIHBpbm5lZFRvVGhlUmlnaHQsIGJvb2wgcGlubmVkVG9UaGVUb3AsIGJvb2wgcGlubmVkVG9U
aGVCb3R0b20pCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVTdGF0ZU11dGV4KTsK
KyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVTdGF0ZU11dGV4KTsKIAog
ICAgIG1fbWFpbkZyYW1lUGlubmVkVG9UaGVMZWZ0ID0gcGlubmVkVG9UaGVMZWZ0OwogICAgIG1f
bWFpbkZyYW1lUGlubmVkVG9UaGVSaWdodCA9IHBpbm5lZFRvVGhlUmlnaHQ7CkBAIC0yMTgsNTQg
KzIxOCw1NCBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldE1haW5GcmFtZVBpblN0YXRlCiAKIEZs
b2F0UG9pbnQgU2Nyb2xsaW5nVHJlZTo6bWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oKQogewotICAg
IE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2sobV9tdXRleCk7CiAgICAgcmV0dXJuIG1fbWFpbkZyYW1lU2Nyb2xsUG9zaXRpb247CiB9CiAK
IHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0TWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oRmxvYXRQb2lu
dCBwb3NpdGlvbikKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgIG1fbWFpbkZyYW1lU2Nyb2xsUG9z
aXRpb24gPSBwb3NpdGlvbjsKIH0KIAogYm9vbCBTY3JvbGxpbmdUcmVlOjppc1BvaW50SW5Ob25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbihJbnRQb2ludCBwKQogewotICAgIE11dGV4TG9ja2VyIGxvY2so
bV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAg
CiAgICAgcmV0dXJuIG1fbm9uRmFzdFNjcm9sbGFibGVSZWdpb24uY29udGFpbnMocCk7CiB9CiAK
IGJvb2wgU2Nyb2xsaW5nVHJlZTo6aXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpCiB7Ci0gICAgTXV0
ZXhMb2NrZXIgbG9jayhtX211dGV4KTsgICAgCisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2sobV9tdXRleCk7ICAgIAogCiAgICAgcmV0dXJuIG1fbWFpbkZyYW1lSXNSdWJiZXJCYW5kaW5n
OwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldE1haW5GcmFtZUlzUnViYmVyQmFuZGluZyhi
b29sIGlzUnViYmVyQmFuZGluZykKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIG1fbWFp
bkZyYW1lSXNSdWJiZXJCYW5kaW5nID0gaXNSdWJiZXJCYW5kaW5nOwogfQogCiBib29sIFNjcm9s
bGluZ1RyZWU6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKQogewotICAgIE11dGV4TG9ja2VyIGxv
Y2sobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAg
ICAgCiAgICAgcmV0dXJuIG1fbWFpbkZyYW1lSXNTY3JvbGxTbmFwcGluZzsKIH0KICAgICAKIHZv
aWQgU2Nyb2xsaW5nVHJlZTo6c2V0TWFpbkZyYW1lSXNTY3JvbGxTbmFwcGluZyhib29sIGlzU2Ny
b2xsU25hcHBpbmcpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAgICAgCiAgICAgbV9tYWluRnJh
bWVJc1Njcm9sbFNuYXBwaW5nID0gaXNTY3JvbGxTbmFwcGluZzsKIH0KIAogdm9pZCBTY3JvbGxp
bmdUcmVlOjpzZXRDYW5SdWJiZXJCYW5kU3RhdGUoYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBi
b29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBj
YW5SdWJiZXJCYW5kQXRCb3R0b20pCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVT
dGF0ZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVTdGF0
ZU11dGV4KTsKIAogICAgIG1fcnViYmVyQmFuZHNBdExlZnQgPSBjYW5SdWJiZXJCYW5kQXRMZWZ0
OwogICAgIG1fcnViYmVyQmFuZHNBdFJpZ2h0ID0gY2FuUnViYmVyQmFuZEF0UmlnaHQ7CkBAIC0y
NzUsMjggKzI3NSwyOCBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldENhblJ1YmJlckJhbmRTdGF0
CiAKIGJvb2wgU2Nyb2xsaW5nVHJlZTo6cnViYmVyQmFuZHNBdExlZnQoKQogewotICAgIE11dGV4
TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKIAogICAgIHJldHVybiBtX3J1YmJlckJhbmRzQXRM
ZWZ0OwogfQogCiBib29sIFNjcm9sbGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRSaWdodCgpCiB7Ci0g
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX3N3aXBlU3RhdGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOwogCiAgICAgcmV0dXJuIG1fcnViYmVy
QmFuZHNBdFJpZ2h0OwogfQogCiBib29sIFNjcm9sbGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRCb3R0
b20oKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKIAogICAgIHJldHVy
biBtX3J1YmJlckJhbmRzQXRCb3R0b207CiB9CiAKIGJvb2wgU2Nyb2xsaW5nVHJlZTo6cnViYmVy
QmFuZHNBdFRvcCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3N3aXBlU3RhdGVNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOwogCiAg
ICAgcmV0dXJuIG1fcnViYmVyQmFuZHNBdFRvcDsKIH0KQEAgLTMwOCwxNCArMzA4LDE0IEBAIGJv
b2wgU2Nyb2xsaW5nVHJlZTo6aXNIYW5kbGluZ1Byb2dyYW1tYXQKIAogdm9pZCBTY3JvbGxpbmdU
cmVlOjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm5p
bmcpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVTdGF0ZU11dGV4KTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3dpcGVTdGF0ZU11dGV4KTsKICAgICAKICAg
ICBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvciA9IHBpbm5pbmc7CiB9CiAKIFNjcm9sbFBpbm5pbmdC
ZWhhdmlvciBTY3JvbGxpbmdUcmVlOjpzY3JvbGxQaW5uaW5nQmVoYXZpb3IoKQogewotICAgIE11
dGV4TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKICAgICAKICAgICByZXR1cm4gbV9zY3JvbGxQ
aW5uaW5nQmVoYXZpb3I7CiB9CkBAIC0zMjUsNyArMzI1LDcgQEAgYm9vbCBTY3JvbGxpbmdUcmVl
Ojp3aWxsV2hlZWxFdmVudFN0YXJ0UwogICAgIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgIT0gUGxh
dGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
TXV0ZXhMb2NrZXIgbG9jayhtX3N3aXBlU3RhdGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOwogCiAgICAgaWYgKHdoZWVsRXZlbnQuZGVs
dGFYKCkgPiAwICYmIG1fbWFpbkZyYW1lUGlubmVkVG9UaGVMZWZ0ICYmICFtX3J1YmJlckJhbmRz
QXRMZWZ0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1MSwxOSArMzUxLDE5IEBAIGJvb2wg
U2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nUGVyZm9ybWFuY2UKIAogU2Nyb2xsaW5nTm9kZUlEIFNj
cm9sbGluZ1RyZWU6OmxhdGNoZWROb2RlKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICBy
ZXR1cm4gbV9sYXRjaGVkTm9kZTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRMYXRjaGVk
Tm9kZShTY3JvbGxpbmdOb2RlSUQgbm9kZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICBt
X2xhdGNoZWROb2RlID0gbm9kZTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlOjpjbGVhckxhdGNo
ZWROb2RlKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICBtX2xhdGNoZWROb2RlID0gMDsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsMTEgKzE2MCwxMSBAQCBwcml2
YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTY3JvbGxpbmdOb2RlSUQsIFNjcm9sbGluZ1RyZWVO
b2RlKj4gU2Nyb2xsaW5nVHJlZU5vZGVNYXA7CiAgICAgU2Nyb2xsaW5nVHJlZU5vZGVNYXAgbV9u
b2RlTWFwOwogCi0gICAgTXV0ZXggbV9tdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9tdXRl
eDsKICAgICBSZWdpb24gbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKICAgICBGbG9hdFBvaW50
IG1fbWFpbkZyYW1lU2Nyb2xsUG9zaXRpb247CiAKLSAgICBNdXRleCBtX3N3aXBlU3RhdGVNdXRl
eDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9zd2lwZVN0YXRlTXV0ZXg7CiAgICAgU2Nyb2xsUGlu
bmluZ0JlaGF2aW9yIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yIHsgRG9Ob3RQaW4gfTsKICAgICBT
Y3JvbGxpbmdOb2RlSUQgbV9sYXRjaGVkTm9kZSB7IDAgfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgJKHJldmlzaW9uIDE4Nzg4
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2xl
YXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZTsKICAgICB2b2lkIChebV9yZWxlYXNlTWVtb3J5Qmxv
Y2spKCk7CiAgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbV9vYnNlcnZlcjsKLSAgICBNdXRleCBt
X29ic2VydmVyTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fb2JzZXJ2ZXJNdXRleDsKICNl
bGlmIE9TKExJTlVYKQogICAgIGludCBtX2V2ZW50RkQ7CiAgICAgaW50IG1fcHJlc3N1cmVMZXZl
bEZEOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsNyArMTAyLDcgQEAgdm9pZCBIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWRBc3luY2hyb25vdQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV90aHJlYWRMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGhyZWFk
TG9jayk7CiAgICAgCiAgICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSAmJiAhbV9kYXRhYmFz
ZUxvYWRlclRocmVhZCkgewogICAgICAgICAvLyBTdGFydCB0aGUgYXN5bmNocm9ub3VzIGRhdGFi
YXNlIGxvYWRpbmcgcHJvY2Vzcy4KQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEhSVEZEYXRhYmFz
ZUxvYWRlcjo6aXNMb2FkZWQoKSBjb25zCiAKIHZvaWQgSFJURkRhdGFiYXNlTG9hZGVyOjp3YWl0
Rm9yTG9hZGVyVGhyZWFkQ29tcGxldGlvbigpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
dGhyZWFkTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RocmVhZExv
Y2spOwogICAgIAogICAgIC8vIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKCkgc2hvdWxkIG5vdCBi
ZSBjYWxsZWQgdHdpY2UgZm9yIHRoZSBzYW1lIHRocmVhZC4KICAgICBpZiAobV9kYXRhYmFzZUxv
YWRlclRocmVhZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZEYXRhYmFzZUxvYWRlci5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRGF0YWJhc2U+
IG1faHJ0ZkRhdGFiYXNlOwogCiAgICAgLy8gSG9sZGluZyBhIG1fdGhyZWFkTG9jayBpcyByZXF1
aXJlZCB3aGVuIGFjY2Vzc2luZyBtX2RhdGFiYXNlTG9hZGVyVGhyZWFkLgotICAgIE11dGV4IG1f
dGhyZWFkTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV90aHJlYWRMb2NrOwogICAgIFRocmVh
ZElkZW50aWZpZXIgbV9kYXRhYmFzZUxvYWRlclRocmVhZDsKIAogICAgIGZsb2F0IG1fZGF0YWJh
c2VTYW1wbGVSYXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0JKHJldmlzaW9uIDE4Nzg4
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxl
ckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnNldFJlY2VpdmVkTQogICAgIG1fdW5kZXJNZW1vcnlQcmVzc3VyZSA9
IHRydWU7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX29ic2VydmVyTXV0
ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRl
eCk7CiAgICAgICAgIGlmICghbV9vYnNlcnZlcikgewogICAgICAgICAgICAgbV9vYnNlcnZlciA9
IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKE5VTEwsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwg
a0NGUnVuTG9vcEV4aXQsIE5PIC8qIGRvbid0IHJlcGVhdCAqLywKICAgICAgICAgICAgICAgICAw
LCBXZWJDb3JlOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZUNhbGxiYWNrLCBOVUxMKTsKQEAgLTI3
MiwxNCArMjcyLDE0IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjbGVhck1lbW9yeVAK
ICAgICBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgPSBmYWxzZTsKIAogICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9vYnNlcnZlck11dGV4KTsKICAgICAgICAgbV9tZW1vcnlQcmVzc3Vy
ZVJlYXNvbiA9IE1lbW9yeVByZXNzdXJlUmVhc29uTm9uZTsKICAgICB9CiB9CiAKIGJvb2wgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpzaG91bGRXYWl0Rm9yTWVtb3J5Q2xlYXJNZXNzYWdlKCkKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV9vYnNlcnZlck11dGV4KTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRleCk7CiAgICAgcmV0dXJuIG1fbWVtb3J5
UHJlc3N1cmVSZWFzb24gJiBNZW1vcnlQcmVzc3VyZVJlYXNvblZNU3RhdHVzOwogfQogCkBAIC0y
ODgsNyArMjg4LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbQog
ICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7CiAKICAgICB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOworICAgICAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRleCk7CiAgICAgICAgIG1fb2JzZXJ2
ZXIgPSAwOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCShyZXZpc2lvbiAxODc4
ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmUKICAgICBkb3VibGUgbW9ub3RvbmljQW5pbWF0aW9u
U3RhcnRUaW1lOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwor
ICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgaWYg
KCFtX3NjaGVkdWxlZCkKICAgICAgICAgICAgICsrbV91bnNjaGVkdWxlZEZpcmVDb3VudDsKICAg
ICAgICAgZWxzZQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpkaXNwbGF5RGlkUmUKICAgICAgICAgbV9jbGllbnRzVG9CZU5vdGlmaWVkID0gbnVsbHB0cjsK
IAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIG1fcHJldmlvdXNGcmFt
ZURvbmUgPSB0cnVlOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCShyZXZpc2lv
biAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldE1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1l
KSB7IG1fbW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lID0gc3RhcnRUaW1lOyB9CiAKLSAgICBN
dXRleCYgbXV0ZXgoKSB7IHJldHVybiBtX211dGV4OyB9CisgICAgRGVwcmVjYXRlZE11dGV4JiBt
dXRleCgpIHsgcmV0dXJuIG1fbXV0ZXg7IH0KIAogICAgIHN0YXRpYyBSZWZQdHI8RGlzcGxheVJl
ZnJlc2hNb25pdG9yPiBjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3Jt
RGlzcGxheUlEKTsKIApAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wcmV2
aW91c0ZyYW1lRG9uZTsKICAgICBpbnQgbV91bnNjaGVkdWxlZEZpcmVDb3VudDsgLy8gTnVtYmVy
IG9mIHRpbWVzIHRoZSBkaXNwbGF5IGxpbmsgaGFzIGZpcmVkIHdpdGggbm8gY2xpZW50cy4KICAg
ICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKLSAgICBNdXRleCBtX211dGV4OworICAg
IERlcHJlY2F0ZWRNdXRleCBtX211dGV4OwogCiAgICAgSGFzaFNldDxEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgSGFzaFNldDxEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQqPiogbV9jbGllbnRzVG9CZU5vdGlmaWVkOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAJKHJldmlzaW9u
IDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NDAsNyArNzQwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldAog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0RGVsYXlDYWxsYmFja3Mo
Ym9vbCBkZWxheSkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9xdWV1ZU11dGV4KTsKICAgICBpZiAo
ZGVsYXkpCiAgICAgICAgICsrbV9kZWxheUNhbGxiYWNrczsKICAgICBlbHNlIHsKQEAgLTc1OSw3
ICs3NTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bWFpCiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpjbGVhck1haW5UaHJlYWRQZW5kaW5n
RmxhZygpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7CiAgICAgbV9tYWluVGhyZWFkQ2Fs
bFBlbmRpbmcgPSBmYWxzZTsKIH0KIApAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpkaXMKIAogICAgIE5vdGlmaWNhdGlvbiBub3RpZmljYXRp
b24gPSBOb3RpZmljYXRpb24oKTsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9x
dWV1ZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9xdWV1ZU11
dGV4KTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAkocmV2aXNpb24gMTg3ODg5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDcgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9wZW5kaW5nU2VlazsKIAogICAg
IFZlY3RvcjxOb3RpZmljYXRpb24+IG1fcXVldWVkTm90aWZpY2F0aW9uczsKLSAgICBtdXRhYmxl
IE11dGV4IG1fcXVldWVNdXRleDsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX3F1ZXVl
TXV0ZXg7CiAKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCShyZXZp
c2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBpbmxpbmUgdm9p
ZCogY2FsbGJhY2tDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4obV9vYmplY3RJRCk7IH0KIAotICAgIHN0YXRpYyBNdXRleCYgbWFwTG9jaygpOworICAgIHN0
YXRpYyBEZXByZWNhdGVkTXV0ZXgmIG1hcExvY2soKTsKICAgICBzdGF0aWMgSGFzaE1hcDx1aW50
cHRyX3QsIEFWRldyYXBwZXIqPiYgbWFwKCk7CiAgICAgc3RhdGljIEFWRldyYXBwZXIqIGF2Zldy
YXBwZXJGb3JDYWxsYmFja0NvbnRleHQodm9pZCopOwogICAgIHZvaWQgYWRkVG9NYXAoKTsKQEAg
LTE0MDMsOSArMTQwMyw5IEBAIEFWRldyYXBwZXI6On5BVkZXcmFwcGVyKCkKICAgICBtX2F2UGxh
eWVyID0gMDsKIH0KIAotTXV0ZXgmIEFWRldyYXBwZXI6Om1hcExvY2soKQorRGVwcmVjYXRlZE11
dGV4JiBBVkZXcmFwcGVyOjptYXBMb2NrKCkKIHsKLSAgICBzdGF0aWMgTXV0ZXggbWFwTG9jazsK
KyAgICBzdGF0aWMgRGVwcmVjYXRlZE11dGV4IG1hcExvY2s7CiAgICAgcmV0dXJuIG1hcExvY2s7
CiB9CiAKQEAgLTE0MTcsNyArMTQxNyw3IEBAIEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFwcGVy
Kj4mIEFWRldyYXAKIAogdm9pZCBBVkZXcmFwcGVyOjphZGRUb01hcCgpCiB7Ci0gICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tl
cihtYXBMb2NrKCkpOwogICAgIAogICAgIC8vIEhhc2hNYXAgZG9lc24ndCBsaWtlIGEga2V5IG9m
IDAsIGFuZCBhbHNvIG1ha2Ugc3VyZSB3ZSBhcmVuJ3QKICAgICAvLyB1c2luZyBhbiBvYmplY3Qg
SUQgdGhhdCdzIGFscmVhZHkgaW4gdXNlLgpAQCAtMTQzMyw3ICsxNDMzLDcgQEAgdm9pZCBBVkZX
cmFwcGVyOjpyZW1vdmVGcm9tTWFwKCkgY29uc3QKIHsKICAgICBMT0coTWVkaWEsICJBVkZXcmFw
cGVyOjpyZW1vdmVGcm9tTWFwKCVwICVkKSIsIHRoaXMsIG1fb2JqZWN0SUQpOwogCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtYXBMb2NrKCkpOwogICAgIG1hcCgpLnJlbW92ZShtX29iamVjdElEKTsKIH0KIApAQCAt
MTYzNCw3ICsxNjM0LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXJJdGVtKCkKIAog
dm9pZCBBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJS
ZWYsIENNVGltZSBjbVRpbWUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1hcExvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2Nr
KCkpOwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0
KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFw
cGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZG
V3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0x
NjY1LDcgKzE2NjUsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRpb24odm9p
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhPiBub3RpZmlj
YXRpb25EYXRhIHsgc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhKj4oY29udGV4
dCkgfTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0g
YXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChub3RpZmljYXRpb25EYXRhLT5tX2NvbnRleHQp
OwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwcm9j
ZXNzTm90aWZpY2F0aW9uIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xNzIwLDcgKzE3MjAsNyBAQCB2
b2lkIEFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKENGCiAKIHZvaWQgQVZGV3JhcHBl
cjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCogY29u
dGV4dCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CiAgICAgQVZGV3JhcHBlciogc2VsZiA9
IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7
CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25D
YWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTc0OCw3ICsxNzQ4LDcgQEAgdm9pZCBBVkZX
cmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCkKIAogdm9pZCBBVkZXcmFwcGVyOjpsb2FkTWV0YWRh
dGFDb21wbGV0aW9uQ2FsbGJhY2soQVZDRkFzc2V0UmVmLCB2b2lkKiBjb250ZXh0KQogewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZv
ckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9H
KE1lZGlhLCAiQVZGV3JhcHBlcjo6bG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNrIGludm9r
ZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Pihjb250ZXh0KSk7CkBAIC0xNzY4LDcgKzE3NjgsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmJlZ2lu
TG9hZGluZ01ldGFkYXRhKCkKIAogdm9pZCBBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJh
Y2soQVZDRlBsYXllckl0ZW1SZWYsIEJvb2xlYW4gZmluaXNoZWQsIHZvaWQqIGNvbnRleHQpCiB7
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFw
cGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAg
ICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2sgaW52b2tlZCBm
b3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNv
bnRleHQpKTsKQEAgLTE4MTEsNyArMTgxMSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc0N1
ZSh2b2lkKiBjb250ZXgKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdpYmxlT3V0cHV0RGF0YT4g
bGVnaWJsZU91dHB1dERhdGEocmVpbnRlcnByZXRfY2FzdDxMZWdpYmxlT3V0cHV0RGF0YSo+KGNv
bnRleHQpKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxm
ID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChsZWdpYmxlT3V0cHV0RGF0YS0+bV9jb250
ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6
cHJvY2Vzc0N1ZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTgyNyw3ICsxODI3LDcgQEAgdm9pZCBB
VkZXcmFwcGVyOjpwcm9jZXNzQ3VlKHZvaWQqIGNvbnRleAogdm9pZCBBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0
cHV0UmVmIGxlZ2libGVPdXRwdXQsIENGQXJyYXlSZWYgYXR0cmlidXRlZFN0cmluZ3MsIENGQXJy
YXlSZWYgbmF0aXZlU2FtcGxlQnVmZmVycywgQ01UaW1lIGl0ZW1UaW1lKQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFw
cGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBp
ZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1
dENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODY1LDcgKzE4NjUsNyBAQCB2b2lkIEFW
RldyYXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TG9hZFJlcXVlc3REYXRhPiBsb2FkUmVxdWVzdERhdGEocmVpbnRlcnByZXRfY2FzdDxMb2FkUmVx
dWVzdERhdGEqPihjb250ZXh0KSk7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygp
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CiAgICAgQVZG
V3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQobG9hZFJlcXVlc3RE
YXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJB
VkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlIGludm9rZWQg
Zm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihj
b250ZXh0KSk7CkBAIC0xOTIxLDcgKzE5MjEsNyBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdh
aXRGb3JMb2FkaW5nT2ZSCiBCb29sZWFuIEFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxk
V2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKEFWQ0ZBc3NldFJlc291cmNlTG9hZGVy
UmVmIHJlc291cmNlTG9hZGVyLCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmIGxv
YWRpbmdSZXF1ZXN0LCB2b2lkICpjb250ZXh0KQogewogICAgIEFTU0VSVChkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpICE9IGRpc3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKCkpOwotICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxi
YWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlh
LCAiQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVz
dGVkUmVzb3VyY2UgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDE4Nzg4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmhhCiB7CiAgICAgbV9zYW1w
bGVUaW1lckhhbmRsZXIuY2FuY2VsKCk7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2Nr
KG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3Nh
bXBsZU11dGV4KTsKICAgICAgICAgbV9wZW5kaW5nU2FtcGxlcy5hcHBlbmQoc2FtcGxlKTsKICAg
ICB9CiAgICAgbV9zYW1wbGVUaW1lckhhbmRsZXIuc2NoZWR1bGUoIltXZWJLaXRdIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUiLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4oc3RkOjpiaW5kKCZJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpu
b3RpZnlUcmFja09mU2FtcGxlLCB0aGlzKSkpOwpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vCiB7CiAgICAgVmVjdG9yPEdSZWZQdHI8R3N0
U2FtcGxlPiA+IHNhbXBsZXM7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fc2Ft
cGxlTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3NhbXBsZU11
dGV4KTsKICAgICAgICAgbV9wZW5kaW5nU2FtcGxlcy5zd2FwKHNhbXBsZXMpOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgZ3Vsb25nIG1fZXZlbnRQcm9iZTsK
ICAgICBWZWN0b3I8R1JlZlB0cjxHc3RTYW1wbGU+ID4gbV9wZW5kaW5nU2FtcGxlczsKICAgICBT
dHJpbmcgbV9zdHJlYW1JZDsKLSAgICBNdXRleCBtX3NhbXBsZU11dGV4OworICAgIERlcHJlY2F0
ZWRNdXRleCBtX3NhbXBsZU11dGV4OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAkocmV2aXNp
b24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyAr
MTAyLDcgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjp0YWdzQ2hhbgogICAgIEdS
ZWZQdHI8R3N0VGFnTGlzdD4gdGFnczsKICAgICBnX29iamVjdF9nZXQobV9wYWQuZ2V0KCksICJ0
YWdzIiwgJnRhZ3Mub3V0UHRyKCksIE5VTEwpOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9jayhtX3RhZ011dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV90
YWdNdXRleCk7CiAgICAgICAgIG1fdGFncy5zd2FwKHRhZ3MpOwogICAgIH0KIApAQCAtMTU4LDcg
KzE1OCw3IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHIKIAogICAg
IEdSZWZQdHI8R3N0VGFnTGlzdD4gdGFnczsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2sobV90YWdNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fdGFn
TXV0ZXgpOwogICAgICAgICB0YWdzLnN3YXAobV90YWdzKTsKICAgICB9CiAgICAgaWYgKCF0YWdz
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oCShyZXZp
c2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIHByaXZhdGU6CiAgICAgR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZSBtX2FjdGl2ZVRp
bWVySGFuZGxlcjsKICAgICBHVGhyZWFkU2FmZU1haW5Mb29wU291cmNlIG1fdGFnVGltZXJIYW5k
bGVyOwogCi0gICAgTXV0ZXggbV90YWdNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV90YWdN
dXRleDsKICAgICBHUmVmUHRyPEdzdFRhZ0xpc3Q+IG1fdGFnczsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9E
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsMTQgKzg0LDE0IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjOjpyZXF1ZXN0UmUKICAgICAgICAgc2V0SXNBY3RpdmUodHJ1ZSk7CiAgICAgfQog
Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtdXRleCgpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9jayhtdXRleCgpKTsKICAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BsYXlMaW5rRmly
ZWQoZG91YmxlIG5vd1NlY29uZHMsIGRvdWJsZSBvdXRwdXRUaW1lU2Vjb25kcykKIHsKLSAgICBN
dXRleExvY2tlciBsb2NrKG11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
KG11dGV4KCkpOwogICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQogICAgICAgICByZXR1
cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24uY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEyLDIxICs1MTIsMjEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6YWRk
TGlzdGVuZXIoTWVkaWFQbGF5ZXJMaXN0ZW5lciogbGlzdGVuZXIpCiB7Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbXV0ZXhMaXN0ZW5lcnMpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9tdXRleExpc3RlbmVycyk7CiAKICAgICBtX2xpc3RlbmVycy5hZGQobGlzdGVuZXIp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVtb3ZlTGlz
dGVuZXIoTWVkaWFQbGF5ZXJMaXN0ZW5lciogbGlzdGVuZXIpCiB7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fbXV0ZXhMaXN0ZW5lcnMpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobV9tdXRleExpc3RlbmVycyk7CiAKICAgICBtX2xpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bm90aWZ5RGVs
ZXRlZCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXhMaXN0ZW5lcnMpOworICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleExpc3RlbmVycyk7CiAKICAgICBm
b3IgKEhhc2hTZXQ8TWVkaWFQbGF5ZXJMaXN0ZW5lcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
bGlzdGVuZXJzLmJlZ2luKCk7IGl0ICE9IG1fbGlzdGVuZXJzLmVuZCgpOyArK2l0KQogICAgICAg
ICAoKml0KS0+b25NZWRpYVBsYXllckRlbGV0ZWQoKTsKQEAgLTcwNCw3ICs3MDQsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIE1lZGlhUGxheWVyUHJpCiAKIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpBc3luY0NhbGxiYWNr
OjpJbnZva2UoX19SUENfX2luX29wdCBJTUZBc3luY1Jlc3VsdCAqcEFzeW5jUmVzdWx0KQogewot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgaWYgKCFtX21lZGlhUGxheWVyKQogICAgICAgICBy
ZXR1cm4gU19PSzsKQEAgLTcxOSw3ICs3MTksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IE1lZGlhUGxheWVyUHJpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpBc3luY0NhbGxiYWNrOjpvbk1lZGlhUGxheWVyRGVsZXRlZCgpCiB7Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7CiAKICAgICBtX21lZGlhUGxheWVyID0gbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgJKHJldmlzaW9uIDE4Nzg4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBwcml2
YXRlOgogCiAgICAgY2xhc3MgTWVkaWFQbGF5ZXJMaXN0ZW5lcjsKICAgICBIYXNoU2V0PE1lZGlh
UGxheWVyTGlzdGVuZXIqPiBtX2xpc3RlbmVyczsKLSAgICBNdXRleCBtX211dGV4TGlzdGVuZXJz
OworICAgIERlcHJlY2F0ZWRNdXRleCBtX211dGV4TGlzdGVuZXJzOwogCiAgICAgQ09NUHRyPElN
Rk1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CiAgICAgQ09NUHRyPElNRlNvdXJjZVJlc29s
dmVyPiBtX3NvdXJjZVJlc29sdmVyOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFVMT05HIG1fcmVmQ291bnQ7CiAgICAgICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbiogbV9tZWRpYVBsYXllcjsKICAgICAgICAgYm9vbCBtX2V2ZW50OwotICAgICAgICBN
dXRleCBtX211dGV4OworICAgICAgICBEZXByZWNhdGVkTXV0ZXggbV9tdXRleDsKICAgICB9Owog
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsOSArMjExLDkgQEAgcHJpdmF0
ZToKICAgICBmbG9hdCBtX3BlbmRpbmdTY2FsZTsKICAgICBmbG9hdCBtX3BlbmRpbmdab29tZWRP
dXRTY2FsZTsKIAotICAgIG11dGFibGUgTXV0ZXggbV90aWxlTXV0ZXg7Ci0gICAgbXV0YWJsZSBN
dXRleCBtX3NhdmVkRGlzcGxheVJlY3RNdXRleDsKLSAgICBtdXRhYmxlIE11dGV4IG1fY29udGVu
dFJlcGxhY2VtZW50SW1hZ2VNdXRleDsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX3Rp
bGVNdXRleDsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX3NhdmVkRGlzcGxheVJlY3RN
dXRleDsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX2NvbnRlbnRSZXBsYWNlbWVudElt
YWdlTXV0ZXg7CiAKICAgICBib29sIG1fdGlsZUNvbnRyb2xsZXJTaG91bGRVc2VMb3dTY2FsZVRp
bGVzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5tbQkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRUaWxlc09wYXF1ZShib28KICAgICBpZiAobV90aWxl
c09wYXF1ZSA9PSBvcGFxdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3RpbGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Rp
bGVNdXRleCk7CiAKICAgICBtX3RpbGVzT3BhcXVlID0gb3BhcXVlOwogICAgIG1fem9vbWVkT3V0
VGlsZUdyaWQtPnVwZGF0ZVRpbGVPcGFjaXR5KCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBM
ZWdhY3lUaWxlQ2FjaGU6OmRvTGF5b3V0VGlsZXMoKQogICAgIGlmIChpc1RpbGVDcmVhdGlvblN1
c3BlbmRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90
aWxlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgp
OwogICAgIExlZ2FjeVRpbGVHcmlkKiBhY3RpdmVHcmlkID0gYWN0aXZlVGlsZUdyaWQoKTsKICAg
ICAvLyBFdmVuIHRob3VnaCB3ZSBhcmVuJ3QgYWN0dWFsbHkgY3JlYXRpbmcgdGlsZXMgaW4gdGhl
IGluYWN0aXZlIGdyaWQsIHdlCiAgICAgLy8gc3RpbGwgbmVlZCB0byBkcm9wIGludmFsaWQgdGls
ZXMgaW4gcmVzcG9uc2UgdG8gYSBsYXlvdXQuCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBMZWdh
Y3lUaWxlQ2FjaGU6OnNldEN1cnJlbnRTY2FsZShmbAogICAgIGlmICgha2VlcHNab29tZWRPdXRU
aWxlcygpICYmICFpc1RpbGVJbnZhbGlkYXRpb25TdXNwZW5kZWQoKSkgewogICAgICAgICAvLyBU
aWxlIGludmFsaWRhdGlvbiBpcyBub3JtYWxseSBzdXNwZW5kZWQgZHVyaW5nIHpvb21pbmcgYnkg
VUlLaXQgYnV0IHNvbWUgYXBwbGljYXRpb25zCiAgICAgICAgIC8vIHVzaW5nIGN1c3RvbSBzY3Jv
bGx2aWV3cyBtYXkgem9vbSB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIGNhbGxiYWNrcy4gSW52YWxp
ZGF0ZSB0aGUgdGlsZXMgZXhwbGljaXRseS4KLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
dGlsZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVN
dXRleCk7CiAgICAgICAgIGFjdGl2ZVRpbGVHcmlkKCktPmRyb3BBbGxUaWxlcygpOwogICAgICAg
ICBhY3RpdmVUaWxlR3JpZCgpLT5jcmVhdGVUaWxlcyhDb3ZlclZpc2libGVPbmx5KTsKICAgICB9
CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNjYWxlQ2hh
bmdlKAogICAgIEFTU0VSVChtX3BlbmRpbmdab29tZWRPdXRTY2FsZSB8fCBtX3BlbmRpbmdTY2Fs
ZSk7CiAgICAgQVNTRVJUKG1fdGlsaW5nTW9kZSAhPSBEaXNhYmxlZCk7CiAgICAgCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fdGlsZU11dGV4KTsKIAogICAgIGlmIChtX3BlbmRpbmdab29tZWRPdXRTY2FsZSkg
ewogICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkLT5zZXRTY2FsZShtX3BlbmRpbmdab29tZWRP
dXRTY2FsZSk7CkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmxheW91
dFRpbGVzTm93KCkKICAgICBpZiAobV90aWxpbmdNb2RlID09IFpvb21pbmcpCiAgICAgICAgIG1f
dGlsaW5nTW9kZSA9IE1pbmltYWw7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0
ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgpOwogICAg
IExlZ2FjeVRpbGVHcmlkKiBhY3RpdmVHcmlkID0gYWN0aXZlVGlsZUdyaWQoKTsKICAgICBpZiAo
YWN0aXZlR3JpZC0+Y2hlY2tEb1NpbmdsZVRpbGVMYXlvdXQoKSkgewogICAgICAgICBtX3RpbGlu
Z01vZGUgPSBzYXZlZFRpbGluZ01vZGU7CkBAIC0zMjcsMTQgKzMyNywxNCBAQCB2b2lkIExlZ2Fj
eVRpbGVDYWNoZTo6bGF5b3V0VGlsZXNOb3coKQogdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmxheW91
dFRpbGVzTm93Rm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChXZWJU
aHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGls
ZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsK
IAogICAgIGFjdGl2ZVRpbGVHcmlkKCktPmFkZFRpbGVzQ292ZXJpbmdSZWN0KHJlY3QpOwogfQog
CiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzKCkKIHsKLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV90aWxlTXV0ZXgpOwogICAgIHJlbW92ZUFsbE5vblZpc2libGVUaWxlc0lu
dGVybmFsKCk7CiB9CiAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6
cmVtb3ZlQWxsTm9uVmlzaWJsCiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxUaWxl
cygpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKICAgICBtX3pvb21lZE91dFRpbGVH
cmlkLT5kcm9wQWxsVGlsZXMoKTsKICAgICBpZiAobV96b29tZWRJblRpbGVHcmlkKQogICAgICAg
ICBtX3pvb21lZEluVGlsZUdyaWQtPmRyb3BBbGxUaWxlcygpOwpAQCAtMzY0LDcgKzM2NCw3IEBA
IHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpyZW1vdmVBbGxUaWxlcygpCiAKIHZvaWQgTGVnYWN5VGls
ZUNhY2hlOjpyZW1vdmVGb3JlZ3JvdW5kVGlsZXMoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX3RpbGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVN
dXRleCk7CiAgICAgaWYgKCFrZWVwc1pvb21lZE91dFRpbGVzKCkpCiAgICAgICAgIG1fem9vbWVk
T3V0VGlsZUdyaWQtPmRyb3BBbGxUaWxlcygpOwogICAgIGlmIChtX3pvb21lZEluVGlsZUdyaWQp
CkBAIC0zNzMsMTMgKzM3MywxMyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlRm9yZWdy
b3VuZFRpCiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRDb250ZW50UmVwbGFjZW1lbnRJbWFn
ZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudFJlcGxhY2VtZW50SW1hZ2UpCiB7Ci0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2VNdXRleCk7CisgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdlTXV0
ZXgpOwogICAgIG1fY29udGVudFJlcGxhY2VtZW50SW1hZ2UgPSBjb250ZW50UmVwbGFjZW1lbnRJ
bWFnZTsKIH0KIAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IExlZ2FjeVRpbGVDYWNoZTo6Y29udGVu
dFJlcGxhY2VtZW50SW1hZ2UoKSBjb25zdAogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Nv
bnRlbnRSZXBsYWNlbWVudEltYWdlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9jb250ZW50UmVwbGFjZW1lbnRJbWFnZU11dGV4KTsKICAgICByZXR1cm4gbV9jb250
ZW50UmVwbGFjZW1lbnRJbWFnZTsKIH0KIApAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgTGVnYWN5
VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25UaW1lckYKIHsKICAgICBpZiAoaXNUaWxlQ3JlYXRpb25T
dXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Rp
bGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVNdXRleCk7
CiAgICAgY3JlYXRlVGlsZXNJbkFjdGl2ZUdyaWQoQ292ZXJTcGVjdWxhdGl2ZSk7CiB9CiAKQEAg
LTYyMCw3ICs2MjAsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6c2NoZWR1bGVMYXllckZsdXNo
CiAKIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3NhdmVkRGlzcGxh
eVJlY3RNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3NhdmVkRGlz
cGxheVJlY3RNdXRleCk7CiAgICAgYm9vbCBhZGRlZEZpcnN0UmVjdCA9IG1fc2F2ZWREaXNwbGF5
UmVjdHMuaXNFbXB0eSgpOwogICAgIG1fc2F2ZWREaXNwbGF5UmVjdHMuYXBwZW5kKGRpcnR5UmVj
dCk7CiAgICAgaWYgKCFhZGRlZEZpcnN0UmVjdCkKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIExl
Z2FjeVRpbGVDYWNoZTo6dXBkYXRlVGlsaW5nTW9kZSgpCiAgICAgICAgIGlmIChtX3RpbGluZ01v
ZGUgPT0gRGlzYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX3RpbGVNdXRleCk7CiAgICAgICAgIGNyZWF0ZVRpbGVzSW5BY3RpdmVHcmlkKENvdmVy
VmlzaWJsZU9ubHkpOwogCiAgICAgICAgIGlmICghbV9zYXZlZERpc3BsYXlSZWN0cy5pc0VtcHR5
KCkpCkBAIC03MTAsNyArNzEwLDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldFRpbGluZ01v
ZGUoVGlsaQogICAgIGlmICgobV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUgfHwgbV9wZW5kaW5nU2Nh
bGUpICYmIG1fdGlsaW5nTW9kZSAhPSBEaXNhYmxlZCkKICAgICAgICAgY29tbWl0U2NhbGVDaGFu
Z2UoKTsKICAgICBlbHNlIGlmICh3YXNab29taW5nKSB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3RpbGVNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV90aWxlTXV0ZXgpOwogICAgICAgICBicmluZ0FjdGl2ZVRpbGVHcmlkVG9Gcm9udCgpOwogICAg
IH0KIApAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpkb1BlbmRpbmdS
ZXBhaW50cygKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChpc1RpbGVJbnZhbGlkYXRpb25TdXNw
ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVN
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVNdXRleCk7CiAg
ICAgZmx1c2hTYXZlZERpc3BsYXlSZWN0cygpOwogfQogCkBAIC03NjQsNyArNzY0LDcgQEAgdm9p
ZCBMZWdhY3lUaWxlQ2FjaGU6OmZsdXNoU2F2ZWREaXNwbGF5UgogCiAgICAgVmVjdG9yPEludFJl
Y3Q+IHJlY3RzOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2F2ZWREaXNw
bGF5UmVjdE11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Nh
dmVkRGlzcGxheVJlY3RNdXRleCk7CiAgICAgICAgIG1fc2F2ZWREaXNwbGF5UmVjdHMuc3dhcChy
ZWN0cyk7CiAgICAgfQogICAgIHNpemVfdCBzaXplID0gcmVjdHMuc2l6ZSgpOwpAQCAtNzkyLDcg
Kzc5Miw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpwcmVwYXJlVG9EcmF3KCkKICAgICBbW21f
d2luZG93IGNvbnRlbnRWaWV3XSB2aWV3V2lsbERyYXddOwogCiAgICAgaWYgKCFtX3NhdmVkRGlz
cGxheVJlY3RzLmlzRW1wdHkoKSkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV90aWxl
TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4
KTsKICAgICAgICAgZmx1c2hTYXZlZERpc3BsYXlSZWN0cygpOwogICAgIH0KIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wuaAko
cmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVMYXllclBvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxJbnRTaXplPiBtX3NpemVzSW5QcnVuZU9yZGVyOwogICAgIHVuc2lnbmVkIG1f
dG90YWxCeXRlczsKICAgICB1bnNpZ25lZCBtX2NhcGFjaXR5OwotICAgIE11dGV4IG1fbGF5ZXJQ
b29sTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fbGF5ZXJQb29sTXV0ZXg7CiAKICAgICBk
b3VibGUgbV9sYXN0QWRkVGltZTsKICAgICBib29sIG1fbmVlZHNQcnVuZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLm1tCShy
ZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUxheWVyUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIExlZ2Fj
eVRpbGVMYXllclBvb2w6OmFkZExheWVyKGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV9sYXllclBvb2xNdXRleCk7CisgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKICAgICBsaXN0T2ZMYXllcnNX
aXRoU2l6ZShsYXllclNpemUpLnByZXBlbmQobGF5ZXIpOwogICAgIG1fdG90YWxCeXRlcyArPSBi
eXRlc0JhY2tpbmdMYXllcldpdGhQaXhlbFNpemUobGF5ZXJTaXplKTsKIApAQCAtOTYsNyArOTYs
NyBAQCBSZXRhaW5QdHI8TGVnYWN5VGlsZUxheWVyPiBMZWdhY3lUaWxlTGF5CiB7CiAgICAgaWYg
KCFjYW5SZXVzZUxheWVyV2l0aFNpemUoc2l6ZSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9sYXllclBvb2xNdXRleCk7CiAgICAgTGF5ZXJMaXN0JiByZXVzZUxp
c3QgPSBsaXN0T2ZMYXllcnNXaXRoU2l6ZShzaXplLCBNYXJrQXNVc2VkKTsKICAgICBpZiAocmV1
c2VMaXN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTEwNiw3ICsxMDYsNyBA
QCBSZXRhaW5QdHI8TGVnYWN5VGlsZUxheWVyPiBMZWdhY3lUaWxlTGF5CiAKIHZvaWQgTGVnYWN5
VGlsZUxheWVyUG9vbDo6c2V0Q2FwYWNpdHkodW5zaWduZWQgY2FwYWNpdHkpCiB7Ci0gICAgTXV0
ZXhMb2NrZXIgcmV1c2VMb2NrZXIobV9sYXllclBvb2xNdXRleCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIHJldXNlTG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOwogICAgIGlmIChjYXBhY2l0
eSA8IG1fY2FwYWNpdHkpCiAgICAgICAgIHNjaGVkdWxlUHJ1bmUoKTsKICAgICBtX2NhcGFjaXR5
ID0gY2FwYWNpdHk7CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29s
OjpzY2hlZHVsZVBydW5lKAogCiB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OnBydW5lKCkKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV9sYXllclBvb2xNdXRleCk7CisgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKICAgICBBU1NFUlQobV9uZWVk
c1BydW5lKTsKICAgICBtX25lZWRzUHJ1bmUgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBzaHJpbmtU
byA9IGRlY2F5ZWRDYXBhY2l0eSgpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgTGVnYWN5VGls
ZUxheWVyUG9vbDo6cHJ1bmUoKQogCiB2b2lkIExlZ2FjeVRpbGVMYXllclBvb2w6OmRyYWluKCkK
IHsKLSAgICBNdXRleExvY2tlciByZXVzZUxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgcmV1c2VMb2NrZXIobV9sYXllclBvb2xNdXRleCk7CiAgICAg
bV9yZXVzZUxpc3RzLmNsZWFyKCk7CiAgICAgbV9zaXplc0luUHJ1bmVPcmRlci5jbGVhcigpOwog
ICAgIG1fdG90YWxCeXRlcyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAkocmV2aXNpb24gMTg3ODg5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgQ3VybERvd25sb2FkTWFuYWdlcjo6fkN1
cmxEb3dubG9hZE1hbmFnZQogCiBib29sIEN1cmxEb3dubG9hZE1hbmFnZXI6OmFkZChDVVJMKiBj
dXJsSGFuZGxlKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgbV9wZW5kaW5nSGFuZGxl
TGlzdC5hcHBlbmQoY3VybEhhbmRsZSk7CiAgICAgc3RhcnRUaHJlYWRJZk5lZWRlZCgpOwpAQCAt
NzAsNyArNzAsNyBAQCBib29sIEN1cmxEb3dubG9hZE1hbmFnZXI6OmFkZChDVVJMKiBjdXJsCiAK
IGJvb2wgQ3VybERvd25sb2FkTWFuYWdlcjo6cmVtb3ZlKENVUkwqIGN1cmxIYW5kbGUpCiB7Ci0g
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrZXIobV9tdXRleCk7CiAKICAgICBtX3JlbW92ZWRIYW5kbGVMaXN0LmFwcGVuZChjdXJs
SGFuZGxlKTsKIApAQCAtNzksMTMgKzc5LDEzIEBAIGJvb2wgQ3VybERvd25sb2FkTWFuYWdlcjo6
cmVtb3ZlKENVUkwqIGMKIAogaW50IEN1cmxEb3dubG9hZE1hbmFnZXI6OmdldEFjdGl2ZURvd25s
b2FkQ291bnQoKSBjb25zdAogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAgIHJldHVybiBtX2Fj
dGl2ZUhhbmRsZUxpc3Quc2l6ZSgpOwogfQogCiBpbnQgQ3VybERvd25sb2FkTWFuYWdlcjo6Z2V0
UGVuZGluZ0Rvd25sb2FkQ291bnQoKSBjb25zdAogewotICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAg
IHJldHVybiBtX3BlbmRpbmdIYW5kbGVMaXN0LnNpemUoKTsKIH0KIApAQCAtMTExLDcgKzExMSw3
IEBAIHZvaWQgQ3VybERvd25sb2FkTWFuYWdlcjo6c3RvcFRocmVhZCgpCiAKIHZvaWQgQ3VybERv
d25sb2FkTWFuYWdlcjo6c3RvcFRocmVhZElmSWRsZSgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7
CiAKICAgICBpZiAoIWdldEFjdGl2ZURvd25sb2FkQ291bnQoKSAmJiAhZ2V0UGVuZGluZ0Rvd25s
b2FkQ291bnQoKSkKICAgICAgICAgc2V0UnVuVGhyZWFkKGZhbHNlKTsKQEAgLTExOSw3ICsxMTks
NyBAQCB2b2lkIEN1cmxEb3dubG9hZE1hbmFnZXI6OnN0b3BUaHJlYWRJZklkCiAKIHZvaWQgQ3Vy
bERvd25sb2FkTWFuYWdlcjo6dXBkYXRlSGFuZGxlTGlzdCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRl
eCk7CiAKICAgICAvLyBSZW1vdmUgY3VybCBlYXN5IGhhbmRsZXMgZnJvbSBtdWx0aSBsaXN0IAog
ICAgIGludCBzaXplID0gbV9yZW1vdmVkSGFuZGxlTGlzdC5zaXplKCk7CkBAIC0yNDUsNyArMjQ1
LDcgQEAgQ3VybERvd25sb2FkOjpDdXJsRG93bmxvYWQoKQogCiBDdXJsRG93bmxvYWQ6On5DdXJs
RG93bmxvYWQoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgaWYgKG1fdXJsKQogICAg
ICAgICBmYXN0RnJlZShtX3VybCk7CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBDdXJsRG93bmxv
YWQ6OmluaXQoQ3VybERvd25sb2FkTGlzdAogICAgIGlmICghbGlzdGVuZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgbV9jdXJsSGFuZGxlID0gY3VybF9l
YXN5X2luaXQoKTsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjppbml0
KEN1cmxEb3dubG9hZExpc3QKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIFVSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCByZXF1
ZXN0LnVybCgpKTsKIApAQCAtMzE3LDI1ICszMTcsMjUgQEAgYm9vbCBDdXJsRG93bmxvYWQ6OmNh
bmNlbCgpCiAKIFN0cmluZyBDdXJsRG93bmxvYWQ6OmdldFRlbXBQYXRoKCkgY29uc3QKIHsKLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tlcihtX211dGV4KTsKICAgICByZXR1cm4gbV90ZW1wUGF0aDsKIH0KIAogU3RyaW5nIEN1
cmxEb3dubG9hZDo6Z2V0VXJsKCkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICBy
ZXR1cm4gU3RyaW5nKG1fdXJsKTsKIH0KIAogUmVzb3VyY2VSZXNwb25zZSBDdXJsRG93bmxvYWQ6
OmdldFJlc3BvbnNlKCkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICByZXR1cm4g
bV9yZXNwb25zZTsKIH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6OmNsb3NlRmlsZSgpCiB7Ci0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9tdXRleCk7CiAKICAgICBpZiAobV90ZW1wSGFuZGxlICE9IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpIHsKICAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKG1fdGVtcEhhbmRsZSk7
CkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmFkZEhlYWRlcnMoY29uc3Qg
UmVzbwogCiB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcm
IGhlYWRlcikKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIGlmIChoZWFkZXIgPT0gIlxy
XG4iIHx8IGhlYWRlciA9PSAiXG4iKSB7CiAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIEN1cmxE
b3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zCiAKIHZvaWQgQ3VybERvd25sb2FkOjpkaWRS
ZWNlaXZlRGF0YSh2b2lkKiBkYXRhLCBpbnQgc2l6ZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsK
IAogICAgIFJlZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3RlZERvd25sb2FkKHRoaXMpOwogCkBA
IC00NjQsNyArNDY0LDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZEZpbmlzaCgpCiAKIHZvaWQg
Q3VybERvd25sb2FkOjpkaWRGYWlsKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRl
eCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIGNs
b3NlRmlsZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybERvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgJKHdvcmtpbmcgY29weSkK
QEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8Q1VSTCo+IG1fcGVuZGluZ0hh
bmRsZUxpc3Q7CiAgICAgVmVjdG9yPENVUkwqPiBtX2FjdGl2ZUhhbmRsZUxpc3Q7CiAgICAgVmVj
dG9yPENVUkwqPiBtX3JlbW92ZWRIYW5kbGVMaXN0OwotICAgIG11dGFibGUgTXV0ZXggbV9tdXRl
eDsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX211dGV4OwogICAgIGJvb2wgbV9ydW5U
aHJlYWQ7CiB9OwogCkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV90ZW1wSGFuZGxlOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9yZXNwb25zZTsKICAgICBib29sIG1fZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZTsKLSAg
ICBtdXRhYmxlIE11dGV4IG1fbXV0ZXg7CisgICAgbXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9t
dXRleDsKICAgICBDdXJsRG93bmxvYWRMaXN0ZW5lciAqbV9saXN0ZW5lcjsKIAogICAgIHN0YXRp
YyBDdXJsRG93bmxvYWRNYW5hZ2VyIG1fZG93bmxvYWRNYW5hZ2VyOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlTWFuYWdlci5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzMsMTAgKzEzMywxMCBAQCBzdGF0aWMgY2hhciogY29va2llSmFyUGF0aCgpCiAj
ZW5kaWYKIH0KIAotc3RhdGljIE11dGV4KiBzaGFyZWRSZXNvdXJjZU11dGV4KGN1cmxfbG9ja19k
YXRhIGRhdGEpIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIGNv
b2tpZU11dGV4LCAoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4
LCBkbnNNdXRleCwgKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRl
eCwgc2hhcmVNdXRleCwgKCkpOworc3RhdGljIERlcHJlY2F0ZWRNdXRleCogc2hhcmVkUmVzb3Vy
Y2VNdXRleChjdXJsX2xvY2tfZGF0YSBkYXRhKSB7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKERlcHJlY2F0ZWRNdXRleCwgY29va2llTXV0ZXgsICgpKTsKKyAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGVwcmVjYXRlZE11dGV4LCBkbnNNdXRleCwgKCkpOwor
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEZXByZWNhdGVkTXV0ZXgsIHNoYXJl
TXV0ZXgsICgpKTsKIAogICAgIHN3aXRjaCAoZGF0YSkgewogICAgICAgICBjYXNlIENVUkxfTE9D
S19EQVRBX0NPT0tJRToKQEAgLTE5MCwxMyArMTkwLDEzIEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0
ZVdlYlRpbWluZ0luZm9ybWF0aW8KIC8vIGNhY2hlLgogc3RhdGljIHZvaWQgY3VybF9sb2NrX2Nh
bGxiYWNrKENVUkwqIC8qIGhhbmRsZSAqLywgY3VybF9sb2NrX2RhdGEgZGF0YSwgY3VybF9sb2Nr
X2FjY2VzcyAvKiBhY2Nlc3MgKi8sIHZvaWQqIC8qIHVzZXJQdHIgKi8pCiB7Ci0gICAgaWYgKE11
dGV4KiBtdXRleCA9IHNoYXJlZFJlc291cmNlTXV0ZXgoZGF0YSkpCisgICAgaWYgKERlcHJlY2F0
ZWRNdXRleCogbXV0ZXggPSBzaGFyZWRSZXNvdXJjZU11dGV4KGRhdGEpKQogICAgICAgICBtdXRl
eC0+bG9jaygpOwogfQogCiBzdGF0aWMgdm9pZCBjdXJsX3VubG9ja19jYWxsYmFjayhDVVJMKiAv
KiBoYW5kbGUgKi8sIGN1cmxfbG9ja19kYXRhIGRhdGEsIHZvaWQqIC8qIHVzZXJQdHIgKi8pCiB7
Ci0gICAgaWYgKE11dGV4KiBtdXRleCA9IHNoYXJlZFJlc291cmNlTXV0ZXgoZGF0YSkpCisgICAg
aWYgKERlcHJlY2F0ZWRNdXRleCogbXV0ZXggPSBzaGFyZWRSZXNvdXJjZU11dGV4KGRhdGEpKQog
ICAgICAgICBtdXRleC0+dW5sb2NrKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0JKHJldmlzaW9uIDE4Nzg4OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtODUsOSArODUsOSBAQCBOU0RpY3Rpb25hcnkgKldlYkNvcmU6OlFMRGlyZWN0
b3J5QXR0cmliCiAgICAgcmV0dXJuIGRpY3Rpb25hcnk7CiB9CiAKLXN0YXRpYyBNdXRleCYgcWxQ
cmV2aWV3Q29udmVydGVyRGljdGlvbmFyeU11dGV4KCkKK3N0YXRpYyBEZXByZWNhdGVkTXV0ZXgm
IHFsUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnlNdXRleCgpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPE11dGV4PiBtdXRleDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGVwcmVj
YXRlZE11dGV4PiBtdXRleDsKICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKQEAgLTEwNyw3ICsxMDcs
NyBAQCB2b2lkIFdlYkNvcmU6OmFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhGCiB7CiAgICAgQVNT
RVJUKHVybCk7CiAgICAgQVNTRVJUKGNvbnZlcnRlcik7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhx
bFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2socWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeU11dGV4KCkpOwogICAgIFtR
TFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkgc2V0T2JqZWN0OmNvbnZlcnRlciBmb3JLZXk6
dXJsXTsKICAgICBbUUxDb250ZW50RGljdGlvbmFyeSgpIHNldE9iamVjdDooZmlsZU5hbWUgPyBm
aWxlTmFtZSA6IEAiIikgZm9yS2V5OnVybF07CiB9CkBAIC0xMjEsNyArMTIxLDcgQEAgTlNTdHJp
bmcgKldlYkNvcmU6OnFsUHJldmlld0NvbnZlcnRlclVUSQogewogICAgIGlkIGNvbnZlcnRlciA9
IG5pbDsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2socWxQcmV2aWV3Q29udmVydGVy
RGljdGlvbmFyeU11dGV4KCkpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhx
bFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TXV0ZXgoKSk7CiAgICAgICAgIGNvbnZlcnRlciA9
IFtRTFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkgb2JqZWN0Rm9yS2V5OnVybF07CiAgICAg
fQogICAgIGlmICghY29udmVydGVyKQpAQCAtMTMxLDcgKzEzMSw3IEBAIE5TU3RyaW5nICpXZWJD
b3JlOjpxbFByZXZpZXdDb252ZXJ0ZXJVVEkKIAogdm9pZCBXZWJDb3JlOjpyZW1vdmVRTFByZXZp
ZXdDb252ZXJ0ZXJGb3JVUkwoTlNVUkwgKnVybCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKHFs
UHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnlNdXRleCgpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9jayhxbFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TXV0ZXgoKSk7CiAgICAgW1FM
UHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnkoKSByZW1vdmVPYmplY3RGb3JLZXk6dXJsXTsKIAog
ICAgIC8vIERlbGV0ZSB0aGUgZmlsZSB3aGVuIHdlIHJlbW92ZSB0aGUgcHJldmlldyBjb252ZXJ0
ZXIKQEAgLTE2Niw3ICsxNjYsNyBAQCBjb25zdCBVUkwgV2ViQ29yZTo6c2FmZVFMVVJMRm9yRG9j
dW1lbnRVCiAgICAgaWQgY29udmVydGVyID0gbmlsOwogICAgIE5TVVJMICpuc0RvY3VtZW50VVJM
ID0gZG9jdW1lbnRVUkw7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKHFsUHJldmll
d0NvbnZlcnRlckRpY3Rpb25hcnlNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2socWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeU11dGV4KCkpOwogICAgICAgICBj
b252ZXJ0ZXIgPSBbUUxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeSgpIG9iamVjdEZvcktleTpu
c0RvY3VtZW50VVJMXTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIxLDcgKzEyMSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAgLy8g
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29wZW5pbmdUaHJlYWQpOwogICAgICAgICBzcWxp
dGUzKiBkYiA9IG1fZGI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2RhdGFiYXNlQ2xvc2luZ011dGV4KTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9kYXRhYmFzZUNsb3NpbmdNdXRleCk7CiAgICAgICAgICAgICBtX2RiID0g
MDsKICAgICAgICAgfQogICAgICAgICBzcWxpdGUzX2Nsb3NlKGRiKTsKQEAgLTE1Miw3ICsxNTIs
NyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbnRlcnJ1cHQoKQogewogICAgIG1faW50ZXJydXB0
ZWQgPSB0cnVlOwogICAgIHdoaWxlICghbV9sb2NraW5nTXV0ZXgudHJ5TG9jaygpKSB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlQ2xvc2luZ011dGV4KTsKKyAgICAgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlQ2xvc2luZ011dGV4KTsKICAg
ICAgICAgaWYgKCFtX2RiKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBzcWxpdGUzX2lu
dGVycnVwdChtX2RiKTsKQEAgLTE4MSw3ICsxODEsNyBAQCBpbnQ2NF90IFNRTGl0ZURhdGFiYXNl
OjptYXhpbXVtU2l6ZSgpCiAgICAgaW50NjRfdCBtYXhQYWdlQ291bnQgPSAwOwogCiAgICAgewot
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CiAgICAgICAgIGVu
YWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KCp0aGlzLCBBU0NJSUxpdGVyYWwoIlBSQUdNQSBtYXhfcGFnZV9jb3VudCIpKTsKICAgICAgICAg
bWF4UGFnZUNvdW50ID0gc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApOwpAQCAtMjAxLDcgKzIw
MSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldE1heGltdW1TaXplKGludDYKICAgICBBU1NF
UlQoY3VycmVudFBhZ2VTaXplIHx8ICFtX2RiKTsKICAgICBpbnQ2NF90IG5ld01heFBhZ2VDb3Vu
dCA9IGN1cnJlbnRQYWdlU2l6ZSA/IHNpemUgLyBjdXJyZW50UGFnZVNpemUgOiAwOwogICAgIAot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogICAgIGVuYWJsZUF1dGhvcml6
ZXIoZmFsc2UpOwogCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudCgqdGhpcywgIlBSQUdN
QSBtYXhfcGFnZV9jb3VudCA9ICIgKyBTdHJpbmc6Om51bWJlcihuZXdNYXhQYWdlQ291bnQpKTsK
QEAgLTIxOCw3ICsyMTgsNyBAQCBpbnQgU1FMaXRlRGF0YWJhc2U6OnBhZ2VTaXplKCkKICAgICAv
LyBTaW5jZSB0aGUgcGFnZSBzaXplIG9mIGEgZGF0YWJhc2UgaXMgbG9ja2VkIGluIGF0IGNyZWF0
aW9uIGFuZCB0aGVyZWZvcmUgY2Fubm90IGJlIGR5bmFtaWMsIAogICAgIC8vIHdlIGNhbiBjYWNo
ZSB0aGUgdmFsdWUgZm9yIGZ1dHVyZSB1c2UKICAgICBpZiAobV9wYWdlU2l6ZSA9PSAtMSkgewot
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CiAgICAgICAgIGVu
YWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICAKICAgICAgICAgU1FMaXRlU3RhdGVtZW50
IHN0YXRlbWVudCgqdGhpcywgQVNDSUlMaXRlcmFsKCJQUkFHTUEgcGFnZV9zaXplIikpOwpAQCAt
MjM1LDcgKzIzNSw3IEBAIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6OmZyZWVTcGFjZVNpemUoKQog
ICAgIGludDY0X3QgZnJlZWxpc3RDb3VudCA9IDA7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKICAgICAgICAgZW5hYmxlQXV0aG9yaXplcihm
YWxzZSk7CiAgICAgICAgIC8vIE5vdGU6IGZyZWVsaXN0X2NvdW50IHdhcyBhZGRlZCBpbiBTUUxp
dGUgMy40LjEuCiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQoKnRoaXMsIEFTQ0lJ
TGl0ZXJhbCgiUFJBR01BIGZyZWVsaXN0X2NvdW50IikpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIGlu
dDY0X3QgU1FMaXRlRGF0YWJhc2U6OnRvdGFsU2l6ZSgpCiAgICAgaW50NjRfdCBwYWdlQ291bnQg
PSAwOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9j
ayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9j
ayk7CiAgICAgICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwogICAgICAgICBTUUxpdGVTdGF0
ZW1lbnQgc3RhdGVtZW50KCp0aGlzLCBBU0NJSUxpdGVyYWwoIlBSQUdNQSBwYWdlX2NvdW50Iikp
OwogICAgICAgICBwYWdlQ291bnQgPSBzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMCk7CkBAIC0z
MzAsNyArMzMwLDcgQEAgaW50IFNRTGl0ZURhdGFiYXNlOjpydW5WYWN1dW1Db21tYW5kKCkKIAog
aW50IFNRTGl0ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogICAgIGVuYWJsZUF1dGhvcml6ZXIo
ZmFsc2UpOwogCiAgICAgaWYgKCFleGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwoIlBSQUdNQSBp
bmNyZW1lbnRhbF92YWN1dW0iKSkpCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBTUUxpdGVEYXRh
YmFzZTo6c2V0QXV0aG9yaXplcihQYXNzUgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CiAKICAgICBtX2F1dGhvcml6ZXIgPSBh
dXRoOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVi
bGljOgogICAgIAogICAgIHZvaWQgc2V0QXV0aG9yaXplcihQYXNzUmVmUHRyPERhdGFiYXNlQXV0
aG9yaXplcj4pOwogCi0gICAgTXV0ZXgmIGRhdGFiYXNlTXV0ZXgoKSB7IHJldHVybiBtX2xvY2tp
bmdNdXRleDsgfQorICAgIERlcHJlY2F0ZWRNdXRleCYgZGF0YWJhc2VNdXRleCgpIHsgcmV0dXJu
IG1fbG9ja2luZ011dGV4OyB9CiAgICAgYm9vbCBpc0F1dG9Db21taXRPbigpIGNvbnN0OwogCiAg
ICAgLy8gVGhlIFNRTGl0ZSBBVVRPX1ZBQ1VVTSBwcmFnbWEgY2FuIGJlIGVpdGhlciBOT05FLCBG
VUxMLCBvciBJTkNSRU1FTlRBTC4KQEAgLTE0OSwxMyArMTQ5LDEzIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzczsKICAgICBib29sIG1fc2hhcmFibGU7CiAgICAg
Ci0gICAgTXV0ZXggbV9hdXRob3JpemVyTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9hdXRo
b3JpemVyTG9jazsKICAgICBSZWZQdHI8RGF0YWJhc2VBdXRob3JpemVyPiBtX2F1dGhvcml6ZXI7
CiAKLSAgICBNdXRleCBtX2xvY2tpbmdNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9sb2Nr
aW5nTXV0ZXg7CiAgICAgVGhyZWFkSWRlbnRpZmllciBtX29wZW5pbmdUaHJlYWQ7CiAKLSAgICBN
dXRleCBtX2RhdGFiYXNlQ2xvc2luZ011dGV4OworICAgIERlcHJlY2F0ZWRNdXRleCBtX2RhdGFi
YXNlQ2xvc2luZ011dGV4OwogICAgIGJvb2wgbV9pbnRlcnJ1cHRlZDsKIAogICAgIGludCBtX29w
ZW5FcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnQuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBA
QCBpbnQgU1FMaXRlU3RhdGVtZW50OjpwcmVwYXJlKCkKIHsKICAgICBBU1NFUlQoIW1faXNQcmVw
YXJlZCk7CiAKLSAgICBNdXRleExvY2tlciBkYXRhYmFzZUxvY2sobV9kYXRhYmFzZS5kYXRhYmFz
ZU11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBkYXRhYmFzZUxvY2sobV9kYXRh
YmFzZS5kYXRhYmFzZU11dGV4KCkpOwogICAgIGlmIChtX2RhdGFiYXNlLmlzSW50ZXJydXB0ZWQo
KSkKICAgICAgICAgcmV0dXJuIFNRTElURV9JTlRFUlJVUFQ7CiAKQEAgLTg4LDcgKzg4LDcgQEAg
aW50IFNRTGl0ZVN0YXRlbWVudDo6cHJlcGFyZSgpCiAKIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0
ZXAoKQogewotICAgIE11dGV4TG9ja2VyIGRhdGFiYXNlTG9jayhtX2RhdGFiYXNlLmRhdGFiYXNl
TXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGRhdGFiYXNlTG9jayhtX2RhdGFi
YXNlLmRhdGFiYXNlTXV0ZXgoKSk7CiAgICAgaWYgKG1fZGF0YWJhc2UuaXNJbnRlcnJ1cHRlZCgp
KQogICAgICAgICByZXR1cm4gU1FMSVRFX0lOVEVSUlVQVDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyAr
MTIyLDcgQEAgV29ya2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkKCkKIGJvb2wgV29ya2VyVGhyZWFk
OjpzdGFydCgpCiB7CiAgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBpcyBuZWNlc3NhcnkgdG8gZW5z
dXJlIHRoYXQgbV90aHJlYWRJRCBpcyBpbml0aWFsaXplZCB3aGVuIHRoZSB0aHJlYWQgc3RhcnRz
LgotICAgIE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwogCiAgICAgaWYg
KG1fdGhyZWFkSUQpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZv
aWQgV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogI2VuZGlmCiAKICAgICB7Ci0gICAgICAg
IE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKICAgICAgICAgbV93
b3JrZXJHbG9iYWxTY29wZSA9IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKG1fc3RhcnR1cERhdGEt
Pm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2VudCwgbV9zdGFydHVwRGF0YS0+
bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fc3RhcnR1cERhdGEtPm1fY29udGVudFNlY3VyaXR5
UG9saWN5VHlwZSwgbV9zdGFydHVwRGF0YS0+bV90b3BPcmlnaW4ucmVsZWFzZSgpKTsKIAogICAg
ICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkgewpAQCAtMTg5LDcgKzE4OSw3IEBAIHZv
aWQgV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQogdm9pZCBXb3JrZXJUaHJlYWQ6OnN0b3Ao
KQogewogICAgIC8vIE11dGV4IHByb3RlY3Rpb24gaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc3RvcCgp
IGNhbiBiZSBjYWxsZWQgYmVmb3JlIHRoZSBjb250ZXh0IGlzIGZ1bGx5IGNyZWF0ZWQuCi0gICAg
TXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOworICAgIERlcHJlY2F0ZWRN
dXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAKICAgICAvLyBFbnN1cmUg
dGhhdCB0YXNrcyBhcmUgYmVpbmcgaGFuZGxlZCBieSB0aHJlYWQgZXZlbnQgbG9vcC4gSWYgc2Ny
aXB0IGV4ZWN1dGlvbiB3ZXJlbid0IGZvcmJpZGRlbiwgYSB3aGlsZSgxKSBsb29wIGluIEpTIGNv
dWxkIGtlZXAgdGhlIHRocmVhZCBhbGl2ZSBmb3JldmVyLgogICAgIGlmIChtX3dvcmtlckdsb2Jh
bFNjb3BlKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgJKHJldmlz
aW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBXb3JrZXJSZXBvcnRpbmdQcm94eSYgbV93b3JrZXJSZXBvcnRpbmdQcm94eTsKIAogICAgICAg
ICBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGU7Ci0gICAgICAg
IE11dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRleDsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4IG1f
dGhyZWFkQ3JlYXRpb25NdXRleDsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyVGhy
ZWFkU3RhcnR1cERhdGE+IG1fc3RhcnR1cERhdGE7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE4NzkzMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDU5IEBACisyMDE1LTA4LTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIE11dGV4IHRvIERlcHJlY2F0ZWRNdXRleAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3Njc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpwb3N0
RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpwZXJmb3Jt
TmV4dERhdGFiYXNlVGFzayk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5oOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd24p
OgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cG9zdE1haW5UaHJlYWRUYXNr
KToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1OZXh0TWFpblRo
cmVhZFRhc2spOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFi
YXNlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtTmV4
dERhdGFiYXNlVGFzayk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9Vbmlx
dWVJREJEYXRhYmFzZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlRnJvbVNlY29uZGFyeVRocmVhZCk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjphcHBlbmRVcGRhdGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZUNvbXBvc2l0aW5nVGhy
ZWFkKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpydW5Db21wb3NpdGlu
Z1RocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6dGVybWluYXRl
Q29tcG9zaXRpbmdUaHJlYWQpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBTaGFy
ZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6YWRkQ3VzdG9t
UHJvdG9jb2wpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlbW92
ZUN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjpyZWdpc3RlclNjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdl
cjo6dW5yZWdpc3RlclNjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlcjo6c3VwcG9ydHNTY2hlbWUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OnByb3RvY29sRm9ySUQpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvbGludXgv
U2VjY29tcEZpbHRlcnMvU2VjY29tcEJyb2tlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6
OnJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpFdmVudERpc3BhdGNoZXI6OmFkZFNjcm9sbGluZ1RyZWVGb3JQYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6RXZlbnREaXNwYXRjaGVyOjpyZW1vdmVTY3JvbGxpbmdUcmVlRm9yUGFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcDoKKyAgICAgICAg
KHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmMpOgorICAgICAgICAod2Via2l0
U291cFJlcXVlc3RJbnB1dFN0cmVhbUFkZERhdGEpOgorCiAyMDE1LTA4LTA0ICBNYXR0IFJhamNh
ICA8bXJhamNhQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYSBTZXNzaW9uOiBhZGQgYSBmb2N1
cyBtYW5hZ2VyIHRoYXQgV2ViS2l0IGNsaWVudHMgY2FuIHVzZSB0byBhY2Nlc3MgdGhlIGZvY3Vz
ZWQgbWVkaWEgZWxlbWVudApJbmRleDogU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0Rh
dGFiYXNlUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRh
c2socwogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9kYXRhYmFzZVRhc2tNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKIAogICAgIG1fZGF0YWJhc2VUYXNrcy5hcHBl
bmQoV1RGOjptb3ZlKHRhc2spKTsKIApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgRGF0YWJhc2VQ
cm9jZXNzOjpwZXJmb3JtTmV4dERhdGFiYXMKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rh
c2s+IHRhc2s7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZVRh
c2tNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFz
ZVRhc2tNdXRleCk7CiAgICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZVRhc2tzLmlzRW1wdHkoKSk7
CiAgICAgICAgIHRhc2sgPSBtX2RhdGFiYXNlVGFza3MudGFrZUZpcnN0KCk7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3Mu
aAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0Rh
dGFiYXNlUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0
ZToKICAgICBIYXNoTWFwPFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciwgUmVmUHRyPFVuaXF1
ZUlEQkRhdGFiYXNlPj4gbV9pZGJEYXRhYmFzZXM7CiAKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9w
dHI8QXN5bmNUYXNrPj4gbV9kYXRhYmFzZVRhc2tzOwotICAgIE11dGV4IG1fZGF0YWJhc2VUYXNr
TXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fZGF0YWJhc2VUYXNrTXV0ZXg7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCShy
ZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDcgKzEzNiw3
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duKFVuaXF1ZUkKICAgICByZWYoKTsK
IAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VUYXNrTXV0ZXgp
OworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VUYXNrTXV0
ZXgpOwogICAgICAgICBtX2RhdGFiYXNlVGFza3MuY2xlYXIoKTsKICAgICB9CiAKQEAgLTExMjUs
NyArMTEyNSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3RNYWluVGhyZWFkVGEKICAg
ICBpZiAoIW1fYWNjZXB0aW5nTmV3UmVxdWVzdHMgJiYgdGFza1R5cGUgPT0gRGF0YWJhc2VUYXNr
VHlwZTo6Tm9ybWFsKQogICAgICAgICByZXR1cm47CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9tYWluVGhyZWFkVGFza011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbWFpblRocmVhZFRhc2tNdXRleCk7CiAKICAgICBtX21haW5UaHJlYWRUYXNrcy5hcHBlbmQo
V1RGOjptb3ZlKHRhc2spKTsKIApAQCAtMTE0Myw3ICsxMTQzLDcgQEAgYm9vbCBVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybU5leHRNYWluVAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFz
az4gdGFzazsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX21haW5UaHJlYWRU
YXNrTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbWFpblRo
cmVhZFRhc2tNdXRleCk7CiAKICAgICAgICAgLy8gVGhpcyBkYXRhYmFzZSBtaWdodCBiZSBzaHV0
dGluZyBkb3duLCBpbiB3aGljaCBjYXNlIHRoZSB0YXNrIHF1ZXVlIG1pZ2h0IGJlIGVtcHR5Lgog
ICAgICAgICBpZiAobV9tYWluVGhyZWFkVGFza3MuaXNFbXB0eSgpKQpAQCAtMTE2NSw3ICsxMTY1
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFzawogICAgIGlmICgh
bV9hY2NlcHRpbmdOZXdSZXF1ZXN0cyAmJiB0YXNrVHlwZSA9PSBEYXRhYmFzZVRhc2tUeXBlOjpO
b3JtYWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFi
YXNlVGFza011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJh
c2VUYXNrTXV0ZXgpOwogCiAgICAgbV9kYXRhYmFzZVRhc2tzLmFwcGVuZChXVEY6Om1vdmUodGFz
aykpOwogCkBAIC0xMTg2LDcgKzExODYsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJm
b3JtTmV4dERhdGFiCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNrOwogICAg
IHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VUYXNrTXV0ZXgpOworICAg
ICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VUYXNrTXV0ZXgpOwog
CiAgICAgICAgIC8vIFRoaXMgZGF0YWJhc2UgbWlnaHQgYmUgc2h1dHRpbmcgZG93biBvbiB0aGUg
bWFpbiB0aHJlYWQsIGluIHdoaWNoIGNhc2UgdGhlIHRhc2sgcXVldWUgbWlnaHQgYmUgZW1wdHku
CiAgICAgICAgIGlmIChtX2RhdGFiYXNlVGFza3MuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVl
SURCRGF0YWJhc2UuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTAsMTAgKzIxMCwxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9w
dHI8QXN5bmNUYXNrPj4gbV9kYXRhYmFzZVRhc2tzOwotICAgIE11dGV4IG1fZGF0YWJhc2VUYXNr
TXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fZGF0YWJhc2VUYXNrTXV0ZXg7CiAKICAgICBE
ZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPj4gbV9tYWluVGhyZWFkVGFza3M7Ci0gICAg
TXV0ZXggbV9tYWluVGhyZWFkVGFza011dGV4OworICAgIERlcHJlY2F0ZWRNdXRleCBtX21haW5U
aHJlYWRUYXNrTXV0ZXg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDE4Nzg4OSkK
KysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4g
Q29ubmVjdGkKIAogICAgIC8vIFB1c2ggdGhlIHBlbmRpbmcgc3luYyByZXBseSBpbmZvcm1hdGlv
biBvbiBvdXIgc3RhY2suCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5j
UmVwbHlTdGF0ZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlciht
X3N5bmNSZXBseVN0YXRlTXV0ZXgpOwogICAgICAgICBpZiAoIW1fc2hvdWxkV2FpdEZvclN5bmNS
ZXBsaWVzKSB7CiAgICAgICAgICAgICBkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGkKIAogICAgIC8vIEZpbmFsbHksIHBvcCB0aGUgcGVu
ZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9uLgogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKICAgICAgICAgQVNTRVJUKG1fcGVu
ZGluZ1N5bmNSZXBsaWVzLmxhc3QoKS5zeW5jUmVxdWVzdElEID09IHN5bmNSZXF1ZXN0SUQpOwog
ICAgICAgICBtX3BlbmRpbmdTeW5jUmVwbGllcy5yZW1vdmVMYXN0KCk7CiAgICAgfQpAQCAtNTA4
LDcgKzUwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGkKIAog
ICAgIC8vIFB1c2ggdGhlIHBlbmRpbmcgc3luYyByZXBseSBpbmZvcm1hdGlvbiBvbiBvdXIgc3Rh
Y2suCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11
dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNSZXBseVN0
YXRlTXV0ZXgpOwogICAgICAgICBpZiAoIW1fc2hvdWxkV2FpdEZvclN5bmNSZXBsaWVzKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTUyNiw3ICs1MjYsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3RpCiAKICAgICAvLyBGaW5hbGx5LCBwb3AgdGhl
IHBlbmRpbmcgc3luYyByZXBseSBpbmZvcm1hdGlvbi4KICAgICB7Ci0gICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7CiAgICAgICAgIEFTU0VSVCht
X3NlY29uZGFyeVRocmVhZFBlbmRpbmdTeW5jUmVwbHlNYXAuY29udGFpbnMoc3luY1JlcXVlc3RJ
RCkpOwogICAgICAgICBtX3NlY29uZGFyeVRocmVhZFBlbmRpbmdTeW5jUmVwbHlNYXAucmVtb3Zl
KHN5bmNSZXF1ZXN0SUQpOwogICAgIH0KQEAgLTU0Niw3ICs1NDYsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3RpCiAgICAgICAgIFN5bmNNZXNzYWdlU3RhdGU6OnNp
bmdsZXRvbigpLmRpc3BhdGNoTWVzc2FnZXMobnVsbHB0cik7CiAgICAgICAgIAogICAgICAgICB7
Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsK
KyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0
ZU11dGV4KTsKIAogICAgICAgICAgICAgLy8gU2Vjb25kLCBjaGVjayBpZiB0aGVyZSBpcyBhIHN5
bmMgcmVwbHkgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suCiAgICAgICAgICAgICBBU1NFUlQoIW1f
cGVuZGluZ1N5bmNSZXBsaWVzLmlzRW1wdHkoKSk7CkBAIC01OTIsNyArNTkyLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aQogCiB2b2lkIENvbm5lY3Rpb246OnBy
b2Nlc3NJbmNvbWluZ1N5bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IGRl
Y29kZXIpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgp
OwogCiAgICAgLy8gR28gdGhyb3VnaCB0aGUgc3RhY2sgb2Ygc3luYyByZXF1ZXN0cyB0aGF0IGhh
dmUgcGVuZGluZyByZXBsaWVzIGFuZCBzZWUgd2hpY2ggb25lCiAgICAgLy8gdGhpcyByZXBseSBp
cyBmb3IuCkBAIC03NTAsNyArNzUwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlk
Q2xvc2UoKQogICAgIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCiAgICAgewotICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOwogCiAgICAgICAgIEFT
U0VSVChtX3Nob3VsZFdhaXRGb3JTeW5jUmVwbGllcyk7CiAgICAgICAgIG1fc2hvdWxkV2FpdEZv
clN5bmNSZXBsaWVzID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBwcml2
YXRlOgogICAgIGNsYXNzIFN5bmNNZXNzYWdlU3RhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFN5bmNN
ZXNzYWdlU3RhdGU7CiAKLSAgICBNdXRleCBtX3N5bmNSZXBseVN0YXRlTXV0ZXg7CisgICAgRGVw
cmVjYXRlZE11dGV4IG1fc3luY1JlcGx5U3RhdGVNdXRleDsKICAgICBib29sIG1fc2hvdWxkV2Fp
dEZvclN5bmNSZXBsaWVzOwogICAgIFZlY3RvcjxQZW5kaW5nU3luY1JlcGx5PiBtX3BlbmRpbmdT
eW5jUmVwbGllczsKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmFwcGVu
ZFVwZAogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX3JlbmRlclF1ZXVlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRN
dXRleExvY2tlciBsb2NrZXIobV9yZW5kZXJRdWV1ZU11dGV4KTsKICAgICBtX3JlbmRlclF1ZXVl
LmFwcGVuZChXVEY6Om1vdmUoZnVuY3Rpb24pKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFJl
bmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255IGZyb20gbWFpbiB0aHJlYWQgb3IgdXBkYXRl
UGFpbnROb2RlIGNhbGwgc3RhY2shCiAgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4g
bV9yZW5kZXJRdWV1ZTsKLSAgICBNdXRleCBtX3JlbmRlclF1ZXVlTXV0ZXg7CisgICAgRGVwcmVj
YXRlZE11dGV4IG1fcmVuZGVyUXVldWVNdXRleDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBwZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZENvbXBvc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3Bw
CShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVh
dGVDb21wb3NpdGkKICAgICBpZiAobV90aHJlYWRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11
dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1faW5pdGlhbGl6ZVJ1bkxv
b3BDb25kaXRpb25NdXRleCk7CiAgICAgbV90aHJlYWRJZGVudGlmaWVyID0gY3JlYXRlVGhyZWFk
KGNvbXBvc2l0aW5nVGhyZWFkRW50cnksIHRoaXMsICJXZWJDb3JlOiBUaHJlYWRlZENvbXBvc2l0
b3IiKTsKIAogICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX2luaXRpYWxp
emVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOwpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgVGhyZWFk
ZWRDb21wb3NpdG9yOjpjcmVhdGVDb21wb3NpdGkKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpy
dW5Db21wb3NpdGluZ1RocmVhZCgpCiB7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOwog
CiAgICAgICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wb3Np
dGluZ1J1bkxvb3A+KFsmXSB7CiAgICAgICAgICAgICByZW5kZXJMYXllclRyZWUoKTsKQEAgLTMy
MSw3ICszMjEsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cnVuQ29tcG9zaXRpbmdUCiAg
ICAgbV9zY2VuZS0+cHVyZ2VHTFJlc291cmNlcygpOwogCiAgICAgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIobV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11
dGV4KTsKICAgICAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AgPSBudWxscHRyOwogICAgICAgICBt
X2NvbnRleHQgPSBudWxscHRyOwogICAgICAgICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb24u
c2lnbmFsKCk7CkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJ1
bkNvbXBvc2l0aW5nVAogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dGVybWluYXRlQ29tcG9z
aXRpbmdUaHJlYWQoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxv
b3BDb25kaXRpb25NdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Rl
cm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CiAKICAgICBtX3NjZW5lLT5kZXRhY2goKTsK
ICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cnVuTG9vcCgpLnN0b3AoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTExLDkgKzExMSw5IEBAIHByaXZhdGU6CiAKICAgICBUaHJlYWRJZGVudGlm
aWVyIG1fdGhyZWFkSWRlbnRpZmllcjsKICAgICBUaHJlYWRDb25kaXRpb24gbV9pbml0aWFsaXpl
UnVuTG9vcENvbmRpdGlvbjsKLSAgICBNdXRleCBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9u
TXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25N
dXRleDsKICAgICBUaHJlYWRDb25kaXRpb24gbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uOwot
ICAgIE11dGV4IG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIERlcHJlY2F0
ZWRNdXRleCBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAsMTEgKzEwMCwxMSBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fcmVnaXN0ZXJlZFNjaGVtZXM7Ci0gICAgTXV0ZXggbV9yZWdpc3Rl
cmVkU2NoZW1lc011dGV4OworICAgIERlcHJlY2F0ZWRNdXRleCBtX3JlZ2lzdGVyZWRTY2hlbWVz
TXV0ZXg7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0cjxXS0N1c3Rv
bVByb3RvY29sPj4gQ3VzdG9tUHJvdG9jb2xNYXA7CiAgICAgQ3VzdG9tUHJvdG9jb2xNYXAgbV9j
dXN0b21Qcm90b2NvbE1hcDsKLSAgICBNdXRleCBtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXg7Cisg
ICAgRGVwcmVjYXRlZE11dGV4IG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleDsKICAgICAKICAgICAv
LyBXS0N1c3RvbVByb3RvY29sIG9iamVjdHMgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgbV9jdXN0
b21Qcm90b2NvbE1hcCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCiAgICAgLy8gV2UgcmV0dXJuIGEg
UmV0YWluUHRyIGhlcmUgYmVjYXVzZSBpdCBpcyB1bnNhZmUgdG8gcmV0dXJuIGEgcmF3IHBvaW50
ZXIgc2luY2UgdGhlIG9iamVjdCBtaWdodCBpbW1lZGlhdGVseSBiZSBkZXN0cm95ZWQgZnJvbSBh
IGRpZmZlcmVudCB0aHJlYWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0Nv
Y29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCShyZXZpc2lvbiAxODc4ODkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NSwyOCArMTY1LDI4
IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGMKIHZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjphZGRDdXN0b21Qcm90b2NvbChXS0N1c3RvbVByb3RvY29sICpjdXN0
b21Qcm90b2NvbCkKIHsKICAgICBBU1NFUlQoY3VzdG9tUHJvdG9jb2wpOwotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9jdXN0b21Qcm90b2NvbE1hcE11dGV4KTsKICAgICBtX2N1c3RvbVBy
b3RvY29sTWFwLmFkZChjdXN0b21Qcm90b2NvbC5jdXN0b21Qcm90b2NvbElELCBjdXN0b21Qcm90
b2NvbCk7CiB9CiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZW1vdmVDdXN0b21Qcm90
b2NvbChXS0N1c3RvbVByb3RvY29sICpjdXN0b21Qcm90b2NvbCkKIHsKICAgICBBU1NFUlQoY3Vz
dG9tUHJvdG9jb2wpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFw
TXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9jdXN0b21Qcm90b2Nv
bE1hcE11dGV4KTsKICAgICBtX2N1c3RvbVByb3RvY29sTWFwLnJlbW92ZShjdXN0b21Qcm90b2Nv
bC5jdXN0b21Qcm90b2NvbElEKTsKIH0KICAgICAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjpyZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBBU1NFUlQoIXNj
aGVtZS5pc051bGwoKSk7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVt
ZXNNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3JlZ2lzdGVyZWRT
Y2hlbWVzTXV0ZXgpOwogICAgIG1fcmVnaXN0ZXJlZFNjaGVtZXMuYWRkKHNjaGVtZSk7CiB9CiAg
ICAgCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6dW5yZWdpc3RlclNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKIHsKICAgICBBU1NFUlQoIXNjaGVtZS5pc051bGwoKSk7Ci0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVtZXNNdXRleCk7CisgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX3JlZ2lzdGVyZWRTY2hlbWVzTXV0ZXgpOwogICAgIG1fcmVn
aXN0ZXJlZFNjaGVtZXMucmVtb3ZlKHNjaGVtZSk7CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCBi
b29sIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcG9ydHNTY2hlCiAgICAgaWYgKHNjaGVtZS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fcmVnaXN0ZXJlZFNjaGVtZXNNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX3JlZ2lzdGVyZWRTY2hlbWVzTXV0ZXgpOwogICAgIHJldHVybiBtX3JlZ2lzdGVyZWRT
Y2hlbWVzLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKQEAgLTI2MSw3ICsyNjEsNyBAQCAgICAgaWYg
KCFwcm90b2NvbCkKIAogUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IEN1c3RvbVByb3RvY29s
TWFuYWdlcjo6cHJvdG9jb2xGb3JJRCh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXgpOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9jdXN0b21Qcm90b2NvbE1hcE11dGV4KTsKIAogICAg
IEN1c3RvbVByb3RvY29sTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY3VzdG9tUHJvdG9jb2xN
YXAuZmluZChjdXN0b21Qcm90b2NvbElEKTsKICAgICBpZiAoaXQgPT0gbV9jdXN0b21Qcm90b2Nv
bE1hcC5lbmQoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmls
dGVycy9TZWNjb21wQnJva2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2VjY29tcEJyb2tlci5jcHAJKHJldmlzaW9uIDE4Nzg4
OSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TZWNjb21w
QnJva2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogCiAg
ICAgaW50IG1fc29ja2V0OwogCi0gICAgbXV0YWJsZSBNdXRleCBtX3NvY2tldExvY2s7CisgICAg
bXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9zb2NrZXRMb2NrOwogCiAgICAgLy8gTWFwcyBmaWxl
cyB0aGF0IG1heSBiZSByZWFkIGJ5IG1hbGxvYygpIHRvIG9wZW4gZmlsZSBkZXNjcmlwdG9ycy4K
ICAgICBIYXNoTWFwPFN0cmluZywgaW50PiBtX2ZpbGVEZXNjcmlwdG9yQ2FjaGU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTg3ODg5KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDbwogICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CiAKICAgICB7Ci0gICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25zTXV0ZXgpOworICAgICAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRl
eCk7CiAgICAgICAgIEFTU0VSVCghbV90b2tlbnNBbmRDb25uZWN0aW9ucy5jb250YWlucyhwbHVn
aW5Qcm9jZXNzVG9rZW4pKTsKIAogICAgICAgICBtX3Rva2Vuc0FuZENvbm5lY3Rpb25zLnNldChw
bHVnaW5Qcm9jZXNzVG9rZW4sIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkp
OwpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
OjpyZW0KICAgICBBU1NFUlQodmVjdG9ySW5kZXggIT0gbm90Rm91bmQpOwogCiAgICAgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4KTsKKyAg
ICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25z
TXV0ZXgpOwogICAgICAgICBBU1NFUlQobV90b2tlbnNBbmRDb25uZWN0aW9ucy5jb250YWlucyhw
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1Z2luUHJvY2Vzc1Rva2VuKCkpKTsKICAgICAgICAg
CiAgICAgICAgIG1fdG9rZW5zQW5kQ29ubmVjdGlvbnMucmVtb3ZlKHBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uLT5wbHVnaW5Qcm9jZXNzVG9rZW4oKSk7CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbQogCiB2b2lkIFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQodWludDY0X3QgcGx1Z2luUHJv
Y2Vzc1Rva2VuKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rp
b25zTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90b2tlbnNBbmRD
b25uZWN0aW9uc011dGV4KTsKICAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX3Rv
a2Vuc0FuZENvbm5lY3Rpb25zLmdldChwbHVnaW5Qcm9jZXNzVG9rZW4pOwogCiAgICAgLy8gSXQn
cyBPSyBmb3IgY29ubmVjdGlvbiB0byBiZSBudWxsIGhlcmU7IGl0IHdpbGwgaGFwcGVuIGlmIHRo
aXMgd2ViIHByb2Nlc3MgZG9lc24ndCBrbm93CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24+PiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uczsKIAotICAgIE11
dGV4IG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV90
b2tlbnNBbmRDb25uZWN0aW9uc011dGV4OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJ
UEM6OkNvbm5lY3Rpb24+PiBtX3Rva2Vuc0FuZENvbm5lY3Rpb25zOwogfTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hl
ci5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IEV2ZW50RGlzcGF0Y2hlcjo6fkV2ZW50RGlzcGF0Y2hlcigpCiAjaWYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykKIHZvaWQgRXZlbnREaXNwYXRjaGVyOjphZGRTY3JvbGxpbmdUcmVlRm9yUGFnZShX
ZWJQYWdlKiB3ZWJQYWdlKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Njcm9sbGluZ1Ry
ZWVzTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zY3JvbGxpbmdU
cmVlc011dGV4KTsKIAogICAgIEFTU0VSVCh3ZWJQYWdlLT5jb3JlUGFnZSgpLT5zY3JvbGxpbmdD
b29yZGluYXRvcigpKTsKICAgICBBU1NFUlQoIW1fc2Nyb2xsaW5nVHJlZXMuY29udGFpbnMod2Vi
UGFnZS0+cGFnZUlEKCkpKTsKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6
OmFkZFNjcm9sbGluZ1RyZWVGbwogCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6cmVtb3ZlU2Nyb2xs
aW5nVHJlZUZvclBhZ2UoV2ViUGFnZSogd2ViUGFnZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9zY3JvbGxpbmdUcmVlc011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fc2Nyb2xsaW5nVHJlZXNNdXRleCk7CiAgICAgQVNTRVJUKG1fc2Nyb2xsaW5nVHJlZXMu
Y29udGFpbnMod2ViUGFnZS0+cGFnZUlEKCkpKTsKIAogICAgIG1fc2Nyb2xsaW5nVHJlZXMucmVt
b3ZlKHdlYlBhZ2UtPnBhZ2VJRCgpKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEV2ZW50RGlz
cGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50NjRfCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2Nyb2xsaW5nVHJlZXNNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Njcm9sbGluZ1RyZWVzTXV0ZXgp
OwogICAgIGlmIChSZWZQdHI8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPiBzY3JvbGxpbmdUcmVlID0g
bV9zY3JvbGxpbmdUcmVlcy5nZXQocGFnZUlEKSkgewogICAgICAgICAvLyBGSVhNRTogSXQncyBw
cmV0dHkgaG9ycmlibGUgdGhhdCB3ZSdyZSB1cGRhdGluZyB0aGUgYmFjay9mb3J3YXJkIHN0YXRl
IGhlcmUuCiAgICAgICAgIC8vIFdlYkNvcmUgc2hvdWxkIGFsd2F5cyBrbm93IHRoZSBjdXJyZW50
IHN0YXRlIGFuZCBrbm93IHdoZW4gaXQgY2hhbmdlcyBzbyB0aGUKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgJKHJldmlz
aW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERp
c3BhdGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAg
IFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQot
ICAgIE11dGV4IG1fc2Nyb2xsaW5nVHJlZXNNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9z
Y3JvbGxpbmdUcmVlc011dGV4OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3Jl
OjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOwogI2VuZGlmCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldoZWVsRXZlbnREZWx0YVRyYWNrZXI+IG1fcmVjZW50
V2hlZWxFdmVudERlbHRhVHJhY2tlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
c291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5j
cHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9X
ZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBzdHJ1Y3QgX1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Qcml2CiAgICAgdWlu
dDY0X3QgYnl0ZXNSZWNlaXZlZDsKICAgICB1aW50NjRfdCBieXRlc1JlYWQ7CiAKLSAgICBNdXRl
eCByZWFkTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggcmVhZExvY2s7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEFzeW5jUmVhZERhdGE+IHBlbmRpbmdBc3luY1JlYWQ7CiB9OwogCkBAIC04NCw3ICs4
NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0KICAgICBXZWJL
aXRTb3VwUmVxdWVzdElucHV0U3RyZWFtKiBzdHJlYW0gPSBXRUJLSVRfU09VUF9SRVFVRVNUX0lO
UFVUX1NUUkVBTShpbnB1dFN0cmVhbSk7CiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0
R1JlZihnX3Rhc2tfbmV3KHN0cmVhbSwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkp
OwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHN0cmVhbS0+cHJpdi0+cmVhZExvY2spOworICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoc3RyZWFtLT5wcml2LT5yZWFkTG9jayk7CiAK
ICAgICBpZiAoIXdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1IYXNEYXRhVG9SZWFkKHN0cmVh
bSkgJiYgIXdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Jc1dhaXRpbmdGb3JEYXRhKHN0cmVh
bSkpIHsKICAgICAgICAgZ190YXNrX3JldHVybl9pbnQodGFzay5nZXQoKSwgMCk7CkBAIC0xNDMs
NyArMTQzLDcgQEAgdm9pZCB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQWRkRGF0YQogICAg
IGlmICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtRmluaXNoZWQoc3RyZWFtKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHN0cmVhbS0+cHJpdi0+cmVhZExv
Y2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoc3RyZWFtLT5wcml2LT5yZWFk
TG9jayk7CiAKICAgICBpZiAoZGF0YUxlbmd0aCkgewogICAgICAgICAvLyBUcnVuY2F0ZSB0aGUg
ZGF0YUxlbmd0aCB0byB0aGUgY29udGVudExlbmd0aCBpZiBpdCdzIGtub3duLgpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTUtMDgtMDQgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTXV0ZXggdG8gRGVwcmVjYXRlZE11dGV4Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc2NzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2Uv
U3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6
c3luY1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjptYXJr
SW1wb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjpibG9ja1VudGls
SW1wb3J0Q29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFTeW5jOjpwZXJm
b3JtU3luYyk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaDoKKyAgICAgICAg
KiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VU
cmFja2VyOjpzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZVRyYWNrZXI6OmZpbmlzaGVkSW1wb3J0aW5nT3JpZ2luSWRlbnRpZmllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycyk6
CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFj
a2VyRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnNldE9yaWdp
bkRldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNTZXRPcmln
aW5EZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpvcmlnaW5zKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpkZWxldGVBbGxPcmlnaW5zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpjYW5EZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6U3RvcmFnZVRyYWNrZXI6OmNhbmNlbERlbGV0aW5nT3JpZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAqIFN0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuaDoKKwogMjAxNS0wOC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJsZSBXZWJHTCBvbiBXaW5kb3dz
IENNYWtlIGJ1aWxkLgpJbmRleDogU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhU3lu
Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhU3lu
Yy5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
QXJlYVN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBTdG9y
YWdlQXJlYVN5bmM6OnN5bmNUaW1lckZpcmVkKCkKIAogICAgIGJvb2wgcGFydGlhbFN5bmMgPSBm
YWxzZTsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKKyAg
ICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKIAogICAgICAg
ICAvLyBEbyBub3Qgc2NoZWR1bGUgYW5vdGhlciBzeW5jIGlmIHdlJ3JlIHN0aWxsIHRyeWluZyB0
byBjb21wbGV0ZSB0aGUKICAgICAgICAgLy8gcHJldmlvdXMgb25lLiBCdXQsIGlmIHdlJ3JlIHNo
dXR0aW5nIGRvd24sIHNjaGVkdWxlIGl0IGFueXdheS4KQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lk
IFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybUltcG9ydCgpCiAKIHZvaWQgU3RvcmFnZUFyZWFTeW5j
OjptYXJrSW1wb3J0ZWQoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2ltcG9ydExvY2sp
OworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9pbXBvcnRMb2NrKTsKICAgICBt
X2ltcG9ydENvbXBsZXRlID0gdHJ1ZTsKICAgICBtX2ltcG9ydENvbmRpdGlvbi5zaWduYWwoKTsK
IH0KQEAgLTM3Miw3ICszNzIsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6YmxvY2tVbnRpbElt
cG9ydENvCiAgICAgaWYgKCFtX3N0b3JhZ2VBcmVhKQogICAgICAgICByZXR1cm47CiAKLSAgICBN
dXRleExvY2tlciBsb2NrZXIobV9pbXBvcnRMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1faW1wb3J0TG9jayk7CiAgICAgd2hpbGUgKCFtX2ltcG9ydENvbXBsZXRlKQog
ICAgICAgICBtX2ltcG9ydENvbmRpdGlvbi53YWl0KG1faW1wb3J0TG9jayk7CiAgICAgbV9zdG9y
YWdlQXJlYSA9IG51bGxwdHI7CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5
bmM6OnBlcmZvcm1TeW5jKCkKICAgICBib29sIGNsZWFySXRlbXM7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gaXRlbXM7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9z
eW5jTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9j
ayk7CiAKICAgICAgICAgQVNTRVJUKG1fc3luY1NjaGVkdWxlZCk7CiAKQEAgLTQ4Miw3ICs0ODIs
NyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybVN5bmMoKQogICAgIHN5bmMoY2xlYXJJ
dGVtcywgaXRlbXMpOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5j
TG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7
CiAgICAgICAgIG1fc3luY0luUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNv
dXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODUsNyArODUsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU3RyaW5nIG1fZGF0YWJhc2VJZGVu
dGlmaWVyOwogCi0gICAgTXV0ZXggbV9zeW5jTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9z
eW5jTG9jazsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2l0ZW1zUGVuZGluZ1N5bmM7
CiAgICAgYm9vbCBtX2NsZWFySXRlbXNXaGlsZVN5bmNpbmc7CiAgICAgYm9vbCBtX3N5bmNTY2hl
ZHVsZWQ7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fc3luY0Nsb3Nl
RGF0YWJhc2U7CiAKLSAgICBtdXRhYmxlIE11dGV4IG1faW1wb3J0TG9jazsKKyAgICBtdXRhYmxl
IERlcHJlY2F0ZWRNdXRleCBtX2ltcG9ydExvY2s7CiAgICAgVGhyZWFkQ29uZGl0aW9uIG1faW1w
b3J0Q29uZGl0aW9uOwogICAgIGJvb2wgbV9pbXBvcnRDb21wbGV0ZTsKICAgICB2b2lkIG1hcmtJ
bXBvcnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
CShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRyYWNr
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgU3RvcmFnZVRyYWNrZXI6
OlN0b3JhZ2VUcmFja2VyKGNvbnN0IFN0cgogCiB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzZXREYXRh
YmFzZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobV9kYXRhYmFzZU11dGV4KTsKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQogICAg
ICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBTdG9yYWdl
VHJhY2tlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcgogICAgIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgg
PSBwYXRoLmlzb2xhdGVkQ29weSgpOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobV9vcmlnaW5TZXRNdXRleCk7CiAgICAgICAgIG1fb3JpZ2luU2V0LmNsZWFyKCk7CiAgICAg
fQogCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6aW1wb3J0T3JpZ2lu
SWRlbnRpZgogCiB2b2lkIFN0b3JhZ2VUcmFja2VyOjpmaW5pc2hlZEltcG9ydGluZ09yaWdpbklk
ZW50aWZpZXJzKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsK
KyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CiAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZ09yaWdpbnMo
KTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0
T3JpZ2luSWRlCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICB7Ci0gICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CiAKICAgICAgICAgLy8gRG9uJ3Qg
Zm9yY2UgY3JlYXRpb24gb2YgU3RvcmFnZVRyYWNrZXIncyBkYiBqdXN0IGJlY2F1c2UgYSB0cmFj
a2VyCiAgICAgICAgIC8vIHdhcyBpbml0aWFsaXplZC4gSXQgd2lsbCBiZSBjcmVhdGVkIGlmIGxv
Y2FsIHN0b3JhZ2UgZGJzIGFyZSBmb3VuZApAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgU3RvcmFn
ZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGUKICAgICAgICAgICAgIGludCByZXN1bHQ7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBNdXRleExvY2tlciBs
b2NrT3JpZ2lucyhtX29yaWdpblNldE11dGV4KTsKKyAgICAgICAgICAgICAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja09yaWdpbnMobV9vcmlnaW5TZXRNdXRleCk7CiAgICAgICAgICAgICAg
ICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJVEVfUk9XKQogICAg
ICAgICAgICAgICAgICAgICBtX29yaWdpblNldC5hZGQoc3RhdGVtZW50LmdldENvbHVtblRleHQo
MCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICAgICAgfQpAQCAtMjMyLDEwICsyMzIsMTAgQEAg
dm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ltcG9ydE9yaWdpbklkZQogICAgIHN5bmNGaWxlU3lz
dGVtQW5kVHJhY2tlckRhdGFiYXNlKCk7CiAgICAgCiAgICAgewotICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9jbGllbnRNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9jbGllbnRNdXRleCk7CiAKICAgICAgICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAgICAgICAg
ICAgT3JpZ2luU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX29yaWdpblNldC5lbmQoKTsKICAg
ICAgICAgICAgIGZvciAoT3JpZ2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fb3JpZ2luU2V0
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlz
cGF0Y2hEaWRNb2RpZnlPcmlnaW4oKml0KTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyCiAKICAgICBWZWN0b3I8U3RyaW5nPiBwYXRo
czsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwor
ICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CiAg
ICAgICAgIHBhdGhzID0gbGlzdERpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCAiKi5s
b2NhbHN0b3JhZ2UiKTsKICAgICB9CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFN0b3JhZ2VU
cmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyCiAgICAgLy8gZGVsZXRpb25zIGZyb20gZGlzayBh
bmQgZnJvbSBtX29yaWdpblNldC4KICAgICBPcmlnaW5TZXQgb3JpZ2luU2V0Q29weTsKICAgICB7
Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKKyAgICAgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKICAgICAgICAg
Zm9yIChPcmlnaW5TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9vcmlnaW5TZXQuYmVnaW4oKSwg
ZW5kID0gbV9vcmlnaW5TZXQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgIG9y
aWdpblNldENvcHkuYWRkKCgqaXQpLmlzb2xhdGVkQ29weSgpKTsKICAgICB9CkBAIC0zMDYsNyAr
MzA2LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c2V0T3JpZ2luRGV0YWlscyhjbwogICAgICAg
ICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNl
dE11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNl
dE11dGV4KTsKIAogICAgICAgICBpZiAobV9vcmlnaW5TZXQuY29udGFpbnMob3JpZ2luSWRlbnRp
ZmllcikpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBTdG9y
YWdlVHJhY2tlcjo6c3luY1NldE9yaWdpbkRldGFpbAogCiAgICAgU1FMaXRlVHJhbnNhY3Rpb25J
blByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogCi0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZSh0cnVlKTsK
ICAgICAKQEAgLTM1NywxMyArMzU3LDEzIEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNTZXRP
cmlnaW5EZXRhaWwKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXN0YWJsaXNoIG9yaWdp
biAnJXMnIGluIHRoZSB0cmFja2VyIiwgb3JpZ2luSWRlbnRpZmllci5hc2NpaSgpLmRhdGEoKSk7
CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsK
KyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsK
ICAgICAgICAgaWYgKCFtX29yaWdpblNldC5jb250YWlucyhvcmlnaW5JZGVudGlmaWVyKSkKICAg
ICAgICAgICAgIG1fb3JpZ2luU2V0LmFkZChvcmlnaW5JZGVudGlmaWVyKTsKICAgICB9CiAKICAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2NsaWVudE11dGV4KTsKKyAgICAgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2NsaWVudE11dGV4KTsKICAgICAgICAgaWYg
KG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2lu
KG9yaWdpbklkZW50aWZpZXIpOwogICAgIH0KQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjpvcmlnaW5zKFZlY3RvcjxSZWZQCiAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKIAog
ICAgIGZvciAoT3JpZ2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fb3JpZ2luU2V0LmJlZ2lu
KCksIGVuZCA9IG1fb3JpZ2luU2V0LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIo
Kml0KSk7CkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlQWxs
T3JpZ2lucygpCiAgICAgICAgIHJldHVybjsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAgICAgICB3aWxsRGVsZXRlQWxsT3JpZ2lucygp
OwogICAgICAgICBtX29yaWdpblNldC5jbGVhcigpOwogICAgIH0KQEAgLTQxNyw3ICs0MTcsNyBA
QCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2luCiAKICAgICBTUUxpdGVU
cmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAgICAg
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogICAgIAogICAgIG9wZW5UcmFj
a2VyRGF0YWJhc2UoZmFsc2UpOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKQEAgLTQz
Nyw3ICs0MzcsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2luCiAg
ICAgICAgIGRlbGV0ZUZpbGUoc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOwogCiAgICAgICAg
IHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2NsaWVudE11dGV4KTsKKyAgICAg
ICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9jbGllbnRNdXRleCk7CiAgICAg
ICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNo
RGlkTW9kaWZ5T3JpZ2luKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKTsKICAgICAgICAgfQpA
QCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihTZWN1
cmkKICAgICBTdHJpbmcgb3JpZ2luSWQgPSBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpOwog
ICAgIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgp
OworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgp
OwogICAgICAgICB3aWxsRGVsZXRlT3JpZ2luKG9yaWdpbklkKTsKICAgICAgICAgbV9vcmlnaW5T
ZXQucmVtb3ZlKG9yaWdpbklkKTsKICAgICB9CkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBTdG9y
YWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbihjbwogCiAgICAgU1FMaXRlVHJhbnNhY3Rpb25J
blByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogCi0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogICAgIAogICAgIGlmICghY2FuRGVsZXRlT3JpZ2luKG9y
aWdpbklkZW50aWZpZXIpKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdGVkIHRvIGRlbGV0
ZSBvcmlnaW4gJyVzJyB3aGlsZSBpdCB3YXMgYmVpbmcgY3JlYXRlZFxuIiwgb3JpZ2luSWRlbnRp
Zmllci5hc2NpaSgpLmRhdGEoKSk7CkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBTdG9yYWdlVHJh
Y2tlcjo6c3luY0RlbGV0ZU9yaWdpbihjbwogICAgIAogICAgIGJvb2wgc2hvdWxkRGVsZXRlVHJh
Y2tlckZpbGVzID0gZmFsc2U7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9v
cmlnaW5TZXRNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9v
cmlnaW5TZXRNdXRleCk7CiAgICAgICAgIG1fb3JpZ2luU2V0LnJlbW92ZShvcmlnaW5JZGVudGlm
aWVyKTsKICAgICAgICAgc2hvdWxkRGVsZXRlVHJhY2tlckZpbGVzID0gbV9vcmlnaW5TZXQuaXNF
bXB0eSgpOwogICAgIH0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpz
eW5jRGVsZXRlT3JpZ2luKGNvCiAgICAgfQogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBs
b2NrZXIobV9jbGllbnRNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobV9jbGllbnRNdXRleCk7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW5JZGVudGlmaWVyKTsKICAgICB9
CkBAIC01OTIsNyArNTkyLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6d2lsbERlbGV0ZU9yaWdp
bihjbwogYm9vbCBTdG9yYWdlVHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VNdXRleC50cnlMb2Nr
KCkpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAgIHJldHVybiBt
X29yaWdpbnNCZWluZ0RlbGV0ZWQuY29udGFpbnMob3JpZ2luSWRlbnRpZmllcik7CiB9CiAKQEAg
LTYwMSw5ICs2MDEsOSBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpjYW5jZWxEZWxldGluZ09yaWdp
CiAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fZGF0YWJhc2VNdXRleCk7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9vcmlnaW5TZXRNdXRleCk7CiAgICAgICAgIGlmICghbV9vcmlnaW5zQmVpbmdEZWxldGVkLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIG1fb3JpZ2luc0JlaW5nRGVsZXRlZC5yZW1vdmUob3JpZ2lu
SWRlbnRpZmllcik7CiAgICAgfQpAQCAtNjQ3LDcgKzY0Nyw3IEBAIGxvbmcgbG9uZyBTdG9yYWdl
VHJhY2tlcjo6ZGlza1VzYWdlRm9yT3IKICAgICBpZiAoIW1faXNBY3RpdmUpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogCiAgICAgU3Ry
aW5nIHBhdGggPSBkYXRhYmFzZVBhdGhGb3JPcmlnaW4ob3JpZ2luLT5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TdG9yYWdl
L1N0b3JhZ2VUcmFja2VyLmgJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxNSArOTUsMTUgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN5bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycygpOwogCiAgICAg
Ly8gTXV0ZXggZm9yIG1fZGF0YWJhc2UgYW5kIG1fc3RvcmFnZURpcmVjdG9yeVBhdGguCi0gICAg
TXV0ZXggbV9kYXRhYmFzZU11dGV4OworICAgIERlcHJlY2F0ZWRNdXRleCBtX2RhdGFiYXNlTXV0
ZXg7CiAgICAgU1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKICAgICBTdHJpbmcgbV9zdG9yYWdl
RGlyZWN0b3J5UGF0aDsKIAotICAgIE11dGV4IG1fY2xpZW50TXV0ZXg7CisgICAgRGVwcmVjYXRl
ZE11dGV4IG1fY2xpZW50TXV0ZXg7CiAgICAgU3RvcmFnZVRyYWNrZXJDbGllbnQqIG1fY2xpZW50
OwogCiAgICAgLy8gR3VhcmQgZm9yIG1fb3JpZ2luU2V0IGFuZCBtX29yaWdpbnNCZWluZ0RlbGV0
ZWQuCi0gICAgTXV0ZXggbV9vcmlnaW5TZXRNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9v
cmlnaW5TZXRNdXRleDsKICAgICB0eXBlZGVmIEhhc2hTZXQ8U3RyaW5nPiBPcmlnaW5TZXQ7CiAg
ICAgT3JpZ2luU2V0IG1fb3JpZ2luU2V0OwogICAgIE9yaWdpblNldCBtX29yaWdpbnNCZWluZ0Rl
bGV0ZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2Uv
V2ViS2l0L2lvcy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAx
NS0wOC0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFt
ZSBNdXRleCB0byBEZXByZWNhdGVkTXV0ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NzY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRl
bnQubW06CisgICAgICAgIChXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKToKKyAgICAg
ICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgc2Nyb2xsT3Jab29tQ2hhbmdlZDpdKToKKyAg
ICAgICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgb3ZlcmZsb3dTY3JvbGxQb3NpdGlvbkZv
ckxheWVyOmNoYW5nZWRUbzpdKToKKyAgICAgICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQg
c2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVyczpzdGlja3lDb250YWluZXJNYXA6XSk6CisgICAg
ICAgICgtW1dlYkZpeGVkUG9zaXRpb25Db250ZW50IGhhc0ZpeGVkT3JTdGlja3lQb3NpdGlvbkxh
eWVyc10pOgorICAgICAgICAoLVtXZWJGaXhlZFBvc2l0aW9uQ29udGVudCBtaW5pbXVtT2Zmc2V0
RnJvbUZpeGVkUG9zaXRpb25MYXllcnNUb0FuY2hvckVkZ2U6b2ZSZWN0OmluTGF5ZXI6XSk6CisK
IDIwMTUtMDgtMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgZGF0YWJhc2UgdGhyZWFkIHBhdXNlIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25D
b250ZW50Lm1tCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDgs
OSArNDgsOSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCi1zdGF0aWMgTXV0ZXgmIFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxvY2soKQorc3Rh
dGljIERlcHJlY2F0ZWRNdXRleCYgV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jaygpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBtdXRleCwgKCkpOwor
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEZXByZWNhdGVkTXV0ZXgsIG11dGV4
LCAoKSk7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCkBAIC0xMDEsNyArMTAxLDcgQEAgLSAodm9p
ZClkZWFsbG9jCiAKIC0gKHZvaWQpc2Nyb2xsT3Jab29tQ2hhbmdlZDooQ0dSZWN0KXBvc2l0aW9u
ZWRPYmplY3RzUmVjdAogewotICAgIE11dGV4TG9ja2VyIGxvY2soV2ViRml4ZWRQb3NpdGlvbkNv
bnRlbnREYXRhTG9jaygpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhXZWJGaXhl
ZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKCkpOwogCiAgICAgTGF5ZXJJbmZvTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmVuZCgp
OwogICAgIGZvciAoTGF5ZXJJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IF9wcml2YXRlLT5t
X3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBA
IC0xNDAsNyArMTQwLDcgQEAgLSAodm9pZClzY3JvbGxPclpvb21DaGFuZ2VkOihDR1JlY3QpcG9z
aQogCiAtICh2b2lkKW92ZXJmbG93U2Nyb2xsUG9zaXRpb25Gb3JMYXllcjooQ0FMYXllciAqKXNj
cm9sbExheWVyIGNoYW5nZWRUbzooQ0dQb2ludClzY3JvbGxQb3NpdGlvbgogewotICAgIE11dGV4
TG9ja2VyIGxvY2soV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jaygpKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKCkp
OwogCiAgICAgTGF5ZXJJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBfcHJpdmF0ZS0+bV92
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmVuZCgpOwogICAgIGZvciAoTGF5ZXJJbmZvTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IF9wcml2YXRlLT5tX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC0xNzMsNyArMTczLDcgQEAgLSAodm9pZClk
aWRGaW5pc2hTY3JvbGxpbmdPclpvb21pbmcKIAogLSAodm9pZClzZXRWaWV3cG9ydENvbnN0cmFp
bmVkTGF5ZXJzOihXVEY6Okhhc2hNYXA8Q0FMYXllciAqLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6Vmlld3BvcnRDb25zdHJhaW50cz4+JilsYXllck1hcCBzdGlja3lDb250YWluZXJNYXA6KFdU
Rjo6SGFzaE1hcDxDQUxheWVyKiwgQ0FMYXllcio+JilzdGlja3lDb250YWluZXJzCiB7Ci0gICAg
TXV0ZXhMb2NrZXIgbG9jayhXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKCkpOworICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxv
Y2soKSk7CiAKICAgICBfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmNsZWFy
KCk7CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCAtICh2b2lkKXNldFZpZXdwb3J0Q29uc3RyYWluZWRM
YXllcnM6KFdUCiAKIC0gKEJPT0wpaGFzRml4ZWRPclN0aWNreVBvc2l0aW9uTGF5ZXJzCiB7Ci0g
ICAgTXV0ZXhMb2NrZXIgbG9jayhXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKCkpOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0
YUxvY2soKSk7CiAgICAgcmV0dXJuICFfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5
ZXJzLmlzRW1wdHkoKTsKIH0KIApAQCAtMjEwLDcgKzIxMCw3IEBAIHN0YXRpYyBWaWV3cG9ydENv
bnN0cmFpbnRzOjpBbmNob3JFZGdlRmwKIAogLSAoQ0dGbG9hdCltaW5pbXVtT2Zmc2V0RnJvbUZp
eGVkUG9zaXRpb25MYXllcnNUb0FuY2hvckVkZ2U6KFdlYkZpeGVkUG9zaXRpb25BbmNob3JFZGdl
KWFuY2hvckVkZ2Ugb2ZSZWN0OihDR1JlY3QpcmVjdCBpbkxheWVyOihDQUxheWVyICopbGF5ZXIK
IHsKLSAgICBNdXRleExvY2tlciBsb2NrKFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxvY2so
KSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2soV2ViRml4ZWRQb3NpdGlvbkNvbnRl
bnREYXRhTG9jaygpKTsKICAgICBWaWV3cG9ydENvbnN0cmFpbnRzOjpBbmNob3JFZGdlRmxhZ3Mg
YW5jaG9yRWRnZUZsYWdzID0gYW5jaG9yRWRnZUZsYWdzRm9yQW5jaG9yRWRnZShhbmNob3JFZGdl
KTsKICAgICBDR0Zsb2F0IG1pbmltdW1PZmZzZXQgPSBDR0ZMT0FUX01BWDsKICAgICBMYXllcklu
Zm9NYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IF9wcml2YXRlLT5tX3ZpZXdwb3J0Q29uc3RyYWlu
ZWRMYXllcnMuZW5kKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODc5MzIpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MSBAQAorMjAxNS0wOC0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbmFtZSBNdXRleCB0byBEZXByZWNhdGVkTXV0ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzY3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIu
bW06CisgICAgICAgICh0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxvY2spOgor
ICAgICAgICAoK1tXZWJEYXRhYmFzZU1hbmFnZXIgc3RhcnRCYWNrZ3JvdW5kVGFza10pOgorICAg
ICAgICAoK1tXZWJEYXRhYmFzZU1hbmFnZXIgZW5kQmFja2dyb3VuZFRhc2tdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3N5bmNocm9uaXplQ3Vz
dG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3RdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0Q3Vz
dG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3RJbldlYlRocmVhZDpzeW5jaHJvbml6ZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBfc2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgX2ZldGNoQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgorCiAyMDE1LTA4LTA0ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGRhdGFiYXNl
IHRocmVhZCBwYXVzZSBjb2RlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdl
L1dlYkRhdGFiYXNlTWFuYWdlci5tbQkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYktp
dC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTIy
Niw5ICsyMjYsOSBAQCArICh2b2lkKXNjaGVkdWxlRW1wdHlEYXRhYmFzZVJlbW92YWwKICNpZiBQ
TEFURk9STShJT1MpCiBAaW1wbGVtZW50YXRpb24gV2ViRGF0YWJhc2VNYW5hZ2VyIChXZWJEYXRh
YmFzZU1hbmFnZXJJbnRlcm5hbCkKIAotc3RhdGljIE11dGV4JiB0cmFuc2FjdGlvbkJhY2tncm91
bmRUYXNrSWRlbnRpZmllckxvY2soKQorc3RhdGljIERlcHJlY2F0ZWRNdXRleCYgdHJhbnNhY3Rp
b25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoTXV0ZXgsIG11dGV4LCAoKSk7CisgICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKERlcHJlY2F0ZWRNdXRleCwgbXV0ZXgsICgpKTsKICAgICByZXR1cm4gbXV0
ZXg7CiB9CiAKQEAgLTI2MSw3ICsyNjEsNyBAQCArICh2b2lkKWRpZEZpbmlzaExhc3RUcmFuc2Fj
dGlvbgogCiArICh2b2lkKXN0YXJ0QmFja2dyb3VuZFRhc2sKIHsKLSAgICBNdXRleExvY2tlciBs
b2NrKHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jaygpKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayh0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmll
ckxvY2soKSk7CiAKICAgICAvLyBJZiB0aGVyZSdzIGFscmVhZHkgYW4gZXhpc3RpbmcgYmFja2dy
b3VuZCB0YXNrIGdvaW5nIG9uLCB0aGVyZSdzIG5vIG5lZWQgdG8gc3RhcnQgYSBuZXcgb25lLgog
ICAgIGlmIChnZXRUcmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllcigpICE9IGludmFs
aWRXZWJCYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIoKSkKQEAgLTI3NSw3ICsyNzUsNyBAQCArICh2
b2lkKXN0YXJ0QmFja2dyb3VuZFRhc2sKIAogKyAodm9pZCllbmRCYWNrZ3JvdW5kVGFzawogewot
ICAgIE11dGV4TG9ja2VyIGxvY2sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJM
b2NrKCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKHRyYW5zYWN0aW9uQmFja2dy
b3VuZFRhc2tJZGVudGlmaWVyTG9jaygpKTsKIAogICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQg
d2Ugd2VyZSB1bmFibGUgdG8gc3RhcnQgdGhlIGJhY2tncm91bmQgdGFzayB3aGVuIHRoZSBmaXJz
dCB0cmFuc2FjdGlvbiBiZWdhbi4KICAgICAvLyBEb24ndCB0cnkgdG8gZW5kIHRoZSB0YXNrIGlu
IHRoYXQgY2FzZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlz
aW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzYzMiw3ICszNjMyLDcgQEAgLSAodm9pZClfc3luY2hyb25pemVDdXN0
b21GaXhlZFBvc2l0aW9uTAogCiAgICAgSW50UmVjdCBuZXdSZWN0OwogICAgIHsKLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJl
Y3RNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoX3ByaXZhdGUt
PnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4KTsKICAgICAgICAgaWYgKENHUmVj
dElzTnVsbChfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgbmV3UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoX3ByaXZh
dGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCk7CkBAIC0zNjQ2LDcgKzM2NDYsNyBA
QCAtICh2b2lkKV9zeW5jaHJvbml6ZUN1c3RvbUZpeGVkUG9zaXRpb25MCiAtICh2b2lkKV9zZXRD
dXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdEluV2ViVGhyZWFkOihDR1JlY3QpcmVjdCBzeW5j
aHJvbml6ZTooQk9PTClzeW5jaHJvbml6ZQogewogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleCk7Cisg
ICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoX3ByaXZhdGUtPnBlbmRpbmdGaXhl
ZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4KTsKICAgICAgICAgX3ByaXZhdGUtPnBlbmRpbmdGaXhl
ZFBvc2l0aW9uTGF5b3V0UmVjdCA9IHJlY3Q7CiAgICAgfQogICAgIGlmICghc3luY2hyb25pemUp
CkBAIC0zNjYwLDcgKzM2NjAsNyBAQCAtICh2b2lkKV9zZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5
b3V0UmVjCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkKCkpOwogICAgIHsKLSAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91
dFJlY3RNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoX3ByaXZh
dGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4KTsKICAgICAgICAgX3ByaXZh
dGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCA9IHJlY3Q7CiAgICAgfQogICAgIFtz
ZWxmIF9zeW5jaHJvbml6ZUN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0XTsKQEAgLTM2Njgs
NyArMzY2OCw3IEBAIC0gKHZvaWQpX3NldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWMKIAog
LSAoQk9PTClfZmV0Y2hDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdDooTlNSZWN0KilyZWN0
CiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlv
bkxheW91dFJlY3RNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihfcHJp
dmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgpOwogICAgIGlmIChDR1Jl
Y3RJc051bGwoX3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEuaAkocmV2aXNpb24gMTg3ODg5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDcgQEAgQGludGVyZmFj
ZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBDR1NpemUgZml4ZWRMYXlvdXRTaXpl
OwogICAgIEJPT0wgbWFpblZpZXdJc1Njcm9sbGluZ09yWm9vbWluZzsKICAgICBpbnQzMl90IGRp
ZERyYXdUaWxlczsKLSAgICBXVEY6Ok11dGV4IHBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVj
dE11dGV4OworICAgIFdURjo6RGVwcmVjYXRlZE11dGV4IHBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5
b3V0UmVjdE11dGV4OwogICAgIENHUmVjdCBwZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q7
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3OTMyKQorKysgU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTUtMDgtMDQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgTXV0ZXggdG8gRGVwcmVjYXRlZE11dGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpzY2hl
ZHVsZUNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6
cmVnaXN0ZXJQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTWFpblRocmVhZFNjaGVk
dWxlcjo6dW5yZWdpc3RlclBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyOjpkaXNwYXRjaENhbGxzRm9yUGx1Z2luKToKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBXZWJJY29uRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViSWNvbkRhdGFiYXNlOjpkaWRSZW1vdmVBbGxJY29ucyk6CisgICAg
ICAgIChXZWJJY29uRGF0YWJhc2U6OmRpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMKToKKyAgICAg
ICAgKFdlYkljb25EYXRhYmFzZTo6ZGVsaXZlck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFdl
YkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6CisgICAgICAgIChtYWluQnVuZGxlTG9jU3RyaW5ncyk6
CisgICAgICAgIChmcmFtZXdvcmtMb2NTdHJpbmdzTXV0ZXgpOgorICAgICAgICAoZmluZENhY2hl
ZFN0cmluZyk6CisgICAgICAgIChjYWNoZVN0cmluZyk6CisKIDIwMTUtMDgtMDQgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gVXBkYXRlIEFwcGxl
IFdpbmRvd3MgYnVpbGQgZm9yIFZTMjAxNQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViSWNv
bkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0
YWJhc2UuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29u
RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsMTQgKzMyMCwxNCBAQCBIQklUTUFQ
IFdlYkljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVEZWZhCiB2b2lkIFdlYkljb25EYXRhYmFzZTo6
ZGlkUmVtb3ZlQWxsSWNvbnMoKQogewogICAgIC8vIFF1ZXVlaW5nIHRoZSBlbXB0eSBzdHJpbmcg
aXMgYSBzcGVjaWFsIHdheSBvZiBzYXlpbmcgInRoaXMgcXVldWVkIG5vdGlmaWNhdGlvbiBpcyB0
aGUgZGlkUmVtb3ZlQWxsSWNvbnMgbm90aWZpY2F0aW9uIgotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX25vdGlmaWNhdGlvbk11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbm90aWZpY2F0aW9uTXV0ZXgpOwogICAgIG1fbm90aWZpY2F0aW9uUXVldWUuYXBwZW5kKFN0
cmluZygpKTsKICAgICBzY2hlZHVsZU5vdGlmaWNhdGlvbkRlbGl2ZXJ5KCk7CiB9CiAKIHZvaWQg
V2ViSWNvbkRhdGFiYXNlOjpkaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBXVEY6OlN0
cmluZyYgcGFnZVVSTCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9ub3RpZmljYXRpb25N
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX25vdGlmaWNhdGlvbk11
dGV4KTsKICAgICBtX25vdGlmaWNhdGlvblF1ZXVlLmFwcGVuZChwYWdlVVJMLmlzb2xhdGVkQ29w
eSgpKTsKICAgICBzY2hlZHVsZU5vdGlmaWNhdGlvbkRlbGl2ZXJ5KCk7CiB9CkBAIC00MDMsNyAr
NDAzLDcgQEAgdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRlbGl2ZXJOb3RpZmljYXRpbwogCiAgICAg
VmVjdG9yPFN0cmluZz4gcXVldWU7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9zaGFyZWRXZWJJY29uRGF0YWJhc2UtPm1fbm90aWZpY2F0aW9uTXV0ZXgpOworICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2hhcmVkV2ViSWNvbkRhdGFiYXNlLT5tX25v
dGlmaWNhdGlvbk11dGV4KTsKICAgICAgICAgcXVldWUuc3dhcChtX3NoYXJlZFdlYkljb25EYXRh
YmFzZS0+bV9ub3RpZmljYXRpb25RdWV1ZSk7CiAgICAgICAgIG1fc2hhcmVkV2ViSWNvbkRhdGFi
YXNlLT5tX2RlbGl2ZXJ5UmVxdWVzdGVkID0gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCShyZXZpc2lvbiAxODc4ODkpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw5ICs0NCw5IEBAIFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSBXZWJLaXRM
b2NhbGkKIAogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgTG9jYWxpemVkU3RyaW5nKj4gTG9jYWxp
emVkU3RyaW5nTWFwOwogCi1zdGF0aWMgTXV0ZXgmIG1haW5CdW5kbGVMb2NTdHJpbmdzTXV0ZXgo
KQorc3RhdGljIERlcHJlY2F0ZWRNdXRleCYgbWFpbkJ1bmRsZUxvY1N0cmluZ3NNdXRleCgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBtdXRleCwgKCkpOwor
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEZXByZWNhdGVkTXV0ZXgsIG11dGV4
LCAoKSk7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCkBAIC01Niw5ICs1Niw5IEBAIHN0YXRpYyBM
b2NhbGl6ZWRTdHJpbmdNYXAmIG1haW5CdW5kbGVMb2MKICAgICByZXR1cm4gbWFwOwogfQogCi1z
dGF0aWMgTXV0ZXgmIGZyYW1ld29ya0xvY1N0cmluZ3NNdXRleCgpCitzdGF0aWMgRGVwcmVjYXRl
ZE11dGV4JiBmcmFtZXdvcmtMb2NTdHJpbmdzTXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0ZXgsICgpKTsKKyAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoRGVwcmVjYXRlZE11dGV4LCBtdXRleCwgKCkpOwogICAgIHJldHVybiBt
dXRleDsKIH0KIApAQCAtMTc1LDEyICsxNzUsMTIgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvcHlM
b2NhbGl6ZWRTdHJpbmdGcgogc3RhdGljIExvY2FsaXplZFN0cmluZyogZmluZENhY2hlZFN0cmlu
ZyhXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmluZ3NCdW5kbGUsIGNvbnN0IFN0cmlu
ZyYga2V5KQogewogICAgIGlmICghc3RyaW5nc0J1bmRsZSkgewotICAgICAgICBNdXRleExvY2tl
ciBsb2NrKG1haW5CdW5kbGVMb2NTdHJpbmdzTXV0ZXgoKSk7CisgICAgICAgIERlcHJlY2F0ZWRN
dXRleExvY2tlciBsb2NrKG1haW5CdW5kbGVMb2NTdHJpbmdzTXV0ZXgoKSk7CiAgICAgICAgIHJl
dHVybiBtYWluQnVuZGxlTG9jU3RyaW5ncygpLmdldChrZXkpOwogICAgIH0KIAogICAgIGlmIChz
dHJpbmdzQnVuZGxlLT5idW5kbGUgPT0gV2ViS2l0TG9jYWxpemFibGVTdHJpbmdzQnVuZGxlLmJ1
bmRsZSkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKGZyYW1ld29ya0xvY1N0cmluZ3NNdXRl
eCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2soZnJhbWV3b3JrTG9jU3Ry
aW5nc011dGV4KCkpOwogICAgICAgICByZXR1cm4gZnJhbWV3b3JrTG9jU3RyaW5ncygpLmdldChr
ZXkpOwogICAgIH0KIApAQCAtMTkwLDEyICsxOTAsMTIgQEAgc3RhdGljIExvY2FsaXplZFN0cmlu
ZyogZmluZENhY2hlZFN0cmluZwogc3RhdGljIHZvaWQgY2FjaGVTdHJpbmcoV2ViTG9jYWxpemFi
bGVTdHJpbmdzQnVuZGxlKiBzdHJpbmdzQnVuZGxlLCBjb25zdCBTdHJpbmcmIGtleSwgTG9jYWxp
emVkU3RyaW5nKiB2YWx1ZSkKIHsKICAgICBpZiAoIXN0cmluZ3NCdW5kbGUpIHsKLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9jayhtYWluQnVuZGxlTG9jU3RyaW5nc011dGV4KCkpOworICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtYWluQnVuZGxlTG9jU3RyaW5nc011dGV4KCkpOwog
ICAgICAgICBtYWluQnVuZGxlTG9jU3RyaW5ncygpLnNldChrZXksIHZhbHVlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIE11dGV4TG9ja2VyIGxvY2soZnJhbWV3b3JrTG9jU3RyaW5n
c011dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKGZyYW1ld29ya0xvY1N0
cmluZ3NNdXRleCgpKTsKICAgICBmcmFtZXdvcmtMb2NTdHJpbmdzKCkuc2V0KGtleSwgdmFsdWUp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRT
Y2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1
Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDE4Nzg4OSkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6UGx1Z2lu
TWFpblRocgogCiB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnNjaGVkdWxlQ2FsbChO
UFAgbnBwLCBNYWluVGhyZWFkRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIHVzZXJEYXRhKQogewot
ICAgIE11dGV4TG9ja2VyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOwogCiAgICAgQ2FsbFF1ZXVlTWFwOjppdGVyYXRvciBp
dCA9IG1fY2FsbFF1ZXVlTWFwLmZpbmQobnBwKTsKICAgICBpZiAoaXQgPT0gbV9jYWxsUXVldWVN
YXAuZW5kKCkpCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxl
cjo6c2NoZWR1bGUKIAogdm9pZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpyZWdpc3RlclBs
dWdpbihOUFAgbnBwKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOwogCiAgICAgQVNTRVJU
KCFtX2NhbGxRdWV1ZU1hcC5jb250YWlucyhucHApKTsKICAgICBtX2NhbGxRdWV1ZU1hcC5zZXQo
bnBwLCBEZXF1ZTxDYWxsPigpKTsKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBQbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyOjpyZWdpc3RlcgogCiB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6
OnVucmVnaXN0ZXJQbHVnaW4oTlBQIG5wcCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fcXVl
dWVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9xdWV1ZU11dGV4KTsK
IAogICAgIEFTU0VSVChtX2NhbGxRdWV1ZU1hcC5jb250YWlucyhucHApKTsKICAgICBtX2NhbGxR
dWV1ZU1hcC5yZW1vdmUobnBwKTsKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBQbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyOjpkaXNwYXRjaAogICAgIGZvciAoYXV0byYgY2FsbCA6IGNhbGxzKSB7CiAg
ICAgICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnLWluIGhhcyBiZWVuIGRlc3Ryb3llZC4KICAgICAg
ICAgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOworICAgICAg
ICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9xdWV1ZU11dGV4KTsKICAgICAgICAg
ICAgIGlmICghbV9jYWxsUXVldWVNYXAuY29udGFpbnMobnBwKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2lu
TWFpblRocmVhZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1Bs
dWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5oCShyZXZpc2lvbiAxODc4ODkpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2NhbGxQ
ZW5kaW5nOwogICAgIENhbGxRdWV1ZU1hcCBtX2NhbGxRdWV1ZU1hcDsKLSAgICBNdXRleCBtX3F1
ZXVlTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fcXVldWVNdXRleDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzkzMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA4LTA0ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIE11dGV4IHRvIERlcHJlY2F0ZWRNdXRl
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3Njc1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKGphdmFTY3JpcHRU
aHJlYWRzTXV0ZXgpOgorICAgICAgICAocnVuSmF2YVNjcmlwdFRocmVhZCk6CisgICAgICAgIChz
dGFydEphdmFTY3JpcHRUaHJlYWRzKToKKyAgICAgICAgKHN0b3BKYXZhU2NyaXB0VGhyZWFkcyk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKwogMjAxNS0wOC0wNCAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1QGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbnN0YWxsIHR3aXN0ZWQgcGFja2FnZSBmb3IgaHR0cCBzZXJ2ZXIgd2hlbiBuZWNlc3Nh
cnkuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNw
cAkocmV2aXNpb24gMTg3ODg5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRo
cmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0LDkgQEAgc3RhdGljIGNvbnN0
IHNpemVfdCBqYXZhU2NyaXB0VGhyZWFkc0NvdQogc3RhdGljIGJvb2wgamF2YVNjcmlwdFRocmVh
ZHNTaG91bGRUZXJtaW5hdGU7CiBzdGF0aWMgSlNDb250ZXh0R3JvdXBSZWYgamF2YVNjcmlwdFRo
cmVhZHNHcm91cDsKIAotc3RhdGljIE11dGV4JiBqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkKK3N0
YXRpYyBEZXByZWNhdGVkTXV0ZXgmIGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgc3RhdGljTXV0ZXgsICgpKTsKKyAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGVwcmVjYXRlZE11dGV4LCBzdGF0aWNN
dXRleCwgKCkpOwogICAgIHJldHVybiBzdGF0aWNNdXRleDsKIH0KIApAQCAtNzAsMjYgKzcwLDI2
IEBAIHZvaWQgcnVuSmF2YVNjcmlwdFRocmVhZCh2b2lkKikKIAogICAgIEpTR2xvYmFsQ29udGV4
dFJlZiBjdHg7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRo
cmVhZHNNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihqYXZh
U2NyaXB0VGhyZWFkc011dGV4KCkpOwogICAgICAgICBjdHggPSBKU0dsb2JhbENvbnRleHRDcmVh
dGVJbkdyb3VwKGphdmFTY3JpcHRUaHJlYWRzR3JvdXAsIDApOwogICAgIH0KIAogICAgIEpTU3Ry
aW5nUmVmIHNjcmlwdFJlZjsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZh
U2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CiAgICAgICAgIHNjcmlwdFJlZiA9IEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdCk7CiAgICAgfQogCiAgICAgd2hpbGUgKHRy
dWUpIHsKICAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3Jp
cHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgc2NyaXB0UmVm
LCAwLCAwLCAxLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgIEFTU0VSVCghZXhjZXB0aW9uKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihq
YXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOwogICAgICAgICAgICAgY29uc3Qg
c2l6ZV90IHZhbHVlc0NvdW50ID0gMTAyNDsKICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWVz
W3ZhbHVlc0NvdW50XTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVz
Q291bnQ7ICsraSkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBydW5KYXZhU2NyaXB0VGhyZWFkKHZv
aWQqKQogICAgICAgICB9CiAKICAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CiAgICAgICAgICAgICBp
ZiAoamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIHJ1bkphdmFTY3JpcHRUaHJl
YWQodm9pZCopCiAgICAgICAgIGlmIChyYW5kKCkgJSA1KQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7
CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNN
dXRleCgpKTsKICAgICAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWQgPSBjdXJyZW50VGhyZWFk
KCk7CiAgICAgICAgIGRldGFjaFRocmVhZCh0aHJlYWQpOwogICAgICAgICBqYXZhU2NyaXB0VGhy
ZWFkcygpLnJlbW92ZSh0aHJlYWQpOwpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgcnVuSmF2YVNj
cmlwdFRocmVhZCh2b2lkKikKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOwogICAgIEpTU3RyaW5nUmVs
ZWFzZShzY3JpcHRSZWYpOwogICAgIEpTR2FyYmFnZUNvbGxlY3QoY3R4KTsKICAgICBKU0dsb2Jh
bENvbnRleHRSZWxlYXNlKGN0eCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBzdGFydEphdmFT
Y3JpcHRUaHJlYWRzKCkKIHsKICAgICBqYXZhU2NyaXB0VGhyZWFkc0dyb3VwID0gSlNDb250ZXh0
R3JvdXBDcmVhdGUoKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFk
c011dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRo
cmVhZHNNdXRleCgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamF2YVNjcmlwdFRo
cmVhZHNDb3VudDsgKytpKQogICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmFkZChjcmVhdGVU
aHJlYWQoJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDAsIDApKTsKQEAgLTEzMywxMyArMTMzLDEzIEBA
IHZvaWQgc3RhcnRKYXZhU2NyaXB0VGhyZWFkcygpCiB2b2lkIHN0b3BKYXZhU2NyaXB0VGhyZWFk
cygpCiB7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVh
ZHNNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2Ny
aXB0VGhyZWFkc011dGV4KCkpOwogICAgICAgICBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1p
bmF0ZSA9IHRydWU7CiAgICAgfQogCiAgICAgVmVjdG9yPFRocmVhZElkZW50aWZpZXIsIGphdmFT
Y3JpcHRUaHJlYWRzQ291bnQ+IHRocmVhZHM7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBs
b2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOwogICAgICAgICBjb3B5VG9W
ZWN0b3IoamF2YVNjcmlwdFRocmVhZHMoKSwgdGhyZWFkcyk7CiAgICAgICAgIEFTU0VSVCh0aHJl
YWRzLnNpemUoKSA9PSBqYXZhU2NyaXB0VGhyZWFkc0NvdW50KTsKICAgICB9CkBAIC0xNDgsNyAr
MTQ4LDcgQEAgdm9pZCBzdG9wSmF2YVNjcmlwdFRocmVhZHMoKQogICAgICAgICB3YWl0Rm9yVGhy
ZWFkQ29tcGxldGlvbih0aHJlYWRzW2ldKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKICAgICAgICAgamF2YVNj
cmlwdFRocmVhZHMoKS5jbGVhcigpOwogICAgIH0KIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwCShyZXZpc2lvbiAxODc4ODkpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Xb3JrUXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBkaXNwYXRjaEFmdGVyTGFiZWwgPSAKICAg
ICAKIFRFU1QoV1RGX1dvcmtRdWV1ZSwgU2ltcGxlKQogewotICAgIE11dGV4IG1fbG9jazsKKyAg
ICBEZXByZWNhdGVkTXV0ZXggbV9sb2NrOwogICAgIFRocmVhZENvbmRpdGlvbiBtX3Rlc3RDb21w
bGV0ZWQ7CiAgICAgVmVjdG9yPHN0ZDo6c3RyaW5nPiBtX2Z1bmN0aW9uQ2FsbE9yZGVyOwogCkBA
IC01Niw3ICs1Niw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgU2ltcGxlKQogICAgIGludCBpbml0
aWFsUmVmQ291bnQgPSBxdWV1ZS0+cmVmQ291bnQoKTsKICAgICBFWFBFQ1RfRVEoMSwgaW5pdGlh
bFJlZkNvdW50KTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICBxdWV1ZS0+ZGlzcGF0Y2goWyZd
KHZvaWQpIHsKICAgICAgICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQoc2ltcGxlVGVzdExh
YmVsKTsKICAgICAgICAgY2FsbGVkU2ltcGxlVGVzdCA9IHRydWU7CkBAIC02OSw3ICs2OSw3IEBA
IFRFU1QoV1RGX1dvcmtRdWV1ZSwgU2ltcGxlKQogICAgIH0pOwogCiAgICAgcXVldWUtPmRpc3Bh
dGNoKFsmXSh2b2lkKSB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAg
ICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1fZnVu
Y3Rpb25DYWxsT3JkZXIuYXBwZW5kKHRoaXJkVGVzdExhYmVsKTsKICAgICAgICAgY2FsbGVkVGhp
cmRUZXN0ID0gdHJ1ZTsKIApAQCAtOTYsNyArOTYsNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIFNp
bXBsZSkKIAogVEVTVChXVEZfV29ya1F1ZXVlLCBUd29RdWV1ZXMpCiB7Ci0gICAgTXV0ZXggbV9s
b2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX2xvY2s7CiAgICAgVGhyZWFkQ29uZGl0aW9uIG1f
dGVzdFF1ZXVlMUNvbXBsZXRlZCwgbV90ZXN0UXVldWUyQ29tcGxldGVkOwogICAgIFZlY3Rvcjxz
dGQ6OnN0cmluZz4gbV9mdW5jdGlvbkNhbGxPcmRlcjsKIApAQCAtMTEwLDcgKzExMCw3IEBAIFRF
U1QoV1RGX1dvcmtRdWV1ZSwgVHdvUXVldWVzKQogICAgIEVYUEVDVF9FUSgxLCBxdWV1ZTEtPnJl
ZkNvdW50KCkpOwogICAgIEVYUEVDVF9FUSgxLCBxdWV1ZTItPnJlZkNvdW50KCkpOwogCi0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX2xvY2spOwogICAgIAogICAgIHF1ZXVlMS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsKICAg
ICAgICAgbV9mdW5jdGlvbkNhbGxPcmRlci5hcHBlbmQoc2ltcGxlVGVzdExhYmVsKTsKQEAgLTEy
MCw3ICsxMjAsNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIFR3b1F1ZXVlcykKICAgICBxdWV1ZTIt
PmRpc3BhdGNoKFsmXSh2b2lkKSB7CiAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNsZWVwX2Zv
cihzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDUwKSk7CiAKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9s
b2NrKTsKIAogICAgICAgICAvLyBXaWxsIGZhaWwgaWYgcXVldWUyIHRvb2sgdGhlIG11dGV4IGJl
Zm9yZSBxdWV1ZTEuCiAgICAgICAgIEVYUEVDVF9UUlVFKGNhbGxlZFRoaXJkVGVzdCk7CkBAIC0x
MzEsNyArMTMxLDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBUd29RdWV1ZXMpCiAgICAgfSk7CiAK
ICAgICBxdWV1ZTEtPmRpc3BhdGNoKFsmXSh2b2lkKSB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHRoaXJkVGVzdExhYmVsKTsK
ICAgICAgICAgY2FsbGVkVGhpcmRUZXN0ID0gdHJ1ZTsKICAgICAgICAgCkBAIC0xNTgsNyArMTU4
LDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBUd29RdWV1ZXMpCiAKIFRFU1QoV1RGX1dvcmtRdWV1
ZSwgRGlzcGF0Y2hBZnRlcikKIHsKLSAgICBNdXRleCBtX2xvY2s7CisgICAgRGVwcmVjYXRlZE11
dGV4IG1fbG9jazsKICAgICBUaHJlYWRDb25kaXRpb24gbV90ZXN0Q29tcGxldGVkLCBtX2Rpc3Bh
dGNoQWZ0ZXJUZXN0Q29tcGxldGVkOwogICAgIFZlY3RvcjxzdGQ6OnN0cmluZz4gbV9mdW5jdGlv
bkNhbGxPcmRlcjsKIApAQCAtMTY3LDE3ICsxNjcsMTcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBE
aXNwYXRjaEFmdGVyKQogCiAgICAgYXV0byBxdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20u
YXBwbGUuV2ViS2l0LlRlc3QuZGlzcGF0Y2hBZnRlciIpOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwog
CiAgICAgcXVldWUtPmRpc3BhdGNoKFsmXSh2b2lkKSB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHNpbXBsZVRlc3RMYWJlbCk7
CiAgICAgICAgIGNhbGxlZFNpbXBsZVRlc3QgPSB0cnVlOwogICAgICAgICBtX3Rlc3RDb21wbGV0
ZWQuc2lnbmFsKCk7CiAgICAgfSk7CiAKICAgICBxdWV1ZS0+ZGlzcGF0Y2hBZnRlcihzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzKDUwMCksIFsmXSh2b2lkKSB7Ci0gICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKGRpc3BhdGNoQWZ0ZXJM
YWJlbCk7CiAgICAgICAgIGNhbGxlZERpc3BhdGNoQWZ0ZXJUZXN0ID0gdHJ1ZTsKICAgICAgICAg
bV9kaXNwYXRjaEFmdGVyVGVzdENvbXBsZXRlZC5zaWduYWwoKTsKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcAkocmV2
aXNpb24gMTg3ODg5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvZ2xpYi9Xb3Jr
UXVldWVHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CiBURVNUKFdURl9Xb3JrUXVldWUsIEFzeW5jSU8pCiB7CiAgICAgc3Ry
dWN0IFRlc3RpbmdDb250ZXh0IHsKLSAgICAgICAgTXV0ZXggbV9sb2NrOworICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXggbV9sb2NrOwogICAgICAgICBUaHJlYWRDb25kaXRpb24gbV90ZXN0Q29tcGxl
dGVkOwogICAgICAgICBHTWFpbkNvbnRleHQqIG1fbWFpbkNvbnRleHQ7CiAgICAgfSBjb250ZXh0
OwpAQCAtNDksNyArNDksNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIEFzeW5jSU8pCiAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBjdXJyZW50RGlyZWN0b3J5KGdfZ2V0X2N1cnJlbnRfZGlyKCkpOwogICAg
IEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChjdXJy
ZW50RGlyZWN0b3J5LmdldCgpKSk7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIoY29udGV4dC5t
X2xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoY29udGV4dC5tX2xvY2sp
OwogICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0odm9pZCkgewogICAgICAgICBFWFBFQ1RfVFJVRShn
X21haW5fY29udGV4dF9nZXRfdGhyZWFkX2RlZmF1bHQoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KGdfbWFpbl9jb250ZXh0X2dldF90aHJlYWRfZGVmYXVsdCgpICE9IGNvbnRleHQubV9tYWluQ29u
dGV4dCk7CkBAIC01Nyw3ICs1Nyw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgQXN5bmNJTykKICAg
ICAgICAgZ19maWxlX3F1ZXJ5X2luZm9fYXN5bmMoZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVU
RV9TVEFOREFSRF9TSVpFLCBHX0ZJTEVfUVVFUllfSU5GT19OT05FLCBHX1BSSU9SSVRZX0RFRkFV
TFQsIG51bGxwdHIsCiAgICAgICAgICAgICBbXShHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiwgZ3Bv
aW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgICAgICAgICBUZXN0aW5nQ29udGV4dCogY29udGV4
dCA9IHN0YXRpY19jYXN0PFRlc3RpbmdDb250ZXh0Kj4odXNlckRhdGEpOwotICAgICAgICAgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihjb250ZXh0LT5tX2xvY2spOworICAgICAgICAgICAgICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoY29udGV4dC0+bV9sb2NrKTsKICAgICAgICAg
ICAgICAgICBFWFBFQ1RfRVEoZ19tYWluX2NvbnRleHRfZ2V0X3RocmVhZF9kZWZhdWx0KCksIGNv
bnRleHQtPm1fbWFpbkNvbnRleHQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPm1fdGVzdENv
bXBsZXRlZC5zaWduYWwoKTsKICAgICAgICAgICAgIH0sICZjb250ZXh0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258263</attachid>
            <date>2015-08-04 21:26:19 -0700</date>
            <delta_ts>2015-08-05 11:12:11 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>232939</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE1LTA4LTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1lIE11dGV4IHRvIERlcHJlY2F0ZWRNdXRleAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwOgorICAg
ICAgICAoSlNDOjpTYW1wbGluZ1Rvb2w6OmRvUnVuKToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdU
b29sOjpub3RpZnlPZlNjb3BlKToKKyAgICAgICAgKiBieXRlY29kZS9TYW1wbGluZ1Rvb2wuaDoK
KyAgICAgICAgKiBkZmcvREZHVGhyZWFkRGF0YS5oOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlz
dC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6On5Xb3JrbGlzdCk6CisgICAgICAg
IChKU0M6OkRGRzo6V29ya2xpc3Q6OmlzQWN0aXZlRm9yVk0pOgorICAgICAgICAoSlNDOjpERkc6
OldvcmtsaXN0OjplbnF1ZXVlKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6Y29tcGls
YXRpb25TdGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OndhaXRVbnRpbEFsbFBs
YW5zRm9yVk1BcmVSZWFkeSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZUFs
bFJlYWR5UGxhbnNGb3JWTSk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNvbXBsZXRl
QWxsUmVhZHlQbGFuc0ZvclZNKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6dmlzaXRX
ZWFrUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZURlYWRQ
bGFucyk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OnF1ZXVlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xp
c3Q6OnJ1blRocmVhZCk6CisgICAgICAgICogZGZnL0RGR1dvcmtsaXN0Lmg6CisgICAgICAgICog
ZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogaGVhcC9Db3BpZWRTcGFj
ZS5jcHA6CisgICAgICAgIChKU0M6OkNvcGllZFNwYWNlOjpkb25lRmlsbGluZ0Jsb2NrKToKKyAg
ICAgICAgKEpTQzo6Q29waWVkU3BhY2U6OmRvbmVDb3B5aW5nKToKKyAgICAgICAgKiBoZWFwL0Nv
cGllZFNwYWNlLmg6CisgICAgICAgICogaGVhcC9Db3BpZWRTcGFjZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6Q29waWVkU3BhY2U6OnJlY3ljbGVCb3Jyb3dlZEJsb2NrKToKKyAgICAgICAgKEpT
Qzo6Q29waWVkU3BhY2U6OmFsbG9jYXRlQmxvY2tGb3JDb3B5aW5nUGhhc2UpOgorICAgICAgICAq
IGhlYXAvSGVhcFRpbWVyLmg6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3Bw
OgorICAgICAgICAoSlNDOjpBY3RpdmVNYWNoaW5lVGhyZWFkc01hbmFnZXI6OkxvY2tlcjo6TG9j
a2VyKToKKyAgICAgICAgKEpTQzo6QWN0aXZlTWFjaGluZVRocmVhZHNNYW5hZ2VyOjphZGQpOgor
ICAgICAgICAoSlNDOjpBY3RpdmVNYWNoaW5lVGhyZWFkc01hbmFnZXI6OnJlbW92ZSk6CisgICAg
ICAgIChKU0M6OkFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlcjo6QWN0aXZlTWFjaGluZVRocmVh
ZHNNYW5hZ2VyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6On5NYWNoaW5lVGhyZWFk
cyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFkKToKKyAg
ICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OnJlbW92ZVRocmVhZElmRm91bmQpOgorICAgICAg
ICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2spOgorICAgICAg
ICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAg
ICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKToKKyAgICAg
ICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5oOgorICAgICAgICAqIGludGVycHJldGVyL0pT
U3RhY2suY3BwOgorICAgICAgICAoSlNDOjpzdGFja1N0YXRpc3RpY3NNdXRleCk6CisgICAgICAg
IChKU0M6OkpTU3RhY2s6OmFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KToKKyAgICAgICAgKEpTQzo6
SlNTdGFjazo6Y29tbWl0dGVkQnl0ZUNvdW50KToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6
CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oOgorCiAyMDE1LTA4LTA0ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVwZGF0
ZSBBcHBsZSBXaW5kb3dzIGJ1aWxkIGZvciBWUzIwMTUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCShyZXZpc2lvbiAxODc5MzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgU2FtcGxpbmdUb29sOjpkb1J1bigpCiAK
ICNpZiBFTkFCTEUoQ09ERUJMT0NLX1NBTVBMSU5HKQogICAgIGlmIChDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IHNhbXBsZS5jb2RlQmxvY2soKSkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7CiAgICAgICAgIFNjcmlwdFNhbXBsZVJlY29y
ZCogcmVjb3JkID0gbV9zY29wZVNhbXBsZU1hcC0+Z2V0KGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCkpOwogICAgICAgICBBU1NFUlQocmVjb3JkKTsKICAgICAgICAgcmVjb3JkLT5zYW1wbGUo
Y29kZUJsb2NrLCBzYW1wbGUudlBDKCkpOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgU2FtcGxp
bmdUb29sOjpzYW1wbGUoKQogdm9pZCBTYW1wbGluZ1Rvb2w6Om5vdGlmeU9mU2NvcGUoVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBzY3JpcHQpCiB7CiAjaWYgRU5BQkxFKENPREVCTE9DS19TQU1Q
TElORykKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9zY3JpcHRTYW1wbGVNYXBNdXRleCk7Cisg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3NjcmlwdFNhbXBsZU1hcE11dGV4KTsK
ICAgICBtX3Njb3BlU2FtcGxlTWFwLT5zZXQoc2NyaXB0LCBhZG9wdFB0cihuZXcgU2NyaXB0U2Ft
cGxlUmVjb3JkKHZtLCBzY3JpcHQpKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCShy
ZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxp
bmdUb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOCw3ICszMzgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdW5zaWduZWQgbV9vcGNvZGVTYW1wbGVzSW5DVElGdW5jdGlvbnNbbnVtT3Bj
b2RlSURzXTsKICAgICAgICAgCiAjaWYgRU5BQkxFKENPREVCTE9DS19TQU1QTElORykKLSAgICAg
ICAgTXV0ZXggbV9zY3JpcHRTYW1wbGVNYXBNdXRleDsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4
IG1fc2NyaXB0U2FtcGxlTWFwTXV0ZXg7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRT
YW1wbGVSZWNvcmRNYXA+IG1fc2NvcGVTYW1wbGVNYXA7CiAjZW5kaWYKICAgICB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHJlYWREYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHJlYWREYXRhLmgJKHJldmlzaW9uIDE4Nzkz
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGhyZWFkRGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgV29ya2xpc3QqIG1f
d29ya2xpc3Q7CiAgICAgVGhyZWFkSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgTXV0ZXgg
bV9yaWdodFRvUnVuOworICAgIERlcHJlY2F0ZWRNdXRleCBtX3JpZ2h0VG9SdW47CiAgICAgU2Fm
ZXBvaW50KiBtX3NhZmVwb2ludDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3QuY3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBA
QCBXb3JrbGlzdDo6V29ya2xpc3QoQ1N0cmluZyB3b3JrbGlzdE5hbWUpCiBXb3JrbGlzdDo6fldv
cmtsaXN0KCkKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwor
ICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fdGhyZWFkcy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBtX3F1
ZXVlLmFwcGVuZChudWxscHRyKTsgLy8gVXNlIG51bGwgcGxhbiB0byBpbmRpY2F0ZSB0aGF0IHdl
IHdhbnQgdGhlIHRocmVhZCB0byB0ZXJtaW5hdGUuCiAgICAgICAgIG1fcGxhbkVucXVldWVkLmJy
b2FkY2FzdCgpOwpAQCAtNzcsNyArNzcsNyBAQCBSZWY8V29ya2xpc3Q+IFdvcmtsaXN0OjpjcmVh
dGUoQ1N0cmluZyB3CiAKIGJvb2wgV29ya2xpc3Q6OmlzQWN0aXZlRm9yVk0oVk0mIHZtKSBjb25z
dAogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICBQbGFuTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBtX3BsYW5zLmVuZCgpOwogICAgIGZvciAoUGxhbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9
IG1fcGxhbnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBpZiAoJml0
ZXItPnZhbHVlLT52bSA9PSAmdm0pCkBAIC04OSw3ICs4OSw3IEBAIGJvb2wgV29ya2xpc3Q6Omlz
QWN0aXZlRm9yVk0oVk0mIHZtKSBjb24KIHZvaWQgV29ya2xpc3Q6OmVucXVldWUoUGFzc1JlZlB0
cjxQbGFuPiBwYXNzZWRQbGFuKQogewogICAgIFJlZlB0cjxQbGFuPiBwbGFuID0gcGFzc2VkUGxh
bjsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlv
blF1ZXVlKCkpIHsKICAgICAgICAgZHVtcChsb2NrZXIsIFdURjo6ZGF0YUZpbGUoKSk7CiAgICAg
ICAgIGRhdGFMb2coIjogRW5xdWV1ZWluZyBwbGFuIHRvIG9wdGltaXplICIsIHBsYW4tPmtleSgp
LCAiXG4iKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFdvcmtsaXN0OjplbnF1ZXVlKFBhc3NS
ZWZQdHI8UGxhbj4gCiAKIFdvcmtsaXN0OjpTdGF0ZSBXb3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0
ZShDb21waWxhdGlvbktleSBrZXkpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIFBsYW5NYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlciA9PSBtX3Bs
YW5zLmVuZCgpKQogICAgICAgICByZXR1cm4gTm90S25vd247CkBAIC0xMTgsNyArMTE4LDcgQEAg
dm9pZCBXb3JrbGlzdDo6d2FpdFVudGlsQWxsUGxhbnNGb3JWTUFyZQogICAgIC8vIEFmdGVyIHdl
IHJlbGVhc2UgdGhpcyBsb2NrLCB3ZSBrbm93IHRoYXQgYWx0aG91Z2ggb3RoZXIgVk1zIG1heSBz
dGlsbAogICAgIC8vIGJlIGFkZGluZyBwbGFucywgb3VyIFZNIHdpbGwgbm90IGJlLgogICAgIAot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0
aW9uUXVldWUoKSkgewogICAgICAgICBkdW1wKGxvY2tlciwgV1RGOjpkYXRhRmlsZSgpKTsKQEAg
LTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFdvcmtsaXN0Ojp3YWl0VW50aWxBbGxQbGFuc0ZvclZNQXJl
CiB2b2lkIFdvcmtsaXN0OjpyZW1vdmVBbGxSZWFkeVBsYW5zRm9yVk0oVk0mIHZtLCBWZWN0b3I8
UmVmUHRyPFBsYW4+LCA4PiYgbXlSZWFkeVBsYW5zKQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2
bS5oZWFwKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3JlYWR5UGxhbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPFBsYW4+IHBsYW4gPSBt
X3JlYWR5UGxhbnNbaV07CiAgICAgICAgIGlmICgmcGxhbi0+dm0gIT0gJnZtKQpAQCAtMTkyLDcg
KzE5Miw3IEBAIFdvcmtsaXN0OjpTdGF0ZSBXb3JrbGlzdDo6Y29tcGxldGVBbGxSZWEKICAgICB9
CiAgICAgCiAgICAgaWYgKCEhcmVxdWVzdGVkS2V5ICYmIHJlc3VsdGluZ1N0YXRlID09IE5vdEtu
b3duKSB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGlmIChtX3BsYW5zLmNv
bnRhaW5zKHJlcXVlc3RlZEtleSkpCiAgICAgICAgICAgICByZXN1bHRpbmdTdGF0ZSA9IENvbXBp
bGluZzsKICAgICB9CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBXb3JrbGlzdDo6dmlzaXRXZWFr
UmVmZXJlbmNlcyhTbG90VgogewogICAgIFZNKiB2bSA9IHZpc2l0b3IuaGVhcCgpLT52bSgpOwog
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgZm9yIChQbGFuTWFwOjpp
dGVyYXRvciBpdGVyID0gbV9wbGFucy5iZWdpbigpOyBpdGVyICE9IG1fcGxhbnMuZW5kKCk7ICsr
aXRlcikgewogICAgICAgICAgICAgUGxhbiogcGxhbiA9IGl0ZXItPnZhbHVlLmdldCgpOwogICAg
ICAgICAgICAgaWYgKCZwbGFuLT52bSAhPSB2bSkKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdv
cmtsaXN0Ojp2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWCiB2b2lkIFdvcmtsaXN0OjpyZW1vdmVE
ZWFkUGxhbnMoVk0mIHZtKQogewogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICAgICAgSGFzaFNldDxDb21waWxhdGlvbktleT4gZGVhZFBsYW5LZXlzOwogICAgICAgICBmb3Ig
KFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmJlZ2luKCk7IGl0ZXIgIT0gbV9wbGFu
cy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFsdWUu
Z2V0KCk7CkBAIC0yOTUsMTcgKzI5NSwxNyBAQCB2b2lkIFdvcmtsaXN0OjpyZW1vdmVEZWFkUGxh
bnMoVk0mIHZtKQogCiBzaXplX3QgV29ya2xpc3Q6OnF1ZXVlTGVuZ3RoKCkKIHsKLSAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CiAgICAgcmV0dXJuIG1fcXVldWUuc2l6ZSgpOwogfQogCiB2b2lkIFdvcmtsaXN0
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAg
IGR1bXAobG9ja2VyLCBvdXQpOwogfQogCi12b2lkIFdvcmtsaXN0OjpkdW1wKGNvbnN0IE11dGV4
TG9ja2VyJiwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3ZvaWQgV29ya2xpc3Q6OmR1bXAoY29u
c3QgRGVwcmVjYXRlZE11dGV4TG9ja2VyJiwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAg
ICBvdXQucHJpbnQoCiAgICAgICAgICJXb3JrbGlzdCgiLCBSYXdQb2ludGVyKHRoaXMpLCAiKVtR
dWV1ZSBMZW5ndGggPSAiLCBtX3F1ZXVlLnNpemUoKSwKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lk
IFdvcmtsaXN0OjpydW5UaHJlYWQoVGhyZWFkRGF0YSogZGF0CiAgICAgZm9yICg7OykgewogICAg
ICAgICBSZWZQdHI8UGxhbj4gcGxhbjsKICAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CiAgICAgICAgICAgICB3aGlsZSAobV9xdWV1ZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgbV9wbGFuRW5xdWV1ZWQud2FpdChtX2xvY2spOwogICAgICAgICAgICAgCkBA
IC0zNDEsOSArMzQxLDkgQEAgdm9pZCBXb3JrbGlzdDo6cnVuVGhyZWFkKFRocmVhZERhdGEqIGRh
dAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIoZGF0YS0+bV9yaWdodFRvUnVuKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIoZGF0YS0+bV9yaWdodFRvUnVuKTsKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgICAgICAgICAgaWYg
KHBsYW4tPnN0YWdlID09IFBsYW46OkNhbmNlbGxlZCkgewogICAgICAgICAgICAgICAgICAgICBt
X251bWJlck9mQWN0aXZlVGhyZWFkcy0tOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIFdvcmtsaXN0OjpydW5UaHJlYWQoVGhyZWFkRGF0YSog
ZGF0CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcGxhbi0+dm0uaGVhcC5pc0NvbGxlY3Rp
bmcoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKHBsYW4tPnN0YWdlID09
IFBsYW46OkNhbmNlbGxlZCkgewogICAgICAgICAgICAgICAgICAgICBtX251bWJlck9mQWN0aXZl
VGhyZWFkcy0tOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTM3MCw3ICszNzAs
NyBAQCB2b2lkIFdvcmtsaXN0OjpydW5UaHJlYWQoVGhyZWFkRGF0YSogZGF0CiAgICAgICAgIH0K
IAogICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gV2UgY291bGQgaGF2ZSBiZWVuIGNhbmNlbGxlZCBiZXR3ZWVu
IHJlbGVhc2luZyByaWdodFRvUnVuIGFuZCBhY3F1aXJpbmcgbV9sb2NrLgogICAgICAgICAgICAg
Ly8gVGhpcyB3b3VsZCBtZWFuIHRoYXQgd2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBHQyBy
aWdodCBub3cuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5oCShy
ZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIHJlbW92ZUFsbFJlYWR5UGxhbnNGb3JWTShWTSYsIFZlY3RvcjxSZWZQdHI8UGxhbj4sIDg+
Jik7CiAKLSAgICB2b2lkIGR1bXAoY29uc3QgTXV0ZXhMb2NrZXImLCBQcmludFN0cmVhbSYpIGNv
bnN0OworICAgIHZvaWQgZHVtcChjb25zdCBEZXByZWNhdGVkTXV0ZXhMb2NrZXImLCBQcmludFN0
cmVhbSYpIGNvbnN0OwogICAgIAogICAgIENTdHJpbmcgbV90aHJlYWROYW1lOwogICAgIApAQCAt
MTAzLDkgKzEwMyw5IEBAIHByaXZhdGU6CiAgICAgLy8gYmUgY29tcGxldGVkLgogICAgIFZlY3Rv
cjxSZWZQdHI8UGxhbj4sIDE2PiBtX3JlYWR5UGxhbnM7CiAKLSAgICBNdXRleCBtX3N1c3BlbnNp
b25Mb2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX3N1c3BlbnNpb25Mb2NrOwogICAgIAotICAg
IG11dGFibGUgTXV0ZXggbV9sb2NrOworICAgIG11dGFibGUgRGVwcmVjYXRlZE11dGV4IG1fbG9j
azsKICAgICBUaHJlYWRDb25kaXRpb24gbV9wbGFuRW5xdWV1ZWQ7CiAgICAgVGhyZWFkQ29uZGl0
aW9uIG1fcGxhbkNvbXBpbGVkOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTg3OTMyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OCwxNCArNzgsMTQgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
ZW5xdWV1ZShzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrKQogICAgIHsKLSAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGOjptb3Zl
KHRhc2spKTsKICAgICAgICAgbV9jb25kaXRpb24uYnJvYWRjYXN0KCk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgd2FpdFVudGlsRW1wdHkoKQogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKICAgICAgICAgd2hpbGUgKCFtX3F1ZXVlLmlzRW1wdHkoKSB8fCBtX3dvcmtpbmcpCiAgICAg
ICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fbG9jayk7CiAgICAgfQpAQCAtOTYsNyArOTYsNyBA
QCBwcml2YXRlOgogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrOwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgICAgIERlcHJlY2F0ZWRN
dXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgICAgICAgICBtX3dvcmtpbmcgPSBm
YWxzZTsKICAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi5icm9hZGNhc3QoKTsKICAgICAgICAg
ICAgICAgICB3aGlsZSAobV9xdWV1ZS5pc0VtcHR5KCkpCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBNdXRleCBtX2xvY2s7CisgICAgRGVw
cmVjYXRlZE11dGV4IG1fbG9jazsKICAgICBUaHJlYWRDb25kaXRpb24gbV9jb25kaXRpb247CiAg
ICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4+IG1fcXVldWU7CiAgICAg
Ym9vbCBtX3dvcmtpbmcgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29waWVkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvcGllZFNwYWNlLmNwcAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4
LDcgQEAgdm9pZCBDb3BpZWRTcGFjZTo6ZG9uZUZpbGxpbmdCbG9jayhDb3BpZQogICAgIH0KIAog
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7Cisg
ICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsK
ICAgICAgICAgQVNTRVJUKG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MgPiAwKTsKICAgICAgICAgQVNT
RVJUKG1faW5Db3B5aW5nUGhhc2UpOwogICAgICAgICBtX251bWJlck9mTG9hbmVkQmxvY2tzLS07
CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBDb3BpZWRTcGFjZTo6ZGlkU3RhcnRGdWxsQ29sbGVj
dGlvbgogdm9pZCBDb3BpZWRTcGFjZTo6ZG9uZUNvcHlpbmcoKQogewogICAgIHsKLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7CisgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsKICAgICAgICAgd2hpbGUg
KG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MgPiAwKQogICAgICAgICAgICAgbV9sb2FuZWRCbG9ja3ND
b25kaXRpb24ud2FpdChtX2xvYW5lZEJsb2Nrc0xvY2spOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuaAkocmV2aXNpb24gMTg3OTMyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luQ29weWluZ1BoYXNlOwogICAg
IGJvb2wgbV9zaG91bGREb0NvcHlQaGFzZTsKIAotICAgIE11dGV4IG1fbG9hbmVkQmxvY2tzTG9j
azsgCisgICAgRGVwcmVjYXRlZE11dGV4IG1fbG9hbmVkQmxvY2tzTG9jazsgCiAgICAgVGhyZWFk
Q29uZGl0aW9uIG1fbG9hbmVkQmxvY2tzQ29uZGl0aW9uOwogICAgIHNpemVfdCBtX251bWJlck9m
TG9hbmVkQmxvY2tzOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29w
aWVkU3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29waWVkU3BhY2VJbmxpbmVzLmgJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTMsNyArMTEzLDcgQEAgaW5saW5lIHZvaWQgQ29waWVkU3BhY2U6OnJlY3ljbGVCb3Jyb3dlZAog
ICAgIENvcGllZEJsb2NrOjpkZXN0cm95KGJsb2NrKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsKICAgICAgICAgQVNTRVJUKG1fbnVt
YmVyT2ZMb2FuZWRCbG9ja3MgPiAwKTsKICAgICAgICAgQVNTRVJUKG1faW5Db3B5aW5nUGhhc2Up
OwogICAgICAgICBtX251bWJlck9mTG9hbmVkQmxvY2tzLS07CkBAIC0xMjgsNyArMTI4LDcgQEAg
aW5saW5lIENvcGllZEJsb2NrKiBDb3BpZWRTcGFjZTo6YWxsb2NhdAogICAgIENvcGllZEJsb2Nr
KiBibG9jayA9IENvcGllZEJsb2NrOjpjcmVhdGVOb1plcm9GaWxsKCk7CiAKICAgICB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvYW5lZEJsb2Nrc0xvY2spOworICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hbmVkQmxvY2tzTG9jayk7CiAgICAgICAgIG1f
bnVtYmVyT2ZMb2FuZWRCbG9ja3MrKzsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBUaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBUaW1lci5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOwogICAgIENG
UnVuTG9vcFRpbWVyQ29udGV4dCBtX2NvbnRleHQ7CiAKLSAgICBNdXRleCBtX3NodXRkb3duTXV0
ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fc2h1dGRvd25NdXRleDsKICNlbGlmIFBMQVRGT1JN
KEVGTCkKICAgICBzdGF0aWMgYm9vbCB0aW1lckV2ZW50KHZvaWQqKTsKICAgICBFY29yZV9UaW1l
ciogYWRkKGRvdWJsZSBkZWxheSwgdm9pZCogYWdlbnQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCShyZXZpc2lvbiAxODc5
MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTggKzEwMywxOCBAQCBwdWJsaWM6CiAgICAgICAgIH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIE11dGV4TG9ja2VyIG1fbG9ja2VyOworICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbV9sb2NrZXI7CiAgICAgfTsKIAogICAgIHZvaWQgYWRkKE1h
Y2hpbmVUaHJlYWRzKiBtYWNoaW5lVGhyZWFkcykKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2Vy
IG1hbmFnZXJMb2NrKG1fbG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBtYW5h
Z2VyTG9jayhtX2xvY2spOwogICAgICAgICBtX3NldC5hZGQobWFjaGluZVRocmVhZHMpOwogICAg
IH0KIAogICAgIHZvaWQgcmVtb3ZlKE1hY2hpbmVUaHJlYWRzKiBtYWNoaW5lVGhyZWFkcykKICAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIG1hbmFnZXJMb2NrKG1fbG9jayk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBtYW5hZ2VyTG9jayhtX2xvY2spOwogICAgICAgICBhdXRvIHJl
Y29yZGVkTWFjaGluZVRocmVhZHMgPSBtX3NldC50YWtlKG1hY2hpbmVUaHJlYWRzKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocmVjb3JkZWRNYWNoaW5lVGhyZWFkcyA9IG1hY2hpbmVUaHJlYWRz
KTsKICAgICB9CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKIAogICAgIEFjdGl2ZU1hY2hp
bmVUaHJlYWRzTWFuYWdlcigpIHsgfQogICAgIAotICAgIE11dGV4IG1fbG9jazsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXggbV9sb2NrOwogICAgIE1hY2hpbmVUaHJlYWRzU2V0IG1fc2V0OwogCiAgICAg
ZnJpZW5kIEFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlciYgYWN0aXZlTWFjaGluZVRocmVhZHNN
YW5hZ2VyKCk7CkBAIC0yNjMsNyArMjYzLDcgQEAgTWFjaGluZVRocmVhZHM6On5NYWNoaW5lVGhy
ZWFkcygpCiAgICAgYWN0aXZlTWFjaGluZVRocmVhZHNNYW5hZ2VyKCkucmVtb3ZlKHRoaXMpOwog
ICAgIHRocmVhZFNwZWNpZmljS2V5RGVsZXRlKG1fdGhyZWFkU3BlY2lmaWMpOwogCi0gICAgTXV0
ZXhMb2NrZXIgcmVnaXN0ZXJlZFRocmVhZHNMb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIHJlZ2lzdGVyZWRUaHJlYWRzTG9jayhtX3JlZ2lz
dGVyZWRUaHJlYWRzTXV0ZXgpOwogICAgIGZvciAoVGhyZWFkKiB0ID0gbV9yZWdpc3RlcmVkVGhy
ZWFkczsgdDspIHsKICAgICAgICAgVGhyZWFkKiBuZXh0ID0gdC0+bmV4dDsKICAgICAgICAgZGVs
ZXRlIHQ7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBNYWNoaW5lVGhyZWFkczo6YWRkQ3VycmVu
dFRocmVhZCgpCiAgICAgdGhyZWFkU3BlY2lmaWNTZXQobV90aHJlYWRTcGVjaWZpYywgdGhpcyk7
CiAgICAgVGhyZWFkKiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZUZvckN1cnJlbnRUaHJlYWQoKTsK
IAotICAgIE11dGV4TG9ja2VyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011dGV4KTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXgpOwogCiAg
ICAgdGhyZWFkLT5uZXh0ID0gbV9yZWdpc3RlcmVkVGhyZWFkczsKICAgICBtX3JlZ2lzdGVyZWRU
aHJlYWRzID0gdGhyZWFkOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6
OnJlbW92ZVRocmVhZCh2b2lkKiAKIHRlbXBsYXRlPHR5cGVuYW1lIFBsYXRmb3JtVGhyZWFkPgog
dm9pZCBNYWNoaW5lVGhyZWFkczo6cmVtb3ZlVGhyZWFkSWZGb3VuZChQbGF0Zm9ybVRocmVhZCBw
bGF0Zm9ybVRocmVhZCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVh
ZHNNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9yZWdpc3RlcmVkVGhy
ZWFkc011dGV4KTsKICAgICBUaHJlYWQqIHQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOwogICAgIGlm
ICgqdCA9PSBwbGF0Zm9ybVRocmVhZCkgewogICAgICAgICBtX3JlZ2lzdGVyZWRUaHJlYWRzID0g
bV9yZWdpc3RlcmVkVGhyZWFkcy0+bmV4dDsKQEAgLTU2NCw3ICs1NjQsNyBAQCB2b2lkIE1hY2hp
bmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTCiAgICAgdGhyZWFkLT5mcmVlUmVnaXN0ZXJz
KHJlZ2lzdGVycyk7CiB9CiAKLWJvb2wgTWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVh
ZFN0YWNrcyhNdXRleExvY2tlciYsIHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNhcGFjaXR5LCBzaXpl
X3QqIHNpemUpCitib29sIE1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3Mo
RGVwcmVjYXRlZE11dGV4TG9ja2VyJiwgdm9pZCogYnVmZmVyLCBzaXplX3QgY2FwYWNpdHksIHNp
emVfdCogc2l6ZSkKIHsKICAgICAvLyBQcmV2ZW50IHR3byBWTXMgZnJvbSBzdXNwZW5kaW5nIGVh
Y2ggb3RoZXIncyB0aHJlYWRzIGF0IHRoZSBzYW1lIHRpbWUsCiAgICAgLy8gd2hpY2ggY2FuIGNh
dXNlIGRlYWRsb2NrOiA8cmRhcjovL3Byb2JsZW0vMjAzMDA4NDI+LgpAQCAtNjU4LDcgKzY1OCw3
IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OmdhdGhlckNvbnNlcnZhdGl2ZVIKICAgICBzaXplX3Qg
c2l6ZTsKICAgICBzaXplX3QgY2FwYWNpdHkgPSAwOwogICAgIHZvaWQqIGJ1ZmZlciA9IG51bGxw
dHI7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXgpOworICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CiAg
ICAgd2hpbGUgKCF0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MobG9jaywgYnVmZmVyLCBjYXBhY2l0
eSwgJnNpemUpKQogICAgICAgICBncm93QnVmZmVyKHNpemUsICZidWZmZXIsICZjYXBhY2l0eSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01h
cmtlci5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YWNoaW5lU3RhY2tNYXJrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTQgKzUyLDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdhdGhlckZyb21DdXJyZW50VGhyZWFkKENvbnNl
cnZhdGl2ZVJvb3RzJiwgSklUU3R1YlJvdXRpbmVTZXQmLCBDb2RlQmxvY2tTZXQmLCB2b2lkKiBz
dGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIFJlZ2lzdGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVn
aXN0ZXJzKTsKIAogICAgICAgICB2b2lkIHRyeUNvcHlPdGhlclRocmVhZFN0YWNrKFRocmVhZCos
IHZvaWQqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCopOwotICAgICAgICBib29sIHRyeUNvcHlP
dGhlclRocmVhZFN0YWNrcyhNdXRleExvY2tlciYsIHZvaWQqLCBzaXplX3QgY2FwYWNpdHksIHNp
emVfdCopOworICAgICAgICBib29sIHRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhEZXByZWNhdGVk
TXV0ZXhMb2NrZXImLCB2b2lkKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QqKTsKIAogICAgICAg
ICBzdGF0aWMgdm9pZCByZW1vdmVUaHJlYWQodm9pZCopOwogCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFBsYXRmb3JtVGhyZWFkPgogICAgICAgICB2b2lkIHJlbW92ZVRocmVhZElmRm91bmQo
UGxhdGZvcm1UaHJlYWQpOwogCi0gICAgICAgIE11dGV4IG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRl
eDsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4IG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleDsKICAg
ICAgICAgVGhyZWFkKiBtX3JlZ2lzdGVyZWRUaHJlYWRzOwogICAgICAgICBXVEY6OlRocmVhZFNw
ZWNpZmljS2V5IG1fdGhyZWFkU3BlY2lmaWM7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAkocmV2aXNp
b24gMTg3OTMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5IEBAIG5hbWVzcGFjZSBKU0MgewogI2lm
ICFFTkFCTEUoSklUKQogc3RhdGljIHNpemVfdCBjb21taXR0ZWRCeXRlc0NvdW50ID0gMDsKIAot
c3RhdGljIE11dGV4JiBzdGFja1N0YXRpc3RpY3NNdXRleCgpCitzdGF0aWMgRGVwcmVjYXRlZE11
dGV4JiBzdGFja1N0YXRpc3RpY3NNdXRleCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKE11dGV4LCBzdGF0aWNNdXRleCwgKCkpOworICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChEZXByZWNhdGVkTXV0ZXgsIHN0YXRpY011dGV4LCAoKSk7CiAgICAgcmV0
dXJuIHN0YXRpY011dGV4OwogfSAgICAKICNlbmRpZiAvLyAhRU5BQkxFKEpJVCkKQEAgLTE0Niw3
ICsxNDYsNyBAQCB2b2lkIEpTU3RhY2s6OmluaXRpYWxpemVUaHJlYWRpbmcoKQogCiB2b2lkIEpT
U3RhY2s6OmFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcgYnl0ZUNvdW50KQogewotICAgIE11
dGV4TG9ja2VyIGxvY2tlcihzdGFja1N0YXRpc3RpY3NNdXRleCgpKTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKHN0YWNrU3RhdGlzdGljc011dGV4KCkpOwogICAgIEFTU0VSVChz
dGF0aWNfY2FzdDxsb25nPihjb21taXR0ZWRCeXRlc0NvdW50KSArIGJ5dGVDb3VudCA+IC0xKTsK
ICAgICBjb21taXR0ZWRCeXRlc0NvdW50ICs9IGJ5dGVDb3VudDsKIH0KQEAgLTE3Niw3ICsxNzYs
NyBAQCBSZWdpc3RlciogSlNTdGFjazo6aGlnaEFkZHJlc3MoKSBjb25zdAogc2l6ZV90IEpTU3Rh
Y2s6OmNvbW1pdHRlZEJ5dGVDb3VudCgpCiB7CiAjaWYgIUVOQUJMRShKSVQpCi0gICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKHN0YWNrU3RhdGlzdGljc011dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIoc3RhY2tTdGF0aXN0aWNzTXV0ZXgoKSk7CiAgICAgcmV0dXJuIGNvbW1p
dHRlZEJ5dGVzQ291bnQ7CiAjZWxzZQogICAgIC8vIFdoZW4gdXNpbmcgdGhlIEMgc3RhY2ssIHdl
IGRvbid0IGtub3cgaG93IG1hbnkgc3RhY2sgcGFnZXMgYXJlIGFjdHVhbGx5CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDgg
KzY0LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIE1haW4gdGhyZWFkIGNhbiBob2xk
IHRoaXMgbG9jayBmb3IgYSB3aGlsZSwgc28gdXNlIGFuIGFkYXB0aXZlIG11dGV4LgotICAgIHR5
cGVkZWYgTXV0ZXggTG9jazsKLSAgICB0eXBlZGVmIE11dGV4TG9ja2VyIExvY2tlcjsKKyAgICB0
eXBlZGVmIERlcHJlY2F0ZWRNdXRleCBMb2NrOworICAgIHR5cGVkZWYgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIExvY2tlcjsKIAogICAgIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lk
KiBjb250ZXh0KSBvdmVycmlkZTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaAkocmV2aXNpb24gMTg3OTMyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQCBwcml2YXRlOgogICAgIC8vICAgcGVyZm9ybWFuY2Us
IGJ1dCBpZiB3ZSBkaWQgaGF2ZSBjb250ZW50aW9uLCB3ZSB3b3VsZCB3YW50IGEgc2Vuc2libGUs
CiAgICAgLy8gICBwb3dlci1hd2FyZSBiYWNrb2ZmLiBBbiBhZGFwdGl2ZSBtdXRleCB3aWxsIGRv
IHRoaXMgYXMgYSBtYXR0ZXIgb2YgY291cnNlLAogICAgIC8vICAgYnV0IGEgc3BpbmxvY2sgd29u
J3QuCi0gICAgdHlwZWRlZiBNdXRleCBMb2NrOwotICAgIHR5cGVkZWYgTXV0ZXhMb2NrZXIgTG9j
a2VyOworICAgIHR5cGVkZWYgRGVwcmVjYXRlZE11dGV4IExvY2s7CisgICAgdHlwZWRlZiBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgTG9ja2VyOwogICAgIAogCiAgICAgdm9pZCBhZGREYXRhYmFzZVRv
QXRFeGl0KCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dURi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDUgQEAKKzIwMTUtMDgtMDQgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTXV0ZXggdG8gRGVwcmVj
YXRlZE11dGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDc2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9BdG9taWNzLmNwcDoKKyAgICAgICAgKFdURjo6Z2V0U3dhcExvY2spOgorICAgICAg
ICAoV1RGOjphdG9taWNTdGVwKToKKyAgICAgICAgKiB3dGYvTWVzc2FnZVF1ZXVlLmg6CisgICAg
ICAgIChXVEY6Ok1lc3NhZ2VRdWV1ZTo6aW5maW5pdGVUaW1lKToKKyAgICAgICAgKFdURjo6TWVz
c2FnZVF1ZXVlPERhdGFUeXBlPjo6YXBwZW5kKToKKyAgICAgICAgKFdURjo6TWVzc2FnZVF1ZXVl
PERhdGFUeXBlPjo6YXBwZW5kQW5kS2lsbCk6CisgICAgICAgIChXVEY6Ok1lc3NhZ2VRdWV1ZTxE
YXRhVHlwZT46OmFwcGVuZEFuZENoZWNrRW1wdHkpOgorICAgICAgICAoV1RGOjpNZXNzYWdlUXVl
dWU8RGF0YVR5cGU+OjpwcmVwZW5kKToKKyAgICAgICAgKFdURjo6TWVzc2FnZVF1ZXVlPERhdGFU
eXBlPjo6cmVtb3ZlSWYpOgorICAgICAgICAoV1RGOjpNZXNzYWdlUXVldWU8RGF0YVR5cGU+Ojpp
c0VtcHR5KToKKyAgICAgICAgKFdURjo6TWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6a2lsbCk6Cisg
ICAgICAgIChXVEY6Ok1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmtpbGxlZCk6CisgICAgICAgICog
d3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwOgorICAgICAgICAoV1RGOjpQYXJhbGxlbEVudmly
b25tZW50OjpUaHJlYWRQcml2YXRlOjpleGVjdXRlKToKKyAgICAgICAgKFdURjo6UGFyYWxsZWxF
bnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZTo6d2FpdEZvckZpbmlzaCk6CisgICAgICAgIChXVEY6
OlBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OndvcmtlclRocmVhZCk6CisgICAg
ICAgICogd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuaDoKKyAgICAgICAgKiB3dGYvUnVuTG9vcC5j
cHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnBlcmZvcm1Xb3JrKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6ZGlzcGF0Y2gpOgorICAgICAgICAqIHd0Zi9SdW5Mb29wLmg6CisgICAgICAgICog
d3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OnRocmVhZEVudHJ5UG9pbnQpOgorICAg
ICAgICAoV1RGOjpjcmVhdGVUaHJlYWQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAgICAgKFdU
Rjo6dGhyZWFkTWFwTXV0ZXgpOgorICAgICAgICAoV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKToK
KyAgICAgICAgKFdURjo6aWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZSk6CisgICAgICAgIChXVEY6
OmVzdGFibGlzaElkZW50aWZpZXJGb3JQdGhyZWFkSGFuZGxlKToKKyAgICAgICAgKFdURjo6Y2hh
bmdlVGhyZWFkUHJpb3JpdHkpOgorICAgICAgICAoV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlv
bik6CisgICAgICAgIChXVEY6OmRldGFjaFRocmVhZCk6CisgICAgICAgIChXVEY6OnRocmVhZERp
ZEV4aXQpOgorICAgICAgICAoV1RGOjpjdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdURjo6RGVw
cmVjYXRlZE11dGV4OjpEZXByZWNhdGVkTXV0ZXgpOgorICAgICAgICAoV1RGOjpEZXByZWNhdGVk
TXV0ZXg6On5EZXByZWNhdGVkTXV0ZXgpOgorICAgICAgICAoV1RGOjpEZXByZWNhdGVkTXV0ZXg6
OmxvY2spOgorICAgICAgICAoV1RGOjpEZXByZWNhdGVkTXV0ZXg6OnRyeUxvY2spOgorICAgICAg
ICAoV1RGOjpEZXByZWNhdGVkTXV0ZXg6OnVubG9jayk6CisgICAgICAgIChXVEY6OlRocmVhZENv
bmRpdGlvbjo6flRocmVhZENvbmRpdGlvbik6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRpdGlv
bjo6d2FpdCk6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KToKKyAg
ICAgICAgKFdURjo6TXV0ZXg6Ok11dGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6TXV0ZXg6
On5NdXRleCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok11dGV4Ojpsb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6TXV0ZXg6OnRyeUxvY2spOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpN
dXRleDo6dW5sb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nV2luLmNwcDoK
KyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCk6CisgICAgICAg
IChXVEY6OnRocmVhZE1hcE11dGV4KToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGlu
Zyk6CisgICAgICAgIChXVEY6OnN0b3JlVGhyZWFkSGFuZGxlQnlJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdURjo6dGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXVEY6OmNsZWFy
VGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaHJlYWQp
OgorICAgICAgICAoV1RGOjpEZXByZWNhdGVkTXV0ZXg6OkRlcHJlY2F0ZWRNdXRleCk6CisgICAg
ICAgIChXVEY6OkRlcHJlY2F0ZWRNdXRleDo6fkRlcHJlY2F0ZWRNdXRleCk6CisgICAgICAgIChX
VEY6OkRlcHJlY2F0ZWRNdXRleDo6bG9jayk6CisgICAgICAgIChXVEY6OkRlcHJlY2F0ZWRNdXRl
eDo6dHJ5TG9jayk6CisgICAgICAgIChXVEY6OkRlcHJlY2F0ZWRNdXRleDo6dW5sb2NrKToKKyAg
ICAgICAgKFdURjo6VGhyZWFkQ29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKToKKyAgICAgICAg
KFdURjo6VGhyZWFkQ29uZGl0aW9uOjp3YWl0KToKKyAgICAgICAgKFdURjo6VGhyZWFkQ29uZGl0
aW9uOjp0aW1lZFdhaXQpOgorICAgICAgICAoV1RGOjpNdXRleDo6TXV0ZXgpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpNdXRleDo6fk11dGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6TXV0
ZXg6OmxvY2spOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpNdXRleDo6dHJ5TG9jayk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Ok11dGV4Ojp1bmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIHd0
Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYvZHRvYS5jcHA6CisgICAgICAgICogd3RmL2R0
b2EuaDoKKyAgICAgICAgKiB3dGYvZWZsL0Rpc3BhdGNoUXVldWVFZmwuY3BwOgorICAgICAgICAo
RGlzcGF0Y2hRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoRGlzcGF0Y2hRdWV1ZTo6cGVyZm9y
bVdvcmspOgorICAgICAgICAoRGlzcGF0Y2hRdWV1ZTo6cGVyZm9ybVRpbWVyV29yayk6CisgICAg
ICAgIChEaXNwYXRjaFF1ZXVlOjppbnNlcnRUaW1lcldvcmtJdGVtKToKKyAgICAgICAgKERpc3Bh
dGNoUXVldWU6Ondha2VVcFRocmVhZCk6CisgICAgICAgIChEaXNwYXRjaFF1ZXVlOjpnZXROZXh0
VGltZU91dCk6CisgICAgICAgICogd3RmL2VmbC9EaXNwYXRjaFF1ZXVlRWZsLmg6CisgICAgICAg
ICogd3RmL2VmbC9SdW5Mb29wRWZsLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6d2FrZVVw
RXZlbnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOgorICAgICAgICAqIHd0Zi90
aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5jcHA6CisgICAgICAgIChXVEY6OkJpbmFyeVNlbWFwaG9y
ZTo6c2lnbmFsKToKKyAgICAgICAgKFdURjo6QmluYXJ5U2VtYXBob3JlOjp3YWl0KToKKyAgICAg
ICAgKiB3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaDoKKyAgICAgICAgKiB3dGYvd2luL1dv
cmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6aGFuZGxlQ2FsbGJhY2sp
OgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAg
IChXVEY6OldvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnRp
bWVyQ2FsbGJhY2spOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgor
CiAyMDE1LTA4LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgRml4IHF1aXJrcyB3aXRoIENNYWtlIGFuZCBWUzIwMTUKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0F0b21pY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0F0b21p
Y3MuY3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzIsMTYgKzcyLDE2IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogc3Rh
dGljIGNvbnN0IHNpemVfdCBrU3dhcExvY2tDb3VudCA9IDMyOwotc3RhdGljIE11dGV4IHNfc3dh
cExvY2tzW2tTd2FwTG9ja0NvdW50XTsKK3N0YXRpYyBEZXByZWNhdGVkTXV0ZXggc19zd2FwTG9j
a3Nba1N3YXBMb2NrQ291bnRdOwogCi1zdGF0aWMgaW5saW5lIE11dGV4JiBnZXRTd2FwTG9jayhj
b25zdCB2b2xhdGlsZSBpbnQ2NF90KiBhZGRyKQorc3RhdGljIGlubGluZSBEZXByZWNhdGVkTXV0
ZXgmIGdldFN3YXBMb2NrKGNvbnN0IHZvbGF0aWxlIGludDY0X3QqIGFkZHIpCiB7CiAgICAgcmV0
dXJuIHNfc3dhcExvY2tzWyhyZWludGVycHJldF9jYXN0PGludHB0cl90PihhZGRyKSA+PiAzVSkg
JSBrU3dhcExvY2tDb3VudF07CiB9CiAKIHN0YXRpYyBpbnQ2NF90IGF0b21pY1N0ZXAoaW50NjRf
dCB2b2xhdGlsZSogYWRkZW5kLCBpbnQ2NF90IHN0ZXApCiB7Ci0gICAgTXV0ZXgmIG11dGV4ID0g
Z2V0U3dhcExvY2soYWRkZW5kKTsKKyAgICBEZXByZWNhdGVkTXV0ZXgmIG11dGV4ID0gZ2V0U3dh
cExvY2soYWRkZW5kKTsKIAogICAgIG11dGV4LmxvY2soKTsKICAgICBpbnQ2NF90IHZhbHVlID0g
KmFkZGVuZCArIHN0ZXA7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NZXNzYWdlUXVldWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9NZXNzYWdlUXVldWUuaAkocmV2aXNpb24gMTg3OTMy
KQorKysgU291cmNlL1dURi93dGYvTWVzc2FnZVF1ZXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDcgKzc3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0YXRpYyBkb3VibGUgaW5maW5p
dGVUaW1lKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSBNdXRleCBtX211dGV4OworICAgICAgICBt
dXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX211dGV4OwogICAgICAgICBUaHJlYWRDb25kaXRpb24g
bV9jb25kaXRpb247CiAgICAgICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4+IG1f
cXVldWU7CiAgICAgICAgIGJvb2wgbV9raWxsZWQ7CkBAIC05MSw3ICs5MSw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgogICAgIGlubGluZSB2b2lk
IE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+
IG1lc3NhZ2UpCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAg
ICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgbV9xdWV1
ZS5hcHBlbmQoV1RGOjptb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgbV9jb25kaXRpb24uc2lnbmFs
KCk7CiAgICAgfQpAQCAtOTksNyArOTksNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEYXRhVHlwZT4KICAgICBpbmxpbmUgdm9pZCBNZXNzYWdlUXVldWU8RGF0YVR5
cGU+OjphcHBlbmRBbmRLaWxsKHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4gbWVzc2FnZSkKICAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBtX3F1ZXVlLmFwcGVuZChXVEY6
Om1vdmUobWVzc2FnZSkpOwogICAgICAgICBtX2tpbGxlZCA9IHRydWU7CiAgICAgICAgIG1fY29u
ZGl0aW9uLmJyb2FkY2FzdCgpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgogICAgIGlubGluZSBib29sIE1lc3NhZ2VR
dWV1ZTxEYXRhVHlwZT46OmFwcGVuZEFuZENoZWNrRW1wdHkoc3RkOjp1bmlxdWVfcHRyPERhdGFU
eXBlPiBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsK
KyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIGJv
b2wgd2FzRW1wdHkgPSBtX3F1ZXVlLmlzRW1wdHkoKTsKICAgICAgICAgbV9xdWV1ZS5hcHBlbmQo
V1RGOjptb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgbV9jb25kaXRpb24uc2lnbmFsKCk7CkBAIC0x
MTksNyArMTE5LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGF0
YVR5cGU+CiAgICAgaW5saW5lIHZvaWQgTWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6cHJlcGVuZChz
dGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+IG1lc3NhZ2UpCiAgICAgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayht
X211dGV4KTsKICAgICAgICAgbV9xdWV1ZS5wcmVwZW5kKFdURjo6bW92ZShtZXNzYWdlKSk7CiAg
ICAgICAgIG1fY29uZGl0aW9uLnNpZ25hbCgpOwogICAgIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+CiAgICAgaW5s
aW5lIGF1dG8gTWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6d2FpdEZvck1lc3NhZ2VGaWx0ZXJlZFdp
dGhUaW1lb3V0KE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQmIHJlc3VsdCwgUHJlZGljYXRlJiYgcHJl
ZGljYXRlLCBkb3VibGUgYWJzb2x1dGVUaW1lKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+
CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgYm9vbCB0aW1lZE91dCA9
IGZhbHNlOwogCiAgICAgICAgIGF1dG8gZm91bmQgPSBtX3F1ZXVlLmVuZCgpOwpAQCAtMTc0LDcg
KzE3NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBl
PgogICAgIGlubGluZSBhdXRvIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2Uo
KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+CiAgICAgewotICAgICAgICBNdXRleExvY2tl
ciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211
dGV4KTsKICAgICAgICAgaWYgKG1fa2lsbGVkKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIGlmIChtX3F1ZXVlLmlzRW1wdHkoKSkKQEAgLTE4Niw3ICsxODYsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KICAgICBpbmxpbmUg
YXV0byBNZXNzYWdlUXVldWU8RGF0YVR5cGU+Ojp0cnlHZXRNZXNzYWdlSWdub3JpbmdLaWxsZWQo
KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+CiAgICAgewotICAgICAgICBNdXRleExvY2tl
ciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211
dGV4KTsKICAgICAgICAgaWYgKG1fcXVldWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+CiAgICAgaW5saW5lIHZvaWQgTWVzc2FnZVF1ZXVlPERh
dGFUeXBlPjo6cmVtb3ZlSWYoUHJlZGljYXRlJiYgcHJlZGljYXRlKQogICAgIHsKLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2sobV9tdXRleCk7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBhdXRv
IGZvdW5kID0gbV9xdWV1ZS5maW5kSWYoWyZwcmVkaWNhdGVdKGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxEYXRhVHlwZT4mIHB0cikgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHB0cik7
CkBAIC0yMTQsNyArMjE0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRGF0YVR5cGU+CiAgICAgaW5saW5lIGJvb2wgTWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6aXNF
bXB0eSgpCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgaWYgKG1fa2ls
bGVkKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBtX3F1ZXVlLmlz
RW1wdHkoKTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEYXRhVHlwZT4KICAgICBpbmxpbmUgdm9pZCBNZXNzYWdlUXVldWU8RGF0YVR5
cGU+OjpraWxsKCkKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Cisg
ICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBtX2tp
bGxlZCA9IHRydWU7CiAgICAgICAgIG1fY29uZGl0aW9uLmJyb2FkY2FzdCgpOwogICAgIH0KQEAg
LTIzMSw3ICsyMzEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBE
YXRhVHlwZT4KICAgICBpbmxpbmUgYm9vbCBNZXNzYWdlUXVldWU8RGF0YVR5cGU+OjpraWxsZWQo
KSBjb25zdAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIHJldHVybiBt
X2tpbGxlZDsKICAgICB9CiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bh
cmFsbGVsSm9ic0dlbmVyaWMuY3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV1RGL3d0
Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3
IEBAIGJvb2wgUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZToKIAogdm9pZCBQYXJh
bGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjpleGVjdXRlKFRocmVhZEZ1bmN0aW9uIHRo
cmVhZEZ1bmN0aW9uLCB2b2lkKiBwYXJhbWV0ZXJzKQogewotICAgIE11dGV4TG9ja2VyIGxvY2so
bV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAKICAg
ICBtX3RocmVhZEZ1bmN0aW9uID0gdGhyZWFkRnVuY3Rpb247CiAgICAgbV9wYXJhbWV0ZXJzID0g
cGFyYW1ldGVyczsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFBhcmFsbGVsRW52aXJvbm1lbnQ6
OlRocmVhZFByaXZhdGU6CiAKIHZvaWQgUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0
ZTo6d2FpdEZvckZpbmlzaCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKIAogICAgIHdoaWxlIChtX3J1
bm5pbmcpCiAgICAgICAgIG1fdGhyZWFkQ29uZGl0aW9uLndhaXQobV9tdXRleCk7CkBAIC0xMjQs
NyArMTI0LDcgQEAgdm9pZCBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOgogdm9p
ZCBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQodm9pZCog
dGhyZWFkRGF0YSkKIHsKICAgICBUaHJlYWRQcml2YXRlKiBzaGFyZWRUaHJlYWQgPSByZWludGVy
cHJldF9jYXN0PFRocmVhZFByaXZhdGUqPih0aHJlYWREYXRhKTsKLSAgICBNdXRleExvY2tlciBs
b2NrKHNoYXJlZFRocmVhZC0+bV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2soc2hhcmVkVGhyZWFkLT5tX211dGV4KTsKIAogICAgIHdoaWxlIChzaGFyZWRUaHJlYWQtPm1f
dGhyZWFkSUQpIHsKICAgICAgICAgaWYgKHNoYXJlZFRocmVhZC0+bV9ydW5uaW5nKSB7CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBT
b3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICBib29sIG1fcnVubmluZzsKICAgICAgICAgUGFy
YWxsZWxFbnZpcm9ubWVudCogbV9wYXJlbnQ7CiAKLSAgICAgICAgbXV0YWJsZSBNdXRleCBtX211
dGV4OworICAgICAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX211dGV4OwogICAgICAgICBU
aHJlYWRDb25kaXRpb24gbV90aHJlYWRDb25kaXRpb247CiAKICAgICAgICAgVGhyZWFkRnVuY3Rp
b24gbV90aHJlYWRGdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCShyZXZpc2lvbiAxODc5MzIp
CisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyAr
OTIsNyBAQCB2b2lkIFJ1bkxvb3A6OnBlcmZvcm1Xb3JrKCkKICAgICB7CiAgICAgICAgIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbjsKICAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOworICAgICAgICAgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0aW9uUXVldWVMb2NrKTsKICAgICAgICAgICAgIGZ1
bmN0aW9uc1RvSGFuZGxlID0gbV9mdW5jdGlvblF1ZXVlLnNpemUoKTsKIAogICAgICAgICAgICAg
aWYgKG1fZnVuY3Rpb25RdWV1ZS5pc0VtcHR5KCkpCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBS
dW5Mb29wOjpwZXJmb3JtV29yaygpCiAgICAgZm9yIChzaXplX3QgZnVuY3Rpb25zSGFuZGxlZCA9
IDE7IGZ1bmN0aW9uc0hhbmRsZWQgPCBmdW5jdGlvbnNUb0hhbmRsZTsgKytmdW5jdGlvbnNIYW5k
bGVkKSB7CiAgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbjsKICAgICAgICAg
ewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnVuY3Rpb25RdWV1ZUxvY2spOwor
ICAgICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0aW9uUXVldWVM
b2NrKTsKIAogICAgICAgICAgICAgLy8gRXZlbiBpZiB3ZSBzdGFydCBvZmYgd2l0aCBOIGZ1bmN0
aW9ucyB0byBoYW5kbGUgYW5kIHdlJ3ZlIG9ubHkgaGFuZGxlZCBsZXNzIHRoYW4gTiBmdW5jdGlv
bnMsIHRoZSBxdWV1ZQogICAgICAgICAgICAgLy8gc3RpbGwgbWlnaHQgYmUgZW1wdHkgYmVjYXVz
ZSB0aG9zZSBmdW5jdGlvbnMgbWlnaHQgaGF2ZSBiZWVuIGhhbmRsZWQgaW4gYW4gaW5uZXIgUnVu
TG9vcDo6cGVyZm9ybVdvcmsoKS4KQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFJ1bkxvb3A6OnBl
cmZvcm1Xb3JrKCkKIHZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBmdW5jdGlvbikKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0
aW9uUXVldWVMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1
bmN0aW9uUXVldWVMb2NrKTsKICAgICAgICAgbV9mdW5jdGlvblF1ZXVlLmFwcGVuZChXVEY6Om1v
dmUoZnVuY3Rpb24pKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgJKHJldmlzaW9uIDE4NzkzMikK
KysrIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEz
MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBlcmZvcm1Xb3JrKCk7CiAKLSAgICBNdXRleCBt
X2Z1bmN0aW9uUXVldWVMb2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX2Z1bmN0aW9uUXVldWVM
b2NrOwogICAgIERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsK
IAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE0NywxMCArMTQ3LDEwIEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5Mb29wU291cmNlOwogICAgIGludCBt
X25lc3RpbmdMZXZlbDsKICNlbGlmIFBMQVRGT1JNKEVGTCkKLSAgICBNdXRleCBtX3BpcGVMb2Nr
OworICAgIERlcHJlY2F0ZWRNdXRleCBtX3BpcGVMb2NrOwogICAgIEVmbFVuaXF1ZVB0cjxFY29y
ZV9QaXBlPiBtX3BpcGU7CiAKLSAgICBNdXRleCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkTG9jazsK
KyAgICBEZXByZWNhdGVkTXV0ZXggbV93YWtlVXBFdmVudFJlcXVlc3RlZExvY2s7CiAgICAgYm9v
bCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkOwogCiAgICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQo
dm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAkocmV2
aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsNyBAQCBzdHJ1Y3QgTmV3VGhyZWFkQ29udGV4dCB7CiBwdWJsaWM6
CiAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZW50cnlQ
b2ludDsKLSAgICBNdXRleCBjcmVhdGlvbk11dGV4OworICAgIERlcHJlY2F0ZWRNdXRleCBjcmVh
dGlvbk11dGV4OwogfTsKIAogc3RhdGljIHZvaWQgdGhyZWFkRW50cnlQb2ludCh2b2lkKiBjb250
ZXh0RGF0YSkKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIHZvaWQgdGhyZWFkRW50cnlQb2ludCh2
b2lkKiBjb250ZQogICAgIC8vIEJsb2NrIHVudGlsIG91ciBjcmVhdGluZyB0aHJlYWQgaGFzIGNv
bXBsZXRlZCBhbnkgZXh0cmEgc2V0dXAgd29yaywgaW5jbHVkaW5nCiAgICAgLy8gZXN0YWJsaXNo
aW5nIFRocmVhZElkZW50aWZpZXIuCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
Y29udGV4dC0+Y3JlYXRpb25NdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIoY29udGV4dC0+Y3JlYXRpb25NdXRleCk7CiAgICAgfQogCiAgICAgaW5pdGlhbGl6ZUN1
cnJlbnRUaHJlYWRJbnRlcm5hbChjb250ZXh0LT5uYW1lKTsKQEAgLTcwLDcgKzcwLDcgQEAgVGhy
ZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoY29uc3QgY2hhcgogICAgIE5ld1RocmVhZENvbnRl
eHQqIGNvbnRleHQgPSBuZXcgTmV3VGhyZWFkQ29udGV4dCB7IG5hbWUsIFdURjo6bW92ZShlbnRy
eVBvaW50KSwgeyB9IH07CiAKICAgICAvLyBQcmV2ZW50IHRoZSB0aHJlYWQgYm9keSBmcm9tIGV4
ZWN1dGluZyB1bnRpbCB3ZSd2ZSBlc3RhYmxpc2hlZCB0aGUgdGhyZWFkIGlkZW50aWZpZXIuCi0g
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGNvbnRleHQtPmNyZWF0aW9uTXV0ZXgpOworICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBsb2NrZXIoY29udGV4dC0+Y3JlYXRpb25NdXRleCk7CiAKICAgICBy
ZXR1cm4gY3JlYXRlVGhyZWFkSW50ZXJuYWwodGhyZWFkRW50cnlQb2ludCwgY29udGV4dCwgbmFt
ZSk7CiB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCShyZXZpc2lvbiAx
ODc5MzIpCisrKyBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDExICs3MCwxMSBAQCB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtTXV0ZXg7CiB0
eXBlZGVmIHZvaWQqIFBsYXRmb3JtQ29uZGl0aW9uOwogI2VuZGlmCiAgICAgCi1jbGFzcyBNdXRl
eCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTXV0ZXgpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK2NsYXNzIERlcHJlY2F0ZWRNdXRleCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RGVwcmVjYXRlZE11dGV4KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIE11dGV4KCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NdXRl
eCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZXByZWNhdGVkTXV0ZXgoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgfkRlcHJlY2F0ZWRNdXRleCgpOwogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgbG9jaygpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHRyeUxvY2soKTsK
QEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybU11dGV4IG1fbXV0ZXg7CiB9
OwogCi10eXBlZGVmIExvY2tlcjxNdXRleD4gTXV0ZXhMb2NrZXI7Cit0eXBlZGVmIExvY2tlcjxE
ZXByZWNhdGVkTXV0ZXg+IERlcHJlY2F0ZWRNdXRleExvY2tlcjsKIAogY2xhc3MgVGhyZWFkQ29u
ZGl0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRDb25kaXRpb24pOwpAQCAt
OTQsMTAgKzk0LDEwIEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkQ29u
ZGl0aW9uKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5UaHJlYWRDb25kaXRpb24oKTsKICAg
ICAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0KE11dGV4JiBtdXRleCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdChEZXByZWNhdGVkTXV0ZXgmIG11dGV4KTsKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbmRpdGlvbiB3YXMgc2lnbmFsZWQgYmVmb3JlIGFi
c29sdXRlVGltZSwgZmFsc2UgaWYgdGhlIGFic29sdXRlVGltZSB3YXMgcmVhY2hlZCBvciBpcyBp
biB0aGUgcGFzdC4KICAgICAvLyBUaGUgYWJzb2x1dGVUaW1lIGlzIGluIHNlY29uZHMsIHN0YXJ0
aW5nIG9uIEphbnVhcnkgMSwgMTk3MC4gVGhlIHRpbWUgaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNh
bWUgdGltZSB6b25lIGFzIFdURjo6Y3VycmVudFRpbWUoKS4KLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3VibGUgYWJzb2x1dGVUaW1lKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCB0aW1lZFdhaXQoRGVwcmVjYXRlZE11dGV4JiwgZG91YmxlIGFi
c29sdXRlVGltZSk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYnJvYWRjYXN0KCk7CiAgICAgCkBAIC0xMTMsOCArMTEz
LDggQEAgV1RGX0VYUE9SVF9QUklWQVRFIERXT1JEIGFic29sdXRlVGltZVRvVwogCiB9IC8vIG5h
bWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpNdXRleDsKLXVzaW5nIFdURjo6TXV0ZXhMb2NrZXI7
Cit1c2luZyBXVEY6OkRlcHJlY2F0ZWRNdXRleDsKK3VzaW5nIFdURjo6RGVwcmVjYXRlZE11dGV4
TG9ja2VyOwogdXNpbmcgV1RGOjpUaHJlYWRDb25kaXRpb247CiAKICNpZiBPUyhXSU5ET1dTKQpJ
bmRleDogU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAkocmV2aXNpb24gMTg3OTMyKQor
KysgU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsOSArMTAyLDkgQEAgdm9pZCB1bnNhZmVUaHJlYWRXYXNEZXRhY2hlZChUaHJlYWRJZGVu
dAogdm9pZCB0aHJlYWREaWRFeGl0KFRocmVhZElkZW50aWZpZXIpOwogdm9pZCB0aHJlYWRXYXNK
b2luZWQoVGhyZWFkSWRlbnRpZmllcik7CiAKLXN0YXRpYyBNdXRleCYgdGhyZWFkTWFwTXV0ZXgo
KQorc3RhdGljIERlcHJlY2F0ZWRNdXRleCYgdGhyZWFkTWFwTXV0ZXgoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0ZXgsICgpKTsKKyAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGVwcmVjYXRlZE11dGV4LCBtdXRleCwgKCkpOwogICAg
IHJldHVybiBtdXRleDsKIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRo
cmVhZGluZygpCiAgICAgVGhyZWFkSWRlbnRpZmllckRhdGE6OmluaXRpYWxpemVPbmNlKCk7CiAg
ICAgU3RhY2tTdGF0czo6aW5pdGlhbGl6ZSgpOwogICAgIHd0ZlRocmVhZERhdGEoKTsKLSAgICBz
X2R0b2FQNU11dGV4ID0gbmV3IE11dGV4OworICAgIHNfZHRvYVA1TXV0ZXggPSBuZXcgRGVwcmVj
YXRlZE11dGV4OwogICAgIGluaXRpYWxpemVEYXRlcygpOwogfQogCkBAIC0xMzgsNyArMTM4LDcg
QEAgc3RhdGljIFRocmVhZE1hcCYgdGhyZWFkTWFwKCkKIAogc3RhdGljIFRocmVhZElkZW50aWZp
ZXIgaWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZShjb25zdCBwdGhyZWFkX3QmIHB0aHJlYWRIYW5k
bGUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7CiAKICAgICBUaHJl
YWRNYXA6Oml0ZXJhdG9yIGkgPSB0aHJlYWRNYXAoKS5iZWdpbigpOwogICAgIGZvciAoOyBpICE9
IHRocmVhZE1hcCgpLmVuZCgpOyArK2kpIHsKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgVGhy
ZWFkSWRlbnRpZmllciBpZGVudGlmaWVyQnlQdGhyCiBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBl
c3RhYmxpc2hJZGVudGlmaWVyRm9yUHRocmVhZEhhbmRsZShjb25zdCBwdGhyZWFkX3QmIHB0aHJl
YWRIYW5kbGUpCiB7CiAgICAgQVNTRVJUKCFpZGVudGlmaWVyQnlQdGhyZWFkSGFuZGxlKHB0aHJl
YWRIYW5kbGUpKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Cisg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKICAgICBz
dGF0aWMgVGhyZWFkSWRlbnRpZmllciBpZGVudGlmaWVyQ291bnQgPSAxOwogICAgIHRocmVhZE1h
cCgpLmFkZChpZGVudGlmaWVyQ291bnQsIHN0ZDo6bWFrZV91bmlxdWU8UHRocmVhZFN0YXRlPihw
dGhyZWFkSGFuZGxlKSk7CiAgICAgcmV0dXJuIGlkZW50aWZpZXJDb3VudCsrOwpAQCAtMjE5LDcg
KzIxOSw3IEBAIHZvaWQgY2hhbmdlVGhyZWFkUHJpb3JpdHkoVGhyZWFkSWRlbnRpZmkKICAgICBB
U1NFUlQodGhyZWFkSUQpOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIodGhy
ZWFkTWFwTXV0ZXgoKSk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIodGhy
ZWFkTWFwTXV0ZXgoKSk7CiAgICAgICAgIHB0aHJlYWRIYW5kbGUgPSBwdGhyZWFkSGFuZGxlRm9y
SWRlbnRpZmllcldpdGhMb2NrQWxyZWFkeUhlbGQodGhyZWFkSUQpOwogICAgICAgICBBU1NFUlQo
cHRocmVhZEhhbmRsZSk7CiAgICAgfQpAQCAtMjQyLDcgKzI0Miw3IEBAIGludCB3YWl0Rm9yVGhy
ZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGkKIAogICAgIHsKICAgICAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBsb2NrIGFjcm9zcyB0aGUgY2FsbCB0byBqb2luLCBzaW5jZSB0aGF0IGNhbiBibG9j
ayBvdXIgdGhyZWFkIGFuZCBjYXVzZSBkZWFkbG9jay4KLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKHRocmVhZE1hcE11dGV4KCkpOwogICAgICAgICBwdGhyZWFkSGFuZGxlID0gcHRocmVhZEhh
bmRsZUZvcklkZW50aWZpZXJXaXRoTG9ja0FscmVhZHlIZWxkKHRocmVhZElEKTsKICAgICAgICAg
QVNTRVJUKHB0aHJlYWRIYW5kbGUpOwogICAgIH0KQEAgLTI1NCw3ICsyNTQsNyBAQCBpbnQgd2Fp
dEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpCiAgICAgZWxzZSBpZiAoam9pblJlc3Vs
dCkKICAgICAgICAgTE9HX0VSUk9SKCJUaHJlYWRJZGVudGlmaWVyICV1IHdhcyB1bmFibGUgdG8g
YmUgam9pbmVkLlxuIiwgdGhyZWFkSUQpOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVh
ZE1hcE11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFw
TXV0ZXgoKSk7CiAgICAgUHRocmVhZFN0YXRlKiBzdGF0ZSA9IHRocmVhZE1hcCgpLmdldCh0aHJl
YWRJRCk7CiAgICAgQVNTRVJUKHN0YXRlKTsKICAgICBBU1NFUlQoc3RhdGUtPmpvaW5hYmxlU3Rh
dGUoKSA9PSBQdGhyZWFkU3RhdGU6OkpvaW5hYmxlKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lk
IGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyIHRocmVhCiB7CiAgICAgQVNTRVJUKHRocmVh
ZElEKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwogICAgIHB0aHJl
YWRfdCBwdGhyZWFkSGFuZGxlID0gcHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXJXaXRoTG9ja0Fs
cmVhZHlIZWxkKHRocmVhZElEKTsKICAgICBBU1NFUlQocHRocmVhZEhhbmRsZSk7CiAKQEAgLTI5
MSw3ICsyOTEsNyBAQCB2b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyIHRocmVhCiAK
IHZvaWQgdGhyZWFkRGlkRXhpdChUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEKQogewotICAgIE11
dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwogICAgIFB0aHJlYWRTdGF0ZSogc3RhdGUg
PSB0aHJlYWRNYXAoKS5nZXQodGhyZWFkSUQpOwogICAgIEFTU0VSVChzdGF0ZSk7CiAgICAgCkBA
IC0zMTMsNyArMzEzLDcgQEAgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCkKICAgICBy
ZXR1cm4gaWQ7CiB9CiAKLU11dGV4OjpNdXRleCgpCitEZXByZWNhdGVkTXV0ZXg6OkRlcHJlY2F0
ZWRNdXRleCgpCiB7CiAgICAgcHRocmVhZF9tdXRleGF0dHJfdCBhdHRyOwogICAgIHB0aHJlYWRf
bXV0ZXhhdHRyX2luaXQoJmF0dHIpOwpAQCAtMzI1LDE5ICszMjUsMTkgQEAgTXV0ZXg6Ok11dGV4
KCkKICAgICBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95KCZhdHRyKTsKIH0KIAotTXV0ZXg6On5N
dXRleCgpCitEZXByZWNhdGVkTXV0ZXg6On5EZXByZWNhdGVkTXV0ZXgoKQogewogICAgIGludCBy
ZXN1bHQgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm1fbXV0ZXgpOwogICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCAhcmVzdWx0KTsKIH0KIAotdm9pZCBNdXRleDo6bG9jaygpCit2b2lkIERlcHJl
Y2F0ZWRNdXRleDo6bG9jaygpCiB7CiAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfbG9j
aygmbV9tdXRleCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwogfQogCi1i
b29sIE11dGV4Ojp0cnlMb2NrKCkKK2Jvb2wgRGVwcmVjYXRlZE11dGV4Ojp0cnlMb2NrKCkKIHsK
ICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF90cnlsb2NrKCZtX211dGV4KTsKIApAQCAt
MzUwLDcgKzM1MCw3IEBAIGJvb2wgTXV0ZXg6OnRyeUxvY2soKQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBNdXRleDo6dW5sb2NrKCkKK3ZvaWQgRGVwcmVjYXRlZE11dGV4Ojp1bmxvY2so
KQogewogICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmbV9tdXRleCk7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwpAQCAtMzY2LDEzICszNjYsMTMgQEAg
VGhyZWFkQ29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKCkKICAgICBwdGhyZWFkX2NvbmRfZGVz
dHJveSgmbV9jb25kaXRpb24pOwogfQogICAgIAotdm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQo
TXV0ZXgmIG11dGV4KQordm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQoRGVwcmVjYXRlZE11dGV4
JiBtdXRleCkKIHsKICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9jb25kX3dhaXQoJm1fY29uZGl0
aW9uLCAmbXV0ZXguaW1wbCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCk7
CiB9CiAKLWJvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoTXV0ZXgmIG11dGV4LCBkb3Vi
bGUgYWJzb2x1dGVUaW1lKQorYm9vbCBUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdChEZXByZWNh
dGVkTXV0ZXgmIG11dGV4LCBkb3VibGUgYWJzb2x1dGVUaW1lKQogewogICAgIGlmIChhYnNvbHV0
ZVRpbWUgPCBjdXJyZW50VGltZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZ1dpbi5jcHAJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZ1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw5ICsxNDMsOSBAQCB2b2lkIGlu
aXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29uCiAjZW5kaWYKIH0KIAotc3RhdGljIE11
dGV4JiB0aHJlYWRNYXBNdXRleCgpCitzdGF0aWMgRGVwcmVjYXRlZE11dGV4JiB0aHJlYWRNYXBN
dXRleCgpCiB7Ci0gICAgc3RhdGljIE11dGV4IG11dGV4OworICAgIHN0YXRpYyBEZXByZWNhdGVk
TXV0ZXggbXV0ZXg7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCkBAIC0xNjUsNyArMTY1LDcgQEAg
dm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKICAgICB0aHJlYWRNYXBNdXRleCgpOwogICAgIGlu
aXRpYWxpemVSYW5kb21OdW1iZXJHZW5lcmF0b3IoKTsKICAgICB3dGZUaHJlYWREYXRhKCk7Ci0g
ICAgc19kdG9hUDVNdXRleCA9IG5ldyBNdXRleDsKKyAgICBzX2R0b2FQNU11dGV4ID0gbmV3IERl
cHJlY2F0ZWRNdXRleDsKICAgICBpbml0aWFsaXplRGF0ZXMoKTsKIH0KIApAQCAtMTc3LDIwICsx
NzcsMjAgQEAgc3RhdGljIEhhc2hNYXA8RFdPUkQsIEhBTkRMRT4mIHRocmVhZE1hcAogCiBzdGF0
aWMgdm9pZCBzdG9yZVRocmVhZEhhbmRsZUJ5SWRlbnRpZmllcihEV09SRCB0aHJlYWRJRCwgSEFO
RExFIHRocmVhZEhhbmRsZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0
ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgp
KTsKICAgICBBU1NFUlQoIXRocmVhZE1hcCgpLmNvbnRhaW5zKHRocmVhZElEKSk7CiAgICAgdGhy
ZWFkTWFwKCkuYWRkKHRocmVhZElELCB0aHJlYWRIYW5kbGUpOwogfQogCiBzdGF0aWMgSEFORExF
IHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIoVGhyZWFkSWRlbnRpZmllciBpZCkKIHsKLSAgICBN
dXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKICAgICByZXR1cm4gdGhyZWFkTWFwKCku
Z2V0KGlkKTsKIH0KIAogc3RhdGljIHZvaWQgY2xlYXJUaHJlYWRIYW5kbGVGb3JJZGVudGlmaWVy
KFRocmVhZElkZW50aWZpZXIgaWQpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1h
cE11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0
ZXgoKSk7CiAgICAgQVNTRVJUKHRocmVhZE1hcCgpLmNvbnRhaW5zKGlkKSk7CiAgICAgdGhyZWFk
TWFwKCkucmVtb3ZlKGlkKTsKIH0KQEAgLTI3NywyNSArMjc3LDI1IEBAIFRocmVhZElkZW50aWZp
ZXIgY3VycmVudFRocmVhZCgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRocmVhZElkZW50aWZp
ZXI+KEdldEN1cnJlbnRUaHJlYWRJZCgpKTsKIH0KIAotTXV0ZXg6Ok11dGV4KCkKK0RlcHJlY2F0
ZWRNdXRleDo6RGVwcmVjYXRlZE11dGV4KCkKIHsKICAgICBtX211dGV4Lm1fcmVjdXJzaW9uQ291
bnQgPSAwOwogICAgIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oJm1fbXV0ZXgubV9pbnRlcm5h
bE11dGV4KTsKIH0KIAotTXV0ZXg6On5NdXRleCgpCitEZXByZWNhdGVkTXV0ZXg6On5EZXByZWNh
dGVkTXV0ZXgoKQogewogICAgIERlbGV0ZUNyaXRpY2FsU2VjdGlvbigmbV9tdXRleC5tX2ludGVy
bmFsTXV0ZXgpOwogfQogCi12b2lkIE11dGV4Ojpsb2NrKCkKK3ZvaWQgRGVwcmVjYXRlZE11dGV4
Ojpsb2NrKCkKIHsKICAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmbV9tdXRleC5tX2ludGVybmFs
TXV0ZXgpOwogICAgICsrbV9tdXRleC5tX3JlY3Vyc2lvbkNvdW50OwogfQogICAgIAogI3ByYWdt
YSB3YXJuaW5nKHN1cHByZXNzOiAyNjExNSkKLWJvb2wgTXV0ZXg6OnRyeUxvY2soKQorYm9vbCBE
ZXByZWNhdGVkTXV0ZXg6OnRyeUxvY2soKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGlzIG1vZGVs
ZWQgYWZ0ZXIgdGhlIGJlaGF2aW9yIG9mIHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaywKICAgICAvLyB3
aGljaCB3aWxsIHJldHVybiBhbiBlcnJvciBpZiB0aGUgbG9jayBpcyBhbHJlYWR5IG93bmVkIGJ5
IHRoZQpAQCAtMzIxLDcgKzMyMSw3IEBAIGJvb2wgTXV0ZXg6OnRyeUxvY2soKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBNdXRleDo6dW5sb2NrKCkKK3ZvaWQgRGVwcmVjYXRlZE11dGV4
Ojp1bmxvY2soKQogewogICAgIEFTU0VSVChtX211dGV4Lm1fcmVjdXJzaW9uQ291bnQpOwogICAg
IC0tbV9tdXRleC5tX3JlY3Vyc2lvbkNvdW50OwpAQCAtNDU4LDEyICs0NTgsMTIgQEAgVGhyZWFk
Q29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKCkKICAgICBDbG9zZUhhbmRsZShtX2NvbmRpdGlv
bi5tX3VuYmxvY2tMb2NrKTsKIH0KIAotdm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQoTXV0ZXgm
IG11dGV4KQordm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQoRGVwcmVjYXRlZE11dGV4JiBtdXRl
eCkKIHsKICAgICBtX2NvbmRpdGlvbi50aW1lZFdhaXQobXV0ZXguaW1wbCgpLCBJTkZJTklURSk7
CiB9CiAKLWJvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoTXV0ZXgmIG11dGV4LCBkb3Vi
bGUgYWJzb2x1dGVUaW1lKQorYm9vbCBUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdChEZXByZWNh
dGVkTXV0ZXgmIG11dGV4LCBkb3VibGUgYWJzb2x1dGVUaW1lKQogewogICAgIERXT1JEIGludGVy
dmFsID0gYWJzb2x1dGVUaW1lVG9XYWl0VGltZW91dEludGVydmFsKGFic29sdXRlVGltZSk7CiAK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV1RGL3d0Zi9X
b3JrUXVldWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDEwICsxMTMsMTAgQEAgcHJpdmF0ZToK
ICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgdm9sYXRpbGUgTE9ORyBtX2lzV29ya1RocmVhZFJlZ2lz
dGVyZWQ7CiAKLSAgICBNdXRleCBtX3dvcmtJdGVtUXVldWVMb2NrOworICAgIERlcHJlY2F0ZWRN
dXRleCBtX3dvcmtJdGVtUXVldWVMb2NrOwogICAgIFZlY3RvcjxSZWZQdHI8V29ya0l0ZW1XaW4+
PiBtX3dvcmtJdGVtUXVldWU7CiAKLSAgICBNdXRleCBtX2hhbmRsZXNMb2NrOworICAgIERlcHJl
Y2F0ZWRNdXRleCBtX2hhbmRsZXNMb2NrOwogICAgIEhhc2hNYXA8SEFORExFLCBSZWZQdHI8SGFu
ZGxlV29ya0l0ZW0+PiBtX2hhbmRsZXM7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOwpJbmRl
eDogU291cmNlL1dURi93dGYvZHRvYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
ZHRvYS5jcHAJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XVEYvd3RmL2R0b2EuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1NdXRl
eCogc19kdG9hUDVNdXRleDsKK0RlcHJlY2F0ZWRNdXRleCogc19kdG9hUDVNdXRleDsKIAogdHlw
ZWRlZiB1bmlvbiB7CiAgICAgZG91YmxlIGQ7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9kdG9hLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvZHRvYS5oCShyZXZpc2lvbiAxODc5MzIpCisr
KyBTb3VyY2UvV1RGL3d0Zi9kdG9hLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDkgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKLWNsYXNzIE11dGV4OworY2xhc3MgRGVwcmVjYXRlZE11dGV4
OwogCi1leHRlcm4gTXV0ZXgqIHNfZHRvYVA1TXV0ZXg7CitleHRlcm4gRGVwcmVjYXRlZE11dGV4
KiBzX2R0b2FQNU11dGV4OwogCiB0eXBlZGVmIGNoYXIgRHRvYUJ1ZmZlcls4MF07CiAKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlRWZsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZUVmbC5jcHAJKHJldmlzaW9uIDE4NzkzMikK
KysrIFNvdXJjZS9XVEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlRWZsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTUsNyArOTUsNyBAQCBEaXNwYXRjaFF1ZXVlOjp+RGlzcGF0Y2hRdWV1ZSgpCiB2b2lk
IERpc3BhdGNoUXVldWU6OmRpc3BhdGNoKHN0ZDo6dW5pcXVlX3B0cjxXb3JrSXRlbT4gaXRlbSkK
IHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtc0xvY2spOwor
ICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1zTG9jayk7CiAg
ICAgICAgIG1fd29ya0l0ZW1zLmFwcGVuZChXVEY6Om1vdmUoaXRlbSkpOwogICAgIH0KIApAQCAt
MTQ2LDcgKzE0Niw3IEBAIHZvaWQgRGlzcGF0Y2hRdWV1ZTo6cGVyZm9ybVdvcmsoKQogICAgICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdvcmtJdGVtPj4gd29ya0l0ZW1zOwogCiAgICAgICAg
IHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtc0xvY2spOworICAg
ICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtc0xvY2spOwog
ICAgICAgICAgICAgaWYgKG1fd29ya0l0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIERpc3BhdGNoUXVldWU6OnBlcmZvcm1U
aW1lcldvcmsoKQogCiAgICAgewogICAgICAgICAvLyBQcm90ZWN0cyBtX3RpbWVyV29ya0l0ZW1z
LgotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV90aW1lcldvcmtJdGVtc0xvY2spOworICAg
ICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGltZXJXb3JrSXRlbXNMb2NrKTsK
ICAgICAgICAgaWYgKG1fdGltZXJXb3JrSXRlbXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBEaXNwYXRjaFF1ZXVlOjppbnNlcnRUaW1l
cldvcmtJdGVtKAogCiAgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKIAotICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3RpbWVyV29ya0l0ZW1zTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tlcihtX3RpbWVyV29ya0l0ZW1zTG9jayk7CiAgICAgLy8gVGhlIGl0ZW1zIHNob3VsZCBi
ZSBvcmRlcmVkIGJ5IGV4cGlyZSB0aW1lLgogICAgIGZvciAoOyBwb3NpdGlvbiA8IG1fdGltZXJX
b3JrSXRlbXMuc2l6ZSgpOyArK3Bvc2l0aW9uKQogICAgICAgICBpZiAoaXRlbS0+ZXhwaXJhdGlv
blRpbWVOYW5vU2Vjb25kcygpIDwgbV90aW1lcldvcmtJdGVtc1twb3NpdGlvbl0tPmV4cGlyYXRp
b25UaW1lTmFub1NlY29uZHMoKSkKQEAgLTIyOSwxNCArMjI5LDE0IEBAIHZvaWQgRGlzcGF0Y2hR
dWV1ZTo6ZGlzcGF0Y2hRdWV1ZVRocmVhZCgKIAogdm9pZCBEaXNwYXRjaFF1ZXVlOjp3YWtlVXBU
aHJlYWQoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dyaXRlVG9QaXBlRGVzY3JpcHRv
ckxvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV93cml0ZVRvUGlwZURl
c2NyaXB0b3JMb2NrKTsKICAgICBpZiAod3JpdGUobV93cml0ZVRvUGlwZURlc2NyaXB0b3IsICZ3
YWtlVXBUaHJlYWRNZXNzYWdlLCBzaXplb2YoY2hhcikpID09IC0xKQogICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byB3YWtlIHVwIERpc3BhdGNoUXVldWUgVGhyZWFkIik7CiB9CiAKIHRpbWV2
YWwqIERpc3BhdGNoUXVldWU6OmdldE5leHRUaW1lT3V0KCkgY29uc3QKIHsKLSAgICBNdXRleExv
Y2tlciBsb2NrZXIobV90aW1lcldvcmtJdGVtc0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV90aW1lcldvcmtJdGVtc0xvY2spOwogICAgIGlmIChtX3RpbWVyV29ya0l0
ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L2VmbC9EaXNwYXRjaFF1ZXVlRWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvZWZs
L0Rpc3BhdGNoUXVldWVFZmwuaAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dURi93dGYv
ZWZsL0Rpc3BhdGNoUXVldWVFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBw
cml2YXRlOgogICAgIGludCBtX21heEZpbGVEZXNjcmlwdG9yOwogICAgIGludCBtX3JlYWRGcm9t
UGlwZURlc2NyaXB0b3I7CiAgICAgaW50IG1fd3JpdGVUb1BpcGVEZXNjcmlwdG9yOwotICAgIE11
dGV4IG1fd3JpdGVUb1BpcGVEZXNjcmlwdG9yTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV93
cml0ZVRvUGlwZURlc2NyaXB0b3JMb2NrOwogCiAgICAgYm9vbCBtX2lzVGhyZWFkUnVubmluZzsK
IApAQCAtNzEsMTAgKzcxLDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBtX3NvY2tldEV2ZW50SGFuZGxlcjsKIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V29y
a0l0ZW0+PiBtX3dvcmtJdGVtczsKLSAgICBNdXRleCBtX3dvcmtJdGVtc0xvY2s7CisgICAgRGVw
cmVjYXRlZE11dGV4IG1fd29ya0l0ZW1zTG9jazsKIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8VGltZXJXb3JrSXRlbT4+IG1fdGltZXJXb3JrSXRlbXM7Ci0gICAgbXV0YWJsZSBNdXRleCBt
X3RpbWVyV29ya0l0ZW1zTG9jazsKKyAgICBtdXRhYmxlIERlcHJlY2F0ZWRNdXRleCBtX3RpbWVy
V29ya0l0ZW1zTG9jazsKIH07CiAKICNlbmRpZiAvLyBEaXNwYXRjaFF1ZXVlRWZsX2gKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL2VmbC9SdW5Mb29wRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9lZmwvUnVuTG9vcEVmbC5jcHAJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9X
VEYvd3RmL2VmbC9SdW5Mb29wRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBA
QCB2b2lkIFJ1bkxvb3A6Ondha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvCiAgICAgUnVuTG9vcCog
bG9vcCA9IHN0YXRpY19jYXN0PFJ1bkxvb3AqPihkYXRhKTsKIAogICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKGxvb3AtPm1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWRMb2NrKTsKKyAgICAg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihsb29wLT5tX3dha2VVcEV2ZW50UmVxdWVz
dGVkTG9jayk7CiAgICAgICAgIGxvb3AtPm1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQgPSBmYWxzZTsK
ICAgICB9CiAKQEAgLTY5LDE0ICs2OSwxNCBAQCB2b2lkIFJ1bkxvb3A6Ondha2VVcEV2ZW50KHZv
aWQqIGRhdGEsIHZvCiB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiB7CiAgICAgewotICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV93YWtlVXBFdmVudFJlcXVlc3RlZExvY2spOworICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWRMb2NrKTsK
ICAgICAgICAgaWYgKG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQgPSB0cnVlOwogICAgIH0KIAogICAgIHsK
LSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGlwZUxvY2spOworICAgICAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGlwZUxvY2spOwogICAgICAgICBlY29yZV9waXBlX3dy
aXRlKG1fcGlwZS5nZXQoKSwgd2FrdXBFY29yZVBpcGVNZXNzYWdlLCBlY29yZVBpcGVNZXNzYWdl
U2l6ZSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1h
cGhvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2Vt
YXBob3JlLmNwcAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dURi93dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIEJpbmFy
eVNlbWFwaG9yZTo6fkJpbmFyeVNlbWFwaG9yZSgpCiAKIHZvaWQgQmluYXJ5U2VtYXBob3JlOjpz
aWduYWwoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgbV9pc1NldCA9IHRydWU7CiAg
ICAgbV9jb25kaXRpb24uc2lnbmFsKCk7CkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgQmluYXJ5U2Vt
YXBob3JlOjpzaWduYWwoKQogCiBib29sIEJpbmFyeVNlbWFwaG9yZTo6d2FpdChkb3VibGUgYWJz
b2x1dGVUaW1lKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAgYm9vbCB0aW1lZE91dCA9
IGZhbHNlOwogICAgIHdoaWxlICghbV9pc1NldCkgewpJbmRleDogU291cmNlL1dURi93dGYvdGhy
ZWFkcy9CaW5hcnlTZW1hcGhvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV1RGL3d0
Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU2V0OwogCi0gICAgTXV0ZXggbV9t
dXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9tdXRleDsKICAgICBUaHJlYWRDb25kaXRpb24g
bV9jb25kaXRpb247CiB9OwogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcAko
cmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBXb3JrUXVldWU6OmhhbmRsZUNh
bGxiYWNrKHZvaWQqIGNvbgogICAgIFJlZlB0cjxXb3JrUXVldWU+IHF1ZXVlID0gaXRlbS0+cXVl
dWUoKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhxdWV1ZS0+bV93b3JrSXRl
bVF1ZXVlTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKHF1ZXVlLT5t
X3dvcmtJdGVtUXVldWVMb2NrKTsKICAgICAgICAgcXVldWUtPm1fd29ya0l0ZW1RdWV1ZS5hcHBl
bmQoaXRlbSk7CiAKICAgICAgICAgLy8gSWYgbm8gb3RoZXIgdGhyZWFkIGlzIHBlcmZvcm1pbmcg
d29yaywgd2UgY2FuIGRvIGl0IG9uIHRoaXMgdGhyZWFkLgpAQCAtMTIwLDcgKzEyMCw3IEBAIHZv
aWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyQXNXb3JrVGhyZWFkKCkKIHZvaWQgV29ya1F1ZXVlOjpw
bGF0Zm9ybUludmFsaWRhdGUoKQogewogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBNdXRleExv
Y2tlciBsb2NrKG1faGFuZGxlc0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
KG1faGFuZGxlc0xvY2spOwogICAgIEFTU0VSVChtX2hhbmRsZXMuaXNFbXB0eSgpKTsKICNlbmRp
ZgogCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0
ZSgpCiAKIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVu
Y3Rpb24pCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1RdWV1ZUxvY2spOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRlbVF1ZXVlTG9jayk7CiAg
ICAgcmVmKCk7CiAgICAgbV93b3JrSXRlbVF1ZXVlLmFwcGVuZChXb3JrSXRlbVdpbjo6Y3JlYXRl
KGZ1bmN0aW9uLCB0aGlzKSk7CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdHJ1Y3QgVGltZXJDb250
ZXh0IDogcHVibGljIFRocmVhZFNhZmVSCiAKICAgICBXb3JrUXVldWUqIHF1ZXVlOwogICAgIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbjsKLSAgICBNdXRleCB0aW1lck11dGV4OworICAg
IERlcHJlY2F0ZWRNdXRleCB0aW1lck11dGV4OwogICAgIEhBTkRMRSB0aW1lcjsKIAogcHJpdmF0
ZToKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6dGltZXJDYWxsYmFjayh2b2lk
KiBjb250CiAKICAgICB0aW1lckNvbnRleHQtPnF1ZXVlLT5kaXNwYXRjaCh0aW1lckNvbnRleHQt
PmZ1bmN0aW9uKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2sodGltZXJDb250ZXh0LT50aW1lck11
dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayh0aW1lckNvbnRleHQtPnRpbWVy
TXV0ZXgpOwogICAgIEFTU0VSVCh0aW1lckNvbnRleHQtPnRpbWVyKTsKICAgICBBU1NFUlQodGlt
ZXJDb250ZXh0LT5xdWV1ZS0+bV90aW1lclF1ZXVlKTsKICAgICBpZiAoITo6RGVsZXRlVGltZXJR
dWV1ZVRpbWVyKHRpbWVyQ29udGV4dC0+cXVldWUtPm1fdGltZXJRdWV1ZSwgdGltZXJDb250ZXh0
LT50aW1lciwgMCkpIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hBZnRlcihzdGQ6OmNocm9uCiAgICAgICAgIC8vIFRoZSB0aW1lciBjYWxsYmFjayBjb3VsZCBm
aXJlIGJlZm9yZSA6OkNyZWF0ZVRpbWVyUXVldWVUaW1lciBldmVuIHJldHVybnMsIHNvIHdlIHBy
b3RlY3QKICAgICAgICAgLy8gY29udGV4dC0+dGltZXIgd2l0aCBhIG11dGV4IHRvIGVuc3VyZSB0
aGUgdGltZXIgY2FsbGJhY2sgZG9lc24ndCBhY2Nlc3MgaXQgYmVmb3JlIHRoZQogICAgICAgICAv
LyB0aW1lciBoYW5kbGUgaGFzIGJlZW4gc3RvcmVkIGluIGl0LgotICAgICAgICBNdXRleExvY2tl
ciBsb2NrKGNvbnRleHQtPnRpbWVyTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9jayhjb250ZXh0LT50aW1lck11dGV4KTsKIAogICAgICAgICAvLyBTaW5jZSBvdXIgdGlt
ZXIgY2FsbGJhY2sgaXMgcXVpY2ssIHdlIGNhbiBleGVjdXRlIGluIHRoZSB0aW1lciB0aHJlYWQg
aXRzZWxmIGFuZCBhdm9pZAogICAgICAgICAvLyBhbiBleHRyYSB0aHJlYWQgc3dpdGNoIG92ZXIg
dG8gYSB3b3JrZXIgdGhyZWFkLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3OTMyKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgzIEBA
CisyMDE1LTA4LTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1lIE11dGV4IHRvIERlcHJlY2F0ZWRNdXRleAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBqdXN0
IGEgcmVuYW1pbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpBc3luY0F1ZGlv
RGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6cnVuTG9vcCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmFkZEF1ZGlvQ29uc3VtZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6cmVtb3ZlQXVkaW9Db25zdW1lcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzZXRBdWRpb0Zvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8pOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpydW5UcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6aW5Qcm9ncmVzc1RyYW5zYWN0aW9u
Q29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpoYXNQZW5kaW5nVHJhbnNh
Y3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OnBlcmZvcm1PcGVuQW5kVmVy
aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OmlzSW50ZXJydXB0
ZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6ZGF0YWJhc2VUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VDb250ZXh0OjpzZXRQYXVzZWQpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6c2V0UGF1c2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpoYW5kbGVQYXVzZWRRdWV1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6cmV0cnlDYW5Fc3RhYmxpc2hEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Omhhc0VudHJ5Rm9yT3JpZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Y2xvc2VBbGxEYXRhYmFzZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmln
aW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXREYXRhYmFzZURldGFp
bHMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkb25lQ3JlYXRpbmdEYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmdldE9wZW5EYXRhYmFzZXMp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cXVvdGFGb3JPcmlnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcGVuRGF0YWJhc2VNdXRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFiYXNlc1BhdXNlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpu
b3RpZmljYXRpb25NdXRleCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNj
aGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6bm90aWZ5RGF0YWJhc2VzQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpbkxvY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENhbGxiYWNr
V3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMQ2FsbGJhY2tXcmFwcGVyOjpjbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6OnVud3JhcCk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6Omhhc0NhbGxiYWNrKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmRvQ2xlYW51cCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmVucXVldWVTdGF0ZW1lbnRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Z2V0TmV4dFN0YXRlbWVudCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNjaGVkdWxlRXhlY3V0aW9uVGVy
bWluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNF
eGVjdXRpb25UZXJtaW5hdGluZyk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5oOgorICAgICAgICAqIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1l
c3NhZ2VUb1JlbW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OnRy
eUdldE1lc3NhZ2VGcm9tUmVtb3RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hh
bm5lbDo6aXNDb25uZWN0ZWRUbyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWw6Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENo
YW5uZWw6OmxvY2FsbHlFbnRhbmdsZWRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsOjpzZXRSZW1vdGVQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjplbnRhbmdsZWRDaGFubmVsKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpjbG9zZUludGVybmFsKToKKyAgICAg
ICAgKiBkb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oOgorICAgICAgICAq
IGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2U6OnJlbW92ZUFsbEljb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6
c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJh
c2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6Okljb25EYXRhYmFzZTo6cmV0YWluSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6SWNvbkRhdGFiYXNlOjpwZXJmb3JtUmV0YWluSWNvbkZvclBhZ2VVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpyZWxlYXNlSWNvbkZvclBhZ2VVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpwZXJmb3JtUmVsZWFzZUljb25Gb3JQYWdlVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c2V0SWNvblVSTEZvclBhZ2VVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZv
ckljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0lj
b25EYXRhS25vd25Gb3JJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6
cGFnZVVSTE1hcHBpbmdDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnJl
dGFpbmVkUGFnZVVSTENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6aWNv
blJlY29yZENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6aWNvblJlY29y
ZENvdW50V2l0aERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjp3YWtlU3lu
Y1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmlzT3BlbkJlc2lkZXNN
YWluVGhyZWFkQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGF0
YWJhc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVQ
YWdlVVJMUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6aWNvbkRhdGFi
YXNlU3luY1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnBlcmZvcm1P
cGVuSW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpwZXJm
b3JtVVJMSW1wb3J0KToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY1RocmVh
ZE1haW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cGVyZm9ybVBlbmRp
bmdSZXRhaW5BbmRSZWxlYXNlT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2U6OnJlYWRGcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNl
Ojp3cml0ZVRvRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpwcnVu
ZVVucmV0YWluZWRJY29ucyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmNsZWFu
dXBTeW5jVGhyZWFkKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWU6OnNob3VsZEhhbmRsZVdoZWVsRXZlbnRTeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzZXRNYWluRnJhbWVQaW5TdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjptYWluRnJhbWVTY3JvbGxQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzZXRNYWluRnJhbWVTY3JvbGxQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjppc1BvaW50SW5Ob25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjppc1J1
YmJlckJhbmRJblByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNl
dE1haW5GcmFtZUlzUnViYmVyQmFuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlOjppc1Njcm9sbFNuYXBJblByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWU6OnNldE1haW5GcmFtZUlzU2Nyb2xsU25hcHBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZTo6c2V0Q2FuUnViYmVyQmFuZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlOjpydWJiZXJCYW5kc0F0Qm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRUb3ApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWU6OnNjcm9sbFBpbm5pbmdCZWhhdmlvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlOjp3aWxsV2hlZWxFdmVudFN0YXJ0U3dpcGVHZXN0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWU6OmxhdGNoZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWU6OnNldExhdGNoZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWU6OmNsZWFyTGF0Y2hlZE5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlTG9hZGVyOjp3YWl0Rm9yTG9hZGVyVGhyZWFkQ29t
cGxldGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFJlY2VpdmVkTWVt
b3J5UHJlc3N1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpj
bGVhck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6c2hvdWxkV2FpdEZvck1lbW9yeUNsZWFyTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlSWZOZWVkZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZy
ZXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6c2V0TW9ub3Rvbmlj
QW5pbWF0aW9uU3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6bXV0ZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXREZWxheUNhbGxiYWNrcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmNsZWFyTWFpblRocmVh
ZFBlbmRpbmdGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6ZGlzcGF0Y2hOb3RpZmljYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y2FsbGJh
Y2tDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6On5BVkZXcmFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6Om1hcExvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6QVZGV3JhcHBlcjo6YWRkVG9NYXApOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6
cmVtb3ZlRnJvbU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpwZXJpb2RpY1Rp
bWVPYnNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nl
c3NOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bG9hZFBsYXlh
YmxlQ29tcGxldGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6Omxv
YWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFw
cGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBl
cjo6cHJvY2Vzc0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdpYmxlT3V0
cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVy
OjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lcjo6dGFnc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVz
aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6
ZGlzcGxheUxpbmtGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVtb3ZlTGlzdGVuZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpu
b3RpZnlEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6SW52b2tlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6b25NZWRpYVBs
YXllckRlbGV0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUNhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0VGlsZXNPcGFxdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpkb0xheW91dFRpbGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0Q3VycmVudFNjYWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0U2NhbGVDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05vdyk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lUaWxlQ2FjaGU6OmxheW91dFRpbGVzTm93Rm9yUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbE5vblZpc2libGVUaWxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbFRpbGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlRm9yZWdyb3VuZFRpbGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0Q29udGVudFJlcGxhY2VtZW50SW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpjb250ZW50UmVwbGFjZW1lbnRJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnRpbGVDcmVhdGlvblRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjp1cGRhdGVUaWxp
bmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0VGlsaW5nTW9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmRvUGVuZGluZ1JlcGFpbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6Zmx1c2hTYXZlZERpc3BsYXlS
ZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OnByZXBhcmVUb0RyYXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW06CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lUaWxlTGF5ZXJQb29sOjphZGRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lUaWxlTGF5ZXJQb29sOjp0YWtlTGF5ZXJXaXRoU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lUaWxlTGF5ZXJQb29sOjpzZXRDYXBhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lUaWxlTGF5ZXJQb29sOjpwcnVuZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlTGF5
ZXJQb29sOjpkcmFpbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWRNYW5hZ2VyOjphZGQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkTWFuYWdlcjo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxEb3dubG9hZE1hbmFnZXI6OmdldEFjdGl2ZURvd25sb2FkQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkTWFuYWdlcjo6Z2V0UGVuZGluZ0Rvd25sb2Fk
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkTWFuYWdlcjo6c3RvcFRocmVh
ZElmSWRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWRNYW5hZ2VyOjp1cGRhdGVI
YW5kbGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxEb3dubG9hZDo6fkN1cmxEb3dubG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybERvd25sb2FkOjpnZXRUZW1wUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
RG93bmxvYWQ6OmdldFVybCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmdldFJl
c3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxEb3dubG9hZDo6Y2xvc2VGaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxEb3dubG9hZDo6ZGlkRmFpbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llSmFyUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRSZXNvdXJjZU11dGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OmN1cmxfbG9ja19jYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjdXJsX3VubG9ja19j
YWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UUxEaXJlY3RvcnlBdHRyaWJ1dGVzKToKKyAgICAgICAgKHFsUHJl
dmlld0NvbnZlcnRlckRpY3Rpb25hcnlNdXRleCk6CisgICAgICAgIChXZWJDb3JlOjphZGRRTFBy
ZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpxbFByZXZp
ZXdDb252ZXJ0ZXJVVElGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlUUxQcmV2aWV3
Q29udmVydGVyRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OnNhZmVRTFVSTEZvckRvY3VtZW50
VVJMQW5kUmVzb3VyY2VVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6bWF4aW11bVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2U6OnNldE1heGltdW1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlOjpwYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6ZnJlZVNw
YWNlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6dG90YWxTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNv
bW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldEF1dGhvcml6ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2U6OmRhdGFiYXNlTXV0ZXgpOgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50OjpwcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c3RlcCk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6Ondv
cmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnN0b3ApOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisKIDIwMTUtMDgtMDQgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBDVFRFIHRoZSBkYXRhYmFzZSB0
YXNrIGNvZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBc3luY0F1ZGlvRGVjb2Rl
cjo6QXN5bmNBdWRpb0RlY29kZXIoKQogewogICAgIC8vIFN0YXJ0IHdvcmtlciB0aHJlYWQuCi0g
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOworICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAgICAgbV90aHJlYWRJ
RCA9IGNyZWF0ZVRocmVhZChBc3luY0F1ZGlvRGVjb2Rlcjo6dGhyZWFkRW50cnksIHRoaXMsICJB
dWRpbyBEZWNvZGVyIik7CiB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBBc3luY0F1ZGlvRGVj
b2Rlcjo6cnVuTG9vcCgpCiAKICAgICB7CiAgICAgICAgIC8vIFdhaXQgZm9yIHVudGlsIHdlIGhh
dmUgbV90aHJlYWRJRCBlc3RhYmxpc2hlZCBiZWZvcmUgc3RhcnRpbmcgdGhlIHJ1biBsb29wLgot
ICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CisgICAgICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAgICAg
fQogCiAgICAgLy8gS2VlcCBydW5uaW5nIGRlY29kaW5nIHRhc2tzIHVudGlsIHdlJ3JlIGtpbGxl
ZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5j
QXVkaW9EZWNvZGVyLmgJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyAr
ODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuTG9vcCgpOwogCiAgICAgV1RGOjpUaHJlYWRJ
ZGVudGlmaWVyIG1fdGhyZWFkSUQ7Ci0gICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4Owor
ICAgIERlcHJlY2F0ZWRNdXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CiAgICAgTWVzc2FnZVF1
ZXVlPERlY29kaW5nVGFzaz4gbV9xdWV1ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkocmV2aXNpb24gMTg3OTMyKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgwLDcgKzM4MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25uZWN0
aW9uQ291bnQgeyAwIH07CiAKICAgICAvLyBHcmFwaCBsb2NraW5nLgotICAgIE11dGV4IG1fY29u
dGV4dEdyYXBoTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fY29udGV4dEdyYXBoTXV0ZXg7
CiAgICAgdm9sYXRpbGUgVGhyZWFkSWRlbnRpZmllciBtX2F1ZGlvVGhyZWFkIHsgMCB9OwogICAg
IHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9ncmFwaE93bmVyVGhyZWFkOyAvLyBpZiB0aGUg
bG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVy
d2lzZSA9PSBVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNl
LmNwcAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTMgKzYz
LDEzIEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIE1lZGlhU3QKIAogdm9pZCBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlOjphZGRBdWRpb0NvbnN1bWVyKFBhc3NSZWZQdHI8QXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyPiBjb25zdW1lcikKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOwogICAgIG1fYXVkaW9Db25zdW1lcnMuYXBwZW5kKGNvbnN1
bWVyKTsKIH0KIAogYm9vbCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpyZW1vdmVBdWRpb0NvbnN1
bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIpCiB7Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNMb2NrKTsKICAgICBzaXplX3QgcG9zID0gbV9hdWRp
b0NvbnN1bWVycy5maW5kKGNvbnN1bWVyKTsKICAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7CiAg
ICAgICAgIG1fYXVkaW9Db25zdW1lcnMucmVtb3ZlKHBvcyk7CkBAIC04MCwxNCArODAsMTQgQEAg
Ym9vbCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpyZW1vdmVBdWRpbwogCiB2b2lkIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2U6OnNldEF1ZGlvRm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3Vt
ZXJzTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2F1ZGlvQ29uc3Vt
ZXJzTG9jayk7CiAgICAgZm9yIChhdXRvJiBjb25zdW1lciA6IG1fYXVkaW9Db25zdW1lcnMpCiAg
ICAgICAgIGNvbnN1bWVyLT5zZXRGb3JtYXQobnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSk7
CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVz
KiBidXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9hdWRpb0NvbnN1bWVyc0xvY2spOwogICAgIGZvciAoYXV0byYgY29uc3VtZXIgOiBtX2F1ZGlv
Q29uc3VtZXJzKQogICAgICAgICBjb25zdW1lci0+Y29uc3VtZUF1ZGlvKGJ1cywgbnVtYmVyT2ZG
cmFtZXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgJKHJldmlzaW9uIDE4NzkzMikKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZSgpOwogCiAgICAgU3RyaW5nIG1fZGV2aWNlSWQ7Ci0gICAgTXV0ZXggbV9hdWRp
b0NvbnN1bWVyc0xvY2s7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fYXVkaW9Db25zdW1lcnNMb2Nr
OwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPj4gbV9hdWRpb0Nv
bnN1bWVyczsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIG1fY3VycmVudFN0YXRlczsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmNwcAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2
b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRh
YmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAKICAgICB7
Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4
KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzc011dGV4KTsKIAogICAgICAgICAvLyBDbGVhbiB1cCB0cmFuc2FjdGlvbnMgdGhhdCBo
YXZlIG5vdCBiZWVuIHNjaGVkdWxlZCB5ZXQ6CiAgICAgICAgIC8vIFRyYW5zYWN0aW9uIHBoYXNl
IDEgY2xlYW51cC4gU2VlIGNvbW1lbnQgb24gIldoYXQgaGFwcGVucyBpZiBhCkBAIC0xNzQsNyAr
MTc0LDcgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAKIFBhc3NSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiBEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24oUGFzc1Jl
ZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24sIGJvb2wgcmVhZE9ubHksIGNvbnN0IENo
YW5nZVZlcnNpb25EYXRhKiBkYXRhKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIGlmICghbV9pc1RyYW5zYWN0aW9u
UXVldWVFbmFibGVkKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMjAyLDE0ICsyMDIsMTQgQEAg
dm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoUwogCiB2b2lkIERhdGFiYXNl
OjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoKQogewotICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIG1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQog
CiBib29sIERhdGFiYXNlOjpoYXNQZW5kaW5nVHJhbnNhY3Rpb24oKQogewotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIHJl
dHVybiBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyB8fCAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1w
dHkoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgRGF0YWJhc2VUYWJsZU5hbWVz
VGFzazsKIAogICAgIERlcXVlPFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+PiBtX3RyYW5z
YWN0aW9uUXVldWU7Ci0gICAgTXV0ZXggbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKKyAg
ICBEZXByZWNhdGVkTXV0ZXggbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKICAgICBib29s
IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzOwogICAgIGJvb2wgbV9pc1RyYW5zYWN0aW9uUXVldWVF
bmFibGVkOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQmFja2VuZEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHAJKHJldmlzaW9uIDE4NzkzMikKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBib29sIERhdGFiYXNlQmFja2Vu
ZEJhc2U6OnBlcmZvcm1PcGVuQW5kCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHsKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHdlIHdhaXQgdGlsbCB0aGUgYmFja2dyb3VuZCByZW1vdmFsIG9mIHRoZSBl
bXB0eSBkYXRhYmFzZSBmaWxlcyBmaW5pc2hlZCBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4gYW55IGRh
dGFiYXNlLgotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoRGF0YWJhc2VUcmFja2VyOjpvcGVu
RGF0YWJhc2VNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihE
YXRhYmFzZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11dGV4KCkpOwogICAgIH0KICNlbmRpZgogCkBA
IC01OTMsNyArNTkzLDcgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmRCYXNlOjppbnRlcnJ1cHQoKQog
CiBib29sIERhdGFiYXNlQmFja2VuZEJhc2U6OmlzSW50ZXJydXB0ZWQoKQogewotICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX3NxbGl0ZURhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSk7CisgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3NxbGl0ZURhdGFiYXNlLmRhdGFiYXNlTXV0ZXgo
KSk7CiAgICAgcmV0dXJuIG1fc3FsaXRlRGF0YWJhc2UuaXNJbnRlcnJ1cHRlZCgpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
YXNrLmgJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbV90YXNrQ29tcGxldGVkOwotICAgIE11dGV4IG1f
c3luY2hyb25vdXNNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9zeW5jaHJvbm91c011dGV4
OwogICAgIFRocmVhZENvbmRpdGlvbiBtX3N5bmNocm9ub3VzQ29uZGl0aW9uOwogI2lmbmRlZiBO
REVCVUcKICAgICBib29sIG1faGFzQ2hlY2tlZEZvclRlcm1pbmF0aW9uOwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5j
cHAJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIERh
dGFiYXNlVGhyZWFkOjp+RGF0YWJhc2VUaHJlYWQoKQogCiBib29sIERhdGFiYXNlVGhyZWFkOjpz
dGFydCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAK
ICAgICBpZiAobV90aHJlYWRJRCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDAsNyArMTAw
LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogewogICAgIHsKICAg
ICAgICAgLy8gV2FpdCBmb3IgRGF0YWJhc2VUaHJlYWQ6OnN0YXJ0KCkgdG8gY29tcGxldGUuCi0g
ICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICAgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKICAgICAg
ICAgTE9HKFN0b3JhZ2VBUEksICJTdGFydGVkIERhdGFiYXNlVGhyZWFkICVwIiwgdGhpcyk7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkYXRhYmFzZVRocmVhZFN0YXJ0
KHZvaWQqKTsKICAgICB2b2lkIGRhdGFiYXNlVGhyZWFkKCk7CiAKLSAgICBNdXRleCBtX3RocmVh
ZENyZWF0aW9uTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRl
eDsKICAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CiAgICAgUmVmUHRyPERhdGFiYXNl
VGhyZWFkPiBtX3NlbGZSZWY7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDE4NzkzMikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBEYXRhYmFzZVRyYWNrZXI6OkRhdGFi
YXNlVHJhY2tlcihjb25zdCBTCiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXREYXRhYmFzZURp
cmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tE
YXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
RGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpOwogICAgIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKTsK
IH0KQEAgLTE2Niw3ICsxNjYsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNo
RGF0YWJhCiB7CiAgICAgZXJyb3IgPSBEYXRhYmFzZUVycm9yOjpOb25lOwogCi0gICAgTXV0ZXhM
b2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgIFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogCiAgICAgaWYgKGlzRGVsZXRp
bmdEYXRhYmFzZU9yT3JpZ2luRm9yKG9yaWdpbiwgbmFtZSkpIHsKQEAgLTIxOCw3ICsyMTgsNyBA
QCBib29sIERhdGFiYXNlVHJhY2tlcjo6cmV0cnlDYW5Fc3RhYmxpc2hECiB7CiAgICAgZXJyb3Ig
PSBEYXRhYmFzZUVycm9yOjpOb25lOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1f
ZGF0YWJhc2VHdWFyZCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZSht
X2RhdGFiYXNlR3VhcmQpOwogICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBjb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpOwogCiAgICAgLy8gV2UgaGF2ZSBhbHJlYWR5IGVsaW1pbmF0ZWQgb3Ro
ZXIgdHlwZXMgb2YgZXJyb3JzIGluIGNhbkVzdGFibGlzaERhdGFiYXNlKCkuCkBAIC0yNTcsNyAr
MjU3LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6Omhhc0VudHJ5Rm9yT3JpZ2luTgogCiBib29s
IERhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdp
bikKIHsKLSAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAg
ICAgcmV0dXJuIGhhc0VudHJ5Rm9yT3JpZ2luTm9Mb2NrKG9yaWdpbik7CiB9CiAKQEAgLTI4Niw3
ICsyODYsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjpnZXRNCiB7CiAg
ICAgLy8gVGhlIG1heGltdW0gc2l6ZSBmb3IgYSBkYXRhYmFzZSBpcyB0aGUgZnVsbCBxdW90YSBm
b3IgaXRzIG9yaWdpbiwgbWludXMgdGhlIGN1cnJlbnQgdXNhZ2Ugd2l0aGluIHRoZSBvcmlnaW4s
CiAgICAgLy8gcGx1cyB0aGUgY3VycmVudCB1c2FnZSBvZiB0aGUgZ2l2ZW4gZGF0YWJhc2UKLSAg
ICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpOwogCiAgICAgdW5z
aWduZWQgbG9uZyBsb25nIHF1b3RhID0gcXVvdGFGb3JPcmlnaW5Ob0xvY2sob3JpZ2luKTsKQEAg
LTMxMSw3ICszMTEsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6Y2xvc2VBbGxEYXRhYmFzZXMo
CiB7CiAgICAgVmVjdG9yPFJlZjxEYXRhYmFzZT4+IG9wZW5EYXRhYmFzZXM7CiAgICAgewotICAg
ICAgICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3Vh
cmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayht
X29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKICAgICAgICAgaWYgKCFtX29wZW5EYXRhYmFzZU1hcCkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZm9yIChhdXRvJiBuYW1lTWFwIDogbV9vcGVu
RGF0YWJhc2VNYXAtPnZhbHVlcygpKSB7CkBAIC0zODksMTMgKzM4OSwxMyBAQCBTdHJpbmcgRGF0
YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiCiAKIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6
OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sIGNyZWF0ZUlmTm90RXhpc3RzKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tE
YXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
RGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICByZXR1cm4gZnVsbFBhdGhGb3JEYXRhYmFz
ZU5vTG9jayhvcmlnaW4sIG5hbWUsIGNyZWF0ZUlmTm90RXhpc3RzKS5pc29sYXRlZENvcHkoKTsK
IH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+JiBvcmlnaW5zUmVzdWx0KQogewotICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFz
ZShtX2RhdGFiYXNlR3VhcmQpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJh
c2UobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0
ZUlmRG9lc05vdEV4aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC00NDgs
NyArNDQ4LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlTmFtZXNGb3JPcgogewog
ICAgIFZlY3RvcjxTdHJpbmc+IHRlbXA7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2Nr
RGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgICAgICBpZiAoIWRhdGFiYXNlTmFt
ZXNGb3JPcmlnaW5Ob0xvY2sob3JpZ2luLCB0ZW1wKSkKICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQpAQCAtNDY1LDcgKzQ2NSw3IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZVRyYWNr
ZXI6OmRldGFpbHMKICAgICBpbnQ2NF90IGV4cGVjdGVkVXNhZ2U7CiAKICAgICB7Ci0gICAgICAg
IE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICAg
ICAgb3BlblRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwogICAgICAg
ICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBEYXRh
YmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0YWlscwogICAgIFN0cmluZyBvcmlnaW5JZGVudGlm
aWVyID0gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKTsKICAgICBpbnQ2NF90IGd1aWQgPSAw
OwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogCiAg
ICAgb3BlblRyYWNrZXJEYXRhYmFzZShDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYgKCFt
X2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFj
a2VyOjpzZXREYXRhYmFzZURldGFpbHMKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVh
dGluZ0RhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFzZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2Nr
RGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgZG9uZUNyZWF0aW5nRGF0YWJhc2UoZGF0
YWJhc2UtPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOwog
fQogCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRh
YmFzZShEYQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIG9w
ZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAgICAgIERlcHJl
Y2F0ZWRNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3Vh
cmQpOwogCiAgICAgICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCiAgICAgICAgICAgICBtX29w
ZW5EYXRhYmFzZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7CkBA
IC01ODksNyArNTg5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFz
ZQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIG9wZW5EYXRh
YmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CisgICAgICAgIERlcHJlY2F0ZWRN
dXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOwog
CiAgICAgICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApIHsKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpy
ZW1vdmVPcGVuRGF0YWJhc2UKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmdldE9wZW5EYXRhYmFz
ZXMoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBIYXNoU2V0PFJl
ZlB0cjxEYXRhYmFzZT4+KiBkYXRhYmFzZXMpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgb3BlbkRhdGFi
YXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKICAgICBp
ZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQogICAgICAgICByZXR1cm47CiAKQEAgLTY0Nyw3ICs2NDcs
NyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6Z2V0T3BlbkRhdGFiYXNlcyhTCiAKIFJlZlB0cjxP
cmlnaW5Mb2NrPiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tGb3IoU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKIHsKLSAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJk
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFy
ZCk7CiAgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IG9yaWdpbi0+ZGF0YWJhc2VJZGVu
dGlmaWVyKCk7CiAKICAgICAvLyBUaGUgb3JpZ2luTG9ja01hcCBpcyBhY2Nlc3NlZCBmcm9tIG11
bHRpcGxlIERhdGFiYXNlVGhyZWFkcyBzaW5jZQpAQCAtNzI3LDEzICs3MjcsMTMgQEAgdW5zaWdu
ZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6cXVvdAogCiB1bnNpZ25lZCBsb25nIGxvbmcg
RGF0YWJhc2VUcmFja2VyOjpxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQog
ewotICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICBy
ZXR1cm4gcXVvdGFGb3JPcmlnaW5Ob0xvY2sob3JpZ2luKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRy
YWNrZXI6OnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVuc2lnbmVkIGxvbmcgbG9u
ZyBxdW90YSkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJk
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFy
ZCk7CiAKICAgICBpZiAocXVvdGFGb3JPcmlnaW5Ob0xvY2sob3JpZ2luKSA9PSBxdW90YSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtODY0LDcgKzg2NCw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpk
ZWxldGVPcmlnaW4oU2VjdXIKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBkYXRhYmFzZU5hbWVzOwog
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7
CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1
YXJkKTsKICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhp
c3QpOwogICAgICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC04OTAsNyArODkwLDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
ZU9yaWdpbihTZWN1cgogICAgIH0KIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja0Rh
dGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAgICAgICAgZGVsZXRlT3JpZ2luTG9ja0Zv
cihvcmlnaW4pOwogICAgICAgICBkb25lRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIApAQCAtMTA3
MSw3ICsxMDcxLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVEZWxldGluZ09yaWdpbgog
Ym9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIG9wZW5UcmFja2VyRGF0
YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICAgICAgaWYgKCFtX2RhdGFiYXNl
LmlzT3BlbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA4NiwxMiArMTA4Niwx
MiBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjCiAgICAgLy8gV2Ug
ZHJvcCB0aGUgbG9jayBoZXJlIGJlY2F1c2UgaG9sZGluZyBsb2NrcyBkdXJpbmcgYSBjYWxsIHRv
IGRlbGV0ZURhdGFiYXNlRmlsZSB3aWxsIGRlYWRsb2NrLgogICAgIGlmICghZGVsZXRlRGF0YWJh
c2VGaWxlKG9yaWdpbiwgbmFtZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVs
ZXRlIGZpbGUgZm9yIGRhdGFiYXNlICVzIGluIG9yaWdpbiAlcyIsIG5hbWUuYXNjaWkoKS5kYXRh
KCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAg
ICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKKyAgICAgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgICAg
ICBkb25lRGVsZXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFy
ZCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3Vh
cmQpOwogCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiREVMRVRF
IEZST00gRGF0YWJhc2VzIFdIRVJFIG9yaWdpbj0/IEFORCBuYW1lPT8iKTsKICAgICBpZiAoc3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKQEAgLTExMzEsNyArMTEzMSw3IEBAIGJv
b2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUKIAogI2lmbmRlZiBOREVCVUcK
ICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQp
OworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VH
dWFyZCk7CiAgICAgICAgIEFTU0VSVChpc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihvcmln
aW4sIG5hbWUpKTsKICAgICB9CiAjZW5kaWYKQEAgLTExNDIsNyArMTE0Miw3IEBAIGJvb2wgRGF0
YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUKICAgICAvLyBEYXRhYmFzZTo6bWFya0Fz
RGVsZXRlZEFuZENsb3NlKCksIHNpbmNlIHRoYXQgY2FuIGNhdXNlIGEgZGVhZGxvY2sKICAgICAv
LyBkdXJpbmcgdGhlIHN5bmNocm9ub3VzIERhdGFiYXNlVGhyZWFkIGNhbGwgaXQgdHJpZ2dlcnMu
CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRh
dGFiYXNlTWFwR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgb3BlbkRhdGFi
YXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKICAgICAgICAgaWYgKG1fb3BlbkRh
dGFiYXNlTWFwKSB7CiAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgc29tZSBvcGVuIGRhdGFiYXNl
cywgbGV0cyBjaGVjayBpZiB0aGV5IGFyZSBmb3IgdGhpcyBvcmlnaW4uCiAgICAgICAgICAgICBE
YXRhYmFzZU5hbWVNYXAqIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+Z2V0KG9yaWdpbik7
CkBAIC0xMTg1LDcgKzExODUsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRl
ZE9wZW5lCiAgICAgCiAgICAgewogICAgICAgICAvLyBBY3F1aXJlIHRoZSBsb2NrIGJlZm9yZSBj
YWxsaW5nIG9wZW5UcmFja2VyRGF0YWJhc2UuCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRh
YmFzZShtX2RhdGFiYXNlR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2Uo
RG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICB9CiAKQEAgLTEyMDEsNyArMTIwMSw3IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmUKICAgICAvLyBEYXRhYmFz
ZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKCksIHNpbmNlIHRoYXQgY2FuIGNhdXNlIGEgZGVhZGxv
Y2sKICAgICAvLyBkdXJpbmcgdGhlIHN5bmNocm9ub3VzIERhdGFiYXNlVGhyZWFkIGNhbGwgaXQg
dHJpZ2dlcnMuCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2Nr
KG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIg
b3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKICAgICAgICAgaWYg
KG1fb3BlbkRhdGFiYXNlTWFwKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9wZW5EYXRhYmFz
ZSA6ICptX29wZW5EYXRhYmFzZU1hcCkgewogICAgICAgICAgICAgICAgIGF1dG8mIG9yaWdpbiA9
IG9wZW5EYXRhYmFzZS5rZXk7CkBAIC0xMzA1LDkgKzEzMDUsOSBAQCBib29sIERhdGFiYXNlVHJh
Y2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlCiAgICAgcmV0dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmRl
bGV0ZURhdGFiYXNlRmlsZShwYXRoKTsKIH0KIAotTXV0ZXgmIERhdGFiYXNlVHJhY2tlcjo6b3Bl
bkRhdGFiYXNlTXV0ZXgoKQorRGVwcmVjYXRlZE11dGV4JiBEYXRhYmFzZVRyYWNrZXI6Om9wZW5E
YXRhYmFzZU11dGV4KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0ZXg+IG11dGV4
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEZXByZWNhdGVkTXV0ZXg+IG11dGV4OwogICAg
IHJldHVybiBtdXRleDsKIH0KIApAQCAtMTMzMCw5ICsxMzMwLDkgQEAgdm9pZCBEYXRhYmFzZVRy
YWNrZXI6OnNldENsaWVudChEYXRhYmFzZQogICAgIG1fY2xpZW50ID0gY2xpZW50OwogfQogCi1z
dGF0aWMgTXV0ZXgmIG5vdGlmaWNhdGlvbk11dGV4KCkKK3N0YXRpYyBEZXByZWNhdGVkTXV0ZXgm
IG5vdGlmaWNhdGlvbk11dGV4KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0ZXg+
IG11dGV4OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEZXByZWNhdGVkTXV0ZXg+IG11dGV4
OwogICAgIHJldHVybiBtdXRleDsKIH0KIApAQCAtMTM0Niw3ICsxMzQ2LDcgQEAgc3RhdGljIE5v
dGlmaWNhdGlvblF1ZXVlJiBub3RpZmljYXRpb25RdQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6
c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBuYW1lKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihub3RpZmljYXRpb25N
dXRleCgpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG5vdGlmaWNhdGlvbk11
dGV4KCkpOwogCiAgICAgbm90aWZpY2F0aW9uUXVldWUoKS5hcHBlbmQoc3RkOjpwYWlyPFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4sIFN0cmluZz4ob3JpZ2luLT5pc29sYXRlZENvcHkoKSwgbmFtZS5p
c29sYXRlZENvcHkoKSkpOwogICAgIHNjaGVkdWxlRm9yTm90aWZpY2F0aW9uKCk7CkBAIC0xMzcy
LDcgKzEzNzIsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6bm90aWZ5RGF0YWJhc2VzQ2hhCiAK
ICAgICBOb3RpZmljYXRpb25RdWV1ZSBub3RpZmljYXRpb25zOwogICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG5vdGlmaWNhdGlvbk11dGV4KCkpOworICAgICAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG5vdGlmaWNhdGlvbk11dGV4KCkpOwogCiAgICAgICAgIG5vdGlm
aWNhdGlvbnMuc3dhcChub3RpZmljYXRpb25RdWV1ZSgpKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCShyZXZp
c2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgog
ICAgIC8vIE1vYmlsZVNhZmFyaSB3aWxsIGdyYWIgdGhpcyBtdXRleCBvbiB0aGUgbWFpbiB0aHJl
YWQgYmVmb3JlIGRpc3BhdGNoaW5nIHRoZSB0YXNrIHRvIAogICAgIC8vIGNsZWFuIHVwIHplcm8g
Ynl0ZSBkYXRhYmFzZSBmaWxlcy4gIEFueSBvcGVyYXRpb25zIHRvIG9wZW4gbmV3IGRhdGFiYXNl
IHdpbGwgaGF2ZSB0bwogICAgIC8vIHdhaXQgZm9yIHRoYXQgdGFzayB0byBmaW5pc2ggYnkgd2Fp
dGluZyBvbiB0aGlzIG11dGV4LgotICAgIHN0YXRpYyBNdXRleCYgb3BlbkRhdGFiYXNlTXV0ZXgo
KTsKKyAgICBzdGF0aWMgRGVwcmVjYXRlZE11dGV4JiBvcGVuRGF0YWJhc2VNdXRleCgpOwogICAg
IAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVtcHR5RGF0YWJhc2VGaWxlc1JlbW92
YWxUYXNrV2lsbEJlU2NoZWR1bGVkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
ZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRhc2tEaWRGaW5pc2goKTsKQEAgLTE1MCwxMSArMTUw
LDExIEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgRGF0YWJhc2VTZXQq
PiBEYXRhYmFzZU5hbWVNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4sIERhdGFiYXNlTmFtZU1hcCo+IERhdGFiYXNlT3JpZ2luTWFwOwogCi0gICAgTXV0ZXgg
bV9vcGVuRGF0YWJhc2VNYXBHdWFyZDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9vcGVuRGF0YWJh
c2VNYXBHdWFyZDsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZU9yaWdpbk1h
cD4gbV9vcGVuRGF0YWJhc2VNYXA7CiAKICAgICAvLyBUaGlzIGxvY2sgcHJvdGVjdHMgbV9kYXRh
YmFzZSwgbV9vcmlnaW5Mb2NrTWFwLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgbV9vcmlnaW5z
QmVpbmdEZWxldGVkLCBtX2JlaW5nQ3JlYXRlZCwgYW5kIG1fYmVpbmdEZWxldGVkLgotICAgIE11
dGV4IG1fZGF0YWJhc2VHdWFyZDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9kYXRhYmFzZUd1YXJk
OwogICAgIFNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8T3JpZ2luTG9jaz4+IE9yaWdpbkxvY2tNYXA7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAkocmV2aXNpb24g
MTg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
U3RyaW5nIGxvY2tGaWxlTmFtZUZvclBhdGgoU3RyaW5nIG9yaWdpblBhdGgpOwogCiAgICAgU3Ry
aW5nIG1fbG9ja0ZpbGVOYW1lOwotICAgIE11dGV4IG1fbXV0ZXg7CisgICAgRGVwcmVjYXRlZE11
dGV4IG1fbXV0ZXg7CiAjaWYgVVNFKEZJTEVfTE9DSykKICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUg
bV9sb2NrSGFuZGxlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgJKHJldmlzaW9uIDE4Nzkz
MikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFw
cGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyOwogICAgICAg
ICBUKiBjYWxsYmFjazsKICAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbXV0ZXgpOworICAgICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211
dGV4KTsKICAgICAgICAgICAgIGlmICghbV9jYWxsYmFjaykgewogICAgICAgICAgICAgICAgIEFT
U0VSVCghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8VD4gdW53cmFwKCkK
ICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICAgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICAgICAgQVNTRVJUKCFtX2Nh
bGxiYWNrIHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwog
ICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBudWxscHRyOwogICAgICAgICByZXR1
cm4gbV9jYWxsYmFjay5yZWxlYXNlKCk7CkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc0NhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFjazsgfQogCiBwcml2YXRl
OgotICAgIE11dGV4IG1fbXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fbXV0ZXg7CiAgICAg
UmVmUHRyPFQ+IG1fY2FsbGJhY2s7CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQu
Y3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Miw3ICsz
ODIsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6ZG9DbGVhbnVwKCkKIAogICAgIHJl
bGVhc2VPcmlnaW5Mb2NrSWZOZWVkZWQoKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N0
YXRlbWVudE11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3RhdGVt
ZW50TXV0ZXgpOwogICAgIG1fc3RhdGVtZW50UXVldWUuY2xlYXIoKTsKIAogICAgIGlmIChtX3Nx
bGl0ZVRyYW5zYWN0aW9uKSB7CkBAIC00NjYsNyArNDY2LDcgQEAgU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kOjpTdGF0ZUZ1bmN0aW9uIFNRTAogCiB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6ZW5x
dWV1ZVN0YXRlbWVudEJhY2tlbmQoUGFzc1JlZlB0cjxTUUxTdGF0ZW1lbnRCYWNrZW5kPiBzdGF0
ZW1lbnRCYWNrZW5kKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3RhdGVtZW50TXV0ZXgpOwog
ICAgIG1fc3RhdGVtZW50UXVldWUuYXBwZW5kKHN0YXRlbWVudEJhY2tlbmQpOwogfQogCkBAIC02
NjYsNyArNjY2LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmdldE5leHRTdGF0ZQog
ewogICAgIG1fY3VycmVudFN0YXRlbWVudEJhY2tlbmQgPSBudWxscHRyOwogCi0gICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fc3RhdGVtZW50TXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrZXIobV9zdGF0ZW1lbnRNdXRleCk7CiAgICAgaWYgKCFtX3N0YXRlbWVudFF1ZXVlLmlz
RW1wdHkoKSkKICAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50QmFja2VuZCA9IG1fc3RhdGVtZW50
UXVldWUudGFrZUZpcnN0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgJKHJldmlzaW9u
IDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9yZWFkT25seTsKICAgICBib29sIG1faGFzVmVyc2lvbk1pc21hdGNoOwog
Ci0gICAgTXV0ZXggbV9zdGF0ZW1lbnRNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9zdGF0
ZW1lbnRNdXRleDsKICAgICBEZXF1ZTxSZWZQdHI8U1FMU3RhdGVtZW50QmFja2VuZD4+IG1fc3Rh
dGVtZW50UXVldWU7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlVHJhbnNhY3Rpb24+IG1f
c3FsaXRlVHJhbnNhY3Rpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTg3OTMyKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OnNjaGVkdWxlRXhlCiAgICAgLy8gVGhlIG11dGV4IHByb3ZpZGVzIGEgbWVtb3J5IGJhcnJp
ZXIgdG8gZW5zdXJlIHRoYXQgb25jZQogICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVkdWxlZCwg
aXNFeGVjdXRpb25UZXJtaW5hdGluZyB3aWxsCiAgICAgLy8gYWNjdXJhdGVseSByZWZsZWN0IHRo
YXQgc3RhdGUgd2hlbiBjYWxsZWQgZnJvbSBhbm90aGVyIHRocmVhZC4KLSAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9zY2hlZHVsZWRUZXJtaW5hdGlvbk11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fc2NoZWR1bGVkVGVybWluYXRpb25NdXRleCk7CiAgICAgaWYgKG1f
dm0tPndhdGNoZG9nKQogICAgICAgICBtX3ZtLT53YXRjaGRvZy0+ZmlyZSgpOwogfQpAQCAtMTU4
LDcgKzE1OCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGUKIGJv
b2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25UZXJtaW5hdGluZygpIGNvbnN0
CiB7CiAgICAgLy8gU2VlIGNvbW1lbnRzIGluIHNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24g
cmVnYXJkaW5nIG11dGV4IHVzYWdlLgotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3NjaGVkdWxl
ZFRlcm1pbmF0aW9uTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9z
Y2hlZHVsZWRUZXJtaW5hdGlvbk11dGV4KTsKICAgICBpZiAobV92bS0+d2F0Y2hkb2cpCiAgICAg
ICAgIHJldHVybiBtX3ZtLT53YXRjaGRvZy0+ZGlkRmlyZSgpOwogICAgIHJldHVybiBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmgJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dv
cmtlckdsb2JhbFNjb3BlOwogICAgICAgICBKU0M6OlN0cm9uZzxKU1dvcmtlckdsb2JhbFNjb3Bl
PiBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcjsKICAgICAgICAgYm9vbCBtX2V4ZWN1dGlvbkZv
cmJpZGRlbjsKLSAgICAgICAgbXV0YWJsZSBNdXRleCBtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0
ZXg7CisgICAgICAgIG11dGFibGUgRGVwcmVjYXRlZE11dGV4IG1fc2NoZWR1bGVkVGVybWluYXRp
b25NdXRleDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuY3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVs
dC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcg
Kzg4LDcgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmRpc2VudGFuZ2xlKCkKIAogdm9pZCBN
ZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4gY2hhbm5lbHMpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX2NoYW5uZWwtPm1f
bXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fY2hhbm5lbC0+bV9tdXRl
eCk7CiAgICAgaWYgKCFtX2NoYW5uZWwtPm1fb3V0Z29pbmdRdWV1ZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGJvb2wgd2FzRW1wdHkgPSBtX2NoYW5uZWwtPm1fb3V0Z29pbmdRdWV1ZS0+YXBwZW5k
QW5kQ2hlY2tFbXB0eShzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
OjpFdmVudERhdGE+KG1lc3NhZ2UsIFdURjo6bW92ZShjaGFubmVscykpKTsKQEAgLTk4LDcgKzk4
LDcgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZQogCiBib29sIE1l
c3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4mIGNoYW5uZWxzKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9jaGFubmVsLT5t
X211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX2NoYW5uZWwtPm1fbXV0
ZXgpOwogICAgIGF1dG8gcmVzdWx0ID0gbV9jaGFubmVsLT5tX2luY29taW5nUXVldWUtPnRyeUdl
dE1lc3NhZ2UoKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTIxLDIwICsxMjEsMjAgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmNsb3NlKCkKIGJvb2wg
TWVzc2FnZVBvcnRDaGFubmVsOjppc0Nvbm5lY3RlZFRvKE1lc3NhZ2VQb3J0KiBwb3J0KQogewog
ICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVzdWx0IHJlbWFpbnMgdGhl
IHNhbWUgYWZ0ZXIgd2UgcmVsZWFzZSB0aGUgbG9jaz8KLSAgICBNdXRleExvY2tlciBsb2NrKG1f
Y2hhbm5lbC0+bV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9jaGFu
bmVsLT5tX211dGV4KTsKICAgICByZXR1cm4gbV9jaGFubmVsLT5tX3JlbW90ZVBvcnQgPT0gcG9y
dDsKIH0KIAogYm9vbCBNZXNzYWdlUG9ydENoYW5uZWw6Omhhc1BlbmRpbmdBY3Rpdml0eSgpCiB7
CiAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGF0IHRoZSByZXN1bHQgcmVtYWlucyB0
aGUgc2FtZSBhZnRlciB3ZSByZWxlYXNlIHRoZSBsb2NrPwotICAgIE11dGV4TG9ja2VyIGxvY2so
bV9jaGFubmVsLT5tX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX2No
YW5uZWwtPm1fbXV0ZXgpOwogICAgIHJldHVybiAhbV9jaGFubmVsLT5tX2luY29taW5nUXVldWUt
PmlzRW1wdHkoKTsKIH0KIAogTWVzc2FnZVBvcnQqIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6bG9jYWxs
eUVudGFuZ2xlZFBvcnQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrKG1fY2hhbm5lbC0+bV9tdXRleCk7CisgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2sobV9jaGFubmVsLT5tX211dGV4KTsKICAgICAvLyBTZWUgaWYgYm90
aCBjb250ZXh0cyBhcmUgcnVuIGJ5IHRoZSBzYW1lIHRocmVhZCAoYXJlIHRoZSBzYW1lIGNvbnRl
eHQsIG9yIGFyZSBib3RoIGRvY3VtZW50cykuCiAgICAgaWYgKG1fY2hhbm5lbC0+bV9yZW1vdGVQ
b3J0KSB7CiAgICAgICAgIC8vIFRoZSByZW1vdGUgcG9ydCdzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgaXMgZ3VhcmFudGVlZCBub3QgdG8gY2hhbmdlIGhlcmUgLSBNZXNzYWdlUG9ydDo6Y29udGV4
dERlc3Ryb3llZCgpCkBAIC0xNjQsNyArMTY0LDcgQEAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWw6On5QbGF0Zm9ybU1lcwogCiB2b2lkIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpzZXRS
ZW1vdGVQb3J0KE1lc3NhZ2VQb3J0KiBwb3J0KQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9t
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgLy8g
U2hvdWxkIG5ldmVyIHNldCBwb3J0IGlmIGl0IGlzIGFscmVhZHkgc2V0LgogICAgIEFTU0VSVCgh
cG9ydCB8fCAhbV9yZW1vdGVQb3J0KTsKICAgICBtX3JlbW90ZVBvcnQgPSBwb3J0OwpAQCAtMTc1
LDEzICsxNzUsMTMgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gUAog
ICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVzdWx0IHJlbWFpbnMgdGhl
IHNhbWUgYWZ0ZXIgd2UgcmVsZWFzZSB0aGUgbG9jaz8KICAgICAvLyBUaGlzIGxvY2sgb25seSBn
dWFyYW50ZWVzIHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgd2lsbCBub3QgYmUgcG9pbnRpbmcg
dG8gcmVsZWFzZWQgbWVtb3J5LAogICAgIC8vIGJ1dCBub3QgdGhhdCBpdCB3aWxsIHN0aWxsIGJl
IHBvaW50aW5nIHRvIHRoaXMgb2JqZWN0J3MgZW50YW5nbGVkIHBvcnQgY2hhbm5lbC4KLSAgICBN
dXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
KG1fbXV0ZXgpOwogICAgIHJldHVybiBtX2VudGFuZ2xlZENoYW5uZWw7CiB9CiAKIHZvaWQgUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNsb3NlSW50ZXJuYWwoKQogewotICAgIE11dGV4TG9j
a2VyIGxvY2sobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRl
eCk7CiAgICAgLy8gRGlzZW50YW5nbGUgb3Vyc2VsdmVzIGZyb20gdGhlIG90aGVyIGVuZC4gV2Ug
c3RpbGwgbWFpbnRhaW4gYSByZWZlcmVuY2UgdG8gb3VyIGluY29taW5nIHF1ZXVlLCBzaW5jZSBw
cmV2aW91c2x5LWV4aXN0aW5nIG1lc3NhZ2VzIHNob3VsZCBzdGlsbCBiZSBkZWxpdmVyZWQuCiAg
ICAgbV9yZW1vdGVQb3J0ID0gbnVsbHB0cjsKICAgICBtX2VudGFuZ2xlZENoYW5uZWwgPSBudWxs
cHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NSw4ICs5NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBz
ZXRSZW1vdGVQb3J0KE1lc3NhZ2VQb3J0Kik7CiAgICAgICAgIHZvaWQgY2xvc2VJbnRlcm5hbCgp
OwogCi0gICAgICAgIC8vIE11dGV4IHVzZWQgdG8gZW5zdXJlIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8g
dGhlIG9iamVjdCBpbnRlcm5hbHMuCi0gICAgICAgIE11dGV4IG1fbXV0ZXg7CisgICAgICAgIC8v
IERlcHJlY2F0ZWRNdXRleCB1c2VkIHRvIGVuc3VyZSBleGNsdXNpdmUgYWNjZXNzIHRvIHRoZSBv
YmplY3QgaW50ZXJuYWxzLgorICAgICAgICBEZXByZWNhdGVkTXV0ZXggbV9tdXRleDsKIAogICAg
ICAgICAvLyBQb2ludGVyIHRvIG91ciBlbnRhbmdsZWQgcGFpciAtIGNsZWFyZWQgd2hlbiBjbG9z
ZSgpIGlzIGNhbGxlZC4KICAgICAgICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
PiBtX2VudGFuZ2xlZENoYW5uZWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3ICsxODYs
NyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cmVtb3ZlQWxsSWNvbnMoKQogICAgIAogICAgIC8vIENs
ZWFyIHRoZSBpbi1tZW1vcnkgcmVjb3JkIG9mIGV2ZXJ5IEljb25SZWNvcmQsIGFueXRoaW5nIHdh
aXRpbmcgdG8gYmUgcmVhZCBmcm9tIGRpc2ssIGFuZCBhbnl0aGluZyB3YWl0aW5nIHRvIGJlIHdy
aXR0ZW4gdG8gZGlzawogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5k
SWNvbkxvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5k
SWNvbkxvY2spOwogICAgICAgICAKICAgICAgICAgLy8gQ2xlYXIgdGhlIEljb25SZWNvcmRzIGZv
ciBldmVyeSBwYWdlIFVSTCAtIFJlZkNvdW50aW5nIHdpbGwgY2F1c2UgdGhlIEljb25SZWNvcmRz
IHRoZW1zZWx2ZXMgdG8gYmUgZGVsZXRlZAogICAgICAgICAvLyBXZSBkb24ndCBkZWxldGUgdGhl
IGFjdHVhbCBQYWdlUmVjb3JkcyBiZWNhdXNlIHdlIGhhdmUgdGhlICJyZXRhaW4gaWNvbiBmb3Ig
dXJsIiBjb3VudCB0byBrZWVwIHRyYWNrIG9mCkBAIC0yMDAsMTQgKzIwMCwxNCBAQCB2b2lkIElj
b25EYXRhYmFzZTo6cmVtb3ZlQWxsSWNvbnMoKQogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgLy8gQ2xlYXIgYWxsIGluLW1lbW9yeSByZWNvcmRzIG9mIHRoaW5ncyB0aGF0IG5lZWQgdG8g
YmUgc3luY2VkIG91dCB0byBkaXNrCiAgICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3BlbmRpbmdTeW5jTG9jayk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKICAgICAgICAgICAgIG1fcGFnZVVSTHNQ
ZW5kaW5nU3luYy5jbGVhcigpOwogICAgICAgICAgICAgbV9pY29uc1BlbmRpbmdTeW5jLmNsZWFy
KCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIENsZWFyIGFsbCBpbi1tZW1vcnkg
cmVjb3JkcyBvZiB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIHJlYWQgaW4gZnJvbSBkaXNrCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9j
ayk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1Jl
YWRpbmdMb2NrKTsKICAgICAgICAgICAgIG1fcGFnZVVSTHNQZW5kaW5nSW1wb3J0LmNsZWFyKCk7
CiAgICAgICAgICAgICBtX3BhZ2VVUkxzSW50ZXJlc3RlZEluSWNvbnMuY2xlYXIoKTsKICAgICAg
ICAgICAgIG1faWNvbnNQZW5kaW5nUmVhZGluZy5jbGVhcigpOwpAQCAtMjI5LDcgKzIyOSw3IEBA
IEltYWdlKiBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzSWNvbkZvclAKICAgICBpZiAoIWlzT3Bl
bigpIHx8ICFkb2N1bWVudENhbkhhdmVJY29uKHBhZ2VVUkxPcmlnaW5hbCkpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOworICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7CiAKICAgICBw
ZXJmb3JtUGVuZGluZ1JldGFpbkFuZFJlbGVhc2VPcGVyYXRpb25zKCk7CiAgICAgCkBAIC0yNDUs
NyArMjQ1LDcgQEAgSW1hZ2UqIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9yUAogICAg
IC8vIDEgLSBUaGUgaW5pdGlhbCB1cmwgaW1wb3J0IGlzIGluY29tcGxldGUgYW5kIHRoaXMgcGFn
ZVVSTCB3YXMgbWFya2VkIHRvIGJlIG5vdGlmaWVkIG9uY2UgaXQgaXMgY29tcGxldGUgaWYgYW4g
aWNvblVSTCBleGlzdHMKICAgICAvLyAyIC0gVGhlIGluaXRpYWwgdXJsIGltcG9ydCBJUyBjb21w
bGV0ZSBhbmQgdGhpcyBwYWdlVVJMIGhhcyBubyBpY29uCiAgICAgaWYgKCFwYWdlUmVjb3JkKSB7
Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CisgICAg
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwog
ICAgICAgICAKICAgICAgICAgLy8gSW1wb3J0IGlzIG9uZ29pbmcsIHRoZXJlIG1pZ2h0IGJlIGFu
IGljb24uICBJbiB0aGlzIGNhc2UsIHJlZ2lzdGVyIHRvIGJlIG5vdGlmaWVkIHdoZW4gdGhlIGlj
b24gY29tZXMgaW4KICAgICAgICAgLy8gSWYgd2UgZXZlciByZWFjaCB0aGlzIGNvbmRpdGlvbiwg
d2Uga25vdyB3ZSd2ZSBhbHJlYWR5IG1hZGUgdGhlIHBhZ2VVUkwgY29weQpAQCAtMjc2LDcgKzI3
Niw3IEBAIEltYWdlKiBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzSWNvbkZvclAKICAgICAgICAg
aWYgKHBhZ2VVUkxDb3B5LmlzTnVsbCgpKQogICAgICAgICAgICAgcGFnZVVSTENvcHkgPSBwYWdl
VVJMT3JpZ2luYWwuaXNvbGF0ZWRDb3B5KCk7CiAgICAgCi0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwogICAgICAgICBtX3BhZ2VVUkxzSW50ZXJl
c3RlZEluSWNvbnMuYWRkKHBhZ2VVUkxDb3B5KTsKICAgICAgICAgbV9pY29uc1BlbmRpbmdSZWFk
aW5nLmFkZChpY29uUmVjb3JkKTsKICAgICAgICAgd2FrZVN5bmNUaHJlYWQoKTsKQEAgLTMwNyw3
ICszMDcsNyBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIgSWNvbkRhdGFiYXNlOjpzeW5jaHJvCiAgICAg
aWYgKCFpY29uKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X3VybEFuZEljb25Mb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJs
QW5kSWNvbkxvY2spOwogICAgIHJldHVybiBpY29uLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwogfQogCkBAIC0zMjksNyArMzI5LDcgQEAgU3RyaW5nIEljb25EYXRhYmFzZTo6c3luY2hy
b25vdXNJY29uVVJMRgogICAgIGlmICghaXNPcGVuKCkgfHwgIWRvY3VtZW50Q2FuSGF2ZUljb24o
cGFnZVVSTE9yaWdpbmFsKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICAKLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKICAgICAKICAgICBQYWdlVVJMUmVj
b3JkKiBwYWdlUmVjb3JkID0gbV9wYWdlVVJMVG9SZWNvcmRNYXAuZ2V0KHBhZ2VVUkxPcmlnaW5h
bCk7CiAgICAgaWYgKCFwYWdlUmVjb3JkKQpAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgSWNvbkRh
dGFiYXNlOjpyZXRhaW5JY29uRm9yUGFnZVVSTCgKICAgICAgICAgcmV0dXJuOwogCiAgICAgewot
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV91cmxzVG9SZXRhaW5PclJlbGVhc2VMb2NrKTsK
KyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3VybHNUb1JldGFpbk9yUmVs
ZWFzZUxvY2spOwogICAgICAgICBtX3VybHNUb1JldGFpbi5hZGQocGFnZVVSTC5pc29sYXRlZENv
cHkoKSk7CiAgICAgICAgIG1fcmV0YWluT3JSZWxlYXNlSWNvblJlcXVlc3RlZCA9IHRydWU7CiAg
ICAgfQpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtUmV0YWlu
SWNvbkZvclAKICAgICAgICAgaWYgKCFtX2ljb25VUkxJbXBvcnRDb21wbGV0ZSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xv
Y2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5bmNM
b2NrKTsKICAgICAgICAgLy8gSWYgdGhpcyBwYWdlVVJMIHdhaXRpbmcgdG8gYmUgc3luYydlZCwg
dXBkYXRlIHRoZSBzeW5jIHJlY29yZAogICAgICAgICAvLyBUaGlzIHNhdmVzIHVzIGluIHRoZSBj
YXNlIHdoZXJlIGEgcGFnZSB3YXMgcmVhZHkgdG8gYmUgZGVsZXRlZCBmcm9tIHRoZSBkYXRhYmFz
ZSBidXQgd2FzIGp1c3QgcmV0YWluZWQgLSBzbyB0aGVyZXMgbm8gbmVlZCB0byBkZWxldGUgaXQh
CiAgICAgICAgIGlmICghbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkICYmIG1fcGFnZVVSTHNQZW5k
aW5nU3luYy5jb250YWlucyhwYWdlVVJMKSkgewpAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgSWNv
bkRhdGFiYXNlOjpyZWxlYXNlSWNvbkZvclBhZ2VVUkwKICAgICAgICAgcmV0dXJuOwogCiAgICAg
ewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV91cmxzVG9SZXRhaW5PclJlbGVhc2VMb2Nr
KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3VybHNUb1JldGFpbk9y
UmVsZWFzZUxvY2spOwogICAgICAgICBtX3VybHNUb1JlbGVhc2UuYWRkKHBhZ2VVUkwuaXNvbGF0
ZWRDb3B5KCkpOwogICAgICAgICBtX3JldGFpbk9yUmVsZWFzZUljb25SZXF1ZXN0ZWQgPSB0cnVl
OwogICAgIH0KQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cGVyZm9ybVJl
bGVhc2VJY29uRm9yCiAgICAgQVNTRVJUKCFpY29uUmVjb3JkIHx8IChpY29uUmVjb3JkICYmIG1f
aWNvblVSTFRvUmVjb3JkTWFwLmdldChpY29uUmVjb3JkLT5pY29uVVJMKCkpID09IGljb25SZWNv
cmQpKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRp
bmdMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdS
ZWFkaW5nTG9jayk7CiAgICAgICAgIAogICAgICAgICAvLyBTaW5jZSB0aGlzIHBhZ2VVUkwgaXMg
Z29pbmcgYXdheSwgdGhlcmUncyBubyByZWFzb24gYW55b25lIHdvdWxkIGV2ZXIgYmUgaW50ZXJl
c3RlZCBpbiBpdHMgcmVhZCByZXN1bHRzICAgIAogICAgICAgICBpZiAoIW1faWNvblVSTEltcG9y
dENvbXBsZXRlKQpAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3Jt
UmVsZWFzZUljb25Gb3IKICAgICAKICAgICAvLyBNYXJrIHN0dWZmIGZvciBkZWxldGlvbiBmcm9t
IHRoZSBkYXRhYmFzZSBvbmx5IGlmIHdlJ3JlIG5vdCBpbiBwcml2YXRlIGJyb3dzaW5nCiAgICAg
aWYgKCFtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX3BlbmRpbmdTeW5jTG9jayk7CiAgICAgICAgIG1fcGFnZVVSTHNQZW5kaW5nU3luYy5z
ZXQocGFnZVVSTE9yaWdpbmFsLmlzb2xhdGVkQ29weSgpLCBwYWdlUmVjb3JkLT5zbmFwc2hvdCh0
cnVlKSk7CiAgICAgCiAgICAgICAgIC8vIElmIHRoaXMgcGFnZSBpcyB0aGUgbGFzdCBwYWdlIHRv
IHJlZmVyIHRvIGEgcGFydGljdWxhciBJY29uUmVjb3JkLCB0aGF0IEljb25SZWNvcmQgbmVlZHMg
dG8KQEAgLTU0OCwxMiArNTQ4LDEyIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZv
ckljb25VUkwKICAgICAKICAgICBWZWN0b3I8U3RyaW5nPiBwYWdlVVJMczsKICAgICB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKyAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKICAgICAKICAgICAgICAg
Ly8gSWYgdGhpcyBpY29uIHdhcyBwZW5kaW5nIGEgcmVhZCwgcmVtb3ZlIGl0IGZyb20gdGhhdCBz
ZXQgYmVjYXVzZSB0aGlzIG5ldyBkYXRhIHNob3VsZCBvdmVycmlkZSB3aGF0IGlzIG9uIGRpc2sK
ICAgICAgICAgUmVmUHRyPEljb25SZWNvcmQ+IGljb24gPSBtX2ljb25VUkxUb1JlY29yZE1hcC5n
ZXQoaWNvblVSTCk7CiAgICAgICAgIGlmIChpY29uKSB7Ci0gICAgICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOworICAgICAgICAgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CiAgICAgICAgICAgICBtX2lj
b25zUGVuZGluZ1JlYWRpbmcucmVtb3ZlKGljb24uZ2V0KCkpOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIGljb24gPSBnZXRPckNyZWF0ZUljb25SZWNvcmQoaWNvblVSTCk7CkBAIC01Njcs
NyArNTY3LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25EYXRhRm9ySWNvblVSTAogICAg
ICAgICAKICAgICAgICAgLy8gTWFyayB0aGUgSWNvblJlY29yZCBhcyByZXF1aXJpbmcgYW4gdXBk
YXRlIHRvIHRoZSBkYXRhYmFzZSBvbmx5IGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZGlzYWJsZWQK
ICAgICAgICAgaWYgKCFtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdTeW5jTG9jayk7CisgICAgICAgICAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKICAgICAgICAgICAgIG1f
aWNvbnNQZW5kaW5nU3luYy5zZXQoaWNvblVSTCwgaWNvbi0+c25hcHNob3QoKSk7CiAgICAgICAg
IH0KIApAQCAtNjA4LDcgKzYwOCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uVVJMRm9y
UGFnZVVSTCgKICAgICBTdHJpbmcgaWNvblVSTCwgcGFnZVVSTDsKICAgICAKICAgICB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKyAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKIAogICAgICAgICBQYWdl
VVJMUmVjb3JkKiBwYWdlUmVjb3JkID0gbV9wYWdlVVJMVG9SZWNvcmRNYXAuZ2V0KHBhZ2VVUkxP
cmlnaW5hbCk7CiAgICAgICAgIApAQCAtNjM2LDEzICs2MzYsMTMgQEAgdm9pZCBJY29uRGF0YWJh
c2U6OnNldEljb25VUkxGb3JQYWdlVVJMKAogICAgICAgICAgICAgQVNTRVJUKGljb25SZWNvcmQt
PnJldGFpbmluZ1BhZ2VVUkxzKCkuc2l6ZSgpID09IDApOwogICAgICAgICAgICAgTE9HKEljb25E
YXRhYmFzZSwgIkljb24gZm9yIGljb24gdXJsICVzIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZCAt
IHJlbW92aW5nIG1hcHBpbmcgZm9yIGl0IiwgdXJsRm9yTG9nZ2luZyhpY29uUmVjb3JkLT5pY29u
VVJMKCkpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIG1faWNvblVSTFRvUmVjb3JkTWFw
LnJlbW92ZShpY29uUmVjb3JkLT5pY29uVVJMKCkpOwotICAgICAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwogICAgICAgICAgICAgbV9pY29u
c1BlbmRpbmdSZWFkaW5nLnJlbW92ZShpY29uUmVjb3JkLmdldCgpKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgLy8gQW5kIG1hcmsgdGhpcyBtYXBwaW5nIHRvIGJlIGFkZGVkIHRvIHRo
ZSBkYXRhYmFzZQogICAgICAgICBpZiAoIW1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewotICAg
ICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKKyAgICAgICAg
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2spOwogICAg
ICAgICAgICAgbV9wYWdlVVJMc1BlbmRpbmdTeW5jLnNldChwYWdlVVJMLCBwYWdlUmVjb3JkLT5z
bmFwc2hvdCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gSWYgdGhlIGljb24gaXMg
b24gaXRzIGxhc3QgcmVmLCBtYXJrIGl0IGZvciBkZWxldGlvbgpAQCAtNjc0LDcgKzY3NCw3IEBA
IEljb25Mb2FkRGVjaXNpb24gSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm8KICAgICAvLyAxIC0gV2hl
biB3ZSByZWFkIHRoZSBpY29uIHVybHMgZnJvbSBkaXNrLCBnZXR0aW5nIHRoZSB0aW1lU3RhbXAg
YXQgdGhlIHNhbWUgdGltZQogICAgIC8vIDIgLSBXaGVuIHdlIGdldCBhIG5ldyBpY29uIGZyb20g
dGhlIGxvYWRlciwgaW4gd2hpY2ggY2FzZSB0aGUgdGltZXN0YW1wIGlzIHNldCBhdCB0aGF0IHRp
bWUKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsK
KyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsK
ICAgICAgICAgaWYgKEljb25SZWNvcmQqIGljb24gPSBtX2ljb25VUkxUb1JlY29yZE1hcC5nZXQo
aWNvblVSTCkpIHsKICAgICAgICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJGb3VuZCBleHBpcmF0
aW9uIHRpbWUgb24gYSBwcmVzZW50IGljb24gYmFzZWQgb24gZXhpc3RpbmcgSWNvblJlY29yZCIp
OwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oY3VycmVudFRpbWUoKSkgLSBz
dGF0aWNfY2FzdDxpbnQ+KGljb24tPmdldFRpbWVzdGFtcCgpKSA+IGljb25FeHBpcmF0aW9uVGlt
ZSA/IEljb25Mb2FkWWVzIDogSWNvbkxvYWRObzsKQEAgLTY4Miw3ICs2ODIsNyBAQCBJY29uTG9h
ZERlY2lzaW9uIEljb25EYXRhYmFzZTo6c3luY2hyb25vCiAgICAgfQogICAgIAogICAgIC8vIElm
IHdlIGRvbid0IGhhdmUgYSByZWNvcmQgZm9yIGl0LCBidXQgd2UgKmhhdmUqIGltcG9ydGVkIGFs
bCBpY29uVVJMcyBmcm9tIGRpc2ssIHRoZW4gd2Ugc2hvdWxkIGxvYWQgaXQgbm93Ci0gICAgTXV0
ZXhMb2NrZXIgcmVhZGluZ0xvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CisgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIHJlYWRpbmdMb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwogICAg
IGlmIChtX2ljb25VUkxJbXBvcnRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuIEljb25Mb2FkWWVz
OwogICAgICAgICAKQEAgLTY5OSw3ICs2OTksNyBAQCBib29sIEljb25EYXRhYmFzZTo6c3luY2hy
b25vdXNJY29uRGF0YUtuCiB7CiAgICAgQVNTRVJUX05PVF9TWU5DX1RIUkVBRCgpOwogICAgIAot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogICAgIGlmIChJY29uUmVjb3Jk
KiBpY29uID0gbV9pY29uVVJMVG9SZWNvcmRNYXAuZ2V0KGljb25VUkwpKQogICAgICAgICByZXR1
cm4gaWNvbi0+aW1hZ2VEYXRhU3RhdHVzKCkgIT0gSW1hZ2VEYXRhU3RhdHVzVW5rbm93bjsKIApA
QCAtNzU0LDI2ICs3NTQsMjYgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNoZWNrSW50ZWdyaXR5QmVm
b3JlTwogCiBzaXplX3QgSWNvbkRhdGFiYXNlOjpwYWdlVVJMTWFwcGluZ0NvdW50KCkKIHsKLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKICAgICByZXR1cm4gbV9wYWdlVVJM
VG9SZWNvcmRNYXAuc2l6ZSgpOwogfQogCiBzaXplX3QgSWNvbkRhdGFiYXNlOjpyZXRhaW5lZFBh
Z2VVUkxDb3VudCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2sp
OworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7CiAg
ICAgcGVyZm9ybVBlbmRpbmdSZXRhaW5BbmRSZWxlYXNlT3BlcmF0aW9ucygpOwogICAgIHJldHVy
biBtX3JldGFpbmVkUGFnZVVSTHMuc2l6ZSgpOwogfQogCiBzaXplX3QgSWNvbkRhdGFiYXNlOjpp
Y29uUmVjb3JkQ291bnQoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25M
b2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2sp
OwogICAgIHJldHVybiBtX2ljb25VUkxUb1JlY29yZE1hcC5zaXplKCk7CiB9CiAKIHNpemVfdCBJ
Y29uRGF0YWJhc2U6Omljb25SZWNvcmRDb3VudFdpdGhEYXRhKCkKIHsKLSAgICBNdXRleExvY2tl
ciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX3VybEFuZEljb25Mb2NrKTsKICAgICBzaXplX3QgcmVzdWx0ID0gMDsKICAgICAKICAg
ICBIYXNoTWFwPFN0cmluZywgSWNvblJlY29yZCo+OjppdGVyYXRvciBpID0gbV9pY29uVVJMVG9S
ZWNvcmRNYXAuYmVnaW4oKTsKQEAgLTgyOSw3ICs4MjksNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6
bm90aWZ5UGVuZGluZ0xvYWREZWNpCiAKIHZvaWQgSWNvbkRhdGFiYXNlOjp3YWtlU3luY1RocmVh
ZCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOworICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CiAKICAgICBpZiAoIW1fZGlzYWJsZVN1
ZGRlblRlcm1pbmF0aW9uV2hpbGVTeW5jVGhyZWFkSGFzV29ya1RvRG8pCiAgICAgICAgIG1fZGlz
YWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVTeW5jVGhyZWFkSGFzV29ya1RvRG8gPSBzdGQ6Om1h
a2VfdW5pcXVlPFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXI+KCk7CkBAIC04NzQsMTMgKzg3NCwx
MyBAQCBib29sIEljb25EYXRhYmFzZTo6aXNPcGVuKCkgY29uc3QKIAogYm9vbCBJY29uRGF0YWJh
c2U6OmlzT3BlbkJlc2lkZXNNYWluVGhyZWFkQ2FsbGJhY2tzKCkgY29uc3QKIHsKLSAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2tlcihtX3N5bmNMb2NrKTsKICAgICByZXR1cm4gbV9zeW5jVGhyZWFkUnVubmluZyB8fCBtX3N5
bmNEQi5pc09wZW4oKTsKIH0KIAogU3RyaW5nIEljb25EYXRhYmFzZTo6ZGF0YWJhc2VQYXRoKCkg
Y29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CisgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKICAgICByZXR1cm4gbV9jb21wbGV0
ZURhdGFiYXNlUGF0aC5pc29sYXRlZENvcHkoKTsKIH0KIApAQCAtOTE2LDcgKzkxNiw3IEBAIFBh
Z2VVUkxSZWNvcmQqIEljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGUKIAogICAgIFBhZ2VVUkxSZWNv
cmQqIHBhZ2VSZWNvcmQgPSBtX3BhZ2VVUkxUb1JlY29yZE1hcC5nZXQocGFnZVVSTCk7CiAgICAg
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKICAgICBpZiAo
IW1faWNvblVSTEltcG9ydENvbXBsZXRlKSB7CiAgICAgICAgIC8vIElmIHRoZSBpbml0aWFsIGlt
cG9ydCBvZiBhbGwgVVJMcyBoYXNuJ3QgY29tcGxldGVkIGFuZCB3ZSBoYXZlIG5vIHBhZ2UgcmVj
b3JkLCB3ZSBhc3N1bWUgd2UgKm1pZ2h0KiBrbm93IGFib3V0IHRoaXMgbGF0ZXIgYW5kIGNyZWF0
ZSBhIHJlY29yZCBmb3IgaXQKICAgICAgICAgaWYgKCFwYWdlUmVjb3JkKSB7CkBAIC05ODUsNyAr
OTg1LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYQogICAgIH0K
ICAgICAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKKyAg
ICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKICAgICAgICAg
aWYgKCFtX3N5bmNEQi5vcGVuKG1fY29tcGxldGVEYXRhYmFzZVBhdGgpKSB7CiAgICAgICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBvcGVuIGljb24gZGF0YWJhc2UgYXQgcGF0aCAlcyAtICVz
IiwgbV9jb21wbGV0ZURhdGFiYXNlUGF0aC5hc2NpaSgpLmRhdGEoKSwgbV9zeW5jREIubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTExMyw3ICsxMTEzLDcgQEAgdm9p
ZCBJY29uRGF0YWJhc2U6OnBlcmZvcm1PcGVuSW5pdGlhbGl6YQogICAgICAgICAgICAgbV9zeW5j
REIuY2xvc2UoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKKyAgICAgICAgICAgICAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgICAgICAgICAgICAgIC8vIFNo
b3VsZCd2ZSBiZWVuIGNvbnN1bWVkIGJ5IFNRTGl0ZSwgZGVsZXRlIGp1c3QgdG8gbWFrZSBzdXJl
IHdlIGRvbid0IHNlZSBpdCBhZ2FpbiBpbiB0aGUgZnV0dXJlOwogICAgICAgICAgICAgICAgIGRl
bGV0ZUZpbGUobV9jb21wbGV0ZURhdGFiYXNlUGF0aCArICItam91cm5hbCIpOwogICAgICAgICAg
ICAgICAgIGRlbGV0ZUZpbGUobV9jb21wbGV0ZURhdGFiYXNlUGF0aCk7CkBAIC0xMjE1LDcgKzEy
MTUsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cGVyZm9ybVVSTEltcG9ydCgpCiAgICAgICAgIFN0
cmluZyBpY29uVVJMID0gcXVlcnkuZ2V0Q29sdW1uVGV4dCgxKTsKIAogICAgICAgICB7Ci0gICAg
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7CisgICAgICAgICAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOwogCiAgICAg
ICAgICAgICBQYWdlVVJMUmVjb3JkKiBwYWdlUmVjb3JkID0gbV9wYWdlVVJMVG9SZWNvcmRNYXAu
Z2V0KHBhZ2VVUkwpOwogICAgICAgICAgICAgCkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCB2b2lkIElj
b25EYXRhYmFzZTo6cGVyZm9ybVVSTEltcG9ydCgpCiAgICAgICAgIC8vIG9uZSBmb3IgdGhlIFVS
TCBhbmQgb25lIGZvciB0aGUgSW1hZ2UgaXRzZWxmCiAgICAgICAgIC8vIE5vdGUgdGhhdCBXZWJJ
Y29uRGF0YWJhc2UgaXMgbm90IG5lY2Nlc3NhcmlseSBBUEkgc28gd2UgbWlnaHQgYmUgYWJsZSB0
byBtYWtlIHRoaXMgY2hhbmdlCiAgICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKICAgICAgICAgICAgIGlmIChtX3Bh
Z2VVUkxzUGVuZGluZ0ltcG9ydC5jb250YWlucyhwYWdlVVJMKSkgewogICAgICAgICAgICAgICAg
IGRpc3BhdGNoRGlkSW1wb3J0SWNvblVSTEZvclBhZ2VVUkxPbk1haW5UaHJlYWQocGFnZVVSTCk7
CiAgICAgICAgICAgICAgICAgbV9wYWdlVVJMc1BlbmRpbmdJbXBvcnQucmVtb3ZlKHBhZ2VVUkwp
OwpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBlcmZvcm1VUkxJbXBv
cnQoKQogICAgIC8vIGJ1dCBhZnRlciBtX2ljb25VUkxJbXBvcnRDb21wbGV0ZSBpcyBzZXQgdG8g
dHJ1ZSwgd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGlzIHNldCBhbnltb3JlCiAgICAgVmVjdG9yPFN0
cmluZz4gdXJsczsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdS
ZWFkaW5nTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5k
aW5nUmVhZGluZ0xvY2spOwogCiAgICAgICAgIHVybHMuYXBwZW5kUmFuZ2UobV9wYWdlVVJMc1Bl
bmRpbmdJbXBvcnQuYmVnaW4oKSwgbV9wYWdlVVJMc1BlbmRpbmdJbXBvcnQuZW5kKCkpOwogICAg
ICAgICBtX3BhZ2VVUkxzUGVuZGluZ0ltcG9ydC5jbGVhcigpOyAgICAgICAgCkBAIC0xMjg0LDcg
KzEyODQsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cGVyZm9ybVVSTEltcG9ydCgpCiAgICAgLy8g
UmVtb3ZlIHVucmV0YWluZWQgb25lcyBpZiBkYXRhYmFzZSBjbGVhbnVwIGlzIGFsbG93ZWQKICAg
ICAvLyBLZWVwIGEgc2V0IG9mIG9uZXMgdGhhdCBhcmUgcmV0YWluZWQgYW5kIHBlbmRpbmcgbm90
aWZpY2F0aW9uCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29u
TG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29u
TG9jayk7CiAKICAgICAgICAgcGVyZm9ybVBlbmRpbmdSZXRhaW5BbmRSZWxlYXNlT3BlcmF0aW9u
cygpOwogCkBAIC0xMzAxLDEyICsxMzAxLDEyIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3Jt
VVJMSW1wb3J0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIG1faWNvblVSTFRvUmVjb3JkTWFw
LnJlbW92ZShpY29uUmVjb3JkLT5pY29uVVJMKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRp
bmdMb2NrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2VVUkxzSW50ZXJlc3Rl
ZEluSWNvbnMucmVtb3ZlKHVybHNbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
aWNvbnNQZW5kaW5nUmVhZGluZy5yZW1vdmUoaWNvblJlY29yZCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1N5bmNMb2NrKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGlu
Z1N5bmNMb2NrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ljb25zUGVuZGluZ1N5
bmMuc2V0KGljb25SZWNvcmQtPmljb25VUkwoKSwgaWNvblJlY29yZC0+c25hcHNob3QodHJ1ZSkp
OyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIH0KQEAgLTEzNzEsNyArMTM3MSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpz
eW5jVGhyZWFkTWFpbkxvb3AoKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgewotICAg
ICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2spOworICAgICAgICAg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKICAgICAg
ICAgICAgIHBlcmZvcm1QZW5kaW5nUmV0YWluQW5kUmVsZWFzZU9wZXJhdGlvbnMoKTsKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTE0NTEsNyArMTQ1MSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpw
ZXJmb3JtUGVuZGluZ1JldGFpbkEKICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IHRvUmVsZWFz
ZTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgcGVuZGluZ1dvcmtMb2NrZXIobV91cmxz
VG9SZXRhaW5PclJlbGVhc2VMb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIHBl
bmRpbmdXb3JrTG9ja2VyKG1fdXJsc1RvUmV0YWluT3JSZWxlYXNlTG9jayk7CiAgICAgICAgIGlm
ICghbV9yZXRhaW5PclJlbGVhc2VJY29uUmVxdWVzdGVkKQogICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC0xNDg4LDcgKzE0ODgsNyBAQCBib29sIEljb25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFz
ZSgpCiAgICAgLy8gVGhpcyB3YXkgd2Ugd29uJ3QgaG9sZCB0aGUgbG9jayBmb3IgYSBsb25nIHBl
cmlvZCBvZiB0aW1lCiAgICAgVmVjdG9yPEljb25SZWNvcmQqPiBpY29uczsKICAgICB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdSZWFkaW5nTG9jayk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOwogICAgICAg
ICBpY29ucy5hcHBlbmRSYW5nZShtX2ljb25zUGVuZGluZ1JlYWRpbmcuYmVnaW4oKSwgbV9pY29u
c1BlbmRpbmdSZWFkaW5nLmVuZCgpKTsKICAgICB9CiAgICAgCkBAIC0xNTAxLDkgKzE1MDEsOSBA
QCBib29sIEljb25EYXRhYmFzZTo6cmVhZEZyb21EYXRhYmFzZSgpCiAKICAgICAgICAgLy8gVmVy
aWZ5IHRoaXMgaWNvbiBzdGlsbCB3YW50cyB0byBiZSByZWFkIGZyb20gZGlzawogICAgICAgICB7
Ci0gICAgICAgICAgICBNdXRleExvY2tlciB1cmxMb2NrZXIobV91cmxBbmRJY29uTG9jayk7Cisg
ICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgdXJsTG9ja2VyKG1fdXJsQW5kSWNvbkxv
Y2spOwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE11dGV4TG9ja2VyIHJlYWRMb2Nr
ZXIobV9wZW5kaW5nUmVhZGluZ0xvY2spOworICAgICAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciByZWFkTG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdMb2NrKTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBpZiAobV9pY29uc1BlbmRpbmdSZWFkaW5nLmNvbnRhaW5zKGlj
b25zW2ldKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIG5ldyBkYXRhCkBAIC0x
NTkxLDExICsxNTkxLDExIEBAIGJvb2wgSWNvbkRhdGFiYXNlOjp3cml0ZVRvRGF0YWJhc2UoKQog
ICAgIC8vIHdlJ2xsIHBpY2sgaXQgdXAgb24gdGhlIG5leHQgcGFzcy4gIFRoaXMgZ3JlYXRseSBz
aW1wbGlmaWVzIHRoZSBsb2NraW5nIHN0cmF0ZWd5IGZvciB0aGlzIG1ldGhvZCBhbmQgcmVtYWlu
cyBjb2hlc2l2ZSB3aXRoIGNoYW5nZXMKICAgICAvLyBhc2tlZCBmb3IgYnkgdGhlIGRhdGFiYXNl
IG9uIHRoZSBtYWluIHRocmVhZAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
dXJsQW5kSWNvbkxvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
dXJsQW5kSWNvbkxvY2spOwogICAgICAgICBWZWN0b3I8SWNvblNuYXBzaG90PiBpY29uU25hcHNo
b3RzOwogICAgICAgICBWZWN0b3I8UGFnZVVSTFNuYXBzaG90PiBwYWdlU25hcHNob3RzOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9wZW5kaW5nU3luY0xvY2sp
OworICAgICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3BlbmRpbmdTeW5j
TG9jayk7CiAKICAgICAgICAgICAgIGljb25TbmFwc2hvdHMuYXBwZW5kUmFuZ2UobV9pY29uc1Bl
bmRpbmdTeW5jLmJlZ2luKCkudmFsdWVzKCksIG1faWNvbnNQZW5kaW5nU3luYy5lbmQoKS52YWx1
ZXMoKSk7CiAgICAgICAgICAgICBtX2ljb25zUGVuZGluZ1N5bmMuY2xlYXIoKTsKQEAgLTE2NTgs
NyArMTY1OCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwcnVuZVVucmV0YWluZWRJY29ucygKICAg
ICAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gcGFnZVNRTC5zdGVwKCkp
ID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNv
bkxvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNv
bkxvY2spOwogICAgICAgICBpZiAoIW1fcGFnZVVSTFRvUmVjb3JkTWFwLmNvbnRhaW5zKHBhZ2VT
UUwuZ2V0Q29sdW1uVGV4dCgxKSkpCiAgICAgICAgICAgICBwYWdlSURzVG9EZWxldGUuYXBwZW5k
KHBhZ2VTUUwuZ2V0Q29sdW1uSW50NjQoMCkpOwogICAgIH0KQEAgLTE3OTEsNyArMTc5MSw3IEBA
IHZvaWQqIEljb25EYXRhYmFzZTo6Y2xlYW51cFN5bmNUaHJlYWQoKQogICAgIHdyaXRlVG9EYXRh
YmFzZSgpOwogICAgIAogICAgIC8vIENsb3NlIHRoZSBkYXRhYmFzZQotICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3N5bmNMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
c3luY0xvY2spOwogICAgIAogICAgIG1fZGF0YWJhc2VEaXJlY3RvcnkgPSBTdHJpbmcoKTsKICAg
ICBtX2NvbXBsZXRlRGF0YWJhc2VQYXRoID0gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
MSw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0VuYWJsZWQ7CiAgICAgYm9vbCBt
X3ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CiAKLSAgICBtdXRhYmxlIE11dGV4IG1fc3luY0xvY2s7
CisgICAgbXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9zeW5jTG9jazsKICAgICBUaHJlYWRDb25k
aXRpb24gbV9zeW5jQ29uZGl0aW9uOwogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5Owog
ICAgIC8vIEhvbGRpbmcgbV9zeW5jTG9jayBpcyByZXF1aXJlZCB3aGVuIGFjY2Vzc2luZyBtX2Nv
bXBsZXRlRGF0YWJhc2VQYXRoCkBAIC0xNTMsMjQgKzE1MywyNCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9zeW5jVGhyZWFkSGFzV29ya1RvRG87CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN1ZGRlblRl
cm1pbmF0aW9uRGlzYWJsZXI+IG1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVTeW5jVGhy
ZWFkSGFzV29ya1RvRG87CiAKLSAgICBNdXRleCBtX3VybEFuZEljb25Mb2NrOworICAgIERlcHJl
Y2F0ZWRNdXRleCBtX3VybEFuZEljb25Mb2NrOwogICAgIC8vIEhvbGRpbmcgbV91cmxBbmRJY29u
TG9jayBpcyByZXF1aXJlZCB3aGVuIGFjY2Vzc2luZyBhbnkgb2YgdGhlIGZvbGxvd2luZyBkYXRh
IHN0cnVjdHVyZXMgb3IgdGhlIG9iamVjdHMgdGhleSBjb250YWluCiAgICAgSGFzaE1hcDxTdHJp
bmcsIEljb25SZWNvcmQqPiBtX2ljb25VUkxUb1JlY29yZE1hcDsKICAgICBIYXNoTWFwPFN0cmlu
ZywgUGFnZVVSTFJlY29yZCo+IG1fcGFnZVVSTFRvUmVjb3JkTWFwOwogICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX3JldGFpbmVkUGFnZVVSTHM7CiAKLSAgICBNdXRleCBtX3BlbmRpbmdTeW5jTG9jazsK
KyAgICBEZXByZWNhdGVkTXV0ZXggbV9wZW5kaW5nU3luY0xvY2s7CiAgICAgLy8gSG9sZGluZyBt
X3BlbmRpbmdTeW5jTG9jayBpcyByZXF1aXJlZCB3aGVuIGFjY2Vzc2luZyBhbnkgb2YgdGhlIGZv
bGxvd2luZyBkYXRhIHN0cnVjdHVyZXMKICAgICBIYXNoTWFwPFN0cmluZywgUGFnZVVSTFNuYXBz
aG90PiBtX3BhZ2VVUkxzUGVuZGluZ1N5bmM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIEljb25TbmFw
c2hvdD4gbV9pY29uc1BlbmRpbmdTeW5jOwogICAgIAotICAgIE11dGV4IG1fcGVuZGluZ1JlYWRp
bmdMb2NrOyAgICAKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9wZW5kaW5nUmVhZGluZ0xvY2s7ICAg
IAogICAgIC8vIEhvbGRpbmcgbV9wZW5kaW5nU3luY0xvY2sgaXMgcmVxdWlyZWQgd2hlbiBhY2Nl
c3NpbmcgYW55IG9mIHRoZSBmb2xsb3dpbmcgZGF0YSBzdHJ1Y3R1cmVzIC0gd2hlbiBkZWFsaW5n
IHdpdGggSWNvblJlY29yZCpzLCBob2xkaW5nIG1fdXJsQW5kSWNvbkxvY2sgaXMgYWxzbyByZXF1
aXJlZAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3BhZ2VVUkxzUGVuZGluZ0ltcG9ydDsKICAgICBI
YXNoU2V0PFN0cmluZz4gbV9wYWdlVVJMc0ludGVyZXN0ZWRJbkljb25zOwogICAgIEhhc2hTZXQ8
SWNvblJlY29yZCo+IG1faWNvbnNQZW5kaW5nUmVhZGluZzsKIAotICAgIE11dGV4IG1fdXJsc1Rv
UmV0YWluT3JSZWxlYXNlTG9jazsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV91cmxzVG9SZXRhaW5P
clJlbGVhc2VMb2NrOwogICAgIC8vIEhvbGRpbmcgbV91cmxzVG9SZXRhaW5PclJlbGVhc2VMb2Nr
IGlzIHJlcXVpcmVkIHdoZW4gYWNjZXNzaW5nIGFueSBvZiB0aGUgZm9sbG93aW5nIGRhdGEgc3Ry
dWN0dXJlcy4KICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IG1fdXJsc1RvUmV0YWluOwogICAg
IEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV91cmxzVG9SZWxlYXNlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAJKHJldmlzaW9uIDE4
NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIFNjcm9sbGluZ1RyZWU6On5TY3JvbGxp
bmdUcmVlKCkKIGJvb2wgU2Nyb2xsaW5nVHJlZTo6c2hvdWxkSGFuZGxlV2hlZWxFdmVudFN5bmNo
cm9ub3VzbHkoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewogICAgIC8v
IFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgdGhlIGV2ZW50IGhhbmRsaW5nIHRocmVhZAotICAg
IE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2sobV9tdXRleCk7CiAKICAgICBib29sIHNob3VsZFNldExhdGNoID0gd2hlZWxFdmVudC5zaG91
bGRDb25zaWRlckxhdGNoaW5nKCk7CiAgICAgCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlOjpjb21taXROZXdUcmVlU3RhdGUocwogICAgICAgICAmJiAocm9vdFN0YXRlTm9k
ZUNoYW5nZWQKICAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKQog
ICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlNjcm9sbExheWVyKSkpIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4
KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAKICAgICAg
ICAgaWYgKHJvb3RTdGF0ZU5vZGVDaGFuZ2VkIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCiAgICAgICAgICAgICBtX21haW5G
cmFtZVNjcm9sbFBvc2l0aW9uID0gRmxvYXRQb2ludCgpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIFNj
cm9sbGluZ1RyZWVOb2RlKiBTY3JvbGxpbmdUcmVlOjpub2RlRm8KIAogdm9pZCBTY3JvbGxpbmdU
cmVlOjpzZXRNYWluRnJhbWVQaW5TdGF0ZShib29sIHBpbm5lZFRvVGhlTGVmdCwgYm9vbCBwaW5u
ZWRUb1RoZVJpZ2h0LCBib29sIHBpbm5lZFRvVGhlVG9wLCBib29sIHBpbm5lZFRvVGhlQm90dG9t
KQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N3aXBlU3RhdGVNdXRleCk7CisgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3N3aXBlU3RhdGVNdXRleCk7CiAKICAgICBtX21h
aW5GcmFtZVBpbm5lZFRvVGhlTGVmdCA9IHBpbm5lZFRvVGhlTGVmdDsKICAgICBtX21haW5GcmFt
ZVBpbm5lZFRvVGhlUmlnaHQgPSBwaW5uZWRUb1RoZVJpZ2h0OwpAQCAtMjE4LDU0ICsyMTgsNTQg
QEAgdm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRNYWluRnJhbWVQaW5TdGF0ZQogCiBGbG9hdFBvaW50
IFNjcm9sbGluZ1RyZWU6Om1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBNdXRleExv
Y2tlciBsb2NrKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0
ZXgpOwogICAgIHJldHVybiBtX21haW5GcmFtZVNjcm9sbFBvc2l0aW9uOwogfQogCiB2b2lkIFNj
cm9sbGluZ1RyZWU6OnNldE1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKEZsb2F0UG9pbnQgcG9zaXRp
b24pCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICBtX21haW5GcmFtZVNjcm9sbFBvc2l0aW9uID0g
cG9zaXRpb247CiB9CiAKIGJvb2wgU2Nyb2xsaW5nVHJlZTo6aXNQb2ludEluTm9uRmFzdFNjcm9s
bGFibGVSZWdpb24oSW50UG9pbnQgcCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgp
OworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgIAogICAgIHJl
dHVybiBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLmNvbnRhaW5zKHApOwogfQogCiBib29sIFNj
cm9sbGluZ1RyZWU6OmlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKQogewotICAgIE11dGV4TG9ja2Vy
IGxvY2sobV9tdXRleCk7ICAgIAorICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0
ZXgpOyAgICAKIAogICAgIHJldHVybiBtX21haW5GcmFtZUlzUnViYmVyQmFuZGluZzsKIH0KIAog
dm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRNYWluRnJhbWVJc1J1YmJlckJhbmRpbmcoYm9vbCBpc1J1
YmJlckJhbmRpbmcpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAKICAgICBtX21haW5GcmFtZUlz
UnViYmVyQmFuZGluZyA9IGlzUnViYmVyQmFuZGluZzsKIH0KIAogYm9vbCBTY3JvbGxpbmdUcmVl
Ojppc1Njcm9sbFNuYXBJblByb2dyZXNzKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0
ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgIAogICAg
IHJldHVybiBtX21haW5GcmFtZUlzU2Nyb2xsU25hcHBpbmc7CiB9CiAgICAgCiB2b2lkIFNjcm9s
bGluZ1RyZWU6OnNldE1haW5GcmFtZUlzU2Nyb2xsU25hcHBpbmcoYm9vbCBpc1Njcm9sbFNuYXBw
aW5nKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAgIAogICAgIG1fbWFpbkZyYW1lSXNTY3Jv
bGxTbmFwcGluZyA9IGlzU2Nyb2xsU25hcHBpbmc7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6
c2V0Q2FuUnViYmVyQmFuZFN0YXRlKGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5S
dWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVy
QmFuZEF0Qm90dG9tKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N3aXBlU3RhdGVNdXRl
eCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3N3aXBlU3RhdGVNdXRleCk7
CiAKICAgICBtX3J1YmJlckJhbmRzQXRMZWZ0ID0gY2FuUnViYmVyQmFuZEF0TGVmdDsKICAgICBt
X3J1YmJlckJhbmRzQXRSaWdodCA9IGNhblJ1YmJlckJhbmRBdFJpZ2h0OwpAQCAtMjc1LDI4ICsy
NzUsMjggQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRDYW5SdWJiZXJCYW5kU3RhdAogCiBib29s
IFNjcm9sbGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRMZWZ0KCkKIHsKLSAgICBNdXRleExvY2tlciBs
b2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayht
X3N3aXBlU3RhdGVNdXRleCk7CiAKICAgICByZXR1cm4gbV9ydWJiZXJCYW5kc0F0TGVmdDsKIH0K
IAogYm9vbCBTY3JvbGxpbmdUcmVlOjpydWJiZXJCYW5kc0F0UmlnaHQoKQogewotICAgIE11dGV4
TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciBsb2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKIAogICAgIHJldHVybiBtX3J1YmJlckJhbmRzQXRS
aWdodDsKIH0KIAogYm9vbCBTY3JvbGxpbmdUcmVlOjpydWJiZXJCYW5kc0F0Qm90dG9tKCkKIHsK
LSAgICBNdXRleExvY2tlciBsb2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKKyAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9jayhtX3N3aXBlU3RhdGVNdXRleCk7CiAKICAgICByZXR1cm4gbV9ydWJi
ZXJCYW5kc0F0Qm90dG9tOwogfQogCiBib29sIFNjcm9sbGluZ1RyZWU6OnJ1YmJlckJhbmRzQXRU
b3AoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKIAogICAgIHJldHVy
biBtX3J1YmJlckJhbmRzQXRUb3A7CiB9CkBAIC0zMDgsMTQgKzMwOCwxNCBAQCBib29sIFNjcm9s
bGluZ1RyZWU6OmlzSGFuZGxpbmdQcm9ncmFtbWF0CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0
U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogewot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N3aXBlU3RhdGVNdXRleCk7CisgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX3N3aXBlU3RhdGVNdXRleCk7CiAgICAgCiAgICAgbV9zY3Jv
bGxQaW5uaW5nQmVoYXZpb3IgPSBwaW5uaW5nOwogfQogCiBTY3JvbGxQaW5uaW5nQmVoYXZpb3Ig
U2Nyb2xsaW5nVHJlZTo6c2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkKIHsKLSAgICBNdXRleExvY2tl
ciBsb2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
ayhtX3N3aXBlU3RhdGVNdXRleCk7CiAgICAgCiAgICAgcmV0dXJuIG1fc2Nyb2xsUGlubmluZ0Jl
aGF2aW9yOwogfQpAQCAtMzI1LDcgKzMyNSw3IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZTo6d2lsbFdo
ZWVsRXZlbnRTdGFydFMKICAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpICE9IFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlQmVnYW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE11dGV4TG9j
a2VyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrKG1fc3dpcGVTdGF0ZU11dGV4KTsKIAogICAgIGlmICh3aGVlbEV2ZW50LmRlbHRhWCgpID4g
MCAmJiBtX21haW5GcmFtZVBpbm5lZFRvVGhlTGVmdCAmJiAhbV9ydWJiZXJCYW5kc0F0TGVmdCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTEsMTkgKzM1MSwxOSBAQCBib29sIFNjcm9sbGlu
Z1RyZWU6OnNjcm9sbGluZ1BlcmZvcm1hbmNlCiAKIFNjcm9sbGluZ05vZGVJRCBTY3JvbGxpbmdU
cmVlOjpsYXRjaGVkTm9kZSgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAgICAgcmV0dXJuIG1f
bGF0Y2hlZE5vZGU7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0TGF0Y2hlZE5vZGUoU2Ny
b2xsaW5nTm9kZUlEIG5vZGUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAgICAgbV9sYXRjaGVk
Tm9kZSA9IG5vZGU7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6Y2xlYXJMYXRjaGVkTm9kZSgp
CiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAgICAgbV9sYXRjaGVkTm9kZSA9IDA7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgJKHJl
dmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDExICsxNjAsMTEgQEAgcHJpdmF0ZToKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U2Nyb2xsaW5nTm9kZUlELCBTY3JvbGxpbmdUcmVlTm9kZSo+IFNj
cm9sbGluZ1RyZWVOb2RlTWFwOwogICAgIFNjcm9sbGluZ1RyZWVOb2RlTWFwIG1fbm9kZU1hcDsK
IAotICAgIE11dGV4IG1fbXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fbXV0ZXg7CiAgICAg
UmVnaW9uIG1fbm9uRmFzdFNjcm9sbGFibGVSZWdpb247CiAgICAgRmxvYXRQb2ludCBtX21haW5G
cmFtZVNjcm9sbFBvc2l0aW9uOwogCi0gICAgTXV0ZXggbV9zd2lwZVN0YXRlTXV0ZXg7CisgICAg
RGVwcmVjYXRlZE11dGV4IG1fc3dpcGVTdGF0ZU11dGV4OwogICAgIFNjcm9sbFBpbm5pbmdCZWhh
dmlvciBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvciB7IERvTm90UGluIH07CiAgICAgU2Nyb2xsaW5n
Tm9kZUlEIG1fbGF0Y2hlZE5vZGUgeyAwIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NsZWFyUHJlc3N1
cmVPbk1lbW9yeVJlbGVhc2U7CiAgICAgdm9pZCAoXm1fcmVsZWFzZU1lbW9yeUJsb2NrKSgpOwog
ICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIG1fb2JzZXJ2ZXI7Ci0gICAgTXV0ZXggbV9vYnNlcnZl
ck11dGV4OworICAgIERlcHJlY2F0ZWRNdXRleCBtX29ic2VydmVyTXV0ZXg7CiAjZWxpZiBPUyhM
SU5VWCkKICAgICBpbnQgbV9ldmVudEZEOwogICAgIGludCBtX3ByZXNzdXJlTGV2ZWxGRDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNl
TG9hZGVyLmNwcAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEw
Miw3IEBAIHZvaWQgSFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkQXN5bmNocm9ub3UKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGhyZWFk
TG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RocmVhZExvY2spOwog
ICAgIAogICAgIGlmICghbV9ocnRmRGF0YWJhc2UuZ2V0KCkgJiYgIW1fZGF0YWJhc2VMb2FkZXJU
aHJlYWQpIHsKICAgICAgICAgLy8gU3RhcnQgdGhlIGFzeW5jaHJvbm91cyBkYXRhYmFzZSBsb2Fk
aW5nIHByb2Nlc3MuCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBIUlRGRGF0YWJhc2VMb2FkZXI6
OmlzTG9hZGVkKCkgY29ucwogCiB2b2lkIEhSVEZEYXRhYmFzZUxvYWRlcjo6d2FpdEZvckxvYWRl
clRocmVhZENvbXBsZXRpb24oKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RocmVhZExv
Y2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90aHJlYWRMb2NrKTsKICAg
ICAKICAgICAvLyB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbigpIHNob3VsZCBub3QgYmUgY2FsbGVk
IHR3aWNlIGZvciB0aGUgc2FtZSB0aHJlYWQuCiAgICAgaWYgKG1fZGF0YWJhc2VMb2FkZXJUaHJl
YWQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2Fk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2VMb2FkZXIuaAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SFJURkRhdGFiYXNlPiBtX2hydGZE
YXRhYmFzZTsKIAogICAgIC8vIEhvbGRpbmcgYSBtX3RocmVhZExvY2sgaXMgcmVxdWlyZWQgd2hl
biBhY2Nlc3NpbmcgbV9kYXRhYmFzZUxvYWRlclRocmVhZC4KLSAgICBNdXRleCBtX3RocmVhZExv
Y2s7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fdGhyZWFkTG9jazsKICAgICBUaHJlYWRJZGVudGlm
aWVyIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQ7CiAKICAgICBmbG9hdCBtX2RhdGFiYXNlU2FtcGxl
UmF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJl
SGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAxODc5MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpzZXRSZWNlaXZlZE0KICAgICBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgPSB0cnVlOwog
CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9vYnNlcnZlck11dGV4KTsKKyAg
ICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOwogICAg
ICAgICBpZiAoIW1fb2JzZXJ2ZXIpIHsKICAgICAgICAgICAgIG1fb2JzZXJ2ZXIgPSBDRlJ1bkxv
b3BPYnNlcnZlckNyZWF0ZShOVUxMLCBrQ0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxv
b3BFeGl0LCBOTyAvKiBkb24ndCByZXBlYXQgKi8sCiAgICAgICAgICAgICAgICAgMCwgV2ViQ29y
ZTo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmVDYWxsYmFjaywgTlVMTCk7CkBAIC0yNzIsMTQgKzI3
MiwxNCBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Y2xlYXJNZW1vcnlQCiAgICAgbV91
bmRlck1lbW9yeVByZXNzdXJlID0gZmFsc2U7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fb2JzZXJ2ZXJNdXRleCk7CiAgICAgICAgIG1fbWVtb3J5UHJlc3N1cmVSZWFzb24g
PSBNZW1vcnlQcmVzc3VyZVJlYXNvbk5vbmU7CiAgICAgfQogfQogCiBib29sIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2hvdWxkV2FpdEZvck1lbW9yeUNsZWFyTWVzc2FnZSgpCiB7Ci0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOwogICAgIHJldHVybiBtX21lbW9yeVByZXNzdXJl
UmVhc29uICYgTWVtb3J5UHJlc3N1cmVSZWFzb25WTVN0YXR1czsKIH0KIApAQCAtMjg4LDcgKzI4
OCw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW0KICAgICBBU1NF
UlQoV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOwogCiAgICAgewotICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9vYnNlcnZlck11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOwogICAgICAgICBtX29ic2VydmVyID0gMDsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAkocmV2aXNpb24gMTg3OTMyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCB2b2lkIERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6ZGlzcGxheURpZFJlCiAgICAgZG91YmxlIG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGlt
ZTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAgICAgIGlmICghbV9zY2hl
ZHVsZWQpCiAgICAgICAgICAgICArK21fdW5zY2hlZHVsZWRGaXJlQ291bnQ7CiAgICAgICAgIGVs
c2UKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxh
eURpZFJlCiAgICAgICAgIG1fY2xpZW50c1RvQmVOb3RpZmllZCA9IG51bGxwdHI7CiAKICAgICB7
Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRN
dXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBtX3ByZXZpb3VzRnJhbWVEb25lID0g
dHJ1ZTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAkocmV2aXNpb24gMTg3OTMy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRNb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUoZG91YmxlIHN0YXJ0VGltZSkgeyBtX21v
bm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQogCi0gICAgTXV0ZXgmIG11
dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQorICAgIERlcHJlY2F0ZWRNdXRleCYgbXV0ZXgoKSB7
IHJldHVybiBtX211dGV4OyB9CiAKICAgICBzdGF0aWMgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9u
aXRvcj4gY3JlYXRlRGVmYXVsdERpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJ
RCk7CiAKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcHJldmlvdXNGcmFt
ZURvbmU7CiAgICAgaW50IG1fdW5zY2hlZHVsZWRGaXJlQ291bnQ7IC8vIE51bWJlciBvZiB0aW1l
cyB0aGUgZGlzcGxheSBsaW5rIGhhcyBmaXJlZCB3aXRoIG5vIGNsaWVudHMuCiAgICAgUGxhdGZv
cm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQ7Ci0gICAgTXV0ZXggbV9tdXRleDsKKyAgICBEZXByZWNh
dGVkTXV0ZXggbV9tdXRleDsKIAogICAgIEhhc2hTZXQ8RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xp
ZW50Kj4gbV9jbGllbnRzOwogICAgIEhhc2hTZXQ8RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50
Kj4qIG1fY2xpZW50c1RvQmVOb3RpZmllZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCShyZXZpc2lvbiAxODc5MzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQwLDcgKzc0
MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXQKIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldERlbGF5Q2FsbGJhY2tzKGJvb2wgZGVs
YXkpIGNvbnN0CiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7CiAgICAgaWYgKGRlbGF5KQog
ICAgICAgICArK21fZGVsYXlDYWxsYmFja3M7CiAgICAgZWxzZSB7CkBAIC03NTksNyArNzU5LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Om1haQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Y2xlYXJNYWluVGhyZWFkUGVuZGluZ0ZsYWcoKQog
ewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9jayhtX3F1ZXVlTXV0ZXgpOwogICAgIG1fbWFpblRocmVhZENhbGxQZW5kaW5n
ID0gZmFsc2U7CiB9CiAKQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbjo6ZGlzCiAKICAgICBOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uID0gTm90
aWZpY2F0aW9uKCk7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRl
eCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7CiAg
ICAgICAgIAogICAgICAgICBpZiAobV9xdWV1ZWROb3RpZmljYXRpb25zLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fcGVuZGluZ1NlZWs7CiAKICAgICBWZWN0b3I8
Tm90aWZpY2F0aW9uPiBtX3F1ZXVlZE5vdGlmaWNhdGlvbnM7Ci0gICAgbXV0YWJsZSBNdXRleCBt
X3F1ZXVlTXV0ZXg7CisgICAgbXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9xdWV1ZU11dGV4Owog
CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBtX2NhY2hl
ZExvYWRlZFRpbWVSYW5nZXM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAkocmV2aXNpb24gMTg3
OTMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQqIGNhbGxi
YWNrQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fb2Jq
ZWN0SUQpOyB9CiAKLSAgICBzdGF0aWMgTXV0ZXgmIG1hcExvY2soKTsKKyAgICBzdGF0aWMgRGVw
cmVjYXRlZE11dGV4JiBtYXBMb2NrKCk7CiAgICAgc3RhdGljIEhhc2hNYXA8dWludHB0cl90LCBB
VkZXcmFwcGVyKj4mIG1hcCgpOwogICAgIHN0YXRpYyBBVkZXcmFwcGVyKiBhdmZXcmFwcGVyRm9y
Q2FsbGJhY2tDb250ZXh0KHZvaWQqKTsKICAgICB2b2lkIGFkZFRvTWFwKCk7CkBAIC0xNDAzLDkg
KzE0MDMsOSBAQCBBVkZXcmFwcGVyOjp+QVZGV3JhcHBlcigpCiAgICAgbV9hdlBsYXllciA9IDA7
CiB9CiAKLU11dGV4JiBBVkZXcmFwcGVyOjptYXBMb2NrKCkKK0RlcHJlY2F0ZWRNdXRleCYgQVZG
V3JhcHBlcjo6bWFwTG9jaygpCiB7Ci0gICAgc3RhdGljIE11dGV4IG1hcExvY2s7CisgICAgc3Rh
dGljIERlcHJlY2F0ZWRNdXRleCBtYXBMb2NrOwogICAgIHJldHVybiBtYXBMb2NrOwogfQogCkBA
IC0xNDE3LDcgKzE0MTcsNyBAQCBIYXNoTWFwPHVpbnRwdHJfdCwgQVZGV3JhcHBlcio+JiBBVkZX
cmFwCiAKIHZvaWQgQVZGV3JhcHBlcjo6YWRkVG9NYXAoKQogewotICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtYXBMb2NrKCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobWFwTG9j
aygpKTsKICAgICAKICAgICAvLyBIYXNoTWFwIGRvZXNuJ3QgbGlrZSBhIGtleSBvZiAwLCBhbmQg
YWxzbyBtYWtlIHN1cmUgd2UgYXJlbid0CiAgICAgLy8gdXNpbmcgYW4gb2JqZWN0IElEIHRoYXQn
cyBhbHJlYWR5IGluIHVzZS4KQEAgLTE0MzMsNyArMTQzMyw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6
cmVtb3ZlRnJvbU1hcCgpIGNvbnN0CiB7CiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cmVt
b3ZlRnJvbU1hcCglcCAlZCkiLCB0aGlzLCBtX29iamVjdElEKTsKIAotICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtYXBMb2NrKCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobWFw
TG9jaygpKTsKICAgICBtYXAoKS5yZW1vdmUobV9vYmplY3RJRCk7CiB9CiAKQEAgLTE2MzQsNyAr
MTYzNCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVySXRlbSgpCiAKIHZvaWQgQVZG
V3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayhBVkNGUGxheWVyUmVmLCBDTVRp
bWUgY21UaW1lLCB2b2lkKiBjb250ZXh0KQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtYXBM
b2NrKCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKICAg
ICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0
KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cGVy
aW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIg
JWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTY2NSw3ICsx
NjY1LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uKHZvaQogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4gbm90aWZpY2F0aW9uRGF0
YSB7IHN0YXRpY19jYXN0PE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSo+KGNvbnRleHQpIH07CiAK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhM
b2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBw
ZXJGb3JDYWxsYmFja0NvbnRleHQobm90aWZpY2F0aW9uRGF0YS0+bV9jb250ZXh0KTsKICAgICBp
ZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc05vdGlm
aWNhdGlvbiBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTcyMCw3ICsxNzIwLDcgQEAgdm9pZCBBVkZX
cmFwcGVyOjpub3RpZmljYXRpb25DYWxsYmFjayhDRgogCiB2b2lkIEFWRldyYXBwZXI6OmxvYWRQ
bGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRleHQpCiB7
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFw
cGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAg
ICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpsb2FkUGxheWFibGVDb21wbGV0aW9uQ2FsbGJhY2sg
aW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE3NDgsNyArMTc0OCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6
Y2hlY2tQbGF5YWJpbGl0eSgpCiAKIHZvaWQgQVZGV3JhcHBlcjo6bG9hZE1ldGFkYXRhQ29tcGxl
dGlvbkNhbGxiYWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCogY29udGV4dCkKIHsKLSAgICBNdXRleExv
Y2tlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1hcExvY2soKSk7CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFj
a0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwg
IkFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayBpbnZva2VkIGZvciBk
ZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4
dCkpOwpAQCAtMTc2OCw3ICsxNzY4LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpiZWdpbkxvYWRpbmdN
ZXRhZGF0YSgpCiAKIHZvaWQgQVZGV3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrKEFWQ0ZQ
bGF5ZXJJdGVtUmVmLCBCb29sZWFuIGZpbmlzaGVkLCB2b2lkKiBjb250ZXh0KQogewotICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIobWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNh
bGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1l
ZGlhLCAiQVZGV3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0
ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7
CkBAIC0xODExLDcgKzE4MTEsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9pZCog
Y29udGV4CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnaWJsZU91dHB1dERhdGE+IGxlZ2libGVP
dXRwdXREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8TGVnaWJsZU91dHB1dERhdGEqPihjb250ZXh0KSk7
CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2Zldy
YXBwZXJGb3JDYWxsYmFja0NvbnRleHQobGVnaWJsZU91dHB1dERhdGEtPm1fY29udGV4dCk7CiAg
ICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nlc3ND
dWUgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE4MjcsNyArMTgyNyw3IEBAIHZvaWQgQVZGV3JhcHBl
cjo6cHJvY2Vzc0N1ZSh2b2lkKiBjb250ZXgKIHZvaWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1
dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBs
ZWdpYmxlT3V0cHV0LCBDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdHJpbmdzLCBDRkFycmF5UmVmIG5h
dGl2ZVNhbXBsZUJ1ZmZlcnMsIENNVGltZSBpdGVtVGltZSkKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CiAgICAgQVZGV3JhcHBlciogc2Vs
ZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxm
KSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFj
ayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTg2NSw3ICsxODY1LDcgQEAgdm9pZCBBVkZXcmFwcGVy
Ojpwcm9jZXNzU2hvdWxkV2FpdEZvckxvYQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExvYWRSZXF1
ZXN0RGF0YT4gbG9hZFJlcXVlc3REYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8TG9hZFJlcXVlc3REYXRh
Kj4oY29udGV4dCkpOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExvY2soKSk7CisgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtYXBMb2NrKCkpOwogICAgIEFWRldyYXBwZXIq
IHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGxvYWRSZXF1ZXN0RGF0YS0+bV9j
b250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBl
cjo6cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSBpbnZva2VkIGZvciBkZWxl
dGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkp
OwpAQCAtMTkyMSw3ICsxOTIxLDcgQEAgYm9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUgogQm9vbGVhbiBBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRlclJlZiByZXNv
dXJjZUxvYWRlciwgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBsb2FkaW5nUmVx
dWVzdCwgdm9pZCAqY29udGV4dCkKIHsKICAgICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSAhPSBkaXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKLSAgICBNdXRleExvY2tlciBs
b2NrZXIobWFwTG9jaygpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1hcExv
Y2soKSk7CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRl
eHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldy
YXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291
cmNlIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pihjb250ZXh0KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpoYQogewogICAgIG1fc2FtcGxlVGltZXJI
YW5kbGVyLmNhbmNlbCgpOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3NhbXBs
ZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9zYW1wbGVNdXRl
eCk7CiAgICAgICAgIG1fcGVuZGluZ1NhbXBsZXMuYXBwZW5kKHNhbXBsZSk7CiAgICAgfQogICAg
IG1fc2FtcGxlVGltZXJIYW5kbGVyLnNjaGVkdWxlKCJbV2ViS2l0XSBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU2FtcGxlIiwgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+KHN0ZDo6YmluZCgmSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJh
Y2tPZlNhbXBsZSwgdGhpcykpKTsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlR1N0cmVhbWVyOjpubwogewogICAgIFZlY3RvcjxHUmVmUHRyPEdzdFNhbXBsZT4g
PiBzYW1wbGVzOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3NhbXBsZU11dGV4
KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2sobV9zYW1wbGVNdXRleCk7CiAg
ICAgICAgIG1fcGVuZGluZ1NhbXBsZXMuc3dhcChzYW1wbGVzKTsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAkocmV2
aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGd1bG9uZyBtX2V2ZW50UHJvYmU7CiAgICAgVmVj
dG9yPEdSZWZQdHI8R3N0U2FtcGxlPiA+IG1fcGVuZGluZ1NhbXBsZXM7CiAgICAgU3RyaW5nIG1f
c3RyZWFtSWQ7Ci0gICAgTXV0ZXggbV9zYW1wbGVNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXgg
bV9zYW1wbGVNdXRleDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDE4Nzkz
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBA
IHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6dGFnc0NoYW4KICAgICBHUmVmUHRyPEdz
dFRhZ0xpc3Q+IHRhZ3M7CiAgICAgZ19vYmplY3RfZ2V0KG1fcGFkLmdldCgpLCAidGFncyIsICZ0
YWdzLm91dFB0cigpLCBOVUxMKTsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV90
YWdNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fdGFnTXV0ZXgp
OwogICAgICAgICBtX3RhZ3Muc3dhcCh0YWdzKTsKICAgICB9CiAKQEAgLTE1OCw3ICsxNTgsNyBA
QCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyCiAKICAgICBHUmVmUHRy
PEdzdFRhZ0xpc3Q+IHRhZ3M7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fdGFn
TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtX3RhZ011dGV4KTsK
ICAgICAgICAgdGFncy5zd2FwKG1fdGFncyk7CiAgICAgfQogICAgIGlmICghdGFncykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaAkocmV2aXNpb24gMTg3
OTMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBw
cml2YXRlOgogICAgIEdUaHJlYWRTYWZlTWFpbkxvb3BTb3VyY2UgbV9hY3RpdmVUaW1lckhhbmRs
ZXI7CiAgICAgR1RocmVhZFNhZmVNYWluTG9vcFNvdXJjZSBtX3RhZ1RpbWVySGFuZGxlcjsKIAot
ICAgIE11dGV4IG1fdGFnTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fdGFnTXV0ZXg7CiAg
ICAgR1JlZlB0cjxHc3RUYWdMaXN0PiBtX3RhZ3M7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmNwcAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg0LDE0ICs4NCwxNCBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yzo6cmVxdWVzdFJlCiAgICAgICAgIHNldElzQWN0aXZlKHRydWUpOwogICAgIH0KIAotICAgIE11
dGV4TG9ja2VyIGxvY2sobXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2so
bXV0ZXgoKSk7CiAgICAgc2V0SXNTY2hlZHVsZWQodHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5TGlua0ZpcmVkKGRvdWJs
ZSBub3dTZWNvbmRzLCBkb3VibGUgb3V0cHV0VGltZVNlY29uZHMpCiB7Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtdXRleCgpKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhtdXRleCgp
KTsKICAgICBpZiAoIWlzUHJldmlvdXNGcmFtZURvbmUoKSkKICAgICAgICAgcmV0dXJuOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAko
cmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxMiwyMSArNTEyLDIxIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjoKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmFkZExpc3RlbmVy
KE1lZGlhUGxheWVyTGlzdGVuZXIqIGxpc3RlbmVyKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX211dGV4TGlzdGVuZXJzKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bXV0ZXhMaXN0ZW5lcnMpOwogCiAgICAgbV9saXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlbW92ZUxpc3RlbmVyKE1l
ZGlhUGxheWVyTGlzdGVuZXIqIGxpc3RlbmVyKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X211dGV4TGlzdGVuZXJzKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0
ZXhMaXN0ZW5lcnMpOwogCiAgICAgbV9saXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om5vdGlmeURlbGV0ZWQoKQog
ewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4TGlzdGVuZXJzKTsKKyAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXhMaXN0ZW5lcnMpOwogCiAgICAgZm9yIChIYXNo
U2V0PE1lZGlhUGxheWVyTGlzdGVuZXIqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2xpc3RlbmVy
cy5iZWdpbigpOyBpdCAhPSBtX2xpc3RlbmVycy5lbmQoKTsgKytpdCkKICAgICAgICAgKCppdCkt
Pm9uTWVkaWFQbGF5ZXJEZWxldGVkKCk7CkBAIC03MDQsNyArNzA0LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBNZWRpYVBsYXllclByaQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmNDYWxsYmFjazo6SW52b2tl
KF9fUlBDX19pbl9vcHQgSU1GQXN5bmNSZXN1bHQgKnBBc3luY1Jlc3VsdCkKIHsKLSAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tl
cihtX211dGV4KTsKIAogICAgIGlmICghbV9tZWRpYVBsYXllcikKICAgICAgICAgcmV0dXJuIFNf
T0s7CkBAIC03MTksNyArNzE5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBNZWRpYVBs
YXllclByaQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6QXN5bmND
YWxsYmFjazo6b25NZWRpYVBsYXllckRlbGV0ZWQoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwog
CiAgICAgbV9tZWRpYVBsYXllciA9IG51bGxwdHI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGNsYXNzIE1lZGlhUGxheWVyTGlzdGVuZXI7CiAgICAgSGFzaFNldDxNZWRpYVBsYXllckxp
c3RlbmVyKj4gbV9saXN0ZW5lcnM7Ci0gICAgTXV0ZXggbV9tdXRleExpc3RlbmVyczsKKyAgICBE
ZXByZWNhdGVkTXV0ZXggbV9tdXRleExpc3RlbmVyczsKIAogICAgIENPTVB0cjxJTUZNZWRpYVNl
c3Npb24+IG1fbWVkaWFTZXNzaW9uOwogICAgIENPTVB0cjxJTUZTb3VyY2VSZXNvbHZlcj4gbV9z
b3VyY2VSZXNvbHZlcjsKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgICAgICBVTE9O
RyBtX3JlZkNvdW50OwogICAgICAgICBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24q
IG1fbWVkaWFQbGF5ZXI7CiAgICAgICAgIGJvb2wgbV9ldmVudDsKLSAgICAgICAgTXV0ZXggbV9t
dXRleDsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4IG1fbXV0ZXg7CiAgICAgfTsKIAogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgJKHJl
dmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjExLDkgKzIxMSw5IEBAIHByaXZhdGU6CiAgICAg
ZmxvYXQgbV9wZW5kaW5nU2NhbGU7CiAgICAgZmxvYXQgbV9wZW5kaW5nWm9vbWVkT3V0U2NhbGU7
CiAKLSAgICBtdXRhYmxlIE11dGV4IG1fdGlsZU11dGV4OwotICAgIG11dGFibGUgTXV0ZXggbV9z
YXZlZERpc3BsYXlSZWN0TXV0ZXg7Ci0gICAgbXV0YWJsZSBNdXRleCBtX2NvbnRlbnRSZXBsYWNl
bWVudEltYWdlTXV0ZXg7CisgICAgbXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV90aWxlTXV0ZXg7
CisgICAgbXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9zYXZlZERpc3BsYXlSZWN0TXV0ZXg7Cisg
ICAgbXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9jb250ZW50UmVwbGFjZW1lbnRJbWFnZU11dGV4
OwogCiAgICAgYm9vbCBtX3RpbGVDb250cm9sbGVyU2hvdWxkVXNlTG93U2NhbGVUaWxlczsKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW0JKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIExl
Z2FjeVRpbGVDYWNoZTo6c2V0VGlsZXNPcGFxdWUoYm9vCiAgICAgaWYgKG1fdGlsZXNPcGFxdWUg
PT0gb3BhcXVlKQogICAgICAgICByZXR1cm47CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90
aWxlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgp
OwogCiAgICAgbV90aWxlc09wYXF1ZSA9IG9wYXF1ZTsKICAgICBtX3pvb21lZE91dFRpbGVHcmlk
LT51cGRhdGVUaWxlT3BhY2l0eSgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgTGVnYWN5VGls
ZUNhY2hlOjpkb0xheW91dFRpbGVzKCkKICAgICBpZiAoaXNUaWxlQ3JlYXRpb25TdXNwZW5kZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKICAgICBM
ZWdhY3lUaWxlR3JpZCogYWN0aXZlR3JpZCA9IGFjdGl2ZVRpbGVHcmlkKCk7CiAgICAgLy8gRXZl
biB0aG91Z2ggd2UgYXJlbid0IGFjdHVhbGx5IGNyZWF0aW5nIHRpbGVzIGluIHRoZSBpbmFjdGl2
ZSBncmlkLCB3ZQogICAgIC8vIHN0aWxsIG5lZWQgdG8gZHJvcCBpbnZhbGlkIHRpbGVzIGluIHJl
c3BvbnNlIHRvIGEgbGF5b3V0LgpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNh
Y2hlOjpzZXRDdXJyZW50U2NhbGUoZmwKICAgICBpZiAoIWtlZXBzWm9vbWVkT3V0VGlsZXMoKSAm
JiAhaXNUaWxlSW52YWxpZGF0aW9uU3VzcGVuZGVkKCkpIHsKICAgICAgICAgLy8gVGlsZSBpbnZh
bGlkYXRpb24gaXMgbm9ybWFsbHkgc3VzcGVuZGVkIGR1cmluZyB6b29taW5nIGJ5IFVJS2l0IGJ1
dCBzb21lIGFwcGxpY2F0aW9ucwogICAgICAgICAvLyB1c2luZyBjdXN0b20gc2Nyb2xsdmlld3Mg
bWF5IHpvb20gd2l0aG91dCB0cmlnZ2VyaW5nIHRoZSBjYWxsYmFja3MuIEludmFsaWRhdGUgdGhl
IHRpbGVzIGV4cGxpY2l0bHkuCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVNdXRl
eCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgpOwog
ICAgICAgICBhY3RpdmVUaWxlR3JpZCgpLT5kcm9wQWxsVGlsZXMoKTsKICAgICAgICAgYWN0aXZl
VGlsZUdyaWQoKS0+Y3JlYXRlVGlsZXMoQ292ZXJWaXNpYmxlT25seSk7CiAgICAgfQpAQCAtMjI1
LDcgKzIyNSw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5nZSgKICAg
ICBBU1NFUlQobV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUgfHwgbV9wZW5kaW5nU2NhbGUpOwogICAg
IEFTU0VSVChtX3RpbGluZ01vZGUgIT0gRGlzYWJsZWQpOwogICAgIAotICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlciht
X3RpbGVNdXRleCk7CiAKICAgICBpZiAobV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUpIHsKICAgICAg
ICAgbV96b29tZWRPdXRUaWxlR3JpZC0+c2V0U2NhbGUobV9wZW5kaW5nWm9vbWVkT3V0U2NhbGUp
OwpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05v
dygpCiAgICAgaWYgKG1fdGlsaW5nTW9kZSA9PSBab29taW5nKQogICAgICAgICBtX3RpbGluZ01v
ZGUgPSBNaW5pbWFsOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKICAgICBMZWdhY3lU
aWxlR3JpZCogYWN0aXZlR3JpZCA9IGFjdGl2ZVRpbGVHcmlkKCk7CiAgICAgaWYgKGFjdGl2ZUdy
aWQtPmNoZWNrRG9TaW5nbGVUaWxlTGF5b3V0KCkpIHsKICAgICAgICAgbV90aWxpbmdNb2RlID0g
c2F2ZWRUaWxpbmdNb2RlOwpAQCAtMzI3LDE0ICszMjcsMTQgQEAgdm9pZCBMZWdhY3lUaWxlQ2Fj
aGU6OmxheW91dFRpbGVzTm93KCkKIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpsYXlvdXRUaWxlc05v
d0ZvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNM
b2NrZWRPckRpc2FibGVkKCkpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVNdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVNdXRleCk7CiAKICAgICBh
Y3RpdmVUaWxlR3JpZCgpLT5hZGRUaWxlc0NvdmVyaW5nUmVjdChyZWN0KTsKIH0KIAogdm9pZCBM
ZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFsbE5vblZpc2libGVUaWxlcygpCiB7Ci0gICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fdGlsZU11dGV4KTsKICAgICByZW1vdmVBbGxOb25WaXNpYmxlVGlsZXNJbnRlcm5hbCgp
OwogfQogCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUFs
bE5vblZpc2libAogCiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cmVtb3ZlQWxsVGlsZXMoKQogewot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4
TG9ja2VyIGxvY2tlcihtX3RpbGVNdXRleCk7CiAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+ZHJv
cEFsbFRpbGVzKCk7CiAgICAgaWYgKG1fem9vbWVkSW5UaWxlR3JpZCkKICAgICAgICAgbV96b29t
ZWRJblRpbGVHcmlkLT5kcm9wQWxsVGlsZXMoKTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIExl
Z2FjeVRpbGVDYWNoZTo6cmVtb3ZlQWxsVGlsZXMoKQogCiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6
cmVtb3ZlRm9yZWdyb3VuZFRpbGVzKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90aWxl
TXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgpOwog
ICAgIGlmICgha2VlcHNab29tZWRPdXRUaWxlcygpKQogICAgICAgICBtX3pvb21lZE91dFRpbGVH
cmlkLT5kcm9wQWxsVGlsZXMoKTsKICAgICBpZiAobV96b29tZWRJblRpbGVHcmlkKQpAQCAtMzcz
LDEzICszNzMsMTMgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnJlbW92ZUZvcmVncm91bmRUaQog
CiB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6c2V0Q29udGVudFJlcGxhY2VtZW50SW1hZ2UoUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRSZXBsYWNlbWVudEltYWdlKQogewotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdlTXV0ZXgpOworICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9jb250ZW50UmVwbGFjZW1lbnRJbWFnZU11dGV4KTsKICAg
ICBtX2NvbnRlbnRSZXBsYWNlbWVudEltYWdlID0gY29udGVudFJlcGxhY2VtZW50SW1hZ2U7CiB9
CiAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBMZWdhY3lUaWxlQ2FjaGU6OmNvbnRlbnRSZXBsYWNl
bWVudEltYWdlKCkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9jb250ZW50UmVw
bGFjZW1lbnRJbWFnZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
Y29udGVudFJlcGxhY2VtZW50SW1hZ2VNdXRleCk7CiAgICAgcmV0dXJuIG1fY29udGVudFJlcGxh
Y2VtZW50SW1hZ2U7CiB9CiAKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNo
ZTo6dGlsZUNyZWF0aW9uVGltZXJGCiB7CiAgICAgaWYgKGlzVGlsZUNyZWF0aW9uU3VzcGVuZGVk
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgp
OworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgpOwogICAgIGNy
ZWF0ZVRpbGVzSW5BY3RpdmVHcmlkKENvdmVyU3BlY3VsYXRpdmUpOwogfQogCkBAIC02MjAsNyAr
NjIwLDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNjaGVkdWxlTGF5ZXJGbHVzaAogCiB2b2lk
IExlZ2FjeVRpbGVDYWNoZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9zYXZlZERpc3BsYXlSZWN0TXV0
ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zYXZlZERpc3BsYXlSZWN0
TXV0ZXgpOwogICAgIGJvb2wgYWRkZWRGaXJzdFJlY3QgPSBtX3NhdmVkRGlzcGxheVJlY3RzLmlz
RW1wdHkoKTsKICAgICBtX3NhdmVkRGlzcGxheVJlY3RzLmFwcGVuZChkaXJ0eVJlY3QpOwogICAg
IGlmICghYWRkZWRGaXJzdFJlY3QpCkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBMZWdhY3lUaWxl
Q2FjaGU6OnVwZGF0ZVRpbGluZ01vZGUoKQogICAgICAgICBpZiAobV90aWxpbmdNb2RlID09IERp
c2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX3RpbGVNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90
aWxlTXV0ZXgpOwogICAgICAgICBjcmVhdGVUaWxlc0luQWN0aXZlR3JpZChDb3ZlclZpc2libGVP
bmx5KTsKIAogICAgICAgICBpZiAoIW1fc2F2ZWREaXNwbGF5UmVjdHMuaXNFbXB0eSgpKQpAQCAt
NzEwLDcgKzcxMCw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRUaWxpbmdNb2RlKFRpbGkK
ICAgICBpZiAoKG1fcGVuZGluZ1pvb21lZE91dFNjYWxlIHx8IG1fcGVuZGluZ1NjYWxlKSAmJiBt
X3RpbGluZ01vZGUgIT0gRGlzYWJsZWQpCiAgICAgICAgIGNvbW1pdFNjYWxlQ2hhbmdlKCk7CiAg
ICAgZWxzZSBpZiAod2FzWm9vbWluZykgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV90
aWxlTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11
dGV4KTsKICAgICAgICAgYnJpbmdBY3RpdmVUaWxlR3JpZFRvRnJvbnQoKTsKICAgICB9CiAKQEAg
LTc1Myw3ICs3NTMsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6ZG9QZW5kaW5nUmVwYWludHMo
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAoaXNUaWxlSW52YWxpZGF0aW9uU3VzcGVuZGVkKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgpOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90aWxlTXV0ZXgpOwogICAgIGZsdXNo
U2F2ZWREaXNwbGF5UmVjdHMoKTsKIH0KIApAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgTGVnYWN5
VGlsZUNhY2hlOjpmbHVzaFNhdmVkRGlzcGxheVIKIAogICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0
czsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3NhdmVkRGlzcGxheVJlY3RN
dXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zYXZlZERpc3Bs
YXlSZWN0TXV0ZXgpOwogICAgICAgICBtX3NhdmVkRGlzcGxheVJlY3RzLnN3YXAocmVjdHMpOwog
ICAgIH0KICAgICBzaXplX3Qgc2l6ZSA9IHJlY3RzLnNpemUoKTsKQEAgLTc5Miw3ICs3OTIsNyBA
QCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6cHJlcGFyZVRvRHJhdygpCiAgICAgW1ttX3dpbmRvdyBj
b250ZW50Vmlld10gdmlld1dpbGxEcmF3XTsKIAogICAgIGlmICghbV9zYXZlZERpc3BsYXlSZWN0
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGlsZU11dGV4KTsK
KyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3RpbGVNdXRleCk7CiAgICAg
ICAgIGZsdXNoU2F2ZWREaXNwbGF5UmVjdHMoKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQb29sLmgJKHJldmlzaW9u
IDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXJQ
b29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8SW50U2l6ZT4gbV9zaXplc0luUHJ1bmVPcmRlcjsKICAgICB1bnNpZ25lZCBtX3RvdGFsQnl0
ZXM7CiAgICAgdW5zaWduZWQgbV9jYXBhY2l0eTsKLSAgICBNdXRleCBtX2xheWVyUG9vbE11dGV4
OworICAgIERlcHJlY2F0ZWRNdXRleCBtX2xheWVyUG9vbE11dGV4OwogCiAgICAgZG91YmxlIG1f
bGFzdEFkZFRpbWU7CiAgICAgYm9vbCBtX25lZWRzUHJ1bmU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyUG9vbC5tbQkocmV2aXNpb24g
MTg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBv
b2wubW0JKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBMZWdhY3lUaWxlTGF5
ZXJQb29sOjphZGRMYXllcihjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9sYXllclBvb2xNdXRleCk7CiAgICAgbGlzdE9mTGF5ZXJzV2l0aFNpemUo
bGF5ZXJTaXplKS5wcmVwZW5kKGxheWVyKTsKICAgICBtX3RvdGFsQnl0ZXMgKz0gYnl0ZXNCYWNr
aW5nTGF5ZXJXaXRoUGl4ZWxTaXplKGxheWVyU2l6ZSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgUmV0
YWluUHRyPExlZ2FjeVRpbGVMYXllcj4gTGVnYWN5VGlsZUxheQogewogICAgIGlmICghY2FuUmV1
c2VMYXllcldpdGhTaXplKHNpemUpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOwogICAgIExheWVyTGlzdCYgcmV1c2VMaXN0ID0gbGlz
dE9mTGF5ZXJzV2l0aFNpemUoc2l6ZSwgTWFya0FzVXNlZCk7CiAgICAgaWYgKHJldXNlTGlzdC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0xMDYsNyArMTA2LDcgQEAgUmV0YWlu
UHRyPExlZ2FjeVRpbGVMYXllcj4gTGVnYWN5VGlsZUxheQogCiB2b2lkIExlZ2FjeVRpbGVMYXll
clBvb2w6OnNldENhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5KQogewotICAgIE11dGV4TG9ja2Vy
IHJldXNlTG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tl
ciByZXVzZUxvY2tlcihtX2xheWVyUG9vbE11dGV4KTsKICAgICBpZiAoY2FwYWNpdHkgPCBtX2Nh
cGFjaXR5KQogICAgICAgICBzY2hlZHVsZVBydW5lKCk7CiAgICAgbV9jYXBhY2l0eSA9IGNhcGFj
aXR5OwpAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgTGVnYWN5VGlsZUxheWVyUG9vbDo6c2NoZWR1
bGVQcnVuZSgKIAogdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpwcnVuZSgpCiB7Ci0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9sYXllclBvb2xNdXRleCk7CiAgICAgQVNTRVJUKG1fbmVlZHNQcnVuZSk7
CiAgICAgbV9uZWVkc1BydW5lID0gZmFsc2U7CiAgICAgdW5zaWduZWQgc2hyaW5rVG8gPSBkZWNh
eWVkQ2FwYWNpdHkoKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIExlZ2FjeVRpbGVMYXllclBv
b2w6OnBydW5lKCkKIAogdm9pZCBMZWdhY3lUaWxlTGF5ZXJQb29sOjpkcmFpbigpCiB7Ci0gICAg
TXV0ZXhMb2NrZXIgcmV1c2VMb2NrZXIobV9sYXllclBvb2xNdXRleCk7CisgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIHJldXNlTG9ja2VyKG1fbGF5ZXJQb29sTXV0ZXgpOwogICAgIG1fcmV1c2VM
aXN0cy5jbGVhcigpOwogICAgIG1fc2l6ZXNJblBydW5lT3JkZXIuY2xlYXIoKTsKICAgICBtX3Rv
dGFsQnl0ZXMgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIEN1cmxEb3dubG9hZE1hbmFnZXI6On5DdXJsRG93bmxv
YWRNYW5hZ2UKIAogYm9vbCBDdXJsRG93bmxvYWRNYW5hZ2VyOjphZGQoQ1VSTCogY3VybEhhbmRs
ZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIG1fcGVuZGluZ0hhbmRsZUxpc3QuYXBw
ZW5kKGN1cmxIYW5kbGUpOwogICAgIHN0YXJ0VGhyZWFkSWZOZWVkZWQoKTsKQEAgLTcwLDcgKzcw
LDcgQEAgYm9vbCBDdXJsRG93bmxvYWRNYW5hZ2VyOjphZGQoQ1VSTCogY3VybAogCiBib29sIEN1
cmxEb3dubG9hZE1hbmFnZXI6OnJlbW92ZShDVVJMKiBjdXJsSGFuZGxlKQogewotICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbXV0ZXgpOwogCiAgICAgbV9yZW1vdmVkSGFuZGxlTGlzdC5hcHBlbmQoY3VybEhhbmRsZSk7
CiAKQEAgLTc5LDEzICs3OSwxMyBAQCBib29sIEN1cmxEb3dubG9hZE1hbmFnZXI6OnJlbW92ZShD
VVJMKiBjCiAKIGludCBDdXJsRG93bmxvYWRNYW5hZ2VyOjpnZXRBY3RpdmVEb3dubG9hZENvdW50
KCkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICByZXR1cm4gbV9hY3RpdmVIYW5k
bGVMaXN0LnNpemUoKTsKIH0KIAogaW50IEN1cmxEb3dubG9hZE1hbmFnZXI6OmdldFBlbmRpbmdE
b3dubG9hZENvdW50KCkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7
CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICByZXR1cm4g
bV9wZW5kaW5nSGFuZGxlTGlzdC5zaXplKCk7CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lk
IEN1cmxEb3dubG9hZE1hbmFnZXI6OnN0b3BUaHJlYWQoKQogCiB2b2lkIEN1cmxEb3dubG9hZE1h
bmFnZXI6OnN0b3BUaHJlYWRJZklkbGUoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211
dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAgICAg
aWYgKCFnZXRBY3RpdmVEb3dubG9hZENvdW50KCkgJiYgIWdldFBlbmRpbmdEb3dubG9hZENvdW50
KCkpCiAgICAgICAgIHNldFJ1blRocmVhZChmYWxzZSk7CkBAIC0xMTksNyArMTE5LDcgQEAgdm9p
ZCBDdXJsRG93bmxvYWRNYW5hZ2VyOjpzdG9wVGhyZWFkSWZJZAogCiB2b2lkIEN1cmxEb3dubG9h
ZE1hbmFnZXI6OnVwZGF0ZUhhbmRsZUxpc3QoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCiAg
ICAgLy8gUmVtb3ZlIGN1cmwgZWFzeSBoYW5kbGVzIGZyb20gbXVsdGkgbGlzdCAKICAgICBpbnQg
c2l6ZSA9IG1fcmVtb3ZlZEhhbmRsZUxpc3Quc2l6ZSgpOwpAQCAtMjQ1LDcgKzI0NSw3IEBAIEN1
cmxEb3dubG9hZDo6Q3VybERvd25sb2FkKCkKIAogQ3VybERvd25sb2FkOjp+Q3VybERvd25sb2Fk
KCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIGlmIChtX3VybCkKICAgICAgICAgZmFz
dEZyZWUobV91cmwpOwpAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjppbml0
KEN1cmxEb3dubG9hZExpc3QKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX211dGV4KTsKIAogICAgIG1fY3VybEhhbmRsZSA9IGN1cmxfZWFzeV9pbml0
KCk7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6aW5pdChDdXJsRG93
bmxvYWRMaXN0CiAgICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobV9tdXRleCk7CiAKICAgICBVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgcmVxdWVzdC51cmwo
KSk7CiAKQEAgLTMxNywyNSArMzE3LDI1IEBAIGJvb2wgQ3VybERvd25sb2FkOjpjYW5jZWwoKQog
CiBTdHJpbmcgQ3VybERvd25sb2FkOjpnZXRUZW1wUGF0aCgpIGNvbnN0CiB7Ci0gICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9tdXRleCk7CiAgICAgcmV0dXJuIG1fdGVtcFBhdGg7CiB9CiAKIFN0cmluZyBDdXJsRG93bmxv
YWQ6OmdldFVybCgpIGNvbnN0CiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAgICAgcmV0dXJuIFN0
cmluZyhtX3VybCk7CiB9CiAKIFJlc291cmNlUmVzcG9uc2UgQ3VybERvd25sb2FkOjpnZXRSZXNw
b25zZSgpIGNvbnN0CiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAgICAgcmV0dXJuIG1fcmVzcG9u
c2U7CiB9CiAKIHZvaWQgQ3VybERvd25sb2FkOjpjbG9zZUZpbGUoKQogewotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bXV0ZXgpOwogCiAgICAgaWYgKG1fdGVtcEhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKSB7CiAgICAgICAgIFdlYkNvcmU6OmNsb3NlRmlsZShtX3RlbXBIYW5kbGUpOwpAQCAtMzkw
LDcgKzM5MCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjphZGRIZWFkZXJzKGNvbnN0IFJlc28KIAog
dm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIp
CiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAKICAgICBpZiAoaGVhZGVyID09ICJcclxuIiB8fCBo
ZWFkZXIgPT0gIlxuIikgewogCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6
OmRpZFJlY2VpdmVIZWFkZXIoY29ucwogCiB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZURh
dGEodm9pZCogZGF0YSwgaW50IHNpemUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0
ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAKICAgICBS
ZWZQdHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWREb3dubG9hZCh0aGlzKTsKIApAQCAtNDY0LDcg
KzQ2NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpkaWRGaW5pc2goKQogCiB2b2lkIEN1cmxEb3du
bG9hZDo6ZGlkRmFpbCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CiAKICAgICBjbG9zZUZpbGUo
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuaAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPENVUkwqPiBtX3BlbmRpbmdIYW5kbGVMaXN0
OwogICAgIFZlY3RvcjxDVVJMKj4gbV9hY3RpdmVIYW5kbGVMaXN0OwogICAgIFZlY3RvcjxDVVJM
Kj4gbV9yZW1vdmVkSGFuZGxlTGlzdDsKLSAgICBtdXRhYmxlIE11dGV4IG1fbXV0ZXg7CisgICAg
bXV0YWJsZSBEZXByZWNhdGVkTXV0ZXggbV9tdXRleDsKICAgICBib29sIG1fcnVuVGhyZWFkOwog
fTsKIApAQCAtMTQwLDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1G
aWxlSGFuZGxlIG1fdGVtcEhhbmRsZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAgICAgYm9vbCBtX2RlbGV0ZXNGaWxlVXBvbkZhaWx1cmU7Ci0gICAgbXV0YWJs
ZSBNdXRleCBtX211dGV4OworICAgIG11dGFibGUgRGVwcmVjYXRlZE11dGV4IG1fbXV0ZXg7CiAg
ICAgQ3VybERvd25sb2FkTGlzdGVuZXIgKm1fbGlzdGVuZXI7CiAKICAgICBzdGF0aWMgQ3VybERv
d25sb2FkTWFuYWdlciBtX2Rvd25sb2FkTWFuYWdlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1h
bmFnZXIuY3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMzLDEwICsxMzMsMTAgQEAgc3RhdGljIGNoYXIqIGNvb2tpZUphclBhdGgoKQogI2VuZGlmCiB9
CiAKLXN0YXRpYyBNdXRleCogc2hhcmVkUmVzb3VyY2VNdXRleChjdXJsX2xvY2tfZGF0YSBkYXRh
KSB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBjb29raWVNdXRl
eCwgKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgZG5zTXV0
ZXgsICgpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIHNoYXJl
TXV0ZXgsICgpKTsKK3N0YXRpYyBEZXByZWNhdGVkTXV0ZXgqIHNoYXJlZFJlc291cmNlTXV0ZXgo
Y3VybF9sb2NrX2RhdGEgZGF0YSkgeworICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChEZXByZWNhdGVkTXV0ZXgsIGNvb2tpZU11dGV4LCAoKSk7CisgICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKERlcHJlY2F0ZWRNdXRleCwgZG5zTXV0ZXgsICgpKTsKKyAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGVwcmVjYXRlZE11dGV4LCBzaGFyZU11dGV4LCAo
KSk7CiAKICAgICBzd2l0Y2ggKGRhdGEpIHsKICAgICAgICAgY2FzZSBDVVJMX0xPQ0tfREFUQV9D
T09LSUU6CkBAIC0xOTAsMTMgKzE5MCwxMyBAQCBzdGF0aWMgdm9pZCBjYWxjdWxhdGVXZWJUaW1p
bmdJbmZvcm1hdGlvCiAvLyBjYWNoZS4KIHN0YXRpYyB2b2lkIGN1cmxfbG9ja19jYWxsYmFjayhD
VVJMKiAvKiBoYW5kbGUgKi8sIGN1cmxfbG9ja19kYXRhIGRhdGEsIGN1cmxfbG9ja19hY2Nlc3Mg
LyogYWNjZXNzICovLCB2b2lkKiAvKiB1c2VyUHRyICovKQogewotICAgIGlmIChNdXRleCogbXV0
ZXggPSBzaGFyZWRSZXNvdXJjZU11dGV4KGRhdGEpKQorICAgIGlmIChEZXByZWNhdGVkTXV0ZXgq
IG11dGV4ID0gc2hhcmVkUmVzb3VyY2VNdXRleChkYXRhKSkKICAgICAgICAgbXV0ZXgtPmxvY2so
KTsKIH0KIAogc3RhdGljIHZvaWQgY3VybF91bmxvY2tfY2FsbGJhY2soQ1VSTCogLyogaGFuZGxl
ICovLCBjdXJsX2xvY2tfZGF0YSBkYXRhLCB2b2lkKiAvKiB1c2VyUHRyICovKQogewotICAgIGlm
IChNdXRleCogbXV0ZXggPSBzaGFyZWRSZXNvdXJjZU11dGV4KGRhdGEpKQorICAgIGlmIChEZXBy
ZWNhdGVkTXV0ZXgqIG11dGV4ID0gc2hhcmVkUmVzb3VyY2VNdXRleChkYXRhKSkKICAgICAgICAg
bXV0ZXgtPnVubG9jaygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9RdWlja0xvb2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0JKHdvcmtpbmcgY29weSkK
QEAgLTg1LDkgKzg1LDkgQEAgTlNEaWN0aW9uYXJ5ICpXZWJDb3JlOjpRTERpcmVjdG9yeUF0dHJp
YgogICAgIHJldHVybiBkaWN0aW9uYXJ5OwogfQogCi1zdGF0aWMgTXV0ZXgmIHFsUHJldmlld0Nv
bnZlcnRlckRpY3Rpb25hcnlNdXRleCgpCitzdGF0aWMgRGVwcmVjYXRlZE11dGV4JiBxbFByZXZp
ZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TXV0ZXgoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxNdXRleD4gbXV0ZXg7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERlcHJlY2F0ZWRNdXRl
eD4gbXV0ZXg7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9p
ZCBXZWJDb3JlOjphZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRgogewogICAgIEFTU0VSVCh1cmwp
OwogICAgIEFTU0VSVChjb252ZXJ0ZXIpOwotICAgIE11dGV4TG9ja2VyIGxvY2socWxQcmV2aWV3
Q29udmVydGVyRGljdGlvbmFyeU11dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrKHFsUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnlNdXRleCgpKTsKICAgICBbUUxQcmV2aWV3
Q29udmVydGVyRGljdGlvbmFyeSgpIHNldE9iamVjdDpjb252ZXJ0ZXIgZm9yS2V5OnVybF07CiAg
ICAgW1FMQ29udGVudERpY3Rpb25hcnkoKSBzZXRPYmplY3Q6KGZpbGVOYW1lID8gZmlsZU5hbWUg
OiBAIiIpIGZvcktleTp1cmxdOwogfQpAQCAtMTIxLDcgKzEyMSw3IEBAIE5TU3RyaW5nICpXZWJD
b3JlOjpxbFByZXZpZXdDb252ZXJ0ZXJVVEkKIHsKICAgICBpZCBjb252ZXJ0ZXIgPSBuaWw7CiAg
ICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrKHFsUHJldmlld0NvbnZlcnRlckRpY3Rpb25h
cnlNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2socWxQcmV2aWV3
Q29udmVydGVyRGljdGlvbmFyeU11dGV4KCkpOwogICAgICAgICBjb252ZXJ0ZXIgPSBbUUxQcmV2
aWV3Q29udmVydGVyRGljdGlvbmFyeSgpIG9iamVjdEZvcktleTp1cmxdOwogICAgIH0KICAgICBp
ZiAoIWNvbnZlcnRlcikKQEAgLTEzMSw3ICsxMzEsNyBAQCBOU1N0cmluZyAqV2ViQ29yZTo6cWxQ
cmV2aWV3Q29udmVydGVyVVRJCiAKIHZvaWQgV2ViQ29yZTo6cmVtb3ZlUUxQcmV2aWV3Q29udmVy
dGVyRm9yVVJMKE5TVVJMICp1cmwpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhxbFByZXZpZXdD
b252ZXJ0ZXJEaWN0aW9uYXJ5TXV0ZXgoKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2socWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeU11dGV4KCkpOwogICAgIFtRTFByZXZpZXdD
b252ZXJ0ZXJEaWN0aW9uYXJ5KCkgcmVtb3ZlT2JqZWN0Rm9yS2V5OnVybF07CiAKICAgICAvLyBE
ZWxldGUgdGhlIGZpbGUgd2hlbiB3ZSByZW1vdmUgdGhlIHByZXZpZXcgY29udmVydGVyCkBAIC0x
NjYsNyArMTY2LDcgQEAgY29uc3QgVVJMIFdlYkNvcmU6OnNhZmVRTFVSTEZvckRvY3VtZW50VQog
ICAgIGlkIGNvbnZlcnRlciA9IG5pbDsKICAgICBOU1VSTCAqbnNEb2N1bWVudFVSTCA9IGRvY3Vt
ZW50VVJMOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhxbFByZXZpZXdDb252ZXJ0
ZXJEaWN0aW9uYXJ5TXV0ZXgoKSk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
KHFsUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnlNdXRleCgpKTsKICAgICAgICAgY29udmVydGVy
ID0gW1FMUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnkoKSBvYmplY3RGb3JLZXk6bnNEb2N1bWVu
dFVSTF07CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsx
MjEsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbG9zZSgpCiAgICAgICAgIC8vIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9vcGVuaW5nVGhyZWFkKTsKICAgICAgICAgc3FsaXRlMyogZGIg
PSBtX2RiOwogICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kYXRh
YmFzZUNsb3NpbmdNdXRleCk7CisgICAgICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fZGF0YWJhc2VDbG9zaW5nTXV0ZXgpOwogICAgICAgICAgICAgbV9kYiA9IDA7CiAgICAg
ICAgIH0KICAgICAgICAgc3FsaXRlM19jbG9zZShkYik7CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9p
ZCBTUUxpdGVEYXRhYmFzZTo6aW50ZXJydXB0KCkKIHsKICAgICBtX2ludGVycnVwdGVkID0gdHJ1
ZTsKICAgICB3aGlsZSAoIW1fbG9ja2luZ011dGV4LnRyeUxvY2soKSkgewotICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9kYXRhYmFzZUNsb3NpbmdNdXRleCk7CisgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZUNsb3NpbmdNdXRleCk7CiAgICAgICAgIGlm
ICghbV9kYikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc3FsaXRlM19pbnRlcnJ1cHQo
bV9kYik7CkBAIC0xODEsNyArMTgxLDcgQEAgaW50NjRfdCBTUUxpdGVEYXRhYmFzZTo6bWF4aW11
bVNpemUoKQogICAgIGludDY0X3QgbWF4UGFnZUNvdW50ID0gMDsKIAogICAgIHsKLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAgICAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogICAgICAgICBlbmFibGVBdXRo
b3JpemVyKGZhbHNlKTsKICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudCgqdGhpcywg
QVNDSUlMaXRlcmFsKCJQUkFHTUEgbWF4X3BhZ2VfY291bnQiKSk7CiAgICAgICAgIG1heFBhZ2VD
b3VudCA9IHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKTsKQEAgLTIwMSw3ICsyMDEsNyBAQCB2
b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRNYXhpbXVtU2l6ZShpbnQ2CiAgICAgQVNTRVJUKGN1cnJl
bnRQYWdlU2l6ZSB8fCAhbV9kYik7CiAgICAgaW50NjRfdCBuZXdNYXhQYWdlQ291bnQgPSBjdXJy
ZW50UGFnZVNpemUgPyBzaXplIC8gY3VycmVudFBhZ2VTaXplIDogMDsKICAgICAKLSAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKICAgICBlbmFibGVBdXRob3JpemVyKGZhbHNl
KTsKIAogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQoKnRoaXMsICJQUkFHTUEgbWF4X3Bh
Z2VfY291bnQgPSAiICsgU3RyaW5nOjpudW1iZXIobmV3TWF4UGFnZUNvdW50KSk7CkBAIC0yMTgs
NyArMjE4LDcgQEAgaW50IFNRTGl0ZURhdGFiYXNlOjpwYWdlU2l6ZSgpCiAgICAgLy8gU2luY2Ug
dGhlIHBhZ2Ugc2l6ZSBvZiBhIGRhdGFiYXNlIGlzIGxvY2tlZCBpbiBhdCBjcmVhdGlvbiBhbmQg
dGhlcmVmb3JlIGNhbm5vdCBiZSBkeW5hbWljLCAKICAgICAvLyB3ZSBjYW4gY2FjaGUgdGhlIHZh
bHVlIGZvciBmdXR1cmUgdXNlCiAgICAgaWYgKG1fcGFnZVNpemUgPT0gLTEpIHsKLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAgICAgICBEZXByZWNhdGVk
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogICAgICAgICBlbmFibGVBdXRo
b3JpemVyKGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1l
bnQoKnRoaXMsIEFTQ0lJTGl0ZXJhbCgiUFJBR01BIHBhZ2Vfc2l6ZSIpKTsKQEAgLTIzNSw3ICsy
MzUsNyBAQCBpbnQ2NF90IFNRTGl0ZURhdGFiYXNlOjpmcmVlU3BhY2VTaXplKCkKICAgICBpbnQ2
NF90IGZyZWVsaXN0Q291bnQgPSAwOwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9hdXRob3JpemVyTG9jayk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIobV9hdXRob3JpemVyTG9jayk7CiAgICAgICAgIGVuYWJsZUF1dGhvcml6ZXIoZmFsc2UpOwog
ICAgICAgICAvLyBOb3RlOiBmcmVlbGlzdF9jb3VudCB3YXMgYWRkZWQgaW4gU1FMaXRlIDMuNC4x
LgogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KCp0aGlzLCBBU0NJSUxpdGVyYWwo
IlBSQUdNQSBmcmVlbGlzdF9jb3VudCIpKTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBpbnQ2NF90IFNR
TGl0ZURhdGFiYXNlOjp0b3RhbFNpemUoKQogICAgIGludDY0X3QgcGFnZUNvdW50ID0gMDsKIAog
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOworICAg
ICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogICAg
ICAgICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsKICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHN0
YXRlbWVudCgqdGhpcywgQVNDSUlMaXRlcmFsKCJQUkFHTUEgcGFnZV9jb3VudCIpKTsKICAgICAg
ICAgcGFnZUNvdW50ID0gc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApOwpAQCAtMzMwLDcgKzMz
MCw3IEBAIGludCBTUUxpdGVEYXRhYmFzZTo6cnVuVmFjdXVtQ29tbWFuZCgpCiAKIGludCBTUUxp
dGVEYXRhYmFzZTo6cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCkKIHsKLSAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9hdXRob3JpemVyTG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKICAgICBlbmFibGVBdXRob3JpemVyKGZhbHNlKTsK
IAogICAgIGlmICghZXhlY3V0ZUNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQUkFHTUEgaW5jcmVtZW50
YWxfdmFjdXVtIikpKQpAQCAtNDcxLDcgKzQ3MSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNl
dEF1dGhvcml6ZXIoUGFzc1IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwogCiAgICAgbV9hdXRob3JpemVyID0gYXV0aDsKICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5o
CShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIHNldEF1dGhvcml6ZXIoUGFzc1JlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+
KTsKIAotICAgIE11dGV4JiBkYXRhYmFzZU11dGV4KCkgeyByZXR1cm4gbV9sb2NraW5nTXV0ZXg7
IH0KKyAgICBEZXByZWNhdGVkTXV0ZXgmIGRhdGFiYXNlTXV0ZXgoKSB7IHJldHVybiBtX2xvY2tp
bmdNdXRleDsgfQogICAgIGJvb2wgaXNBdXRvQ29tbWl0T24oKSBjb25zdDsKIAogICAgIC8vIFRo
ZSBTUUxpdGUgQVVUT19WQUNVVU0gcHJhZ21hIGNhbiBiZSBlaXRoZXIgTk9ORSwgRlVMTCwgb3Ig
SU5DUkVNRU5UQUwuCkBAIC0xNDksMTMgKzE0OSwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3M7CiAgICAgYm9vbCBtX3NoYXJhYmxlOwogICAgIAotICAgIE11
dGV4IG1fYXV0aG9yaXplckxvY2s7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fYXV0aG9yaXplckxv
Y2s7CiAgICAgUmVmUHRyPERhdGFiYXNlQXV0aG9yaXplcj4gbV9hdXRob3JpemVyOwogCi0gICAg
TXV0ZXggbV9sb2NraW5nTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fbG9ja2luZ011dGV4
OwogICAgIFRocmVhZElkZW50aWZpZXIgbV9vcGVuaW5nVGhyZWFkOwogCi0gICAgTXV0ZXggbV9k
YXRhYmFzZUNsb3NpbmdNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9kYXRhYmFzZUNsb3Np
bmdNdXRleDsKICAgICBib29sIG1faW50ZXJydXB0ZWQ7CiAKICAgICBpbnQgbV9vcGVuRXJyb3I7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmNwcAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgaW50IFNR
TGl0ZVN0YXRlbWVudDo6cHJlcGFyZSgpCiB7CiAgICAgQVNTRVJUKCFtX2lzUHJlcGFyZWQpOwog
Ci0gICAgTXV0ZXhMb2NrZXIgZGF0YWJhc2VMb2NrKG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgp
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgZGF0YWJhc2VMb2NrKG1fZGF0YWJhc2UuZGF0
YWJhc2VNdXRleCgpKTsKICAgICBpZiAobV9kYXRhYmFzZS5pc0ludGVycnVwdGVkKCkpCiAgICAg
ICAgIHJldHVybiBTUUxJVEVfSU5URVJSVVBUOwogCkBAIC04OCw3ICs4OCw3IEBAIGludCBTUUxp
dGVTdGF0ZW1lbnQ6OnByZXBhcmUoKQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpzdGVwKCkKIHsK
LSAgICBNdXRleExvY2tlciBkYXRhYmFzZUxvY2sobV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkp
OworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBkYXRhYmFzZUxvY2sobV9kYXRhYmFzZS5kYXRh
YmFzZU11dGV4KCkpOwogICAgIGlmIChtX2RhdGFiYXNlLmlzSW50ZXJydXB0ZWQoKSkKICAgICAg
ICAgcmV0dXJuIFNRTElURV9JTlRFUlJVUFQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBA
IFdvcmtlclRocmVhZDo6fldvcmtlclRocmVhZCgpCiBib29sIFdvcmtlclRocmVhZDo6c3RhcnQo
KQogewogICAgIC8vIE11dGV4IHByb3RlY3Rpb24gaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0
IG1fdGhyZWFkSUQgaXMgaW5pdGlhbGl6ZWQgd2hlbiB0aGUgdGhyZWFkIHN0YXJ0cy4KLSAgICBN
dXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKIAogICAgIGlmIChtX3RocmVh
ZElEKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFdvcmtl
clRocmVhZDo6d29ya2VyVGhyZWFkKCkKICNlbmRpZgogCiAgICAgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRl
eExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CiAgICAgICAgIG1fd29ya2VyR2xv
YmFsU2NvcGUgPSBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShtX3N0YXJ0dXBEYXRhLT5tX3Njcmlw
dFVSTCwgbV9zdGFydHVwRGF0YS0+bV91c2VyQWdlbnQsIG1fc3RhcnR1cERhdGEtPm1fY29udGVu
dFNlY3VyaXR5UG9saWN5LCBtX3N0YXJ0dXBEYXRhLT5tX2NvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUsIG1fc3RhcnR1cERhdGEtPm1fdG9wT3JpZ2luLnJlbGVhc2UoKSk7CiAKICAgICAgICAgaWYg
KG1fcnVuTG9vcC50ZXJtaW5hdGVkKCkpIHsKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIFdvcmtl
clRocmVhZDo6cnVuRXZlbnRMb29wKCkKIHZvaWQgV29ya2VyVGhyZWFkOjpzdG9wKCkKIHsKICAg
ICAvLyBNdXRleCBwcm90ZWN0aW9uIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHN0b3AoKSBjYW4gYmUg
Y2FsbGVkIGJlZm9yZSB0aGUgY29udGV4dCBpcyBmdWxseSBjcmVhdGVkLgotICAgIE11dGV4TG9j
a2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwogCiAgICAgLy8gRW5zdXJlIHRoYXQgdGFz
a3MgYXJlIGJlaW5nIGhhbmRsZWQgYnkgdGhyZWFkIGV2ZW50IGxvb3AuIElmIHNjcmlwdCBleGVj
dXRpb24gd2VyZW4ndCBmb3JiaWRkZW4sIGEgd2hpbGUoMSkgbG9vcCBpbiBKUyBjb3VsZCBrZWVw
IHRoZSB0aHJlYWQgYWxpdmUgZm9yZXZlci4KICAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZSkg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCShyZXZpc2lvbiAxODc5
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw3ICs4OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV29ya2Vy
UmVwb3J0aW5nUHJveHkmIG1fd29ya2VyUmVwb3J0aW5nUHJveHk7CiAKICAgICAgICAgUmVmUHRy
PFdvcmtlckdsb2JhbFNjb3BlPiBtX3dvcmtlckdsb2JhbFNjb3BlOwotICAgICAgICBNdXRleCBt
X3RocmVhZENyZWF0aW9uTXV0ZXg7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleCBtX3RocmVhZENy
ZWF0aW9uTXV0ZXg7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlclRocmVhZFN0YXJ0
dXBEYXRhPiBtX3N0YXJ0dXBEYXRhOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODc5MzIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1
OSBAQAorMjAxNS0wOC0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbmFtZSBNdXRleCB0byBEZXByZWNhdGVkTXV0ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzY3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6cG9zdERhdGFiYXNl
VGFzayk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6cGVyZm9ybU5leHREYXRh
YmFzZVRhc2spOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaDoK
KyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duKToKKyAgICAg
ICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnBvc3RNYWluVGhyZWFkVGFzayk6CisgICAg
ICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtTmV4dE1haW5UaHJlYWRUYXNr
KToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2sp
OgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHREYXRhYmFz
ZVRhc2spOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0
YWJhc2UuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OnNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6cHJvY2Vzc0luY29taW5nU3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
Y29ubmVjdGlvbkRpZENsb3NlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
OgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
YXBwZW5kVXBkYXRlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGVDb21wb3NpdGluZ1RocmVhZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6cnVuQ29tcG9zaXRpbmdUaHJlYWQp
OgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OnRlcm1pbmF0ZUNvbXBvc2l0
aW5nVGhyZWFkKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmg6CisgICAgICAgICogU2hhcmVkL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmFkZEN1c3RvbVByb3RvY29s
KToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZW1vdmVDdXN0b21Q
cm90b2NvbCk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0
ZXJTY2hlbWUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnVucmVn
aXN0ZXJTY2hlbWUpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1
cHBvcnRzU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpw
cm90b2NvbEZvcklEKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL2xpbnV4L1NlY2NvbXBG
aWx0ZXJzL1NlY2NvbXBCcm9rZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RXZlbnREaXNwYXRjaGVyOjphZGRTY3JvbGxpbmdUcmVlRm9yUGFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6cmVtb3ZlU2Nyb2xsaW5nVHJlZUZvclBhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAgICAgICh3ZWJraXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToKKyAgICAgICAgKHdlYmtpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW1BZGREYXRhKToKKwogMjAxNS0wOC0wNCAgTWF0dCBSYWpjYSAgPG1yYWpj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWEgU2Vzc2lvbjogYWRkIGEgZm9jdXMgbWFuYWdl
ciB0aGF0IFdlYktpdCBjbGllbnRzIGNhbiB1c2UgdG8gYWNjZXNzIHRoZSBmb2N1c2VkIG1lZGlh
IGVsZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVBy
b2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MuY3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUx
LDcgKzE1MSw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpwb3N0RGF0YWJhc2VUYXNrKHMKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fZGF0YWJhc2VUYXNrTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIo
bV9kYXRhYmFzZVRhc2tNdXRleCk7CiAKICAgICBtX2RhdGFiYXNlVGFza3MuYXBwZW5kKFdURjo6
bW92ZSh0YXNrKSk7CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6
cGVyZm9ybU5leHREYXRhYmFzCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNr
OwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VUYXNrTXV0ZXgp
OworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VUYXNrTXV0
ZXgpOwogICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2VUYXNrcy5pc0VtcHR5KCkpOwogICAgICAg
ICB0YXNrID0gbV9kYXRhYmFzZVRhc2tzLnRha2VGaXJzdCgpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgJKHJldmlz
aW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVBy
b2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAg
SGFzaE1hcDxVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIsIFJlZlB0cjxVbmlxdWVJREJEYXRh
YmFzZT4+IG1faWRiRGF0YWJhc2VzOwogCiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPEFzeW5j
VGFzaz4+IG1fZGF0YWJhc2VUYXNrczsKLSAgICBNdXRleCBtX2RhdGFiYXNlVGFza011dGV4Owor
ICAgIERlcHJlY2F0ZWRNdXRleCBtX2RhdGFiYXNlVGFza011dGV4OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAkocmV2aXNpb24g
MTg3OTMyKQorKysgU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpzaHV0ZG93bihVbmlxdWVJCiAgICAgcmVmKCk7CiAKICAgICB7
Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKKyAgICAg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKICAg
ICAgICAgbV9kYXRhYmFzZVRhc2tzLmNsZWFyKCk7CiAgICAgfQogCkBAIC0xMTI1LDcgKzExMjUs
NyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0TWFpblRocmVhZFRhCiAgICAgaWYgKCFt
X2FjY2VwdGluZ05ld1JlcXVlc3RzICYmIHRhc2tUeXBlID09IERhdGFiYXNlVGFza1R5cGU6Ok5v
cm1hbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbWFpblRo
cmVhZFRhc2tNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX21haW5U
aHJlYWRUYXNrTXV0ZXgpOwogCiAgICAgbV9tYWluVGhyZWFkVGFza3MuYXBwZW5kKFdURjo6bW92
ZSh0YXNrKSk7CiAKQEAgLTExNDMsNyArMTE0Myw3IEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1OZXh0TWFpblQKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRhc2s7
CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tYWluVGhyZWFkVGFza011dGV4
KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX21haW5UaHJlYWRUYXNr
TXV0ZXgpOwogCiAgICAgICAgIC8vIFRoaXMgZGF0YWJhc2UgbWlnaHQgYmUgc2h1dHRpbmcgZG93
biwgaW4gd2hpY2ggY2FzZSB0aGUgdGFzayBxdWV1ZSBtaWdodCBiZSBlbXB0eS4KICAgICAgICAg
aWYgKG1fbWFpblRocmVhZFRhc2tzLmlzRW1wdHkoKSkKQEAgLTExNjUsNyArMTE2NSw3IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2sKICAgICBpZiAoIW1fYWNjZXB0
aW5nTmV3UmVxdWVzdHMgJiYgdGFza1R5cGUgPT0gRGF0YWJhc2VUYXNrVHlwZTo6Tm9ybWFsKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZVRhc2tN
dXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlVGFza011
dGV4KTsKIAogICAgIG1fZGF0YWJhc2VUYXNrcy5hcHBlbmQoV1RGOjptb3ZlKHRhc2spKTsKIApA
QCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHRE
YXRhYgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gdGFzazsKICAgICB7Ci0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKKyAgICAgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKIAogICAgICAg
ICAvLyBUaGlzIGRhdGFiYXNlIG1pZ2h0IGJlIHNodXR0aW5nIGRvd24gb24gdGhlIG1haW4gdGhy
ZWFkLCBpbiB3aGljaCBjYXNlIHRoZSB0YXNrIHF1ZXVlIG1pZ2h0IGJlIGVtcHR5LgogICAgICAg
ICBpZiAobV9kYXRhYmFzZVRhc2tzLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFi
YXNlLmgJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDEw
ICsyMTAsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VCYWNraW5n
U3RvcmU+IG1fYmFja2luZ1N0b3JlOwogCiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPEFzeW5j
VGFzaz4+IG1fZGF0YWJhc2VUYXNrczsKLSAgICBNdXRleCBtX2RhdGFiYXNlVGFza011dGV4Owor
ICAgIERlcHJlY2F0ZWRNdXRleCBtX2RhdGFiYXNlVGFza011dGV4OwogCiAgICAgRGVxdWU8c3Rk
Ojp1bmlxdWVfcHRyPEFzeW5jVGFzaz4+IG1fbWFpblRocmVhZFRhc2tzOwotICAgIE11dGV4IG1f
bWFpblRocmVhZFRhc2tNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9tYWluVGhyZWFkVGFz
a011dGV4OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ1OSw3ICs0NTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rp
CiAKICAgICAvLyBQdXNoIHRoZSBwZW5kaW5nIHN5bmMgcmVwbHkgaW5mb3JtYXRpb24gb24gb3Vy
IHN0YWNrLgogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY1JlcGx5U3Rh
dGVNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVw
bHlTdGF0ZU11dGV4KTsKICAgICAgICAgaWYgKCFtX3Nob3VsZFdhaXRGb3JTeW5jUmVwbGllcykg
ewogICAgICAgICAgICAgZGlkRmFpbFRvU2VuZFN5bmNNZXNzYWdlKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZURlY29kZXI+IENvbm5lY3RpCiAKICAgICAvLyBGaW5hbGx5LCBwb3AgdGhlIHBlbmRpbmcgc3lu
YyByZXBseSBpbmZvcm1hdGlvbi4KICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X3N5bmNSZXBseVN0YXRlTXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdTeW5j
UmVwbGllcy5sYXN0KCkuc3luY1JlcXVlc3RJRCA9PSBzeW5jUmVxdWVzdElEKTsKICAgICAgICAg
bV9wZW5kaW5nU3luY1JlcGxpZXMucmVtb3ZlTGFzdCgpOwogICAgIH0KQEAgLTUwOCw3ICs1MDgs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3RpCiAKICAgICAvLyBQ
dXNoIHRoZSBwZW5kaW5nIHN5bmMgcmVwbHkgaW5mb3JtYXRpb24gb24gb3VyIHN0YWNrLgogICAg
IHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7Cisg
ICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4
KTsKICAgICAgICAgaWYgKCFtX3Nob3VsZFdhaXRGb3JTeW5jUmVwbGllcykKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkBAIC01MjYsNyArNTI2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1l
c3NhZ2VEZWNvZGVyPiBDb25uZWN0aQogCiAgICAgLy8gRmluYWxseSwgcG9wIHRoZSBwZW5kaW5n
IHN5bmMgcmVwbHkgaW5mb3JtYXRpb24uCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOwogICAgICAgICBBU1NFUlQobV9zZWNvbmRh
cnlUaHJlYWRQZW5kaW5nU3luY1JlcGx5TWFwLmNvbnRhaW5zKHN5bmNSZXF1ZXN0SUQpKTsKICAg
ICAgICAgbV9zZWNvbmRhcnlUaHJlYWRQZW5kaW5nU3luY1JlcGx5TWFwLnJlbW92ZShzeW5jUmVx
dWVzdElEKTsKICAgICB9CkBAIC01NDYsNyArNTQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VEZWNvZGVyPiBDb25uZWN0aQogICAgICAgICBTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24o
KS5kaXNwYXRjaE1lc3NhZ2VzKG51bGxwdHIpOwogICAgICAgICAKICAgICAgICAgewotICAgICAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7CisgICAgICAg
ICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7
CiAKICAgICAgICAgICAgIC8vIFNlY29uZCwgY2hlY2sgaWYgdGhlcmUgaXMgYSBzeW5jIHJlcGx5
IGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrLgogICAgICAgICAgICAgQVNTRVJUKCFtX3BlbmRpbmdT
eW5jUmVwbGllcy5pc0VtcHR5KCkpOwpAQCAtNTkyLDcgKzU5Miw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGkKIAogdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5j
b21pbmdTeW5jUmVwbHkoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyKQog
ewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKIAogICAg
IC8vIEdvIHRocm91Z2ggdGhlIHN0YWNrIG9mIHN5bmMgcmVxdWVzdHMgdGhhdCBoYXZlIHBlbmRp
bmcgcmVwbGllcyBhbmQgc2VlIHdoaWNoIG9uZQogICAgIC8vIHRoaXMgcmVwbHkgaXMgZm9yLgpA
QCAtNzUwLDcgKzc1MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlKCkK
ICAgICBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fc3luY1JlcGx5U3RhdGVNdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKIAogICAgICAgICBBU1NFUlQobV9z
aG91bGRXYWl0Rm9yU3luY1JlcGxpZXMpOwogICAgICAgICBtX3Nob3VsZFdhaXRGb3JTeW5jUmVw
bGllcyA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTgsNyArMjk4LDcgQEAgcHJpdmF0ZToKICAg
ICBjbGFzcyBTeW5jTWVzc2FnZVN0YXRlOwogICAgIGZyaWVuZCBjbGFzcyBTeW5jTWVzc2FnZVN0
YXRlOwogCi0gICAgTXV0ZXggbV9zeW5jUmVwbHlTdGF0ZU11dGV4OworICAgIERlcHJlY2F0ZWRN
dXRleCBtX3N5bmNSZXBseVN0YXRlTXV0ZXg7CiAgICAgYm9vbCBtX3Nob3VsZFdhaXRGb3JTeW5j
UmVwbGllczsKICAgICBWZWN0b3I8UGVuZGluZ1N5bmNSZXBseT4gbV9wZW5kaW5nU3luY1JlcGxp
ZXM7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAko
cmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjkw
LDcgKzY5MCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphcHBlbmRVcGQKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9yZW5kZXJRdWV1ZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fcmVuZGVyUXVldWVNdXRleCk7CiAgICAgbV9yZW5kZXJRdWV1ZS5hcHBlbmQo
V1RGOjptb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBSZW5kZXIgcXVl
dWUgY2FuIGJlIGFjY2Vzc2VkIG9ueSBmcm9tIG1haW4gdGhyZWFkIG9yIHVwZGF0ZVBhaW50Tm9k
ZSBjYWxsIHN0YWNrIQogICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IG1fcmVuZGVy
UXVldWU7Ci0gICAgTXV0ZXggbV9yZW5kZXJRdWV1ZU11dGV4OworICAgIERlcHJlY2F0ZWRNdXRl
eCBtX3JlbmRlclF1ZXVlTXV0ZXg7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGV4
dHVyZU1hcHBlcj4gbV90ZXh0dXJlTWFwcGVyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3Np
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAkocmV2aXNp
b24gMTg3OTMyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlQ29tcG9z
aXRpCiAgICAgaWYgKG1fdGhyZWFkSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7Cisg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0
aW9uTXV0ZXgpOwogICAgIG1fdGhyZWFkSWRlbnRpZmllciA9IGNyZWF0ZVRocmVhZChjb21wb3Np
dGluZ1RocmVhZEVudHJ5LCB0aGlzLCAiV2ViQ29yZTogVGhyZWFkZWRDb21wb3NpdG9yIik7CiAK
ICAgICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uLndhaXQobV9pbml0aWFsaXplUnVuTG9v
cENvbmRpdGlvbk11dGV4KTsKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9z
aXRvcjo6Y3JlYXRlQ29tcG9zaXRpCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cnVuQ29tcG9z
aXRpbmdUaHJlYWQoKQogewogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faW5p
dGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKIAogICAgICAg
ICBtX2NvbXBvc2l0aW5nUnVuTG9vcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5M
b29wPihbJl0gewogICAgICAgICAgICAgcmVuZGVyTGF5ZXJUcmVlKCk7CkBAIC0zMjEsNyArMzIx
LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJ1bkNvbXBvc2l0aW5nVAogICAgIG1fc2Nl
bmUtPnB1cmdlR0xSZXNvdXJjZXMoKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CiAg
ICAgICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wID0gbnVsbHB0cjsKICAgICAgICAgbV9jb250ZXh0
ID0gbnVsbHB0cjsKICAgICAgICAgbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uLnNpZ25hbCgp
OwpAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpydW5Db21wb3Np
dGluZ1QKIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnRlcm1pbmF0ZUNvbXBvc2l0aW5nVGhy
ZWFkKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0
aW9uTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90ZXJtaW5hdGVS
dW5Mb29wQ29uZGl0aW9uTXV0ZXgpOwogCiAgICAgbV9zY2VuZS0+ZGV0YWNoKCk7CiAgICAgbV9j
b21wb3NpdGluZ1J1bkxvb3AtPnJ1bkxvb3AoKS5zdG9wKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRD
b21wb3NpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCShyZXZp
c2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExMSw5ICsxMTEsOSBAQCBwcml2YXRlOgogCiAgICAgVGhyZWFkSWRlbnRpZmllciBtX3Ro
cmVhZElkZW50aWZpZXI7CiAgICAgVGhyZWFkQ29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxvb3BD
b25kaXRpb247Ci0gICAgTXV0ZXggbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4Owor
ICAgIERlcHJlY2F0ZWRNdXRleCBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7CiAg
ICAgVGhyZWFkQ29uZGl0aW9uIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbjsKLSAgICBNdXRl
eCBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXgg
bV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHJl
dmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDEx
ICsxMDAsMTEgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOwotICAgIE11dGV4IG1fcmVnaXN0ZXJlZFNjaGVt
ZXNNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9yZWdpc3RlcmVkU2NoZW1lc011dGV4Owog
CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8V0tDdXN0b21Qcm90b2Nv
bD4+IEN1c3RvbVByb3RvY29sTWFwOwogICAgIEN1c3RvbVByb3RvY29sTWFwIG1fY3VzdG9tUHJv
dG9jb2xNYXA7Ci0gICAgTXV0ZXggbV9jdXN0b21Qcm90b2NvbE1hcE11dGV4OworICAgIERlcHJl
Y2F0ZWRNdXRleCBtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXg7CiAgICAgCiAgICAgLy8gV0tDdXN0
b21Qcm90b2NvbCBvYmplY3RzIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIG1fY3VzdG9tUHJvdG9j
b2xNYXAgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgogICAgIC8vIFdlIHJldHVybiBhIFJldGFpblB0
ciBoZXJlIGJlY2F1c2UgaXQgaXMgdW5zYWZlIHRvIHJldHVybiBhIHJhdyBwb2ludGVyIHNpbmNl
IHRoZSBvYmplY3QgbWlnaHQgaW1tZWRpYXRlbHkgYmUgZGVzdHJveWVkIGZyb20gYSBkaWZmZXJl
bnQgdGhyZWFkLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0
b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29s
TWFuYWdlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMjggKzE2NSwyOCBAQCB2b2lk
IEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjCiB2b2lkIEN1c3RvbVByb3RvY29s
TWFuYWdlcjo6YWRkQ3VzdG9tUHJvdG9jb2woV0tDdXN0b21Qcm90b2NvbCAqY3VzdG9tUHJvdG9j
b2wpCiB7CiAgICAgQVNTRVJUKGN1c3RvbVByb3RvY29sKTsKLSAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9jdXN0b21Qcm90b2NvbE1hcE11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleCk7CiAgICAgbV9jdXN0b21Qcm90b2NvbE1h
cC5hZGQoY3VzdG9tUHJvdG9jb2wuY3VzdG9tUHJvdG9jb2xJRCwgY3VzdG9tUHJvdG9jb2wpOwog
fQogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVtb3ZlQ3VzdG9tUHJvdG9jb2woV0tD
dXN0b21Qcm90b2NvbCAqY3VzdG9tUHJvdG9jb2wpCiB7CiAgICAgQVNTRVJUKGN1c3RvbVByb3Rv
Y29sKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9jdXN0b21Qcm90b2NvbE1hcE11dGV4KTsK
KyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRl
eCk7CiAgICAgbV9jdXN0b21Qcm90b2NvbE1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2wuY3VzdG9t
UHJvdG9jb2xJRCk7CiB9CiAgICAgCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0
ZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgQVNTRVJUKCFzY2hlbWUuaXNO
dWxsKCkpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3JlZ2lzdGVyZWRTY2hlbWVzTXV0ZXgp
OworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9yZWdpc3RlcmVkU2NoZW1lc011
dGV4KTsKICAgICBtX3JlZ2lzdGVyZWRTY2hlbWVzLmFkZChzY2hlbWUpOwogfQogICAgIAogdm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnVucmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpCiB7CiAgICAgQVNTRVJUKCFzY2hlbWUuaXNOdWxsKCkpOwotICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3JlZ2lzdGVyZWRTY2hlbWVzTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9yZWdpc3RlcmVkU2NoZW1lc011dGV4KTsKICAgICBtX3JlZ2lzdGVyZWRT
Y2hlbWVzLnJlbW92ZShzY2hlbWUpOwogfQogCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBvcnRzU2NoZQogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3JlZ2lz
dGVyZWRTY2hlbWVzTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9y
ZWdpc3RlcmVkU2NoZW1lc011dGV4KTsKICAgICByZXR1cm4gbV9yZWdpc3RlcmVkU2NoZW1lcy5j
b250YWlucyhzY2hlbWUpOwogfQogCkBAIC0yNjEsNyArMjYxLDcgQEAgICAgIGlmICghcHJvdG9j
b2wpCiAKIFJldGFpblB0cjxXS0N1c3RvbVByb3RvY29sPiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OnByb3RvY29sRm9ySUQodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKLSAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9jdXN0b21Qcm90b2NvbE1hcE11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleCk7CiAKICAgICBDdXN0b21Q
cm90b2NvbE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2N1c3RvbVByb3RvY29sTWFwLmZpbmQo
Y3VzdG9tUHJvdG9jb2xJRCk7CiAgICAgaWYgKGl0ID09IG1fY3VzdG9tUHJvdG9jb2xNYXAuZW5k
KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2Vj
Y29tcEJyb2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4
L1NlY2NvbXBGaWx0ZXJzL1NlY2NvbXBCcm9rZXIuY3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2VjY29tcEJyb2tlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludCBt
X3NvY2tldDsKIAotICAgIG11dGFibGUgTXV0ZXggbV9zb2NrZXRMb2NrOworICAgIG11dGFibGUg
RGVwcmVjYXRlZE11dGV4IG1fc29ja2V0TG9jazsKIAogICAgIC8vIE1hcHMgZmlsZXMgdGhhdCBt
YXkgYmUgcmVhZCBieSBtYWxsb2MoKSB0byBvcGVuIGZpbGUgZGVzY3JpcHRvcnMuCiAgICAgSGFz
aE1hcDxTdHJpbmcsIGludD4gbV9maWxlRGVzY3JpcHRvckNhY2hlOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ28KICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5h
cHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwogCiAgICAgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIobV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4KTsKKyAgICAgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Rva2Vuc0FuZENvbm5lY3Rpb25zTXV0ZXgpOwogICAg
ICAgICBBU1NFUlQoIW1fdG9rZW5zQW5kQ29ubmVjdGlvbnMuY29udGFpbnMocGx1Z2luUHJvY2Vz
c1Rva2VuKSk7CiAKICAgICAgICAgbV90b2tlbnNBbmRDb25uZWN0aW9ucy5zZXQocGx1Z2luUHJv
Y2Vzc1Rva2VuLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpKTsKQEAgLTEw
MSw3ICsxMDEsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cmVtCiAg
ICAgQVNTRVJUKHZlY3RvckluZGV4ICE9IG5vdEZvdW5kKTsKIAogICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRleCk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4KTsK
ICAgICAgICAgQVNTRVJUKG1fdG9rZW5zQW5kQ29ubmVjdGlvbnMuY29udGFpbnMocGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24tPnBsdWdpblByb2Nlc3NUb2tlbigpKSk7CiAgICAgICAgIAogICAgICAg
ICBtX3Rva2Vuc0FuZENvbm5lY3Rpb25zLnJlbW92ZShwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+
cGx1Z2luUHJvY2Vzc1Rva2VuKCkpOwpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6OnBsdWdpblByb2Nlc3NDcmFzaGVkKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tl
bikKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdG9rZW5zQW5kQ29ubmVjdGlv
bnNNdXRleCk7CiAgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gbV90b2tlbnNBbmRD
b25uZWN0aW9ucy5nZXQocGx1Z2luUHJvY2Vzc1Rva2VuKTsKIAogICAgIC8vIEl0J3MgT0sgZm9y
IGNvbm5lY3Rpb24gdG8gYmUgbnVsbCBoZXJlOyBpdCB3aWxsIGhhcHBlbiBpZiB0aGlzIHdlYiBw
cm9jZXNzIGRvZXNuJ3Qga25vdwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIuaAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uPj4gbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnM7CiAKLSAgICBNdXRleCBtX3Rv
a2Vuc0FuZENvbm5lY3Rpb25zTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fdG9rZW5zQW5k
Q29ubmVjdGlvbnNNdXRleDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SVBDOjpDb25u
ZWN0aW9uPj4gbV90b2tlbnNBbmRDb25uZWN0aW9uczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCShy
ZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZl
bnREaXNwYXRjaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBFdmVudERp
c3BhdGNoZXI6On5FdmVudERpc3BhdGNoZXIoKQogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6YWRkU2Nyb2xsaW5nVHJlZUZvclBhZ2UoV2ViUGFnZSog
d2ViUGFnZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9zY3JvbGxpbmdUcmVlc011dGV4
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2Nyb2xsaW5nVHJlZXNNdXRl
eCk7CiAKICAgICBBU1NFUlQod2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSk7CiAgICAgQVNTRVJUKCFtX3Njcm9sbGluZ1RyZWVzLmNvbnRhaW5zKHdlYlBhZ2UtPnBh
Z2VJRCgpKSk7CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjphZGRTY3Jv
bGxpbmdUcmVlRm8KIAogdm9pZCBFdmVudERpc3BhdGNoZXI6OnJlbW92ZVNjcm9sbGluZ1RyZWVG
b3JQYWdlKFdlYlBhZ2UqIHdlYlBhZ2UpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2Ny
b2xsaW5nVHJlZXNNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX3Nj
cm9sbGluZ1RyZWVzTXV0ZXgpOwogICAgIEFTU0VSVChtX3Njcm9sbGluZ1RyZWVzLmNvbnRhaW5z
KHdlYlBhZ2UtPnBhZ2VJRCgpKSk7CiAKICAgICBtX3Njcm9sbGluZ1RyZWVzLnJlbW92ZSh3ZWJQ
YWdlLT5wYWdlSUQoKSk7CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6
OndoZWVsRXZlbnQodWludDY0XwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KQotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Njcm9sbGluZ1RyZWVzTXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zY3JvbGxpbmdUcmVlc011dGV4KTsKICAgICBp
ZiAoUmVmUHRyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4gc2Nyb2xsaW5nVHJlZSA9IG1fc2Nyb2xs
aW5nVHJlZXMuZ2V0KHBhZ2VJRCkpIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3MgcHJldHR5IGhv
cnJpYmxlIHRoYXQgd2UncmUgdXBkYXRpbmcgdGhlIGJhY2svZm9yd2FyZCBzdGF0ZSBoZXJlLgog
ICAgICAgICAvLyBXZWJDb3JlIHNob3VsZCBhbHdheXMga25vdyB0aGUgY3VycmVudCBzdGF0ZSBh
bmQga25vdyB3aGVuIGl0IGNoYW5nZXMgc28gdGhlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCShyZXZpc2lvbiAxODc5
MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V29y
a1F1ZXVlPiBtX3F1ZXVlOwogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLSAgICBNdXRl
eCBtX3Njcm9sbGluZ1RyZWVzTXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fc2Nyb2xsaW5n
VHJlZXNNdXRleDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6VGhyZWFk
ZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxpbmdUcmVlczsKICNlbmRpZgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpXaGVlbEV2ZW50RGVsdGFUcmFja2VyPiBtX3JlY2VudFdoZWVsRXZl
bnREZWx0YVRyYWNrZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCShyZXZp
c2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAg
c3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUHJpdgogICAgIHVpbnQ2NF90IGJ5
dGVzUmVjZWl2ZWQ7CiAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwogCi0gICAgTXV0ZXggcmVhZExv
Y2s7CisgICAgRGVwcmVjYXRlZE11dGV4IHJlYWRMb2NrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
c3luY1JlYWREYXRhPiBwZW5kaW5nQXN5bmNSZWFkOwogfTsKIApAQCAtODQsNyArODQsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtCiAgICAgV2ViS2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbSogc3RyZWFtID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJF
QU0oaW5wdXRTdHJlYW0pOwogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190
YXNrX25ldyhzdHJlYW0sIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKIAotICAg
IE11dGV4TG9ja2VyIGxvY2tlcihzdHJlYW0tPnByaXYtPnJlYWRMb2NrKTsKKyAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKHN0cmVhbS0+cHJpdi0+cmVhZExvY2spOwogCiAgICAgaWYg
KCF3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtSGFzRGF0YVRvUmVhZChzdHJlYW0pICYmICF3
ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtSXNXYWl0aW5nRm9yRGF0YShzdHJlYW0pKSB7CiAg
ICAgICAgIGdfdGFza19yZXR1cm5faW50KHRhc2suZ2V0KCksIDApOwpAQCAtMTQzLDcgKzE0Myw3
IEBAIHZvaWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUFkZERhdGEKICAgICBpZiAod2Vi
a2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUZpbmlzaGVkKHN0cmVhbSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihzdHJlYW0tPnByaXYtPnJlYWRMb2NrKTsKKyAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKHN0cmVhbS0+cHJpdi0+cmVhZExvY2spOwog
CiAgICAgaWYgKGRhdGFMZW5ndGgpIHsKICAgICAgICAgLy8gVHJ1bmNhdGUgdGhlIGRhdGFMZW5n
dGggdG8gdGhlIGNvbnRlbnRMZW5ndGggaWYgaXQncyBrbm93bi4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMzIEBACisyMDE1LTA4LTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIE11dGV4IHRvIERlcHJlY2F0ZWRNdXRleAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3Njc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VB
cmVhU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OnN5bmNUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6bWFya0ltcG9ydGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6YmxvY2tVbnRpbEltcG9ydENv
bXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybVN5bmMp
OgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmg6CisgICAgICAgICogU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6
c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFj
a2VyOjpmaW5pc2hlZEltcG9ydGluZ09yaWdpbklkZW50aWZpZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFi
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzZXRPcmlnaW5EZXRhaWxz
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUcmFja2VyOjpzeW5jU2V0T3JpZ2luRGV0YWls
cyk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6b3JpZ2lucyk6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlQWxsT3JpZ2lucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlVHJhY2tlcjo6Y2FuRGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VUcmFja2VyOjpjYW5jZWxEZWxldGluZ09yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3Jh
Z2VUcmFja2VyLmg6CisKIDIwMTUtMDgtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBFbmFibGUgV2ViR0wgb24gV2luZG93cyBDTWFrZSBi
dWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCShy
ZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5j
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFT
eW5jOjpzeW5jVGltZXJGaXJlZCgpCiAKICAgICBib29sIHBhcnRpYWxTeW5jID0gZmFsc2U7CiAg
ICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CisgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CiAKICAgICAgICAgLy8gRG8g
bm90IHNjaGVkdWxlIGFub3RoZXIgc3luYyBpZiB3ZSdyZSBzdGlsbCB0cnlpbmcgdG8gY29tcGxl
dGUgdGhlCiAgICAgICAgIC8vIHByZXZpb3VzIG9uZS4gQnV0LCBpZiB3ZSdyZSBzaHV0dGluZyBk
b3duLCBzY2hlZHVsZSBpdCBhbnl3YXkuCkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBTdG9yYWdl
QXJlYVN5bmM6OnBlcmZvcm1JbXBvcnQoKQogCiB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6bWFya0lt
cG9ydGVkKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9pbXBvcnRMb2NrKTsKKyAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1faW1wb3J0TG9jayk7CiAgICAgbV9pbXBvcnRD
b21wbGV0ZSA9IHRydWU7CiAgICAgbV9pbXBvcnRDb25kaXRpb24uc2lnbmFsKCk7CiB9CkBAIC0z
NzIsNyArMzcyLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OmJsb2NrVW50aWxJbXBvcnRDbwog
ICAgIGlmICghbV9zdG9yYWdlQXJlYSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1faW1wb3J0TG9jayk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tl
cihtX2ltcG9ydExvY2spOwogICAgIHdoaWxlICghbV9pbXBvcnRDb21wbGV0ZSkKICAgICAgICAg
bV9pbXBvcnRDb25kaXRpb24ud2FpdChtX2ltcG9ydExvY2spOwogICAgIG1fc3RvcmFnZUFyZWEg
PSBudWxscHRyOwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpwZXJm
b3JtU3luYygpCiAgICAgYm9vbCBjbGVhckl0ZW1zOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IGl0ZW1zOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2sp
OworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwogCiAg
ICAgICAgIEFTU0VSVChtX3N5bmNTY2hlZHVsZWQpOwogCkBAIC00ODIsNyArNDgyLDcgQEAgdm9p
ZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5jKCkKICAgICBzeW5jKGNsZWFySXRlbXMsIGl0
ZW1zKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwor
ICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgICAg
ICBtX3N5bmNJblByb2dyZXNzID0gZmFsc2U7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
dG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1
LDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFN0cmluZyBtX2RhdGFiYXNlSWRlbnRpZmllcjsK
IAotICAgIE11dGV4IG1fc3luY0xvY2s7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fc3luY0xvY2s7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9pdGVtc1BlbmRpbmdTeW5jOwogICAgIGJv
b2wgbV9jbGVhckl0ZW1zV2hpbGVTeW5jaW5nOwogICAgIGJvb2wgbV9zeW5jU2NoZWR1bGVkOwpA
QCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3N5bmNDbG9zZURhdGFiYXNl
OwogCi0gICAgbXV0YWJsZSBNdXRleCBtX2ltcG9ydExvY2s7CisgICAgbXV0YWJsZSBEZXByZWNh
dGVkTXV0ZXggbV9pbXBvcnRMb2NrOwogICAgIFRocmVhZENvbmRpdGlvbiBtX2ltcG9ydENvbmRp
dGlvbjsKICAgICBib29sIG1faW1wb3J0Q29tcGxldGU7CiAgICAgdm9pZCBtYXJrSW1wb3J0ZWQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAkocmV2aXNp
b24gMTg3OTMyKQorKysgU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIFN0b3JhZ2VUcmFja2VyOjpTdG9yYWdl
VHJhY2tlcihjb25zdCBTdHIKIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6c2V0RGF0YWJhc2VEaXJl
Y3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9kYXRhYmFzZU11dGV4KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0
YWJhc2VNdXRleCk7CiAKICAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgbV9k
YXRhYmFzZS5jbG9zZSgpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6
OnNldERhdGFiYXNlRGlyZWN0b3IKICAgICBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoID0gcGF0aC5p
c29sYXRlZENvcHkoKTsKIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3Jp
Z2luU2V0TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3Jp
Z2luU2V0TXV0ZXgpOwogICAgICAgICBtX29yaWdpblNldC5jbGVhcigpOwogICAgIH0KIApAQCAt
MTg1LDcgKzE4NSw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmltcG9ydE9yaWdpbklkZW50aWYK
IAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZmluaXNoZWRJbXBvcnRpbmdPcmlnaW5JZGVudGlmaWVy
cygpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7CisgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogICAgIGlmIChtX2Ns
aWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmdPcmlnaW5zKCk7CiB9CkBA
IC0xOTcsNyArMTk3LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ltcG9ydE9yaWdpbklk
ZQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCiAgICAgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogCiAgICAgICAgIC8vIERvbid0IGZvcmNlIGNy
ZWF0aW9uIG9mIFN0b3JhZ2VUcmFja2VyJ3MgZGIganVzdCBiZWNhdXNlIGEgdHJhY2tlcgogICAg
ICAgICAvLyB3YXMgaW5pdGlhbGl6ZWQuIEl0IHdpbGwgYmUgY3JlYXRlZCBpZiBsb2NhbCBzdG9y
YWdlIGRicyBhcmUgZm91bmQKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2Vy
OjpzeW5jSW1wb3J0T3JpZ2luSWRlCiAgICAgICAgICAgICBpbnQgcmVzdWx0OwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja09yaWdp
bnMobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9j
a2VyIGxvY2tPcmlnaW5zKG1fb3JpZ2luU2V0TXV0ZXgpOwogICAgICAgICAgICAgICAgIHdoaWxl
ICgocmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykKICAgICAgICAgICAg
ICAgICAgICAgbV9vcmlnaW5TZXQuYWRkKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApLmlzb2xh
dGVkQ29weSgpKTsKICAgICAgICAgICAgIH0KQEAgLTIzMiwxMCArMjMyLDEwIEBAIHZvaWQgU3Rv
cmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGUKICAgICBzeW5jRmlsZVN5c3RlbUFuZFRy
YWNrZXJEYXRhYmFzZSgpOwogICAgIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fY2xpZW50TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
Y2xpZW50TXV0ZXgpOwogCiAgICAgICAgIGlmIChtX2NsaWVudCkgewotICAgICAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgICAgICAgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKICAgICAgICAgICAgIE9yaWdp
blNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9vcmlnaW5TZXQuZW5kKCk7CiAgICAgICAgICAg
ICBmb3IgKE9yaWdpblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29yaWdpblNldC5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlk
TW9kaWZ5T3JpZ2luKCppdCk7CkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tl
cjo6c3luY0ZpbGVTeXN0ZW1BbmRUcgogCiAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7CiAgICAg
ewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKKyAgICAgICAg
RGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogICAgICAgICBw
YXRocyA9IGxpc3REaXJlY3RvcnkobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgIioubG9jYWxzdG9y
YWdlIik7CiAgICAgfQogCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6
c3luY0ZpbGVTeXN0ZW1BbmRUcgogICAgIC8vIGRlbGV0aW9ucyBmcm9tIGRpc2sgYW5kIGZyb20g
bV9vcmlnaW5TZXQuCiAgICAgT3JpZ2luU2V0IG9yaWdpblNldENvcHk7CiAgICAgewotICAgICAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CiAgICAgICAgIGZvciAoT3Jp
Z2luU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fb3JpZ2luU2V0LmJlZ2luKCksIGVuZCA9IG1f
b3JpZ2luU2V0LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgICBvcmlnaW5TZXRD
b3B5LmFkZCgoKml0KS5pc29sYXRlZENvcHkoKSk7CiAgICAgfQpAQCAtMzA2LDcgKzMwNiw3IEBA
IHZvaWQgU3RvcmFnZVRyYWNrZXI6OnNldE9yaWdpbkRldGFpbHMoY28KICAgICAgICAgcmV0dXJu
OwogCiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7
CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7
CiAKICAgICAgICAgaWYgKG1fb3JpZ2luU2V0LmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6OnN5bmNTZXRPcmlnaW5EZXRhaWwKIAogICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVz
c0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2RhdGFiYXNlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9k
YXRhYmFzZU11dGV4KTsKIAogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UodHJ1ZSk7CiAgICAgCkBA
IC0zNTcsMTMgKzM1NywxMyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jU2V0T3JpZ2luRGV0
YWlsCiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGVzdGFibGlzaCBvcmlnaW4gJyVzJyBp
biB0aGUgdHJhY2tlciIsIG9yaWdpbklkZW50aWZpZXIuYXNjaWkoKS5kYXRhKCkpOwogCiAgICAg
ewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CiAgICAgICAg
IGlmICghbV9vcmlnaW5TZXQuY29udGFpbnMob3JpZ2luSWRlbnRpZmllcikpCiAgICAgICAgICAg
ICBtX29yaWdpblNldC5hZGQob3JpZ2luSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9jbGllbnRNdXRleCk7CisgICAgICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9jbGllbnRNdXRleCk7CiAgICAgICAgIGlmIChtX2NsaWVu
dCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihvcmlnaW5J
ZGVudGlmaWVyKTsKICAgICB9CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tl
cjo6b3JpZ2lucyhWZWN0b3I8UmVmUAogICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2luU2V0TXV0ZXgpOworICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CiAKICAgICBmb3Ig
KE9yaWdpblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29yaWdpblNldC5iZWdpbigpLCBlbmQg
PSBtX29yaWdpblNldC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICByZXN1bHQuYXBw
ZW5kKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKCppdCkpOwpA
QCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZUFsbE9yaWdpbnMo
KQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X29yaWdpblNldE11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlciht
X29yaWdpblNldE11dGV4KTsKICAgICAgICAgd2lsbERlbGV0ZUFsbE9yaWdpbnMoKTsKICAgICAg
ICAgbV9vcmlnaW5TZXQuY2xlYXIoKTsKICAgICB9CkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBT
dG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbgogCiAgICAgU1FMaXRlVHJhbnNhY3Rp
b25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogICAgIAotICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExv
Y2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKICAgICAKICAgICBvcGVuVHJhY2tlckRhdGFi
YXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC00MzcsNyArNDM3
LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbgogICAgICAgICBk
ZWxldGVGaWxlKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICB7Ci0gICAg
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9jbGllbnRNdXRleCk7CisgICAgICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgpOwogICAgICAgICAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE1vZGlm
eU9yaWdpbihzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CiAgICAgICAgIH0KQEAgLTQ5OSw3
ICs0OTksNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4oU2VjdXJpCiAgICAg
U3RyaW5nIG9yaWdpbklkID0gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKTsKICAgICAKICAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKKyAgICAg
ICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKICAgICAg
ICAgd2lsbERlbGV0ZU9yaWdpbihvcmlnaW5JZCk7CiAgICAgICAgIG1fb3JpZ2luU2V0LnJlbW92
ZShvcmlnaW5JZCk7CiAgICAgfQpAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6OnN5bmNEZWxldGVPcmlnaW4oY28KIAogICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVz
c0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2RhdGFiYXNlTXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9k
YXRhYmFzZU11dGV4KTsKICAgICAKICAgICBpZiAoIWNhbkRlbGV0ZU9yaWdpbihvcmlnaW5JZGVu
dGlmaWVyKSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHRlZCB0byBkZWxldGUgb3JpZ2lu
ICclcycgd2hpbGUgaXQgd2FzIGJlaW5nIGNyZWF0ZWRcbiIsIG9yaWdpbklkZW50aWZpZXIuYXNj
aWkoKS5kYXRhKCkpOwpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5
bmNEZWxldGVPcmlnaW4oY28KICAgICAKICAgICBib29sIHNob3VsZERlbGV0ZVRyYWNrZXJGaWxl
cyA9IGZhbHNlOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2luU2V0
TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2luU2V0
TXV0ZXgpOwogICAgICAgICBtX29yaWdpblNldC5yZW1vdmUob3JpZ2luSWRlbnRpZmllcik7CiAg
ICAgICAgIHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcyA9IG1fb3JpZ2luU2V0LmlzRW1wdHkoKTsK
ICAgICB9CkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0
ZU9yaWdpbihjbwogICAgIH0KIAogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
Y2xpZW50TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fY2xp
ZW50TXV0ZXgpOwogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4ob3JpZ2luSWRlbnRpZmllcik7CiAgICAgfQpAQCAtNTky
LDcgKzU5Miw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OndpbGxEZWxldGVPcmlnaW4oY28KIGJv
b2wgU3RvcmFnZVRyYWNrZXI6OmNhbkRlbGV0ZU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlTXV0ZXgudHJ5TG9jaygpKTsKLSAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9vcmlnaW5TZXRNdXRleCk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2tlcihtX29yaWdpblNldE11dGV4KTsKICAgICByZXR1cm4gbV9vcmlnaW5z
QmVpbmdEZWxldGVkLmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpOwogfQogCkBAIC02MDEsOSAr
NjAxLDkgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6Y2FuY2VsRGVsZXRpbmdPcmlnaQogICAgIGlm
ICghbV9pc0FjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fZGF0YWJhc2VNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2Rh
dGFiYXNlTXV0ZXgpOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2lu
U2V0TXV0ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fb3JpZ2lu
U2V0TXV0ZXgpOwogICAgICAgICBpZiAoIW1fb3JpZ2luc0JlaW5nRGVsZXRlZC5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBtX29yaWdpbnNCZWluZ0RlbGV0ZWQucmVtb3ZlKG9yaWdpbklkZW50aWZp
ZXIpOwogICAgIH0KQEAgLTY0Nyw3ICs2NDcsNyBAQCBsb25nIGxvbmcgU3RvcmFnZVRyYWNrZXI6
OmRpc2tVc2FnZUZvck9yCiAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOworICAgIERlcHJlY2F0
ZWRNdXRleExvY2tlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKIAogICAgIFN0cmluZyBwYXRo
ID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2luKG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwog
ICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9y
YWdlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdl
VHJhY2tlci5oCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTUgKzk1LDE1IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKTsKIAogICAgIC8vIE11dGV4
IGZvciBtX2RhdGFiYXNlIGFuZCBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLgotICAgIE11dGV4IG1f
ZGF0YWJhc2VNdXRleDsKKyAgICBEZXByZWNhdGVkTXV0ZXggbV9kYXRhYmFzZU11dGV4OwogICAg
IFNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7CiAgICAgU3RyaW5nIG1fc3RvcmFnZURpcmVjdG9y
eVBhdGg7CiAKLSAgICBNdXRleCBtX2NsaWVudE11dGV4OworICAgIERlcHJlY2F0ZWRNdXRleCBt
X2NsaWVudE11dGV4OwogICAgIFN0b3JhZ2VUcmFja2VyQ2xpZW50KiBtX2NsaWVudDsKIAogICAg
IC8vIEd1YXJkIGZvciBtX29yaWdpblNldCBhbmQgbV9vcmlnaW5zQmVpbmdEZWxldGVkLgotICAg
IE11dGV4IG1fb3JpZ2luU2V0TXV0ZXg7CisgICAgRGVwcmVjYXRlZE11dGV4IG1fb3JpZ2luU2V0
TXV0ZXg7CiAgICAgdHlwZWRlZiBIYXNoU2V0PFN0cmluZz4gT3JpZ2luU2V0OwogICAgIE9yaWdp
blNldCBtX29yaWdpblNldDsKICAgICBPcmlnaW5TZXQgbV9vcmlnaW5zQmVpbmdEZWxldGVkOwpJ
bmRleDogU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvaW9zL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYktpdC9p
b3MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMDgtMDQg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTXV0ZXgg
dG8gRGVwcmVjYXRlZE11dGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDc2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOgor
ICAgICAgICAoV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jayk6CisgICAgICAgICgtW1dl
YkZpeGVkUG9zaXRpb25Db250ZW50IHNjcm9sbE9yWm9vbUNoYW5nZWQ6XSk6CisgICAgICAgICgt
W1dlYkZpeGVkUG9zaXRpb25Db250ZW50IG92ZXJmbG93U2Nyb2xsUG9zaXRpb25Gb3JMYXllcjpj
aGFuZ2VkVG86XSk6CisgICAgICAgICgtW1dlYkZpeGVkUG9zaXRpb25Db250ZW50IHNldFZpZXdw
b3J0Q29uc3RyYWluZWRMYXllcnM6c3RpY2t5Q29udGFpbmVyTWFwOl0pOgorICAgICAgICAoLVtX
ZWJGaXhlZFBvc2l0aW9uQ29udGVudCBoYXNGaXhlZE9yU3RpY2t5UG9zaXRpb25MYXllcnNdKToK
KyAgICAgICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgbWluaW11bU9mZnNldEZyb21GaXhl
ZFBvc2l0aW9uTGF5ZXJzVG9BbmNob3JFZGdlOm9mUmVjdDppbkxheWVyOl0pOgorCiAyMDE1LTA4
LTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIGRhdGFiYXNlIHRocmVhZCBwYXVzZSBjb2RlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5t
bQkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQv
V2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkg
QEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotc3Rh
dGljIE11dGV4JiBXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKCkKK3N0YXRpYyBEZXBy
ZWNhdGVkTXV0ZXgmIFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxvY2soKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0ZXgsICgpKTsKKyAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGVwcmVjYXRlZE11dGV4LCBtdXRleCwgKCkpOwog
ICAgIHJldHVybiBtdXRleDsKIH0KIApAQCAtMTAxLDcgKzEwMSw3IEBAIC0gKHZvaWQpZGVhbGxv
YwogCiAtICh2b2lkKXNjcm9sbE9yWm9vbUNoYW5nZWQ6KENHUmVjdClwb3NpdGlvbmVkT2JqZWN0
c1JlY3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0
YUxvY2soKSk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2soV2ViRml4ZWRQb3NpdGlv
bkNvbnRlbnREYXRhTG9jaygpKTsKIAogICAgIExheWVySW5mb01hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gX3ByaXZhdGUtPm1fdmlld3BvcnRDb25zdHJhaW5lZExheWVycy5lbmQoKTsKICAgICBm
b3IgKExheWVySW5mb01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBfcHJpdmF0ZS0+bV92aWV3cG9y
dENvbnN0cmFpbmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtMTQwLDcg
KzE0MCw3IEBAIC0gKHZvaWQpc2Nyb2xsT3Jab29tQ2hhbmdlZDooQ0dSZWN0KXBvc2kKIAogLSAo
dm9pZClvdmVyZmxvd1Njcm9sbFBvc2l0aW9uRm9yTGF5ZXI6KENBTGF5ZXIgKilzY3JvbGxMYXll
ciBjaGFuZ2VkVG86KENHUG9pbnQpc2Nyb2xsUG9zaXRpb24KIHsKLSAgICBNdXRleExvY2tlciBs
b2NrKFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxvY2soKSk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2soV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jaygpKTsKIAogICAg
IExheWVySW5mb01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gX3ByaXZhdGUtPm1fdmlld3BvcnRD
b25zdHJhaW5lZExheWVycy5lbmQoKTsKICAgICBmb3IgKExheWVySW5mb01hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtMTczLDcgKzE3Myw3IEBAIC0gKHZvaWQpZGlkRmluaXNo
U2Nyb2xsaW5nT3Jab29taW5nCiAKIC0gKHZvaWQpc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVy
czooV1RGOjpIYXNoTWFwPENBTGF5ZXIgKiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlZpZXdw
b3J0Q29uc3RyYWludHM+PiYpbGF5ZXJNYXAgc3RpY2t5Q29udGFpbmVyTWFwOihXVEY6Okhhc2hN
YXA8Q0FMYXllciosIENBTGF5ZXIqPiYpc3RpY2t5Q29udGFpbmVycwogewotICAgIE11dGV4TG9j
a2VyIGxvY2soV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jaygpKTsKKyAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9jayhXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKCkpOwog
CiAgICAgX3ByaXZhdGUtPm1fdmlld3BvcnRDb25zdHJhaW5lZExheWVycy5jbGVhcigpOwogCkBA
IC0xOTAsNyArMTkwLDcgQEAgLSAodm9pZClzZXRWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzOihX
VAogCiAtIChCT09MKWhhc0ZpeGVkT3JTdGlja3lQb3NpdGlvbkxheWVycwogewotICAgIE11dGV4
TG9ja2VyIGxvY2soV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jaygpKTsKKyAgICBEZXBy
ZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKCkp
OwogICAgIHJldHVybiAhX3ByaXZhdGUtPm1fdmlld3BvcnRDb25zdHJhaW5lZExheWVycy5pc0Vt
cHR5KCk7CiB9CiAKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgVmlld3BvcnRDb25zdHJhaW50
czo6QW5jaG9yRWRnZUZsCiAKIC0gKENHRmxvYXQpbWluaW11bU9mZnNldEZyb21GaXhlZFBvc2l0
aW9uTGF5ZXJzVG9BbmNob3JFZGdlOihXZWJGaXhlZFBvc2l0aW9uQW5jaG9yRWRnZSlhbmNob3JF
ZGdlIG9mUmVjdDooQ0dSZWN0KXJlY3QgaW5MYXllcjooQ0FMYXllciAqKWxheWVyCiB7Ci0gICAg
TXV0ZXhMb2NrZXIgbG9jayhXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKCkpOworICAg
IERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxv
Y2soKSk7CiAgICAgVmlld3BvcnRDb25zdHJhaW50czo6QW5jaG9yRWRnZUZsYWdzIGFuY2hvckVk
Z2VGbGFncyA9IGFuY2hvckVkZ2VGbGFnc0ZvckFuY2hvckVkZ2UoYW5jaG9yRWRnZSk7CiAgICAg
Q0dGbG9hdCBtaW5pbXVtT2Zmc2V0ID0gQ0dGTE9BVF9NQVg7CiAgICAgTGF5ZXJJbmZvTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJz
LmVuZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTUtMDgtMDQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5h
bWUgTXV0ZXggdG8gRGVwcmVjYXRlZE11dGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tOgorICAg
ICAgICAodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKToKKyAgICAgICAg
KCtbV2ViRGF0YWJhc2VNYW5hZ2VyIHN0YXJ0QmFja2dyb3VuZFRhc2tdKToKKyAgICAgICAgKCtb
V2ViRGF0YWJhc2VNYW5hZ2VyIGVuZEJhY2tncm91bmRUYXNrXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9zeW5jaHJvbml6ZUN1c3RvbUZpeGVk
UG9zaXRpb25MYXlvdXRSZWN0XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldEN1c3RvbUZpeGVk
UG9zaXRpb25MYXlvdXRSZWN0SW5XZWJUaHJlYWQ6c3luY2hyb25pemU6XSk6CisgICAgICAgICgt
W1dlYlZpZXcgX3NldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0Ol0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9mZXRjaEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0Ol0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKwogMjAxNS0wOC0wNCAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBkYXRhYmFzZSB0aHJlYWQg
cGF1c2UgY29kZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1h
bmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRh
YmFzZU1hbmFnZXIubW0JKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsOSArMjI2
LDkgQEAgKyAodm9pZClzY2hlZHVsZUVtcHR5RGF0YWJhc2VSZW1vdmFsCiAjaWYgUExBVEZPUk0o
SU9TKQogQGltcGxlbWVudGF0aW9uIFdlYkRhdGFiYXNlTWFuYWdlciAoV2ViRGF0YWJhc2VNYW5h
Z2VySW50ZXJuYWwpCiAKLXN0YXRpYyBNdXRleCYgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lk
ZW50aWZpZXJMb2NrKCkKK3N0YXRpYyBEZXByZWNhdGVkTXV0ZXgmIHRyYW5zYWN0aW9uQmFja2dy
b3VuZFRhc2tJZGVudGlmaWVyTG9jaygpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKE11dGV4LCBtdXRleCwgKCkpOworICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChEZXByZWNhdGVkTXV0ZXgsIG11dGV4LCAoKSk7CiAgICAgcmV0dXJuIG11dGV4OwogfQog
CkBAIC0yNjEsNyArMjYxLDcgQEAgKyAodm9pZClkaWRGaW5pc2hMYXN0VHJhbnNhY3Rpb24KIAog
KyAodm9pZClzdGFydEJhY2tncm91bmRUYXNrCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayh0cmFu
c2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxvY2soKSk7CisgICAgRGVwcmVjYXRlZE11
dGV4TG9ja2VyIGxvY2sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKCkp
OwogCiAgICAgLy8gSWYgdGhlcmUncyBhbHJlYWR5IGFuIGV4aXN0aW5nIGJhY2tncm91bmQgdGFz
ayBnb2luZyBvbiwgdGhlcmUncyBubyBuZWVkIHRvIHN0YXJ0IGEgbmV3IG9uZS4KICAgICBpZiAo
Z2V0VHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIoKSAhPSBpbnZhbGlkV2ViQmFj
a2dyb3VuZFRhc2tJZGVudGlmaWVyKCkpCkBAIC0yNzUsNyArMjc1LDcgQEAgKyAodm9pZClzdGFy
dEJhY2tncm91bmRUYXNrCiAKICsgKHZvaWQpZW5kQmFja2dyb3VuZFRhc2sKIHsKLSAgICBNdXRl
eExvY2tlciBsb2NrKHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jaygpKTsK
KyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayh0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNr
SWRlbnRpZmllckxvY2soKSk7CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHdlIHdlcmUg
dW5hYmxlIHRvIHN0YXJ0IHRoZSBiYWNrZ3JvdW5kIHRhc2sgd2hlbiB0aGUgZmlyc3QgdHJhbnNh
Y3Rpb24gYmVnYW4uCiAgICAgLy8gRG9uJ3QgdHJ5IHRvIGVuZCB0aGUgdGFzayBpbiB0aGF0IGNh
c2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxODc5
MzIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM2MzIsNyArMzYzMiw3IEBAIC0gKHZvaWQpX3N5bmNocm9uaXplQ3VzdG9tRml4ZWRQ
b3NpdGlvbkwKIAogICAgIEludFJlY3QgbmV3UmVjdDsKICAgICB7Ci0gICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgp
OworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5kaW5n
Rml4ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleCk7CiAgICAgICAgIGlmIChDR1JlY3RJc051bGwo
X3ByaXZhdGUtPnBlbmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIG5ld1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KF9wcml2YXRlLT5wZW5k
aW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3QpOwpAQCAtMzY0Niw3ICszNjQ2LDcgQEAgLSAodm9p
ZClfc3luY2hyb25pemVDdXN0b21GaXhlZFBvc2l0aW9uTAogLSAodm9pZClfc2V0Q3VzdG9tRml4
ZWRQb3NpdGlvbkxheW91dFJlY3RJbldlYlRocmVhZDooQ0dSZWN0KXJlY3Qgc3luY2hyb25pemU6
KEJPT0wpc3luY2hyb25pemUKIHsKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihf
cHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0ZXgpOworICAgICAgICBE
ZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlv
bkxheW91dFJlY3RNdXRleCk7CiAgICAgICAgIF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlv
bkxheW91dFJlY3QgPSByZWN0OwogICAgIH0KICAgICBpZiAoIXN5bmNocm9uaXplKQpAQCAtMzY2
MCw3ICszNjYwLDcgQEAgLSAodm9pZClfc2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlYwog
ewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZCgpKTsKICAgICB7Ci0gICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0TXV0
ZXgpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKF9wcml2YXRlLT5wZW5k
aW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleCk7CiAgICAgICAgIF9wcml2YXRlLT5wZW5k
aW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3QgPSByZWN0OwogICAgIH0KICAgICBbc2VsZiBfc3lu
Y2hyb25pemVDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdF07CkBAIC0zNjY4LDcgKzM2Njgs
NyBAQCAtICh2b2lkKV9zZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjCiAKIC0gKEJPT0wp
X2ZldGNoQ3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6KE5TUmVjdCopcmVjdAogewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcihfcHJpdmF0ZS0+cGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRS
ZWN0TXV0ZXgpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoX3ByaXZhdGUtPnBl
bmRpbmdGaXhlZFBvc2l0aW9uTGF5b3V0UmVjdE11dGV4KTsKICAgICBpZiAoQ0dSZWN0SXNOdWxs
KF9wcml2YXRlLT5wZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3QpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJ
KHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0Rh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIEBpbnRlcmZhY2UgV2ViVmll
d1ByaXZhdGUgOiBOU09iamVjdCB7CiAgICAgQ0dTaXplIGZpeGVkTGF5b3V0U2l6ZTsKICAgICBC
T09MIG1haW5WaWV3SXNTY3JvbGxpbmdPclpvb21pbmc7CiAgICAgaW50MzJfdCBkaWREcmF3VGls
ZXM7Ci0gICAgV1RGOjpNdXRleCBwZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3RNdXRleDsK
KyAgICBXVEY6OkRlcHJlY2F0ZWRNdXRleCBwZW5kaW5nRml4ZWRQb3NpdGlvbkxheW91dFJlY3RN
dXRleDsKICAgICBDR1JlY3QgcGVuZGluZ0ZpeGVkUG9zaXRpb25MYXlvdXRSZWN0OwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzkzMikKKysrIFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA4
LTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIE11
dGV4IHRvIERlcHJlY2F0ZWRNdXRleAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ3Njc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6c2NoZWR1bGVDYWxs
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnJlZ2lzdGVy
UGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnVu
cmVnaXN0ZXJQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTWFpblRocmVhZFNjaGVk
dWxlcjo6ZGlzcGF0Y2hDYWxsc0ZvclBsdWdpbik6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5N
YWluVGhyZWFkU2NoZWR1bGVyLmg6CisgICAgICAgICogV2ViSWNvbkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkljb25EYXRhYmFzZTo6ZGlkUmVtb3ZlQWxsSWNvbnMpOgorICAgICAgICAoV2Vi
SWNvbkRhdGFiYXNlOjpkaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJJ
Y29uRGF0YWJhc2U6OmRlbGl2ZXJOb3RpZmljYXRpb25zKToKKyAgICAgICAgKiBXZWJMb2NhbGl6
YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAobWFpbkJ1bmRsZUxvY1N0cmluZ3MpOgorICAgICAg
ICAoZnJhbWV3b3JrTG9jU3RyaW5nc011dGV4KToKKyAgICAgICAgKGZpbmRDYWNoZWRTdHJpbmcp
OgorICAgICAgICAoY2FjaGVTdHJpbmcpOgorCiAyMDE1LTA4LTA0ICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVwZGF0ZSBBcHBsZSBXaW5kb3dz
IGJ1aWxkIGZvciBWUzIwMTUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNw
cAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDE0ICszMjAsMTQgQEAgSEJJVE1BUCBXZWJJY29u
RGF0YWJhc2U6OmdldE9yQ3JlYXRlRGVmYQogdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRpZFJlbW92
ZUFsbEljb25zKCkKIHsKICAgICAvLyBRdWV1ZWluZyB0aGUgZW1wdHkgc3RyaW5nIGlzIGEgc3Bl
Y2lhbCB3YXkgb2Ygc2F5aW5nICJ0aGlzIHF1ZXVlZCBub3RpZmljYXRpb24gaXMgdGhlIGRpZFJl
bW92ZUFsbEljb25zIG5vdGlmaWNhdGlvbiIKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9ub3Rp
ZmljYXRpb25NdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX25vdGlm
aWNhdGlvbk11dGV4KTsKICAgICBtX25vdGlmaWNhdGlvblF1ZXVlLmFwcGVuZChTdHJpbmcoKSk7
CiAgICAgc2NoZWR1bGVOb3RpZmljYXRpb25EZWxpdmVyeSgpOwogfQogCiB2b2lkIFdlYkljb25E
YXRhYmFzZTo6ZGlkSW1wb3J0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgV1RGOjpTdHJpbmcmIHBh
Z2VVUkwpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbm90aWZpY2F0aW9uTXV0ZXgpOwor
ICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9ub3RpZmljYXRpb25NdXRleCk7CiAg
ICAgbV9ub3RpZmljYXRpb25RdWV1ZS5hcHBlbmQocGFnZVVSTC5pc29sYXRlZENvcHkoKSk7CiAg
ICAgc2NoZWR1bGVOb3RpZmljYXRpb25EZWxpdmVyeSgpOwogfQpAQCAtNDAzLDcgKzQwMyw3IEBA
IHZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkZWxpdmVyTm90aWZpY2F0aW8KIAogICAgIFZlY3RvcjxT
dHJpbmc+IHF1ZXVlOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc2hhcmVk
V2ViSWNvbkRhdGFiYXNlLT5tX25vdGlmaWNhdGlvbk11dGV4KTsKKyAgICAgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2tlcihtX3NoYXJlZFdlYkljb25EYXRhYmFzZS0+bV9ub3RpZmljYXRp
b25NdXRleCk7CiAgICAgICAgIHF1ZXVlLnN3YXAobV9zaGFyZWRXZWJJY29uRGF0YWJhc2UtPm1f
bm90aWZpY2F0aW9uUXVldWUpOwogICAgICAgICBtX3NoYXJlZFdlYkljb25EYXRhYmFzZS0+bV9k
ZWxpdmVyeVJlcXVlc3RlZCA9IGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDQsOSArNDQsOSBAQCBXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgV2ViS2l0TG9jYWxpCiAK
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIExvY2FsaXplZFN0cmluZyo+IExvY2FsaXplZFN0cmlu
Z01hcDsKIAotc3RhdGljIE11dGV4JiBtYWluQnVuZGxlTG9jU3RyaW5nc011dGV4KCkKK3N0YXRp
YyBEZXByZWNhdGVkTXV0ZXgmIG1haW5CdW5kbGVMb2NTdHJpbmdzTXV0ZXgoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgbXV0ZXgsICgpKTsKKyAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGVwcmVjYXRlZE11dGV4LCBtdXRleCwgKCkpOwog
ICAgIHJldHVybiBtdXRleDsKIH0KIApAQCAtNTYsOSArNTYsOSBAQCBzdGF0aWMgTG9jYWxpemVk
U3RyaW5nTWFwJiBtYWluQnVuZGxlTG9jCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotc3RhdGljIE11
dGV4JiBmcmFtZXdvcmtMb2NTdHJpbmdzTXV0ZXgoKQorc3RhdGljIERlcHJlY2F0ZWRNdXRleCYg
ZnJhbWV3b3JrTG9jU3RyaW5nc011dGV4KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoTXV0ZXgsIG11dGV4LCAoKSk7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKERlcHJlY2F0ZWRNdXRleCwgbXV0ZXgsICgpKTsKICAgICByZXR1cm4gbXV0ZXg7CiB9
CiAKQEAgLTE3NSwxMiArMTc1LDEyIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5TG9jYWxpemVk
U3RyaW5nRnIKIHN0YXRpYyBMb2NhbGl6ZWRTdHJpbmcqIGZpbmRDYWNoZWRTdHJpbmcoV2ViTG9j
YWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdHJpbmdzQnVuZGxlLCBjb25zdCBTdHJpbmcmIGtleSkK
IHsKICAgICBpZiAoIXN0cmluZ3NCdW5kbGUpIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayht
YWluQnVuZGxlTG9jU3RyaW5nc011dGV4KCkpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2Nr
ZXIgbG9jayhtYWluQnVuZGxlTG9jU3RyaW5nc011dGV4KCkpOwogICAgICAgICByZXR1cm4gbWFp
bkJ1bmRsZUxvY1N0cmluZ3MoKS5nZXQoa2V5KTsKICAgICB9CiAKICAgICBpZiAoc3RyaW5nc0J1
bmRsZS0+YnVuZGxlID09IFdlYktpdExvY2FsaXphYmxlU3RyaW5nc0J1bmRsZS5idW5kbGUpIHsK
LSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhmcmFtZXdvcmtMb2NTdHJpbmdzTXV0ZXgoKSk7Cisg
ICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKGZyYW1ld29ya0xvY1N0cmluZ3NNdXRl
eCgpKTsKICAgICAgICAgcmV0dXJuIGZyYW1ld29ya0xvY1N0cmluZ3MoKS5nZXQoa2V5KTsKICAg
ICB9CiAKQEAgLTE5MCwxMiArMTkwLDEyIEBAIHN0YXRpYyBMb2NhbGl6ZWRTdHJpbmcqIGZpbmRD
YWNoZWRTdHJpbmcKIHN0YXRpYyB2b2lkIGNhY2hlU3RyaW5nKFdlYkxvY2FsaXphYmxlU3RyaW5n
c0J1bmRsZSogc3RyaW5nc0J1bmRsZSwgY29uc3QgU3RyaW5nJiBrZXksIExvY2FsaXplZFN0cmlu
ZyogdmFsdWUpCiB7CiAgICAgaWYgKCFzdHJpbmdzQnVuZGxlKSB7Ci0gICAgICAgIE11dGV4TG9j
a2VyIGxvY2sobWFpbkJ1bmRsZUxvY1N0cmluZ3NNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRl
ZE11dGV4TG9ja2VyIGxvY2sobWFpbkJ1bmRsZUxvY1N0cmluZ3NNdXRleCgpKTsKICAgICAgICAg
bWFpbkJ1bmRsZUxvY1N0cmluZ3MoKS5zZXQoa2V5LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBNdXRleExvY2tlciBsb2NrKGZyYW1ld29ya0xvY1N0cmluZ3NNdXRleCgp
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9jayhmcmFtZXdvcmtMb2NTdHJpbmdzTXV0
ZXgoKSk7CiAgICAgZnJhbWV3b3JrTG9jU3RyaW5ncygpLnNldChrZXksIHZhbHVlKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5U
aHJlYWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAxODc5MzIpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0Miw3IEBAIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OlBsdWdpbk1haW5UaHIK
IAogdm9pZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpzY2hlZHVsZUNhbGwoTlBQIG5wcCwg
TWFpblRocmVhZEZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiB1c2VyRGF0YSkKIHsKLSAgICBNdXRl
eExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7CisgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxv
Y2sobV9xdWV1ZU11dGV4KTsKIAogICAgIENhbGxRdWV1ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2Nh
bGxRdWV1ZU1hcC5maW5kKG5wcCk7CiAgICAgaWYgKGl0ID09IG1fY2FsbFF1ZXVlTWFwLmVuZCgp
KQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnNjaGVk
dWxlCiAKIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6cmVnaXN0ZXJQbHVnaW4oTlBQ
IG5wcCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7CisgICAgRGVwcmVj
YXRlZE11dGV4TG9ja2VyIGxvY2sobV9xdWV1ZU11dGV4KTsKIAogICAgIEFTU0VSVCghbV9jYWxs
UXVldWVNYXAuY29udGFpbnMobnBwKSk7CiAgICAgbV9jYWxsUXVldWVNYXAuc2V0KG5wcCwgRGVx
dWU8Q2FsbD4oKSk7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVk
dWxlcjo6cmVnaXN0ZXIKIAogdm9pZCBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjp1bnJlZ2lz
dGVyUGx1Z2luKE5QUCBucHApCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3F1ZXVlTXV0ZXgp
OworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7CiAKICAgICBB
U1NFUlQobV9jYWxsUXVldWVNYXAuY29udGFpbnMobnBwKSk7CiAgICAgbV9jYWxsUXVldWVNYXAu
cmVtb3ZlKG5wcCk7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVk
dWxlcjo6ZGlzcGF0Y2gKICAgICBmb3IgKGF1dG8mIGNhbGwgOiBjYWxscykgewogICAgICAgICAv
LyBDaGVjayBpZiB0aGUgcGx1Zy1pbiBoYXMgYmVlbiBkZXN0cm95ZWQuCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICAgICAgICAgIERl
cHJlY2F0ZWRNdXRleExvY2tlciBsb2NrKG1fcXVldWVNdXRleCk7CiAgICAgICAgICAgICBpZiAo
IW1fY2FsbFF1ZXVlTWFwLmNvbnRhaW5zKG5wcCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJl
YWRTY2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1Bs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuaAkocmV2aXNpb24gMTg3OTMyKQorKysgU291cmNlL1dl
YktpdC93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9jYWxsUGVuZGluZzsK
ICAgICBDYWxsUXVldWVNYXAgbV9jYWxsUXVldWVNYXA7Ci0gICAgTXV0ZXggbV9xdWV1ZU11dGV4
OworICAgIERlcHJlY2F0ZWRNdXRleCBtX3F1ZXVlTXV0ZXg7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODc5MzIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNS0wOC0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgorCisgICAgICAgIFJlbmFtZSBNdXRleCB0byBEZXByZWNhdGVkTXV0ZXgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzY3NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHA6CisgICAgICAgIChqYXZhU2NyaXB0VGhyZWFkc011
dGV4KToKKyAgICAgICAgKHJ1bkphdmFTY3JpcHRUaHJlYWQpOgorICAgICAgICAoc3RhcnRKYXZh
U2NyaXB0VGhyZWFkcyk6CisgICAgICAgIChzdG9wSmF2YVNjcmlwdFRocmVhZHMpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dvcmtRdWV1ZS5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9nbGli
L1dvcmtRdWV1ZUdMaWIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIw
MTUtMDgtMDQgIERld2VpIFpodSAgPGRld2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgSW5z
dGFsbCB0d2lzdGVkIHBhY2thZ2UgZm9yIGh0dHAgc2VydmVyIHdoZW4gbmVjZXNzYXJ5LgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAJKHJldmlz
aW9uIDE4NzkzMikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qg
amF2YVNjcmlwdFRocmVhZHNDb3UKIHN0YXRpYyBib29sIGphdmFTY3JpcHRUaHJlYWRzU2hvdWxk
VGVybWluYXRlOwogc3RhdGljIEpTQ29udGV4dEdyb3VwUmVmIGphdmFTY3JpcHRUaHJlYWRzR3Jv
dXA7CiAKLXN0YXRpYyBNdXRleCYgamF2YVNjcmlwdFRocmVhZHNNdXRleCgpCitzdGF0aWMgRGVw
cmVjYXRlZE11dGV4JiBqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIHN0YXRpY011dGV4LCAoKSk7CisgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKERlcHJlY2F0ZWRNdXRleCwgc3RhdGljTXV0ZXgsICgp
KTsKICAgICByZXR1cm4gc3RhdGljTXV0ZXg7CiB9CiAKQEAgLTcwLDI2ICs3MCwyNiBAQCB2b2lk
IHJ1bkphdmFTY3JpcHRUaHJlYWQodm9pZCopCiAKICAgICBKU0dsb2JhbENvbnRleHRSZWYgY3R4
OwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0
ZXgoKSk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRo
cmVhZHNNdXRleCgpKTsKICAgICAgICAgY3R4ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91
cChqYXZhU2NyaXB0VGhyZWFkc0dyb3VwLCAwKTsKICAgICB9CiAKICAgICBKU1N0cmluZ1JlZiBz
Y3JpcHRSZWY7CiAgICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRo
cmVhZHNNdXRleCgpKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihqYXZh
U2NyaXB0VGhyZWFkc011dGV4KCkpOwogICAgICAgICBzY3JpcHRSZWYgPSBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHQpOwogICAgIH0KIAogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFk
c011dGV4KCkpOworICAgICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihqYXZh
U2NyaXB0VGhyZWFkc011dGV4KCkpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSAwOwogICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIHNjcmlwdFJlZiwgMCwgMCwg
MSwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbik7CiAgICAgICAg
IH0KIAogICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlw
dFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2Nr
ZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKICAgICAgICAgICAgIGNvbnN0IHNpemVfdCB2
YWx1ZXNDb3VudCA9IDEwMjQ7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlc1t2YWx1ZXND
b3VudF07CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlc0NvdW50OyAr
K2kpCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgcnVuSmF2YVNjcmlwdFRocmVhZCh2b2lkKikKICAg
ICAgICAgfQogCiAgICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZh
U2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2Vy
IGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOwogICAgICAgICAgICAgaWYgKGphdmFT
Y3JpcHRUaHJlYWRzU2hvdWxkVGVybWluYXRlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBydW5KYXZhU2NyaXB0VGhyZWFkKHZvaWQq
KQogICAgICAgICBpZiAocmFuZCgpICUgNSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAg
ICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7
CiAgICAgICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkID0gY3VycmVudFRocmVhZCgpOwogICAg
ICAgICBkZXRhY2hUaHJlYWQodGhyZWFkKTsKICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5y
ZW1vdmUodGhyZWFkKTsKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIHJ1bkphdmFTY3JpcHRUaHJl
YWQodm9pZCopCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uoc2Ny
aXB0UmVmKTsKICAgICBKU0dhcmJhZ2VDb2xsZWN0KGN0eCk7CiAgICAgSlNHbG9iYWxDb250ZXh0
UmVsZWFzZShjdHgpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgc3RhcnRKYXZhU2NyaXB0VGhy
ZWFkcygpCiB7CiAgICAgamF2YVNjcmlwdFRocmVhZHNHcm91cCA9IEpTQ29udGV4dEdyb3VwQ3Jl
YXRlKCk7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgp
KTsKKyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0
ZXgoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGphdmFTY3JpcHRUaHJlYWRzQ291
bnQ7ICsraSkKICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5hZGQoY3JlYXRlVGhyZWFkKCZy
dW5KYXZhU2NyaXB0VGhyZWFkLCAwLCAwKSk7CkBAIC0xMzMsMTMgKzEzMywxMyBAQCB2b2lkIHN0
YXJ0SmF2YVNjcmlwdFRocmVhZHMoKQogdm9pZCBzdG9wSmF2YVNjcmlwdFRocmVhZHMoKQogewog
ICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgo
KSk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVh
ZHNNdXRleCgpKTsKICAgICAgICAgamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUgPSB0
cnVlOwogICAgIH0KIAogICAgIFZlY3RvcjxUaHJlYWRJZGVudGlmaWVyLCBqYXZhU2NyaXB0VGhy
ZWFkc0NvdW50PiB0aHJlYWRzOwogICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGph
dmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBs
b2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKICAgICAgICAgY29weVRvVmVjdG9yKGph
dmFTY3JpcHRUaHJlYWRzKCksIHRocmVhZHMpOwogICAgICAgICBBU1NFUlQodGhyZWFkcy5zaXpl
KCkgPT0gamF2YVNjcmlwdFRocmVhZHNDb3VudCk7CiAgICAgfQpAQCAtMTQ4LDcgKzE0OCw3IEBA
IHZvaWQgc3RvcEphdmFTY3JpcHRUaHJlYWRzKCkKICAgICAgICAgd2FpdEZvclRocmVhZENvbXBs
ZXRpb24odGhyZWFkc1tpXSk7CiAKICAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihq
YXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIg
bG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CiAgICAgICAgIGphdmFTY3JpcHRUaHJl
YWRzKCkuY2xlYXIoKTsKICAgICB9CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1dvcmtRdWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvV29ya1F1ZXVlLmNwcAkocmV2aXNpb24gMTg3OTMyKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvV29ya1F1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAs
NyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGlzcGF0Y2hBZnRlckxhYmVsID0gCiAgICAgCiBURVNU
KFdURl9Xb3JrUXVldWUsIFNpbXBsZSkKIHsKLSAgICBNdXRleCBtX2xvY2s7CisgICAgRGVwcmVj
YXRlZE11dGV4IG1fbG9jazsKICAgICBUaHJlYWRDb25kaXRpb24gbV90ZXN0Q29tcGxldGVkOwog
ICAgIFZlY3RvcjxzdGQ6OnN0cmluZz4gbV9mdW5jdGlvbkNhbGxPcmRlcjsKIApAQCAtNTYsNyAr
NTYsNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIFNpbXBsZSkKICAgICBpbnQgaW5pdGlhbFJlZkNv
dW50ID0gcXVldWUtPnJlZkNvdW50KCk7CiAgICAgRVhQRUNUX0VRKDEsIGluaXRpYWxSZWZDb3Vu
dCk7CiAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBEZXByZWNhdGVkTXV0
ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgcXVldWUtPmRpc3BhdGNoKFsmXSh2b2lkKSB7
CiAgICAgICAgIG1fZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHNpbXBsZVRlc3RMYWJlbCk7CiAg
ICAgICAgIGNhbGxlZFNpbXBsZVRlc3QgPSB0cnVlOwpAQCAtNjksNyArNjksNyBAQCBURVNUKFdU
Rl9Xb3JrUXVldWUsIFNpbXBsZSkKICAgICB9KTsKIAogICAgIHF1ZXVlLT5kaXNwYXRjaChbJl0o
dm9pZCkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgRGVw
cmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBtX2Z1bmN0aW9uQ2Fs
bE9yZGVyLmFwcGVuZCh0aGlyZFRlc3RMYWJlbCk7CiAgICAgICAgIGNhbGxlZFRoaXJkVGVzdCA9
IHRydWU7CiAKQEAgLTk2LDcgKzk2LDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBTaW1wbGUpCiAK
IFRFU1QoV1RGX1dvcmtRdWV1ZSwgVHdvUXVldWVzKQogewotICAgIE11dGV4IG1fbG9jazsKKyAg
ICBEZXByZWNhdGVkTXV0ZXggbV9sb2NrOwogICAgIFRocmVhZENvbmRpdGlvbiBtX3Rlc3RRdWV1
ZTFDb21wbGV0ZWQsIG1fdGVzdFF1ZXVlMkNvbXBsZXRlZDsKICAgICBWZWN0b3I8c3RkOjpzdHJp
bmc+IG1fZnVuY3Rpb25DYWxsT3JkZXI7CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBURVNUKFdURl9X
b3JrUXVldWUsIFR3b1F1ZXVlcykKICAgICBFWFBFQ1RfRVEoMSwgcXVldWUxLT5yZWZDb3VudCgp
KTsKICAgICBFWFBFQ1RfRVEoMSwgcXVldWUyLT5yZWZDb3VudCgpKTsKIAotICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9s
b2NrKTsKICAgICAKICAgICBxdWV1ZTEtPmRpc3BhdGNoKFsmXSh2b2lkKSB7CiAgICAgICAgIG1f
ZnVuY3Rpb25DYWxsT3JkZXIuYXBwZW5kKHNpbXBsZVRlc3RMYWJlbCk7CkBAIC0xMjAsNyArMTIw
LDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBUd29RdWV1ZXMpCiAgICAgcXVldWUyLT5kaXNwYXRj
aChbJl0odm9pZCkgewogICAgICAgICBzdGQ6OnRoaXNfdGhyZWFkOjpzbGVlcF9mb3Ioc3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcyg1MCkpOwogCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X2xvY2spOworICAgICAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAK
ICAgICAgICAgLy8gV2lsbCBmYWlsIGlmIHF1ZXVlMiB0b29rIHRoZSBtdXRleCBiZWZvcmUgcXVl
dWUxLgogICAgICAgICBFWFBFQ1RfVFJVRShjYWxsZWRUaGlyZFRlc3QpOwpAQCAtMTMxLDcgKzEz
MSw3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgVHdvUXVldWVzKQogICAgIH0pOwogCiAgICAgcXVl
dWUxLT5kaXNwYXRjaChbJl0odm9pZCkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAg
ICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVuZCh0aGlyZFRlc3RMYWJlbCk7CiAgICAgICAg
IGNhbGxlZFRoaXJkVGVzdCA9IHRydWU7CiAgICAgICAgIApAQCAtMTU4LDcgKzE1OCw3IEBAIFRF
U1QoV1RGX1dvcmtRdWV1ZSwgVHdvUXVldWVzKQogCiBURVNUKFdURl9Xb3JrUXVldWUsIERpc3Bh
dGNoQWZ0ZXIpCiB7Ci0gICAgTXV0ZXggbV9sb2NrOworICAgIERlcHJlY2F0ZWRNdXRleCBtX2xv
Y2s7CiAgICAgVGhyZWFkQ29uZGl0aW9uIG1fdGVzdENvbXBsZXRlZCwgbV9kaXNwYXRjaEFmdGVy
VGVzdENvbXBsZXRlZDsKICAgICBWZWN0b3I8c3RkOjpzdHJpbmc+IG1fZnVuY3Rpb25DYWxsT3Jk
ZXI7CiAKQEAgLTE2NywxNyArMTY3LDE3IEBAIFRFU1QoV1RGX1dvcmtRdWV1ZSwgRGlzcGF0Y2hB
ZnRlcikKIAogICAgIGF1dG8gcXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldl
YktpdC5UZXN0LmRpc3BhdGNoQWZ0ZXIiKTsKIAotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xv
Y2spOworICAgIERlcHJlY2F0ZWRNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKIAogICAgIHF1
ZXVlLT5kaXNwYXRjaChbJl0odm9pZCkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAg
ICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVuZChzaW1wbGVUZXN0TGFiZWwpOwogICAgICAg
ICBjYWxsZWRTaW1wbGVUZXN0ID0gdHJ1ZTsKICAgICAgICAgbV90ZXN0Q29tcGxldGVkLnNpZ25h
bCgpOwogICAgIH0pOwogCiAgICAgcXVldWUtPmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyg1MDApLCBbJl0odm9pZCkgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAgICAgRGVwcmVjYXRlZE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwog
ICAgICAgICBtX2Z1bmN0aW9uQ2FsbE9yZGVyLmFwcGVuZChkaXNwYXRjaEFmdGVyTGFiZWwpOwog
ICAgICAgICBjYWxsZWREaXNwYXRjaEFmdGVyVGVzdCA9IHRydWU7CiAgICAgICAgIG1fZGlzcGF0
Y2hBZnRlclRlc3RDb21wbGV0ZWQuc2lnbmFsKCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAJKHJldmlzaW9uIDE4
NzkzMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2dsaWIvV29ya1F1ZXVlR0xp
Yi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogVEVTVChXVEZfV29ya1F1ZXVlLCBBc3luY0lPKQogewogICAgIHN0cnVjdCBUZXN0
aW5nQ29udGV4dCB7Ci0gICAgICAgIE11dGV4IG1fbG9jazsKKyAgICAgICAgRGVwcmVjYXRlZE11
dGV4IG1fbG9jazsKICAgICAgICAgVGhyZWFkQ29uZGl0aW9uIG1fdGVzdENvbXBsZXRlZDsKICAg
ICAgICAgR01haW5Db250ZXh0KiBtX21haW5Db250ZXh0OwogICAgIH0gY29udGV4dDsKQEAgLTQ5
LDcgKzQ5LDcgQEAgVEVTVChXVEZfV29ya1F1ZXVlLCBBc3luY0lPKQogICAgIEdVbmlxdWVQdHI8
Y2hhcj4gY3VycmVudERpcmVjdG9yeShnX2dldF9jdXJyZW50X2RpcigpKTsKICAgICBHUmVmUHRy
PEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoY3VycmVudERpcmVj
dG9yeS5nZXQoKSkpOwogCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGNvbnRleHQubV9sb2NrKTsK
KyAgICBEZXByZWNhdGVkTXV0ZXhMb2NrZXIgbG9ja2VyKGNvbnRleHQubV9sb2NrKTsKICAgICBx
dWV1ZS0+ZGlzcGF0Y2goWyZdKHZvaWQpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoZ19tYWluX2Nv
bnRleHRfZ2V0X3RocmVhZF9kZWZhdWx0KCkpOwogICAgICAgICBFWFBFQ1RfVFJVRShnX21haW5f
Y29udGV4dF9nZXRfdGhyZWFkX2RlZmF1bHQoKSAhPSBjb250ZXh0Lm1fbWFpbkNvbnRleHQpOwpA
QCAtNTcsNyArNTcsNyBAQCBURVNUKFdURl9Xb3JrUXVldWUsIEFzeW5jSU8pCiAgICAgICAgIGdf
ZmlsZV9xdWVyeV9pbmZvX2FzeW5jKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRB
UkRfU0laRSwgR19GSUxFX1FVRVJZX0lORk9fTk9ORSwgR19QUklPUklUWV9ERUZBVUxULCBudWxs
cHRyLAogICAgICAgICAgICAgW10oR09iamVjdCosIEdBc3luY1Jlc3VsdCosIGdwb2ludGVyIHVz
ZXJEYXRhKSB7CiAgICAgICAgICAgICAgICAgVGVzdGluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0
aWNfY2FzdDxUZXN0aW5nQ29udGV4dCo+KHVzZXJEYXRhKTsKLSAgICAgICAgICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIoY29udGV4dC0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICBEZXByZWNh
dGVkTXV0ZXhMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm1fbG9jayk7CiAgICAgICAgICAgICAgICAg
RVhQRUNUX0VRKGdfbWFpbl9jb250ZXh0X2dldF90aHJlYWRfZGVmYXVsdCgpLCBjb250ZXh0LT5t
X21haW5Db250ZXh0KTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5tX3Rlc3RDb21wbGV0ZWQu
c2lnbmFsKCk7CiAgICAgICAgICAgICB9LCAmY29udGV4dCk7Cg==
</data>
<flag name="review"
          id="283435"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>