<?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>162995</bug_id>
          
          <creation_ts>2016-10-05 22:04:29 -0700</creation_ts>
          <short_desc>[JSC] Add @throwXXXError bytecode intrinsic</short_desc>
          <delta_ts>2016-10-06 00:46:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236896</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-05 22:04:29 -0700</bug_when>
    <thetext>In builtin JS, there are so many `throw @TypeError(&quot;.....&quot;);` things.
But it spreads so large byte code sequence, effectively enlarges the size of bytecodes, and prevent us from inlining!

[  15] resolve_scope     loc8, loc3, PrivateSymbol.TypeError(@id0), &lt;GlobalVar&gt;, 0, 0x110bdc0a0
[  22] get_from_scope    loc9, loc8, PrivateSymbol.TypeError(@id0), 2049&lt;ThrowIfNotFound|GlobalVar|NotInitialization&gt;, 238692432    predicting None
[  30] mov               loc12, loc9
[  33] mov               loc11, String (atomic) (identifier): Properties can only be defined on Objects., ID: 4(const0)
[  36] construct         loc9, loc9, 2, 18 (this at loc12) status(Could Take Slow Path)    predicting None
[  45] throw             loc9
[  47] ...

Oh, it bloats 32 intructions! We already have great solution. Let&apos;s emit op_throw_static_error instead (size is only 3).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236898</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-05 22:10:40 -0700</bug_when>
    <thetext>Some motivation: we would like to implement Object.defineProperty in builtin JS and allows it inlined. By doing so, property descriptor object { value: xxx } can get a chance to be allocation sinked in FTL. But it turns out that @TypeError etc. operations easily enlarge the size of byte code sequence and prevent us from inlining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236927</commentid>
    <comment_count>2</comment_count>
      <attachid>290786</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-05 23:58:13 -0700</bug_when>
    <thetext>Created attachment 290786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236935</commentid>
    <comment_count>3</comment_count>
      <attachid>290786</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-06 00:40:38 -0700</bug_when>
    <thetext>Comment on attachment 290786
Patch

Maybe it&apos;s worth fixing the builtins in WebCore too? Or maybe in a follow up patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236937</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-06 00:44:46 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 290786 [details]
&gt; Patch
&gt; 
&gt; Maybe it&apos;s worth fixing the builtins in WebCore too? Or maybe in a follow up
&gt; patch?

Yeah, it&apos;s worth fixing in WebCore! I&apos;ll upload it separately soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236938</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-06 00:46:57 -0700</bug_when>
    <thetext>Committed r206853: &lt;http://trac.webkit.org/changeset/206853&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290786</attachid>
            <date>2016-10-05 23:58:13 -0700</date>
            <delta_ts>2016-10-06 00:40:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162995-20161006155459.patch</filename>
            <type>text/plain</type>
            <size>81817</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDQzODFjNTc0MTE1YTI3Y2MwY2Y5MDcyNTdmZWYxNWFhYzllYmNlLi5hNGZiMTFmNzliZjliYzY0
MDczNjcwYTA5ZDBjYmRiZGRiOTJkMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNzIgQEAKIDIwMTYtMTAtMDUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0pTQ10gQWRkIEB0aHJvd1hYWEVycm9yIGJ5dGVjb2RlIGludHJp
bnNpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVp
bHRpbiBKUyBjb2RlIG5lZWQgdG8gY2hlY2sgYXJndW1lbnRzIGNhcmVmdWxseSBzaW5jZSBpdCBp
cyBzb21ld2hhdCBzdGFuZGFyZCBsaWJyYXJ5IGZvciBKUy4KKyAgICAgICAgU28gYnVuY2ggb2Yg
YHRocm93IG5ldyBAVHlwZUVycm9yKCIuLi4iKWAgZXhpc3RzIHdoaWxlIHVzdWFsIGNvZGUgZG9l
cyBub3QgaGF2ZSBzbyBtYW55LgorICAgICAgICBIb3dldmVyIHRoZSBhYm92ZSBjb2RlIGJsb2F0
cyAzMiBpbnN0cnVjdGlvbnMgcGVyIHNpdGUsIGVubGFyZ2VzIHRoZSBzaXplIG9mIGJ5dGVjb2Rl
cyBvZiBidWlsdGlucywKKyAgICAgICAgYW5kIHByZXZlbnQgdXMgZnJvbSBpbmxpbmluZy4gV2Ug
c2hvdWxkIGhhdmUgYSB3YXkgdG8gcmVkdWNlIHRoaXMgc2l6ZS4KKworICAgICAgICBGb3J0dW5h
dGVseSwgd2UgYWxyZWFkeSBoYXZlIHN1Y2ggYSBvcGNvZGU6IG9wX3Rocm93X3N0YXRpY19lcnJv
ci4gSW4gdGhpcyBwYXRjaCwKKyAgICAgICAgMS4gV2UgZXh0ZW5kcyBvcF90aHJvd19zdGF0aWNf
ZXJyb3IgdG8gdGhyb3cgYXJiaXRyYXJ5IGVycm9ycy4gUHJldmlvdXNseSwgb25seSBUeXBlRXJy
b3IgYW5kIFJlZmVyZW5jZUVycm9yIGFyZSBhbGxvd2VkLgorICAgICAgICAgICBXZSBjYW4gZW1i
ZWQgRXJyb3JUeXBlIGVudW0gaW4gb3BfdGhyb3dfc3RhdGljX2Vycm9yIHRvIHRocm93IGFueSB0
eXBlcyBvZiBlcnJvcnMuCisgICAgICAgIDIuIFdlIGludHJvZHVjZSBzZXZlcmFsIG5ldyBieXRl
Y29kZSBpbnRyaW5zaWNzLCBgQHRocm93VHlwZUVycm9yKCIuLi4iKWAsIGBAdGhyb3dSYW5nZUVy
cm9yKCIuLi4iKWAsCisgICAgICAgICAgIGFuZCBgQHRocm93T3V0T2ZNZW1vcnlFcnJvcigpYC4g
QW5kIHVzZSBpdCBpbnNpZGUgYnVpbHRpbiBKUyBpbnN0ZWFkIG9mIGB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiLi4uIilgIHRoaW5neS4KKyAgICAgICAgMy4gREZHIE5vZGUgZm9yIHRocm93X3N0YXRp
Y19lcnJvciBpcyBpbmNvcnJlY3RseSBuYW1lZCBhcyAiVGhyb3dSZWZlcmVuY2VFcnJvciIuIFRo
aXMgcGF0Y2ggcmVuYW1lcyBpdCB0byAiVGhyb3dTdGF0aWNFcnJvciIuCisKKyAgICAgICAgKiBi
dWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzOgorICAgICAgICAqIGJ1aWx0aW5zL0FycmF5SXRl
cmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChuZXh0KToKKyAgICAgICAgKiBidWlsdGlucy9B
cnJheVByb3RvdHlwZS5qczoKKyAgICAgICAgKHZhbHVlcyk6CisgICAgICAgIChrZXlzKToKKyAg
ICAgICAgKGVudHJpZXMpOgorICAgICAgICAocmVkdWNlKToKKyAgICAgICAgKHJlZHVjZVJpZ2h0
KToKKyAgICAgICAgKGV2ZXJ5KToKKyAgICAgICAgKGZvckVhY2gpOgorICAgICAgICAoZmlsdGVy
KToKKyAgICAgICAgKG1hcCk6CisgICAgICAgIChzb21lKToKKyAgICAgICAgKGZpbGwpOgorICAg
ICAgICAoZmluZCk6CisgICAgICAgIChmaW5kSW5kZXgpOgorICAgICAgICAoaW5jbHVkZXMpOgor
ICAgICAgICAoc29ydCk6CisgICAgICAgIChjb25jYXRTbG93UGF0aCk6CisgICAgICAgIChjb3B5
V2l0aGluKToKKyAgICAgICAgKiBidWlsdGlucy9EYXRlUHJvdG90eXBlLmpzOgorICAgICAgICAo
dG9Mb2NhbGVTdHJpbmcudG9EYXRlVGltZU9wdGlvbnNBbnlBbGwpOgorICAgICAgICAodG9Mb2Nh
bGVTdHJpbmcpOgorICAgICAgICAodG9Mb2NhbGVEYXRlU3RyaW5nLnRvRGF0ZVRpbWVPcHRpb25z
RGF0ZURhdGUpOgorICAgICAgICAodG9Mb2NhbGVEYXRlU3RyaW5nKToKKyAgICAgICAgKHRvTG9j
YWxlVGltZVN0cmluZy50b0RhdGVUaW1lT3B0aW9uc1RpbWVUaW1lKToKKyAgICAgICAgKHRvTG9j
YWxlVGltZVN0cmluZyk6CisgICAgICAgICogYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanM6
CisgICAgICAgIChiaW5kKToKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUu
anM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICog
YnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuc3Bl
Y2llc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBidWlsdGlucy9NYXBQcm90b3R5cGUuanM6Cisg
ICAgICAgIChmb3JFYWNoKToKKyAgICAgICAgKiBidWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5
cGUuanM6CisgICAgICAgIChwcm92aWRlKToKKyAgICAgICAgKiBidWlsdGlucy9PYmplY3RDb25z
dHJ1Y3Rvci5qczoKKyAgICAgICAgKHZhbHVlcyk6CisgICAgICAgIChlbnRyaWVzKToKKyAgICAg
ICAgKGFzc2lnbik6CisgICAgICAgICogYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzOgor
ICAgICAgICAocmFjZSk6CisgICAgICAgIChyZWplY3QpOgorICAgICAgICAocmVzb2x2ZSk6Cisg
ICAgICAgICogYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanM6CisgICAgICAgIChnbG9iYWxQ
cml2YXRlLm5ld1Byb21pc2VDYXBhYmlsaXR5LmV4ZWN1dG9yKToKKyAgICAgICAgKGdsb2JhbFBy
aXZhdGUubmV3UHJvbWlzZUNhcGFiaWxpdHkpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5pbml0
aWFsaXplUHJvbWlzZSk6CisgICAgICAgICogYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qczoK
KyAgICAgICAgKiBidWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzOgorICAgICAgICAoYXBwbHkpOgor
ICAgICAgICAoZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoaGFzKToKKyAgICAgICAgKiBidWls
dGlucy9SZWdFeHBQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnJlZ0V4cEV4
ZWMpOgorICAgICAgICAobWF0Y2gpOgorICAgICAgICAocmVwbGFjZSk6CisgICAgICAgIChzZWFy
Y2gpOgorICAgICAgICAoc3BsaXQpOgorICAgICAgICAoaW50cmluc2ljLlJlZ0V4cFRlc3RJbnRy
aW5zaWMudGVzdCk6CisgICAgICAgICogYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpzOgorICAgICAg
ICAoZm9yRWFjaCk6CisgICAgICAgICogYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanM6Cisg
ICAgICAgIChyYXcpOgorICAgICAgICAqIGJ1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmpzOgorICAgICAgICAobmV4dCk6CisgICAgICAgICogYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBl
LmpzOgorICAgICAgICAobWF0Y2gpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5yZXBlYXRTbG93
UGF0aCk6CisgICAgICAgIChyZXBlYXQpOgorICAgICAgICAocGFkU3RhcnQpOgorICAgICAgICAo
cGFkRW5kKToKKyAgICAgICAgKGludHJpbnNpYy5TdHJpbmdQcm90b3R5cGVSZXBsYWNlSW50cmlu
c2ljLnJlcGxhY2UpOgorICAgICAgICAobG9jYWxlQ29tcGFyZSk6CisgICAgICAgIChzZWFyY2gp
OgorICAgICAgICAoc3BsaXQpOgorICAgICAgICAqIGJ1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1
Y3Rvci5qczoKKyAgICAgICAgKG9mKToKKyAgICAgICAgKGZyb20pOgorICAgICAgICAqIGJ1aWx0
aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnR5cGVk
QXJyYXlTcGVjaWVzQ29uc3RydWN0b3IpOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAoZmlu
ZCk6CisgICAgICAgIChmaW5kSW5kZXgpOgorICAgICAgICAoZm9yRWFjaCk6CisgICAgICAgIChz
b21lKToKKyAgICAgICAgKHN1YmFycmF5KToKKyAgICAgICAgKHJlZHVjZSk6CisgICAgICAgIChy
ZWR1Y2VSaWdodCk6CisgICAgICAgIChtYXApOgorICAgICAgICAoZmlsdGVyKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dTdGF0aWNFcnJvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dUeXBlRXJyb3IpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93UmFuZ2VFcnJvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dPdXRPZk1lbW9yeUVycm9yKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVl
ZGVkKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190aHJvd1R5cGVFcnJvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdGhyb3dSYW5nZUVy
cm9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y190aHJvd091dE9mTWVtb3J5RXJyb3IpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF90aHJvd19zdGF0aWNfZXJyb3IpOgorICAgICAgICAqIGppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdGhyb3dfc3RhdGljX2Vy
cm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6IERlbGV0ZWQu
CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpjcmVhdGVFcnJvcik6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXJyb3IuaDoKKworMjAxNi0xMC0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkLCBhdHRlbXB0IHRvIGZpeCBD
TG9vcCBidWlsZCBhZnRlciByMjA2ODQ2CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjI5NDEKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwppbmRleCA5NzVkYTRhMTFlN2YxYjYwYjVhYTJj
MzcwMTdiMzY1Yzg0NTFlZTZhLi5kMTU5ZWIyMjc1MmY0YmY5ZDlhYjczNGI2MWNmNmZiY2E4NzVk
ZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25z
dHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25z
dHJ1Y3Rvci5qcwpAQCAtNDcsMTkgKzQ3LDE5IEBAIGZ1bmN0aW9uIGZyb20oaXRlbXMgLyosIG1h
cEZuLCB0aGlzQXJnICovKQogCiAgICAgaWYgKG1hcEZuICE9PSBAdW5kZWZpbmVkKSB7CiAgICAg
ICAgIGlmICh0eXBlb2YgbWFwRm4gIT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1l
bnQsIHdoZW4gcHJvdmlkZWQsIGJlIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdo
ZW4gcHJvdmlkZWQsIGJlIGEgZnVuY3Rpb24iKTsKIAogICAgICAgICBpZiAoYXJndW1lbnRzLmxl
bmd0aCA+IDIpCiAgICAgICAgICAgICB0aGlzQXJnID0gYXJndW1lbnRzWzJdOwogICAgIH0KIAog
ICAgIGlmIChpdGVtcyA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJy
YXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVm
aW5lZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMgYW4g
YXJyYXktbGlrZSBvYmplY3QgLSBub3QgbnVsbCBvciB1bmRlZmluZWQiKTsKIAogICAgIHZhciBp
dGVyYXRvck1ldGhvZCA9IGl0ZW1zLkBpdGVyYXRvclN5bWJvbDsKICAgICBpZiAoaXRlcmF0b3JN
ZXRob2QgIT0gbnVsbCkgewogICAgICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yTWV0aG9kICE9PSAi
ZnVuY3Rpb24iKQotICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LmZyb20g
cmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZpcnN0IGFyZ3VtZW50LCBpdGVtc1tT
eW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBmdW5jdGlvbiIpOworICAgICAgICAg
ICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhlIHByb3BlcnR5
IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9yXSwgd2hlbiBleGlz
dHMsIGJlIGEgZnVuY3Rpb24iKTsKIAogICAgICAgICB2YXIgcmVzdWx0ID0gQGlzQ29uc3RydWN0
b3IodGhpc09iaikgPyBuZXcgdGhpc09iaigpIDogW107CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanMKaW5kZXgg
MDNiY2FhNjM4ZTE5MjY1OGQ5Y2U1YTZkYzY0OTE2ZjZkZTVmYWRlOC4uOTI2NDBmN2M4YWJlOWUw
MGJlNmVmM2U3ZGU3MzhiOWMzMThkODM5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanMKQEAgLTI5LDExICsy
OSwxMSBAQCBmdW5jdGlvbiBuZXh0KCkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAodGhp
cyA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiJUFycmF5SXRlcmF0b3JQ
cm90b3R5cGUlLm5leHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZp
bmVkIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiJUFycmF5SXRlcmF0b3JQcm90b3R5cGUl
Lm5leHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAK
ICAgICBsZXQgbmV4dCA9IHRoaXMuQGFycmF5SXRlcmF0b3JOZXh0OwogICAgIGlmIChuZXh0ID09
PSBAdW5kZWZpbmVkKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiJUFycmF5SXRlcmF0
b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgYW4gQXJyYXkgSXRlcmF0
b3IgaW5zdGFuY2UiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCIlQXJyYXlJdGVyYXRvclBy
b3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhbiBBcnJheSBJdGVyYXRvciBp
bnN0YW5jZSIpOwogCiAgICAgcmV0dXJuIG5leHQuQGNhbGwodGhpcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKaW5kZXggMDlkNjQ0
ODIxNThmMjMwMmRhYjYzYWI3NjMxOTM3NTJmN2Y4YTRmMS4uNzVhN2E1OGZmNWMwMTQ3MjMxMGVh
NDE2OWNjZGQ2OTNiNDIzYjEwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9BcnJheVByb3RvdHlwZS5qcwpAQCAtNDAsNyArNDAsNyBAQCBmdW5jdGlvbiB2YWx1ZXMo
KQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICh0aGlzID09IG51bGwpCi0gICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUudmFsdWVzIHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS52YWx1ZXMgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwgb3IgdW5kZWZpbmVkIik7CiAKICAgICByZXR1cm4gbmV3IEBjcmVhdGVBcnJheUl0ZXJhdG9y
KEBPYmplY3QodGhpcyksICJ2YWx1ZSIsIEBhcnJheUl0ZXJhdG9yVmFsdWVOZXh0KTsKIH0KQEAg
LTUwLDcgKzUwLDcgQEAgZnVuY3Rpb24ga2V5cygpCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAg
aWYgKHRoaXMgPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnBy
b3RvdHlwZS5rZXlzIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5l
ZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5rZXlzIHJlcXVp
cmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogCiAgICAgcmV0dXJu
IG5ldyBAY3JlYXRlQXJyYXlJdGVyYXRvcihAT2JqZWN0KHRoaXMpLCAia2V5IiwgQGFycmF5SXRl
cmF0b3JLZXlOZXh0KTsKIH0KQEAgLTYwLDcgKzYwLDcgQEAgZnVuY3Rpb24gZW50cmllcygpCiAg
ICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKHRoaXMgPT0gbnVsbCkKLSAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5lbnRyaWVzIHJlcXVpcmVzIHRoYXQgfHRo
aXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IkFycmF5LnByb3RvdHlwZS5lbnRyaWVzIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxs
IG9yIHVuZGVmaW5lZCIpOwogCiAgICAgcmV0dXJuIG5ldyBAY3JlYXRlQXJyYXlJdGVyYXRvcihA
T2JqZWN0KHRoaXMpLCAia2V5K3ZhbHVlIiwgQGFycmF5SXRlcmF0b3JLZXlWYWx1ZU5leHQpOwog
fQpAQCAtNzAsMTYgKzcwLDE2IEBAIGZ1bmN0aW9uIHJlZHVjZShjYWxsYmFjayAvKiwgaW5pdGlh
bFZhbHVlICovKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICh0aGlzID09IG51bGwpCi0g
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUucmVkdWNlIHJlcXVp
cmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgICAgICBAdGhy
b3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5yZWR1Y2UgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAKICAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRo
aXMpOwogICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAogICAgIGlm
ICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJBcnJheS5wcm90b3R5cGUucmVkdWNlIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlv
biIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5yZWR1Y2UgY2Fs
bGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CiAKICAgICBpZiAobGVuZ3RoID09PSAwICYmIGFy
Z3VtZW50cy5sZW5ndGggPCAyKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigicmVkdWNl
IG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpOworICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoInJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTsK
IAogICAgIHZhciBhY2N1bXVsYXRvciwgayA9IDA7CiAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgg
PiAxKQpAQCAtODgsNyArODgsNyBAQCBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2sgLyosIGluaXRp
YWxWYWx1ZSAqLykKICAgICAgICAgd2hpbGUgKGsgPCBsZW5ndGggJiYgIShrIGluIGFycmF5KSkK
ICAgICAgICAgICAgIGsgKz0gMTsKICAgICAgICAgaWYgKGsgPj0gbGVuZ3RoKQotICAgICAgICAg
ICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGlu
aXRpYWwgdmFsdWUiKTsKKyAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigicmVkdWNlIG9mIGVt
cHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpOwogICAgICAgICBhY2N1bXVsYXRvciA9
IGFycmF5W2srK107CiAgICAgfQogCkBAIC0xMDUsMTYgKzEwNSwxNiBAQCBmdW5jdGlvbiByZWR1
Y2VSaWdodChjYWxsYmFjayAvKiwgaW5pdGlhbFZhbHVlICovKQogICAgICJ1c2Ugc3RyaWN0IjsK
IAogICAgIGlmICh0aGlzID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJB
cnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwgb3IgdW5kZWZpbmVkIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90
eXBlLnJlZHVjZVJpZ2h0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVm
aW5lZCIpOwogCiAgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKICAgICB2YXIgbGVuZ3Ro
ID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9
PSAiZnVuY3Rpb24iKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90
eXBlLnJlZHVjZVJpZ2h0IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodCBjYWxsYmFjayBtdXN0
IGJlIGEgZnVuY3Rpb24iKTsKIAogICAgIGlmIChsZW5ndGggPT09IDAgJiYgYXJndW1lbnRzLmxl
bmd0aCA8IDIpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJyZWR1Y2VSaWdodCBvZiBl
bXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTsKKyAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJyZWR1Y2VSaWdodCBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTsK
IAogICAgIHZhciBhY2N1bXVsYXRvciwgayA9IGxlbmd0aCAtIDE7CiAgICAgaWYgKGFyZ3VtZW50
cy5sZW5ndGggPiAxKQpAQCAtMTIzLDcgKzEyMyw3IEBAIGZ1bmN0aW9uIHJlZHVjZVJpZ2h0KGNh
bGxiYWNrIC8qLCBpbml0aWFsVmFsdWUgKi8pCiAgICAgICAgIHdoaWxlIChrID49IDAgJiYgIShr
IGluIGFycmF5KSkKICAgICAgICAgICAgIGsgLT0gMTsKICAgICAgICAgaWYgKGsgPCAwKQotICAg
ICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInJlZHVjZVJpZ2h0IG9mIGVtcHR5IGFycmF5
IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpOworICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJy
ZWR1Y2VSaWdodCBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTsKICAgICAg
ICAgYWNjdW11bGF0b3IgPSBhcnJheVtrLS1dOwogICAgIH0KIApAQCAtMTQwLDEzICsxNDAsMTMg
QEAgZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAgICAgInVzZSBzdHJp
Y3QiOwogCiAgICAgaWYgKHRoaXMgPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVs
bCBvciB1bmRlZmluZWQiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5
cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7
CiAgICAgCiAgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKICAgICB2YXIgbGVuZ3RoID0g
QHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAi
ZnVuY3Rpb24iKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24i
KTsKICAgICAKICAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1l
bnRzWzFdIDogQHVuZGVmaW5lZDsKICAgICAKQEAgLTE2NSwxMyArMTY1LDEzIEBAIGZ1bmN0aW9u
IGZvckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAgICAgInVzZSBzdHJpY3QiOwogCiAg
ICAgaWYgKHRoaXMgPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5
LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVu
ZGVmaW5lZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5mb3JF
YWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogICAg
IAogICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xl
bmd0aChhcnJheS5sZW5ndGgpOwogCiAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0
aW9uIikKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5mb3JF
YWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIp
OwogICAgIAogICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVu
dHNbMV0gOiBAdW5kZWZpbmVkOwogICAgIApAQCAtMTg2LDEzICsxODYsMTMgQEAgZnVuY3Rpb24g
ZmlsdGVyKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAg
IGlmICh0aGlzID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5w
cm90b3R5cGUuZmlsdGVyIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVm
aW5lZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5maWx0ZXIg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgCiAg
ICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKICAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3Ro
KGFycmF5Lmxlbmd0aCk7CiAKICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24i
KQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZpbHRlciBj
YWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJB
cnJheS5wcm90b3R5cGUuZmlsdGVyIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAg
IAogICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0g
OiBAdW5kZWZpbmVkOwogCkBAIC0yMzUsMTMgKzIzNSwxMyBAQCBmdW5jdGlvbiBtYXAoY2FsbGJh
Y2sgLyosIHRoaXNBcmcgKi8pCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKHRoaXMgPT0g
bnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5tYXAg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgICAg
IEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLm1hcCByZXF1aXJlcyB0aGF0IHx0aGlz
fCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKICAgICAKICAgICB2YXIgYXJyYXkgPSBAT2Jq
ZWN0KHRoaXMpOwogICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAog
ICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUubWFwIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5j
dGlvbiIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5tYXAgY2Fs
bGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CiAgICAgCiAgICAgdmFyIHRoaXNBcmcgPSBhcmd1
bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IEB1bmRlZmluZWQ7CiAKQEAgLTI4MSwx
MyArMjgxLDEzIEBAIGZ1bmN0aW9uIHNvbWUoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAgICAg
InVzZSBzdHJpY3QiOwogCiAgICAgaWYgKHRoaXMgPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5zb21lIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5v
dCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5
LnByb3RvdHlwZS5zb21lIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVm
aW5lZCIpOwogICAgIAogICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CiAgICAgdmFyIGxl
bmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwogCiAgICAgaWYgKHR5cGVvZiBjYWxsYmFj
ayAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnBy
b3RvdHlwZS5zb21lIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgICAgICBAdGhy
b3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5zb21lIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5j
dGlvbiIpOwogICAgIAogICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBh
cmd1bWVudHNbMV0gOiBAdW5kZWZpbmVkOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKQEAgLTMwNCw3ICszMDQsNyBAQCBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qIFssIHN0
YXJ0IFssIGVuZF1dICovKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICh0aGlzID09IG51
bGwpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZmlsbCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICAgICAg
QHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZmlsbCByZXF1aXJlcyB0aGF0IHx0aGlz
fCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKIAogICAgIHZhciBhcnJheSA9IEBPYmplY3Qo
dGhpcyk7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwpAQCAtMzQ1
LDEzICszNDUsMTMgQEAgZnVuY3Rpb24gZmluZChjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKICAg
ICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAodGhpcyA9PSBudWxsKQotICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZpbmQgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJy
YXkucHJvdG90eXBlLmZpbmQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5k
ZWZpbmVkIik7CiAgICAgCiAgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKICAgICB2YXIg
bGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKICAgICBpZiAodHlwZW9mIGNhbGxi
YWNrICE9PSAiZnVuY3Rpb24iKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXku
cHJvdG90eXBlLmZpbmQgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgICAgIEB0
aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZpbmQgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1
bmN0aW9uIik7CiAgICAgCiAgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/
IGFyZ3VtZW50c1sxXSA6IEB1bmRlZmluZWQ7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykgewpAQCAtMzY3LDEzICszNjcsMTMgQEAgZnVuY3Rpb24gZmluZEluZGV4KGNhbGxi
YWNrIC8qLCB0aGlzQXJnICovKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICh0aGlzID09
IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZmlu
ZEluZGV4IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwor
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5maW5kSW5kZXggcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgCiAgICAgdmFy
IGFycmF5ID0gQE9iamVjdCh0aGlzKTsKICAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5
Lmxlbmd0aCk7CiAKICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQotICAg
ICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleCBjYWxs
YmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJh
eS5wcm90b3R5cGUuZmluZEluZGV4IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAg
IAogICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0g
OiBAdW5kZWZpbmVkOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKQEAg
LTM4OCw3ICszODgsNyBAQCBmdW5jdGlvbiBpbmNsdWRlcyhzZWFyY2hFbGVtZW50IC8qLCBmcm9t
SW5kZXgqLykKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAodGhpcyA9PSBudWxsKQotICAg
ICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzIHJlcXVp
cmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgICAgICBAdGhy
b3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5pbmNsdWRlcyByZXF1aXJlcyB0aGF0IHx0aGlz
fCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKIAogICAgIHZhciBhcnJheSA9IEBPYmplY3Qo
dGhpcyk7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwpAQCAtNjM4
LDEwICs2MzgsMTAgQEAgZnVuY3Rpb24gc3RyaW5nU29ydChhcnJheSkKICAgICB9CiAKICAgICBp
ZiAodGhpcyA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJv
dG90eXBlLnNvcnQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
Iik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLnNvcnQgcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAKICAgICBpZiAodHlw
ZW9mIHRoaXMgPT0gInN0cmluZyIpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBdHRl
bXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOworICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoIkF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7CiAK
ICAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOwogCkBAIC02NTgsNyArNjU4LDcgQEAgZnVu
Y3Rpb24gY29uY2F0U2xvd1BhdGgoKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICh0aGlz
ID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUu
Y29uY2F0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwor
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5jb25jYXQgcmVxdWlyZXMg
dGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAKICAgICB2YXIgY3VycmVu
dEVsZW1lbnQgPSBAT2JqZWN0KHRoaXMpOwogCkBAIC02OTcsNyArNjk3LDcgQEAgZWxzZSBpZiAo
QGlzT2JqZWN0KGNvbnN0cnVjdG9yKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdEluZGV4ICs9
IGxlbmd0aDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGxlbmd0
aCArIHJlc3VsdEluZGV4ID4gQE1BWF9TQUZFX0lOVEVHRVIpCi0gICAgICAgICAgICAgICAgICAg
IHRocm93IEBUeXBlRXJyb3IoImxlbmd0aCBleGNlZWRlZCB0aGUgbWF4aW11bSBzYWZlIGludGVn
ZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJsZW5ndGggZXhjZWVk
ZWQgdGhlIG1heGltdW0gc2FmZSBpbnRlZ2VyIik7CiAgICAgICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBpZiAoaSBpbiBj
dXJyZW50RWxlbWVudCkKICAgICAgICAgICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChy
ZXN1bHQsIHJlc3VsdEluZGV4LCBjdXJyZW50RWxlbWVudFtpXSk7CkBAIC03MDYsNyArNzA2LDcg
QEAgZWxzZSBpZiAoQGlzT2JqZWN0KGNvbnN0cnVjdG9yKSkgewogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHJlc3VsdEluZGV4ID49IEBNQVhfU0FGRV9J
TlRFR0VSKQotICAgICAgICAgICAgICAgIHRocm93IEBUeXBlRXJyb3IoImxlbmd0aCBleGNlZWRl
ZCB0aGUgbWF4aW11bSBzYWZlIGludGVnZXIiKTsKKyAgICAgICAgICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoImxlbmd0aCBleGNlZWRlZCB0aGUgbWF4aW11bSBzYWZlIGludGVnZXIiKTsKICAgICAg
ICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIHJlc3VsdEluZGV4KyssIGN1cnJlbnRFbGVt
ZW50KTsKICAgICAgICAgfQogICAgICAgICBjdXJyZW50RWxlbWVudCA9IGFyZ3VtZW50c1thcmdJ
bmRleF07CkBAIC03NDgsNyArNzQ4LDcgQEAgZnVuY3Rpb24gbWluV2l0aE1heWJlTmVnYXRpdmVa
ZXJvQW5kUG9zaXRpdmUobWF5YmVOZWdhdGl2ZVplcm8sIHBvc2l0aXZlKQogICAgIH0KIAogICAg
IGlmICh0aGlzID09IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5j
b3B5V2l0aGluIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIp
OworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LmNvcHlXaXRoaW4gcmVxdWlyZXMgdGhh
dCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAKICAgICB2YXIgYXJyYXkgPSBA
T2JqZWN0KHRoaXMpOwogICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9EYXRlUHJvdG90eXBl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0RhdGVQcm90b3R5cGUuanMKaW5k
ZXggYjQ5ZTc1ZDI5NGY0YThiYWUyZWU0ZTlmZTk1NzE2NTc5MTBmNzg5My4uOTlhZmIyNjQ5NDcz
ZTk4OGMxNmZjYmU3ZWI2ZTgxOTQ5YTY4Zjk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0RhdGVQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0RhdGVQcm90b3R5cGUuanMKQEAgLTM4LDcgKzM4LDcgQEAgZnVuY3Rpb24g
dG9EYXRlVGltZU9wdGlvbnNBbnlBbGwob3B0cykKICAgICAgICAgaWYgKG9wdHMgPT09IEB1bmRl
ZmluZWQpCiAgICAgICAgICAgICBvcHRpb25zID0gbnVsbDsKICAgICAgICAgZWxzZSBpZiAob3B0
cyA9PT0gbnVsbCkKLSAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJudWxsIGlzIG5v
dCBhbiBvYmplY3QiKTsKKyAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigibnVsbCBpcyBub3Qg
YW4gb2JqZWN0Iik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9wdGlvbnMgPSBAT2JqZWN0
KG9wdHMpOwogCkBAIC05NSw3ICs5NSw3IEBAIGZ1bmN0aW9uIHRvRGF0ZVRpbWVPcHRpb25zRGF0
ZURhdGUob3B0cykKICAgICAgICAgaWYgKG9wdHMgPT09IEB1bmRlZmluZWQpCiAgICAgICAgICAg
ICBvcHRpb25zID0gbnVsbDsKICAgICAgICAgZWxzZSBpZiAob3B0cyA9PT0gbnVsbCkKLSAgICAg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJudWxsIGlzIG5vdCBhbiBvYmplY3QiKTsKKyAg
ICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigibnVsbCBpcyBub3QgYW4gb2JqZWN0Iik7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG9wdGlvbnMgPSBAT2JqZWN0KG9wdHMpOwogCkBAIC0xNDUs
NyArMTQ1LDcgQEAgZnVuY3Rpb24gdG9EYXRlVGltZU9wdGlvbnNUaW1lVGltZShvcHRzKQogICAg
ICAgICBpZiAob3B0cyA9PT0gQHVuZGVmaW5lZCkKICAgICAgICAgICAgIG9wdGlvbnMgPSBudWxs
OwogICAgICAgICBlbHNlIGlmIChvcHRzID09PSBudWxsKQotICAgICAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoIm51bGwgaXMgbm90IGFuIG9iamVjdCIpOworICAgICAgICAgICAgQHRocm93
VHlwZUVycm9yKCJudWxsIGlzIG5vdCBhbiBvYmplY3QiKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgb3B0aW9ucyA9IEBPYmplY3Qob3B0cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwppbmRleCBhNTVlMGYzOTUwZjQ5
ZDgwZjI4NGJiYjRkYWJlOTMyMzQxMTVmYmQyLi44NzljOTAyODc5ZmJiMzU0MzQyMjJkNzJhMTQz
ZTQ2MDU3MGFhODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
RnVuY3Rpb25Qcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0Z1bmN0aW9uUHJvdG90eXBlLmpzCkBAIC02Myw3ICs2Myw3IEBAIGZ1bmN0aW9uIGJpbmQodGhp
c1ZhbHVlKQogCiAgICAgbGV0IHRhcmdldCA9IHRoaXM7CiAgICAgaWYgKHR5cGVvZiB0YXJnZXQg
IT09ICJmdW5jdGlvbiIpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJ8dGhpc3wgaXMg
bm90IGEgZnVuY3Rpb24gaW5zaWRlIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kIik7CisgICAgICAg
IEB0aHJvd1R5cGVFcnJvcigifHRoaXN8IGlzIG5vdCBhIGZ1bmN0aW9uIGluc2lkZSBGdW5jdGlv
bi5wcm90b3R5cGUuYmluZCIpOwogCiAgICAgbGV0IGFyZ3VtZW50Q291bnQgPSBhcmd1bWVudHMu
bGVuZ3RoOwogICAgIGxldCBib3VuZEFyZ3MgPSBudWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggNDk5ZGJkMzky
ZTgzMTNkY2RkODZlYzhjMTYwNTY5ZDdkNmY1NDliMS4uNDEyOGEzNTMyZjUwN2E2M2ZmZTMxN2M0
OWI3Y2E4NTQ3MzMzYWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC0zNiwxMCArMzYsMTAgQEAgZnVuY3Rpb24g
Z2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIGxl
dCB2YWx1ZSA9IEB1bmRlZmluZWQ7CiAKICAgICBpZiAodHlwZW9mIHN0YXRlICE9PSAnbnVtYmVy
JykKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSBnZW5l
cmF0b3IiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJ8dGhpc3wgc2hvdWxkIGJlIGEgZ2Vu
ZXJhdG9yIik7CiAKICAgICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykK
LSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBleGVjdXRpbmciKTsK
KyAgICAgICAgQHRocm93VHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgZXhlY3V0aW5nIik7CiAKICAg
ICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCkgewogICAgICAgICBpZiAo
cmVzdW1lTW9kZSA9PT0gQEdlbmVyYXRvclJlc3VtZU1vZGVUaHJvdykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9wZXJhdGlvbnMuanMKaW5kZXggNGY2YTdk
MWZjZmFmMmZhNjg5ZjA3OWNkZDY0ZjczZTc1OWZiZjdkNi4uMjIyMjBjZjJlYWIyNDE4ZjgzNjJk
NjFkMDI4MWM4MTA5Y2QyZDViMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dsb2JhbE9wZXJhdGlvbnMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dsb2JhbE9wZXJhdGlvbnMuanMKQEAgLTcxLDExICs3MSwxMSBAQCBmdW5jdGlvbiBz
cGVjaWVzQ29uc3RydWN0b3Iob2JqLCBkZWZhdWx0Q29uc3RydWN0b3IpCiAgICAgaWYgKGNvbnN0
cnVjdG9yID09PSBAdW5kZWZpbmVkKQogICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVjdG9y
OwogICAgIGlmICghQGlzT2JqZWN0KGNvbnN0cnVjdG9yKSkKLSAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoInx0aGlzfC5jb25zdHJ1Y3RvciBpcyBub3QgYW4gT2JqZWN0IG9yIHVuZGVmaW5l
ZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfC5jb25zdHJ1Y3RvciBpcyBub3Qg
YW4gT2JqZWN0IG9yIHVuZGVmaW5lZCIpOwogICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3Iu
QHNwZWNpZXNTeW1ib2w7CiAgICAgaWYgKGNvbnN0cnVjdG9yID09IG51bGwpCiAgICAgICAgIHJl
dHVybiBkZWZhdWx0Q29uc3RydWN0b3I7CiAgICAgaWYgKEBpc0NvbnN0cnVjdG9yKGNvbnN0cnVj
dG9yKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwotICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJ8dGhpc3wuY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdIGlzIG5vdCBhIGNvbnN0cnVj
dG9yIik7CisgICAgQHRocm93VHlwZUVycm9yKCJ8dGhpc3wuY29uc3RydWN0b3JbU3ltYm9sLnNw
ZWNpZXNdIGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL01hcFByb3RvdHlwZS5qcwppbmRleCA2MjBhMDE1ZDMwN2JjNWVmNjk0N2Iz
MTQ1MWY4OTZiNzRmMGQwZjI2Li43OWE2MzIwNGE1M2M4MzhlMjZkYWNjMzY4Mzk0ZjI2YTU3MTg2
ZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwUHJvdG90
eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBQcm90b3R5cGUu
anMKQEAgLTI4LDEwICsyOCwxMCBAQCBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrIC8qLCB0aGlz
QXJnICovKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzTWFwKHRoaXMpKQotICAg
ICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1h
cCBvYmplY3QiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJNYXAgb3BlcmF0aW9uIGNhbGxl
ZCBvbiBub24tTWFwIG9iamVjdCIpOwogCiAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1
bmN0aW9uJykKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIk1hcC5wcm90b3R5cGUuZm9y
RWFjaCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJNYXAucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7
CiAKICAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFd
IDogQHVuZGVmaW5lZDsKICAgICB2YXIgaXRlcmF0b3IgPSBATWFwSXRlcmF0b3IodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJv
dG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlclBy
b3RvdHlwZS5qcwppbmRleCBkNGM3ZTA1N2UyNjhmYzFjN2MyMjE2N2E5MjZmYjY5NDE0NGRiNTIx
Li4wYTk4MjU4NjBiMzIxMzc0NTQxZTNhNWQ5NTYyOTc0ZDRjYjA5ZmEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUu
anMKQEAgLTQ4MSwxNCArNDgxLDE0IEBAIGZ1bmN0aW9uIHByb3ZpZGUoa2V5LCBzdGFnZSwgdmFs
dWUpCiAKICAgICBpZiAoc3RhZ2UgPT09IEBNb2R1bGVGZXRjaCkgewogICAgICAgICBpZiAoZW50
cnkuc3RhdGUgPiBATW9kdWxlRmV0Y2gpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IGZldGNoZWQuIik7CisgICAgICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFkeSBmZXRjaGVkLiIpOwog
ICAgICAgICB0aGlzLmZ1bGZpbGxGZXRjaChlbnRyeSwgdmFsdWUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKHN0YWdlID09PSBATW9kdWxlVHJhbnNsYXRlKSB7CiAgICAgICAg
IGlmIChlbnRyeS5zdGF0ZSA+IEBNb2R1bGVUcmFuc2xhdGUpCi0gICAgICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5IHRyYW5zbGF0ZWQuIik7
CisgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlcXVlc3RlZCBtb2R1bGUgaXMgYWxyZWFk
eSB0cmFuc2xhdGVkLiIpOwogICAgICAgICB0aGlzLmZ1bGZpbGxGZXRjaChlbnRyeSwgQHVuZGVm
aW5lZCk7CiAgICAgICAgIHRoaXMuZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwgdmFsdWUpOwogICAg
ICAgICByZXR1cm47CkBAIC00OTYsNyArNDk2LDcgQEAgZnVuY3Rpb24gcHJvdmlkZShrZXksIHN0
YWdlLCB2YWx1ZSkKIAogICAgIGlmIChzdGFnZSA9PT0gQE1vZHVsZUluc3RhbnRpYXRlKSB7CiAg
ICAgICAgIGlmIChlbnRyeS5zdGF0ZSA+IEBNb2R1bGVJbnN0YW50aWF0ZSkKLSAgICAgICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgaW5zdGFu
dGlhdGVkLiIpOworICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxl
IGlzIGFscmVhZHkgaW5zdGFudGlhdGVkLiIpOwogICAgICAgICB0aGlzLmZ1bGZpbGxGZXRjaChl
bnRyeSwgQHVuZGVmaW5lZCk7CiAgICAgICAgIHRoaXMuZnVsZmlsbFRyYW5zbGF0ZShlbnRyeSwg
dmFsdWUpOwogICAgICAgICBlbnRyeS50cmFuc2xhdGUudGhlbigoc291cmNlKSA9PiB7CkBAIC01
MDUsNyArNTA1LDcgQEAgZnVuY3Rpb24gcHJvdmlkZShrZXksIHN0YWdlLCB2YWx1ZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZXF1ZXN0ZWQg
bW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuIik7CisgICAgQHRocm93VHlw
ZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQu
Iik7CiB9CiAKIGZ1bmN0aW9uIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShtb2R1bGVOYW1lLCByZWZl
cnJlciwgaW5pdGlhdG9yKQpAQCAtNTQyLDcgKzU0Miw3IEBAIGZ1bmN0aW9uIGxpbmtBbmRFdmFs
dWF0ZU1vZHVsZShrZXksIGluaXRpYXRvcikKIAogICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJl
UmVnaXN0ZXJlZChrZXkpOwogICAgIGlmIChlbnRyeS5zdGF0ZSA8IEBNb2R1bGVMaW5rKQotICAg
ICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBub3QgaW5zdGFu
dGlhdGVkIHlldC4iKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxl
IGlzIG5vdCBpbnN0YW50aWF0ZWQgeWV0LiIpOwogCiAgICAgdGhpcy5saW5rKGVudHJ5LCBpbml0
aWF0b3IpOwogICAgIHJldHVybiB0aGlzLm1vZHVsZUV2YWx1YXRpb24oZW50cnkubW9kdWxlLCBp
bml0aWF0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09i
amVjdENvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVj
dENvbnN0cnVjdG9yLmpzCmluZGV4IGQ1Mzc0NGU3YWE4NmYwZmMyZmQ2ZTU0NzQxYzdiNGVmZWE3
N2UyMzEuLmQ4NTViZWIyYTM5NzBhNTM5ZDAxMmY3NjA4ODIyYWUwYzcwYWEwYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMK
QEAgLTUzLDcgKzUzLDcgQEAgZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkKICAgICAidXNlIHN0cmlj
dCI7CiAgICAgCiAgICAgaWYgKG9iamVjdCA9PSBudWxsKQotICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiT2JqZWN0LnZhbHVlcyByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3Qg
YmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJPYmplY3Qu
dmFsdWVzIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVm
aW5lZCIpOwogCiAgICAgcmV0dXJuIEBlbnVtZXJhYmxlT3duUHJvcGVydGllcyhvYmplY3QsIEBp
dGVyYXRpb25LaW5kVmFsdWUpOwogfQpAQCAtNjMsNyArNjMsNyBAQCBmdW5jdGlvbiBlbnRyaWVz
KG9iamVjdCkKICAgICAidXNlIHN0cmljdCI7CiAgICAgCiAgICAgaWYgKG9iamVjdCA9PSBudWxs
KQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiT2JqZWN0LmVudHJpZXMgcmVxdWlyZXMg
dGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgICAg
IEB0aHJvd1R5cGVFcnJvcigiT2JqZWN0LmVudHJpZXMgcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJh
bWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgCiAgICAgcmV0dXJuIEBlbnVt
ZXJhYmxlT3duUHJvcGVydGllcyhvYmplY3QsIEBpdGVyYXRpb25LaW5kS2V5VmFsdWUpOwogfQpA
QCAtNzMsNyArNzMsNyBAQCBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LypbKi8sIC8qLi4uKi9zb3Vy
Y2VzLypdICovKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICh0YXJnZXQgPT0gbnVsbCkK
LSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoImNhbid0IGNvbnZlcnQgIiArIHRhcmdldCAr
ICIgdG8gb2JqZWN0Iik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBy
ZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsK
IAogICAgIGxldCBvYmpUYXJnZXQgPSBAT2JqZWN0KHRhcmdldCk7CiAgICAgZm9yIChsZXQgcyA9
IDEsIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IHMgPCBhcmd1bWVudHNMZW5n
dGg7ICsrcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1By
b21pc2VDb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9t
aXNlQ29uc3RydWN0b3IuanMKaW5kZXggOGNmMTk5OWVjZmYyODMxNzNjZDc0MmU4ZGJjNTY0Y2Q4
MTA2Zjk3YS4uM2YwODQ4ZGZhZGI2ZmIyMjdkY2U3YzI4YTk3YTRkM2E5YTA1YWQ5MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5q
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9y
LmpzCkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkKICAgICAidXNlIHN0
cmljdCI7CiAKICAgICBpZiAoIUBpc09iamVjdCh0aGlzKSkKLSAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoInx0aGlzfCBpcyBub3QgYSBvYmplY3QiKTsKKyAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJ8dGhpc3wgaXMgbm90IGEgb2JqZWN0Iik7CiAKICAgICB2YXIgcHJvbWlzZUNhcGFiaWxp
dHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcyk7CiAKQEAgLTgwLDcgKzgwLDcgQEAgZnVu
Y3Rpb24gcmFjZShpdGVyYWJsZSkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc09i
amVjdCh0aGlzKSkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfCBpcyBub3Qg
YSBvYmplY3QiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJ8dGhpc3wgaXMgbm90IGEgb2Jq
ZWN0Iik7CiAKICAgICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxp
dHkodGhpcyk7CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBmdW5jdGlvbiByZWplY3QocmVhc29uKQog
ICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzT2JqZWN0KHRoaXMpKQotICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigifHRoaXN8IGlzIG5vdCBhIG9iamVjdCIpOworICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoInx0aGlzfCBpcyBub3QgYSBvYmplY3QiKTsKIAogICAgIHZhciBwcm9t
aXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTsKIApAQCAtMTE1LDcg
KzExNSw3IEBAIGZ1bmN0aW9uIHJlc29sdmUodmFsdWUpCiAgICAgInVzZSBzdHJpY3QiOwogCiAg
ICAgaWYgKCFAaXNPYmplY3QodGhpcykpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJ8
dGhpc3wgaXMgbm90IGEgb2JqZWN0Iik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8
IGlzIG5vdCBhIG9iamVjdCIpOwogCiAgICAgaWYgKEBpc1Byb21pc2UodmFsdWUpKSB7CiAgICAg
ICAgIHZhciB2YWx1ZUNvbnN0cnVjdG9yID0gdmFsdWUuY29uc3RydWN0b3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMKaW5kZXgg
OWVkODMwNmU4OWYyZmQ1YzkyMzkyMmM4NjViYzBhNjIyYjZiYzM1MC4uZjRhMDlkNDE1YWM5M2Rk
Njc1ZmJiMDEyMThlYWM2YmNhNzNiZDFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwpAQCAtNTEsNyArNTEsNyBAQCBmdW5j
dGlvbiBuZXdQcm9taXNlQ2FwYWJpbGl0eShjb25zdHJ1Y3RvcikKICAgICAidXNlIHN0cmljdCI7
CiAKICAgICBpZiAoIUBpc0NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKSkKLSAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoInByb21pc2UgY2FwYWJpbGl0eSByZXF1aXJlcyBhIGNvbnN0cnVjdG9y
IGZ1bmN0aW9uIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigicHJvbWlzZSBjYXBhYmlsaXR5
IHJlcXVpcmVzIGEgY29uc3RydWN0b3IgZnVuY3Rpb24iKTsKIAogICAgIHZhciBwcm9taXNlQ2Fw
YWJpbGl0eSA9IHsKICAgICAgICAgQHByb21pc2U6IEB1bmRlZmluZWQsCkBAIC02Miw5ICs2Miw5
IEBAIGZ1bmN0aW9uIG5ld1Byb21pc2VDYXBhYmlsaXR5KGNvbnN0cnVjdG9yKQogICAgIGZ1bmN0
aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdCkKICAgICB7CiAgICAgICAgIGlmIChwcm9taXNl
Q2FwYWJpbGl0eS5AcmVzb2x2ZSAhPT0gQHVuZGVmaW5lZCkKLSAgICAgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJyZXNvbHZlIGZ1bmN0aW9uIGlzIGFscmVhZHkgc2V0Iik7CisgICAgICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoInJlc29sdmUgZnVuY3Rpb24gaXMgYWxyZWFkeSBzZXQiKTsK
ICAgICAgICAgaWYgKHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QgIT09IEB1bmRlZmluZWQpCi0g
ICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigicmVqZWN0IGZ1bmN0aW9uIGlzIGFscmVh
ZHkgc2V0Iik7CisgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInJlamVjdCBmdW5jdGlvbiBp
cyBhbHJlYWR5IHNldCIpOwogCiAgICAgICAgIHByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlID0g
cmVzb2x2ZTsKICAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdCA9IHJlamVjdDsKQEAg
LTczLDEwICs3MywxMCBAQCBmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLCByZWplY3QpCiAgICAg
dmFyIHByb21pc2UgPSBuZXcgY29uc3RydWN0b3IoZXhlY3V0b3IpOwogCiAgICAgaWYgKHR5cGVv
ZiBwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZSAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoImV4ZWN1dG9yIGRpZCBub3QgdGFrZSBhIHJlc29sdmUgZnVuY3Rp
b24iKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJleGVjdXRvciBkaWQgbm90IHRha2UgYSBy
ZXNvbHZlIGZ1bmN0aW9uIik7CiAKICAgICBpZiAodHlwZW9mIHByb21pc2VDYXBhYmlsaXR5LkBy
ZWplY3QgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJleGVj
dXRvciBkaWQgbm90IHRha2UgYSByZWplY3QgZnVuY3Rpb24iKTsKKyAgICAgICAgQHRocm93VHlw
ZUVycm9yKCJleGVjdXRvciBkaWQgbm90IHRha2UgYSByZWplY3QgZnVuY3Rpb24iKTsKIAogICAg
IHByb21pc2VDYXBhYmlsaXR5LkBwcm9taXNlID0gcHJvbWlzZTsKIApAQCAtMjA4LDcgKzIwOCw3
IEBAIGZ1bmN0aW9uIGluaXRpYWxpemVQcm9taXNlKGV4ZWN1dG9yKQogICAgICJ1c2Ugc3RyaWN0
IjsKIAogICAgIGlmICh0eXBlb2YgZXhlY3V0b3IgIT09ICdmdW5jdGlvbicpCi0gICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCJQcm9taXNlIGNvbnN0cnVjdG9yIHRha2VzIGEgZnVuY3Rpb24g
YXJndW1lbnQiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJQcm9taXNlIGNvbnN0cnVjdG9y
IHRha2VzIGEgZnVuY3Rpb24gYXJndW1lbnQiKTsKIAogICAgIHRoaXMuQHByb21pc2VTdGF0ZSA9
IEBwcm9taXNlU3RhdGVQZW5kaW5nOwogICAgIHRoaXMuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25z
ID0gW107CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlz
ZVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlUHJv
dG90eXBlLmpzCmluZGV4IDNlYTk5MmY3NzE3NzFkNjk2NDJiM2Q0NzkzZDk1N2Y0OTE4ZmUxMmIu
LjE4NDk1NWFlYzNjZTM2NDIzZmVhMjQ0ZDA4NmFkZWQ3NjFkNjMyOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzCkBAIC0zNSw3
ICszNSw3IEBAIGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpCiAgICAgInVz
ZSBzdHJpY3QiOwogCiAgICAgaWYgKCFAaXNQcm9taXNlKHRoaXMpKQotICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigifHRoaXN8IGlzIG5vdCBhIG9iamVjdCIpOworICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoInx0aGlzfCBpcyBub3QgYSBvYmplY3QiKTsKIAogICAgIHZhciBjb25zdHJ1Y3Rv
ciA9IEBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgQFByb21pc2UpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVmbGVjdE9iamVjdC5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzCmluZGV4IDQ2Yjc1MmIwYWJl
NjMzNzI5NWZmOGY0M2MzNDI2OTE0MjYzMjVhMGMuLjFhYWExZjQwN2NhYjJlNTkyY2JkYjhkNjZh
YjQwMDhiMDI0NDA3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9SZWZsZWN0T2JqZWN0LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9S
ZWZsZWN0T2JqZWN0LmpzCkBAIC0yOSwxMCArMjksMTAgQEAgZnVuY3Rpb24gYXBwbHkodGFyZ2V0
LCB0aGlzQXJndW1lbnQsIGFyZ3VtZW50c0xpc3QpCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAg
aWYgKHR5cGVvZiB0YXJnZXQgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJSZWZsZWN0LmFwcGx5IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGZ1
bmN0aW9uIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUmVmbGVjdC5hcHBseSByZXF1aXJl
cyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBmdW5jdGlvbiIpOwogCiAgICAgaWYgKCFAaXNPYmpl
Y3QoYXJndW1lbnRzTGlzdCkpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWZsZWN0
LmFwcGx5IHJlcXVpcmVzIHRoZSB0aGlyZCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKTsKKyAgICAg
ICAgQHRocm93VHlwZUVycm9yKCJSZWZsZWN0LmFwcGx5IHJlcXVpcmVzIHRoZSB0aGlyZCBhcmd1
bWVudCBiZSBhbiBvYmplY3QiKTsKIAogICAgIHJldHVybiB0YXJnZXQuQGFwcGx5KHRoaXNBcmd1
bWVudCwgYXJndW1lbnRzTGlzdCk7CiB9CkBAIC00NCw3ICs0NCw3IEBAIGZ1bmN0aW9uIGRlbGV0
ZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkpCiAgICAgLy8gcmFpc2VkIGJ5IHRoZSBkZWxl
dGUgb3BlcmF0b3IgdW5kZXIgdGhlIHN0cmljdCBtb2RlLgogCiAgICAgaWYgKCFAaXNPYmplY3Qo
dGFyZ2V0KSkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlZmxlY3QuZGVsZXRlUHJv
cGVydHkgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpOworICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoIlJlZmxlY3QuZGVsZXRlUHJvcGVydHkgcmVxdWlyZXMgdGhlIGZp
cnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpOwogCiAgICAgcmV0dXJuIGRlbGV0ZSB0YXJnZXRb
cHJvcGVydHlLZXldOwogfQpAQCAtNTUsNyArNTUsNyBAQCBmdW5jdGlvbiBoYXModGFyZ2V0LCBw
cm9wZXJ0eUtleSkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc09iamVjdCh0YXJn
ZXQpKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVmbGVjdC5oYXMgcmVxdWlyZXMg
dGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpOworICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoIlJlZmxlY3QuaGFzIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3Qi
KTsKIAogICAgIHJldHVybiBwcm9wZXJ0eUtleSBpbiB0YXJnZXQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwppbmRleCA5ZDk0NWE0
Y2UzNzJjYmIzYzlmNTAzZjEyZGJmZjE0ZWMxYzU1NjYxLi4wMTdhODFjZDE0ZDEwODg1N2JiY2U0
YTM5Y2VkNTkyMjYyZWFmZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9SZWdFeHBQcm90b3R5cGUuanMKQEAgLTU2LDcgKzU2LDcgQEAgZnVuY3Rpb24gcmVnRXhw
RXhlYyhyZWdleHAsIHN0cikKICAgICBpZiAoZXhlYyAhPT0gYnVpbHRpbkV4ZWMgJiYgdHlwZW9m
IGV4ZWMgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgbGV0IHJlc3VsdCA9IGV4ZWMuQGNhbGwo
cmVnZXhwLCBzdHIpOwogICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsICYmICFAaXNPYmplY3Qo
cmVzdWx0KSkKLSAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJUaGUgcmVzdWx0IG9m
IGEgUmVnRXhwIGV4ZWMgbXVzdCBiZSBudWxsIG9yIGFuIG9iamVjdCIpOworICAgICAgICAgICAg
QHRocm93VHlwZUVycm9yKCJUaGUgcmVzdWx0IG9mIGEgUmVnRXhwIGV4ZWMgbXVzdCBiZSBudWxs
IG9yIGFuIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICByZXR1
cm4gYnVpbHRpbkV4ZWMuQGNhbGwocmVnZXhwLCBzdHIpOwpAQCAtODQsNyArODQsNyBAQCBmdW5j
dGlvbiBtYXRjaChzdHJBcmcpCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKCFAaXNPYmpl
Y3QodGhpcykpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWdFeHAucHJvdG90eXBl
LkBAbWF0Y2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgYW4gT2JqZWN0Iik7CisgICAgICAgIEB0
aHJvd1R5cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS5AQG1hdGNoIHJlcXVpcmVzIHRoYXQgfHRo
aXN8IGJlIGFuIE9iamVjdCIpOwogCiAgICAgbGV0IHJlZ2V4cCA9IHRoaXM7CiAKQEAgLTExNiwx
MCArMTE2LDEwIEBAIGZ1bmN0aW9uIG1hdGNoKHN0ckFyZykKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChyZXN1bHRMaXN0Lmxlbmd0aCA+IG1heGltdW1SZWFzb25hYmxlTWF0Y2hTaXplKQotICAg
ICAgICAgICAgdGhyb3cgbmV3IEBFcnJvcigiT3V0IG9mIG1lbW9yeSIpOworICAgICAgICAgICAg
QHRocm93T3V0T2ZNZW1vcnlFcnJvcigpOwogCiAgICAgICAgIGlmICghQGlzT2JqZWN0KHJlc3Vs
dCkpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS5A
QG1hdGNoIGNhbGwgdG8gUmVnRXhwLmV4ZWMgZGlkbid0IHJldHVybiBudWxsIG9yIGFuIG9iamVj
dCIpOworICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJSZWdFeHAucHJvdG90eXBlLkBAbWF0
Y2ggY2FsbCB0byBSZWdFeHAuZXhlYyBkaWRuJ3QgcmV0dXJuIG51bGwgb3IgYW4gb2JqZWN0Iik7
CiAKICAgICAgICAgbGV0IHJlc3VsdFN0cmluZyA9IEB0b1N0cmluZyhyZXN1bHRbMF0pOwogCkBA
IC0yMDgsNyArMjA4LDcgQEAgZnVuY3Rpb24gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIHN0ciwg
cG9zaXRpb24sIGNhcHR1cmVzLCByZXBsYWNlbWVudCkKICAgICB9CiAKICAgICBpZiAoIUBpc09i
amVjdCh0aGlzKSkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlZ0V4cC5wcm90b3R5
cGUuQEByZXBsYWNlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGFuIE9iamVjdCIpOworICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoIlJlZ0V4cC5wcm90b3R5cGUuQEByZXBsYWNlIHJlcXVpcmVzIHRo
YXQgfHRoaXN8IGJlIGFuIE9iamVjdCIpOwogCiAgICAgbGV0IHJlZ2V4cCA9IHRoaXM7CiAKQEAg
LTMwOSw3ICszMDksNyBAQCBmdW5jdGlvbiBzZWFyY2goc3RyQXJnKQogICAgIC8vIDEuIExldCBy
eCBiZSB0aGUgdGhpcyB2YWx1ZS4KICAgICAvLyAyLiBJZiBUeXBlKHJ4KSBpcyBub3QgT2JqZWN0
LCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKCFAaXNPYmplY3QodGhpcykp
Ci0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWdFeHAucHJvdG90eXBlLkBAc2VhcmNo
IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGFuIE9iamVjdCIpOworICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoIlJlZ0V4cC5wcm90b3R5cGUuQEBzZWFyY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUg
YW4gT2JqZWN0Iik7CiAKICAgICAvLyAzLiBMZXQgUyBiZSA/IFRvU3RyaW5nKHN0cmluZykuCiAg
ICAgbGV0IHN0ciA9IEB0b1N0cmluZyhzdHJBcmcpCkBAIC0zNzQsNyArMzc0LDcgQEAgZnVuY3Rp
b24gc3BsaXQoc3RyaW5nLCBsaW1pdCkKICAgICAvLyAxLiBMZXQgcnggYmUgdGhlIHRoaXMgdmFs
dWUuCiAgICAgLy8gMi4gSWYgVHlwZShyeCkgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJy
b3IgZXhjZXB0aW9uLgogICAgIGlmICghQGlzT2JqZWN0KHRoaXMpKQotICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS5AQHNwbGl0IHJlcXVpcmVzIHRoYXQgfHRo
aXN8IGJlIGFuIE9iamVjdCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlZ0V4cC5wcm90
b3R5cGUuQEBzcGxpdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhbiBPYmplY3QiKTsKICAgICBs
ZXQgcmVnZXhwID0gdGhpczsKIAogICAgIC8vIDMuIExldCBTIGJlID8gVG9TdHJpbmcoc3RyaW5n
KS4KQEAgLTUxNCw3ICs1MTQsNyBAQCBmdW5jdGlvbiB0ZXN0KHN0ckFyZykKICAgICAvLyAxLiBM
ZXQgUiBiZSB0aGUgdGhpcyB2YWx1ZS4KICAgICAvLyAyLiBJZiBUeXBlKFIpIGlzIG5vdCBPYmpl
Y3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoIUBpc09iamVjdChyZWdl
eHApKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS50ZXN0
IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGFuIE9iamVjdCIpOworICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoIlJlZ0V4cC5wcm90b3R5cGUudGVzdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhbiBP
YmplY3QiKTsKIAogICAgIC8vIDMuIExldCBzdHJpbmcgYmUgPyBUb1N0cmluZyhTKS4KICAgICBs
ZXQgc3RyID0gQHRvU3RyaW5nKHN0ckFyZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1NldFByb3RvdHlwZS5qcwppbmRleCA1NTI3MWI1Mjk1ODgzNmZlODI1NzAzZjc3MGI3
ZWZiNTMxOWVkMjljLi44MzQ1ZjJlYTRhMWJmM2I5NjZkZDAwNzc3ZDg4ZmRjYjQ4MzZlODUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TZXRQcm90b3R5cGUuanMKQEAg
LTI4LDEwICsyOCwxMCBAQCBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrIC8qLCB0aGlzQXJnICov
KQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzU2V0KHRoaXMpKQotICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigiU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLVNldCBvYmpl
Y3QiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBu
b24tU2V0IG9iamVjdCIpOwogCiAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9u
JykKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlNldC5wcm90b3R5cGUuZm9yRWFjaCBj
YWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJT
ZXQucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CiAKICAg
ICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogQHVu
ZGVmaW5lZDsKICAgICB2YXIgaXRlcmF0b3IgPSBAU2V0SXRlcmF0b3IodGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMKaW5k
ZXggOTBiNDM1ZmNlMjY2YWYxODc5YTMwYjY3ODRkMTdkMWEyNmY5MmI4Yi4uYTMyOTMzMjhiY2U3
MTdkNmU2OGZiNWNkNGFhYTg0NGIyZWVmZGVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9TdHJpbmdDb25zdHJ1Y3Rvci5qcwpAQCAtMjgsMTIgKzI4LDEyIEBA
IGZ1bmN0aW9uIHJhdyh0ZW1wbGF0ZSkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAodGVt
cGxhdGUgPT09IG51bGwgfHwgdGVtcGxhdGUgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCJTdHJpbmcucmF3IHJlcXVpcmVzIHRlbXBsYXRlIG5vdCBiZSBudWxs
IG9yIHVuZGVmaW5lZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlN0cmluZy5yYXcgcmVx
dWlyZXMgdGVtcGxhdGUgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGNvb2tl
ZFNlZ21lbnRzID0gQE9iamVjdCh0ZW1wbGF0ZSk7CiAKICAgICB2YXIgcmF3VmFsdWUgPSBjb29r
ZWRTZWdtZW50cy5yYXc7CiAgICAgaWYgKHJhd1ZhbHVlID09PSBudWxsIHx8IHJhd1ZhbHVlID09
PSBAdW5kZWZpbmVkKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiU3RyaW5nLnJhdyBy
ZXF1aXJlcyB0ZW1wbGF0ZS5yYXcgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgICAg
IEB0aHJvd1R5cGVFcnJvcigiU3RyaW5nLnJhdyByZXF1aXJlcyB0ZW1wbGF0ZS5yYXcgbm90IGJl
IG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIHJhd1NlZ21lbnRzID0gQE9iamVjdChyYXdW
YWx1ZSk7CiAKICAgICB2YXIgbnVtYmVyT2ZTdWJzdGl0dXRpb25zID0gYXJndW1lbnRzLmxlbmd0
aCAtIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUuanMKaW5kZXggZjc3NGVjNDdhZDEwZDZlMDFjOTI0NWJlMGE4
MzVlMDQyYWQ0YmZmOC4uNTI3NjJkYmYzYzUyZjYzYTQ5Yjg3NmU5NWM4ODQwYzUxN2VjNjU0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5qcwpAQCAtMjgsMTEgKzI4LDExIEBAIGZ1bmN0aW9uIG5leHQoKQog
ICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICh0aGlzID09IG51bGwpCi0gICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCIlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMg
dGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRo
aXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogCiAgICAgdmFyIHBvc2l0aW9uID0gdGhp
cy5Ac3RyaW5nSXRlcmF0b3JOZXh0SW5kZXg7CiAgICAgaWYgKHBvc2l0aW9uID09PSBAdW5kZWZp
bmVkKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiJVN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlJS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEgU3RyaW5nIEl0ZXJhdG9yIGluc3Rh
bmNlIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
JS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEgU3RyaW5nIEl0ZXJhdG9yIGluc3RhbmNl
Iik7CiAKICAgICB2YXIgZG9uZSA9IHRydWU7CiAgICAgdmFyIHZhbHVlID0gQHVuZGVmaW5lZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5
cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpz
CmluZGV4IDJkYzcxNmZkZTdhMjYxMjhmNjcyZDZiMDc3NjJkYWRmOTY0Y2ZkMWQuLjFjZWY0Zjk2
NjI0ODNmYmY5ZGNmZmI3N2Y2ZTQ1ZTRmODI3NzkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwpAQCAtMzAsNyArMzAsNyBAQCBm
dW5jdGlvbiBtYXRjaChyZWdleHApCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKHRoaXMg
PT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUu
bWF0Y2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7Cisg
ICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5tYXRjaCByZXF1aXJlcyB0
aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKIAogICAgIGlmIChyZWdleHAg
IT0gbnVsbCkgewogICAgICAgICB2YXIgbWF0Y2hlciA9IHJlZ2V4cC5AbWF0Y2hTeW1ib2w7CkBA
IC01Nyw3ICs1Nyw3IEBAIGZ1bmN0aW9uIHJlcGVhdFNsb3dQYXRoKHN0cmluZywgY291bnQpCiAg
ICAgICAgIHJldHVybiBzdHJpbmc7CiAKICAgICBpZiAoc3RyaW5nLmxlbmd0aCAqIGNvdW50ID4g
QE1BWF9TVFJJTkdfTEVOR1RIKQotICAgICAgICB0aHJvdyBuZXcgQEVycm9yKCJPdXQgb2YgbWVt
b3J5Iik7CisgICAgICAgIEB0aHJvd091dE9mTWVtb3J5RXJyb3IoKTsKIAogICAgIC8vIEJpdCBv
cGVyYXRpb24gb250byB8Y291bnR8IGlzIHNhZmUgYmVjYXVzZSB8Y291bnR8IHNob3VsZCBiZSB3
aXRoaW4gSW50MzIgcmFuZ2UsCiAgICAgLy8gUmVwZWF0IGxvZyBOIHRpbWVzIHRvIGdlbmVyYXRl
IHRoZSByZXBlYXRlZCBzdHJpbmcgcm9wZS4KQEAgLTEwMiwxMyArMTAyLDEzIEBAIGZ1bmN0aW9u
IHJlcGVhdChjb3VudCkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAodGhpcyA9PSBudWxs
KQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgICAg
IEB0aHJvd1R5cGVFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQgcmVxdWlyZXMgdGhhdCB8
dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAKICAgICB2YXIgc3RyaW5nID0gQHRv
U3RyaW5nKHRoaXMpOwogICAgIGNvdW50ID0gQHRvSW50ZWdlcihjb3VudCk7CiAKICAgICBpZiAo
Y291bnQgPCAwIHx8IGNvdW50ID09PSBASW5maW5pdHkpCi0gICAgICAgIHRocm93IG5ldyBAUmFu
Z2VFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQgYXJndW1lbnQgbXVzdCBiZSBncmVhdGVy
IHRoYW4gb3IgZXF1YWwgdG8gMCBhbmQgbm90IGJlIEluZmluaXR5Iik7CisgICAgICAgIEB0aHJv
d1JhbmdlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUucmVwZWF0IGFyZ3VtZW50IG11c3QgYmUgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIDAgYW5kIG5vdCBiZSBJbmZpbml0eSIpOwogCiAgICAgaWYg
KHN0cmluZy5sZW5ndGggPT09IDEpCiAgICAgICAgIHJldHVybiBAcmVwZWF0Q2hhcmFjdGVyKHN0
cmluZywgY291bnQpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIGZ1bmN0aW9uIHBhZFN0YXJ0KG1heExl
bmd0aC8qLCBmaWxsU3RyaW5nKi8pCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKHRoaXMg
PT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUu
cGFkU3RhcnQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7
CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5wYWRTdGFydCByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKIAogICAgIHZhciBz
dHJpbmcgPSBAdG9TdHJpbmcodGhpcyk7CiAgICAgbWF4TGVuZ3RoID0gQHRvTGVuZ3RoKG1heExl
bmd0aCk7CkBAIC0xNDEsNyArMTQxLDcgQEAgZnVuY3Rpb24gcGFkU3RhcnQobWF4TGVuZ3RoLyos
IGZpbGxTdHJpbmcqLykKICAgICB9CiAKICAgICBpZiAobWF4TGVuZ3RoID4gQE1BWF9TVFJJTkdf
TEVOR1RIKQotICAgICAgICB0aHJvdyBuZXcgQEVycm9yKCJPdXQgb2YgbWVtb3J5Iik7CisgICAg
ICAgIEB0aHJvd091dE9mTWVtb3J5RXJyb3IoKTsKIAogICAgIHZhciBmaWxsTGVuZ3RoID0gbWF4
TGVuZ3RoIC0gc3RyaW5nTGVuZ3RoOwogICAgIHZhciB0cnVuY2F0ZWRTdHJpbmdGaWxsZXI7CkBA
IC0xNTgsNyArMTU4LDcgQEAgZnVuY3Rpb24gcGFkRW5kKG1heExlbmd0aC8qLCBmaWxsU3RyaW5n
Ki8pCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKHRoaXMgPT0gbnVsbCkKLSAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUucGFkRW5kIHJlcXVpcmVzIHRo
YXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoIlN0cmluZy5wcm90b3R5cGUucGFkRW5kIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogCiAgICAgdmFyIHN0cmluZyA9IEB0b1N0cmluZyh0aGlz
KTsKICAgICBtYXhMZW5ndGggPSBAdG9MZW5ndGgobWF4TGVuZ3RoKTsKQEAgLTE3OCw3ICsxNzgs
NyBAQCBmdW5jdGlvbiBwYWRFbmQobWF4TGVuZ3RoLyosIGZpbGxTdHJpbmcqLykKICAgICB9CiAK
ICAgICBpZiAobWF4TGVuZ3RoID4gQE1BWF9TVFJJTkdfTEVOR1RIKQotICAgICAgICB0aHJvdyBu
ZXcgQEVycm9yKCJPdXQgb2YgbWVtb3J5Iik7CisgICAgICAgIEB0aHJvd091dE9mTWVtb3J5RXJy
b3IoKTsKIAogICAgIHZhciBmaWxsTGVuZ3RoID0gbWF4TGVuZ3RoIC0gc3RyaW5nTGVuZ3RoOwog
ICAgIHZhciB0cnVuY2F0ZWRTdHJpbmdGaWxsZXI7CkBAIC0yMTYsNyArMjE2LDcgQEAgZnVuY3Rp
b24gcmVwbGFjZShzZWFyY2gsIHJlcGxhY2UpCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYg
KHRoaXMgPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlN0cmluZy5wcm90
b3R5cGUucmVwbGFjZSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmlu
ZWQiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJTdHJpbmcucHJvdG90eXBlLnJlcGxhY2Ug
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAKICAgICBp
ZiAoc2VhcmNoICE9IG51bGwpIHsKICAgICAgICAgbGV0IHJlcGxhY2VyID0gc2VhcmNoLkByZXBs
YWNlU3ltYm9sOwpAQCAtMjQxLDcgKzI0MSw3IEBAIGZ1bmN0aW9uIGxvY2FsZUNvbXBhcmUodGhh
dC8qLCBsb2NhbGVzLCBvcHRpb25zICovKQogCiAgICAgLy8gMS4gTGV0IE8gYmUgUmVxdWlyZU9i
amVjdENvZXJjaWJsZSh0aGlzIHZhbHVlKS4KICAgICBpZiAodGhpcyA9PSBudWxsKQotICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5sb2NhbGVDb21wYXJlIHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUubG9jYWxlQ29tcGFyZSByZXF1aXJlcyB0
aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKIAogICAgIC8vIDIuIExldCBT
IGJlIFRvU3RyaW5nKE8pLgogICAgIC8vIDMuIFJldHVybklmQWJydXB0KFMpLgpAQCAtMjY4LDcg
KzI2OCw3IEBAIGZ1bmN0aW9uIHNlYXJjaChyZWdleHApCiAgICAgInVzZSBzdHJpY3QiOwogCiAg
ICAgaWYgKHRoaXMgPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlN0cmlu
Zy5wcm90b3R5cGUuc2VhcmNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVu
ZGVmaW5lZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUuc2Vh
cmNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogCiAg
ICAgaWYgKHJlZ2V4cCAhPSBudWxsKSB7CiAgICAgICAgIHZhciBzZWFyY2hlciA9IHJlZ2V4cC5A
c2VhcmNoU3ltYm9sOwpAQCAtMjg2LDcgKzI4Niw3IEBAIGZ1bmN0aW9uIHNwbGl0KHNlcGFyYXRv
ciwgbGltaXQpCiAgICAgInVzZSBzdHJpY3QiOwogICAgIAogICAgIGlmICh0aGlzID09IG51bGwp
Ci0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJTdHJpbmcucHJvdG90eXBlLnNwbGl0IHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUuc3BsaXQgcmVxdWlyZXMgdGhhdCB8dGhp
c3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgCiAgICAgaWYgKHNlcGFyYXRvciAh
PSBudWxsKSB7CiAgICAgICAgIHZhciBzcGxpdHRlciA9IHNlcGFyYXRvci5Ac3BsaXRTeW1ib2w7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheUNv
bnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlD
b25zdHJ1Y3Rvci5qcwppbmRleCAwMzYxNTY4ODBiODhjZDJmZDdkODNhZDFlODFkN2RiYmNmZjM3
ODQyLi4xNzYzYjIwZmQwYWY0YzM3NDIwMmQwOGEyMzJmNTNkYTdmZTUyZmMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0
b3IuanMKQEAgLTM0LDcgKzM0LDcgQEAgZnVuY3Rpb24gb2YoLyogaXRlbXMuLi4gKi8pCiAgICAg
bGV0IGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7CiAgICAgbGV0IGNvbnN0cnVjdEZ1bmN0aW9uID0g
dGhpcy5AYWxsb2NhdGVUeXBlZEFycmF5OwogICAgIGlmIChjb25zdHJ1Y3RGdW5jdGlvbiA9PT0g
QHVuZGVmaW5lZCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlR5cGVkQXJyYXkub2Yg
cmVxdWlyZXMgaXRzIHRoaXMgYXJndW1lbnQgdG8gc3ViY2xhc3MgYSBUeXBlZEFycmF5IGNvbnN0
cnVjdG9yIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiVHlwZWRBcnJheS5vZiByZXF1aXJl
cyBpdHMgdGhpcyBhcmd1bWVudCB0byBzdWJjbGFzcyBhIFR5cGVkQXJyYXkgY29uc3RydWN0b3Ii
KTsKIAogICAgIGxldCByZXN1bHQgPSBjb25zdHJ1Y3RGdW5jdGlvbihsZW4pOwogCkBAIC01NCwx
OSArNTQsMTkgQEAgZnVuY3Rpb24gZnJvbShpdGVtcyAvKiBbICwgbWFwZm4gWyAsIHRoaXNBcmcg
XSBdICovKQogCiAgICAgaWYgKG1hcEZuICE9PSBAdW5kZWZpbmVkKSB7CiAgICAgICAgIGlmICh0
eXBlb2YgbWFwRm4gIT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiVHlwZWRBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCwg
d2hlbiBwcm92aWRlZCwgYmUgYSBmdW5jdGlvbiIpOworICAgICAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJUeXBlZEFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50LCB3
aGVuIHByb3ZpZGVkLCBiZSBhIGZ1bmN0aW9uIik7CiAKICAgICAgICAgaWYgKGFyZ3VtZW50cy5s
ZW5ndGggPiAyKQogICAgICAgICAgICAgdGhpc0FyZyA9IGFyZ3VtZW50c1syXTsKICAgICB9CiAK
ICAgICBpZiAoaXRlbXMgPT0gbnVsbCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlR5
cGVkQXJyYXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9y
IHVuZGVmaW5lZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlR5cGVkQXJyYXkuZnJvbSBy
ZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZCIpOwog
CiAgICAgbGV0IGl0ZXJhdG9yTWV0aG9kID0gaXRlbXMuQGl0ZXJhdG9yU3ltYm9sOwogICAgIGlm
IChpdGVyYXRvck1ldGhvZCAhPSBudWxsKSB7CiAgICAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JN
ZXRob2QgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigi
VHlwZWRBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBh
cmd1bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9yXSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rp
b24iKTsKKyAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiVHlwZWRBcnJheS5mcm9tIHJlcXVp
cmVzIHRoYXQgdGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9s
Lml0ZXJhdG9yXSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb24iKTsKIAogICAgICAgICBsZXQg
YWNjdW11bGF0b3IgPSBbXTsKIApAQCAtODksNyArODksNyBAQCBmdW5jdGlvbiBmcm9tKGl0ZW1z
IC8qIFsgLCBtYXBmbiBbICwgdGhpc0FyZyBdIF0gKi8pCiAKICAgICAgICAgbGV0IGNvbnN0cnVj
dEZ1bmN0aW9uID0gdGhpcy5AYWxsb2NhdGVUeXBlZEFycmF5OwogICAgICAgICBpZiAoY29uc3Ry
dWN0RnVuY3Rpb24gPT09IEB1bmRlZmluZWQpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiVHlwZWRBcnJheS5mcm9tIHJlcXVpcmVzIGl0cyB0aGlzIGFyZ3VtZW50IHN1YmNsYXNz
IGEgVHlwZWRBcnJheSBjb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgQHRocm93VHlwZUVycm9y
KCJUeXBlZEFycmF5LmZyb20gcmVxdWlyZXMgaXRzIHRoaXMgYXJndW1lbnQgc3ViY2xhc3MgYSBU
eXBlZEFycmF5IGNvbnN0cnVjdG9yIik7CiAKICAgICAgICAgbGV0IHJlc3VsdCA9IGNvbnN0cnVj
dEZ1bmN0aW9uKGspOwogCkBAIC0xMDUsNyArMTA1LDcgQEAgZnVuY3Rpb24gZnJvbShpdGVtcyAv
KiBbICwgbWFwZm4gWyAsIHRoaXNBcmcgXSBdICovKQogCiAgICAgbGV0IGNvbnN0cnVjdEZ1bmN0
aW9uID0gdGhpcy5AYWxsb2NhdGVUeXBlZEFycmF5OwogICAgIGlmIChjb25zdHJ1Y3RGdW5jdGlv
biA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInRoaXMgZG9l
cyBub3Qgc3ViY2xhc3MgYSBUeXBlZEFycmF5IGNvbnN0cnVjdG9yIik7CisgICAgICAgIEB0aHJv
d1R5cGVFcnJvcigidGhpcyBkb2VzIG5vdCBzdWJjbGFzcyBhIFR5cGVkQXJyYXkgY29uc3RydWN0
b3IiKTsKIAogICAgIGxldCByZXN1bHQgPSBjb25zdHJ1Y3RGdW5jdGlvbihhcnJheUxpa2VMZW5n
dGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRB
cnJheVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFy
cmF5UHJvdG90eXBlLmpzCmluZGV4IGU0ZDk1OWE1ZGEzMmYyMThiZGUxYmFjZmJiNDcyODQzMGFj
NDBlNzguLmRiZTA2Yjk4OTZhOGM4MjBiYjBiNDNjNDI5ZTlmYTEyMTliYWE4MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBl
LmpzCkBAIC00MCw3ICs0MCw3IEBAIGZ1bmN0aW9uIHR5cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0
b3IodmFsdWUpCiAgICAgICAgIHJldHVybiBAdHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0
b3IodmFsdWUpOwogCiAgICAgaWYgKCFAaXNPYmplY3QoY29uc3RydWN0b3IpKQotICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigifHRoaXN8LmNvbnN0cnVjdG9yIGlzIG5vdCBhbiBPYmplY3Qg
b3IgdW5kZWZpbmVkIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigifHRoaXN8LmNvbnN0cnVj
dG9yIGlzIG5vdCBhbiBPYmplY3Qgb3IgdW5kZWZpbmVkIik7CiAKICAgICBjb25zdHJ1Y3RvciA9
IGNvbnN0cnVjdG9yLkBzcGVjaWVzU3ltYm9sOwogICAgIGlmIChjb25zdHJ1Y3RvciA9PSBudWxs
KQpAQCAtOTYsNyArOTYsNyBAQCBmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAq
LykKICAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFd
IDogQHVuZGVmaW5lZDsKIAogICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIp
Ci0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5ldmVy
eSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9y
KCJUeXBlZEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24i
KTsKIAogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYg
KCFjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCB0aGlzW2ldLCBpLCB0aGlzKSkKQEAgLTEzNiw3ICsx
MzYsNyBAQCBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrIC8qIFssIHRoaXNBcmddICovKQogICAgIHZh
ciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiBAdW5kZWZp
bmVkOwogCiAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIlR5cGVkQXJyYXkucHJvdG90eXBlLmZpbmQgY2FsbGJhY2sg
bXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiVHlwZWRBcnJh
eS5wcm90b3R5cGUuZmluZCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIAogICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgbGV0IGVsZW0gPSB0aGlz
W2ldOwpAQCAtMTUzLDcgKzE1Myw3IEBAIGZ1bmN0aW9uIGZpbmRJbmRleChjYWxsYmFjayAvKiBb
LCB0aGlzQXJnXSAqLykKICAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8g
YXJndW1lbnRzWzFdIDogQHVuZGVmaW5lZDsKIAogICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09
ICJmdW5jdGlvbiIpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJUeXBlZEFycmF5LnBy
b3RvdHlwZS5maW5kSW5kZXggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgICAg
IEB0aHJvd1R5cGVFcnJvcigiVHlwZWRBcnJheS5wcm90b3R5cGUuZmluZEluZGV4IGNhbGxiYWNr
IG11c3QgYmUgYSBmdW5jdGlvbiIpOwogCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgewogICAgICAgICBpZiAoY2FsbGJhY2suQGNhbGwodGhpc0FyZywgdGhpc1tpXSwgaSwg
dGhpcykpCkBAIC0xNjksNyArMTY5LDcgQEAgZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAvKiBb
LCB0aGlzQXJnXSAqLykKICAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8g
YXJndW1lbnRzWzFdIDogQHVuZGVmaW5lZDsKIAogICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09
ICJmdW5jdGlvbiIpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJUeXBlZEFycmF5LnBy
b3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIlR5cGVkQXJyYXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVz
dCBiZSBhIGZ1bmN0aW9uIik7CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KQogICAgICAgICBjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCB0aGlzW2ldLCBpLCB0aGlzKTsKQEAg
LTE4Myw3ICsxODMsNyBAQCBmdW5jdGlvbiBzb21lKGNhbGxiYWNrIC8qIFssIHRoaXNBcmddICov
KQogICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0g
OiBAdW5kZWZpbmVkOwogCiAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikK
LSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlR5cGVkQXJyYXkucHJvdG90eXBlLnNvbWUg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigi
VHlwZWRBcnJheS5wcm90b3R5cGUuc29tZSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
IAogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYgKGNh
bGxiYWNrLkBjYWxsKHRoaXNBcmcsIHRoaXNbaV0sIGksIHRoaXMpKQpAQCAtMjYzLDcgKzI2Myw3
IEBAIGZ1bmN0aW9uIHN1YmFycmF5KGJlZ2luLCBlbmQpCiAgICAgInVzZSBzdHJpY3QiOwogCiAg
ICAgaWYgKCFAaXNUeXBlZEFycmF5Vmlldyh0aGlzKSkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoInx0aGlzfCBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Iik7CisgICAgICAgIEB0
aHJvd1R5cGVFcnJvcigifHRoaXN8IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciKTsKIAog
ICAgIGxldCBzdGFydCA9IEB0b0ludGVnZXIoYmVnaW4pOwogICAgIGxldCBmaW5pc2g7CkBAIC0y
ODMsMTAgKzI4MywxMCBAQCBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2sgLyogWywgaW5pdGlhbFZh
bHVlXSAqLykKICAgICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7CiAKICAg
ICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQotICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigiVHlwZWRBcnJheS5wcm90b3R5cGUucmVkdWNlIGNhbGxiYWNrIG11c3QgYmUg
YSBmdW5jdGlvbiIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlR5cGVkQXJyYXkucHJvdG90
eXBlLnJlZHVjZSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIAogICAgIGlmIChsZW5n
dGggPT09IDAgJiYgYXJndW1lbnRzLmxlbmd0aCA8IDIpCi0gICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5yZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBu
byBpbml0aWFsIHZhbHVlIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiVHlwZWRBcnJheS5w
cm90b3R5cGUucmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpOwog
CiAgICAgdmFyIGFjY3VtdWxhdG9yLCBrID0gMDsKICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+
IDEpCkBAIC0zMDgsMTAgKzMwOCwxMCBAQCBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFjayAv
KiBbLCBpbml0aWFsVmFsdWVdICovKQogICAgIHZhciBsZW5ndGggPSBAdHlwZWRBcnJheUxlbmd0
aCh0aGlzKTsKIAogICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCi0gICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdo
dCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9y
KCJUeXBlZEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodCBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24iKTsKIAogICAgIGlmIChsZW5ndGggPT09IDAgJiYgYXJndW1lbnRzLmxlbmd0aCA8IDIp
Ci0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5yZWR1
Y2VSaWdodCBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTsKKyAgICAgICAg
QHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodCBvZiBlbXB0
eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTsKIAogICAgIHZhciBhY2N1bXVsYXRvciwg
ayA9IGxlbmd0aCAtIDE7CiAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKQpAQCAtMzMzLDcg
KzMzMyw3IEBAIGZ1bmN0aW9uIG1hcChjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKICAgICB2YXIg
bGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7CiAKICAgICBpZiAodHlwZW9mIGNhbGxi
YWNrICE9PSAiZnVuY3Rpb24iKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiVHlwZWRB
cnJheS5wcm90b3R5cGUubWFwIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoIlR5cGVkQXJyYXkucHJvdG90eXBlLm1hcCBjYWxsYmFjayBtdXN0
IGJlIGEgZnVuY3Rpb24iKTsKIAogICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+
IDEgPyBhcmd1bWVudHNbMV0gOiBAdW5kZWZpbmVkOwogCkBAIC0zNjcsNyArMzY3LDcgQEAgZnVu
Y3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogICAgIHZhciBsZW5ndGggPSBA
dHlwZWRBcnJheUxlbmd0aCh0aGlzKTsKIAogICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJm
dW5jdGlvbiIpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3Rv
dHlwZS5maWx0ZXIgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgICAgIEB0aHJv
d1R5cGVFcnJvcigiVHlwZWRBcnJheS5wcm90b3R5cGUuZmlsdGVyIGNhbGxiYWNrIG11c3QgYmUg
YSBmdW5jdGlvbiIpOwogCiAgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/
IGFyZ3VtZW50c1sxXSA6IEB1bmRlZmluZWQ7CiAgICAgdmFyIGtlcHQgPSBbXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oCmluZGV4IDNiODBiNjEyMTE2YTc5YTNiMzQyNWRmNmMyNzVhNTYyYmEyNmQ4MWYu
LmZmOGZmYTM4YzkxODA3YzEzMzllNjUwNzc1OWQzMGRjNzViOWU5NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaApAQCAtNDgsNiArNDgsOSBAQCBjbGFzcyBJZGVudGlmaWVyOwogICAgIG1hY3JvKGlz
TWFwKSBcCiAgICAgbWFjcm8oaXNTZXQpIFwKICAgICBtYWNybyh0YWlsQ2FsbEZvcndhcmRBcmd1
bWVudHMpIFwKKyAgICBtYWNybyh0aHJvd1R5cGVFcnJvcikgXAorICAgIG1hY3JvKHRocm93UmFu
Z2VFcnJvcikgXAorICAgIG1hY3JvKHRocm93T3V0T2ZNZW1vcnlFcnJvcikgXAogICAgIG1hY3Jv
KHRyeUdldEJ5SWQpIFwKICAgICBtYWNybyhwdXRCeVZhbERpcmVjdCkgXAogICAgIG1hY3JvKHRv
TnVtYmVyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDk2MGUxZWY0ZTI2ZWYwOWQyY2JmZDRlNzM0ZDdkMDVlMzkzNTM5NTkuLjhlMzNmNTQ2
ZWI3NWViMjRlZTE4OWIzM2JkNzgxOWEyODE0MGZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNjc0LDkgKzE2NzQsMTAgQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Rocm93
X3N0YXRpY19lcnJvcjogewogICAgICAgICAgICAgaW50IGswID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBpbnQgazEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIEVy
cm9yVHlwZSBrMSA9IHN0YXRpY19jYXN0PEVycm9yVHlwZT4oKCsraXQpLT51LnVuc2lnbmVkVmFs
dWUpOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAidGhyb3dfc3RhdGljX2Vycm9yIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMiLCBjb25zdGFudE5hbWUoazApLmRhdGEoKSwgazEgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCBjb25zdGFudE5hbWUoazApLmRhdGEoKSk7Cisg
ICAgICAgICAgICBvdXQucHJpbnQoazEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9kZWJ1ZzogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBhZmJjNWUwMmIz
YTY3MGU4NDRkMTZhZWMwMTZlZDU0ODk5ZDI5N2JjLi4zYmIyZmE4NTk5NDgwZjYwZmJiNmM2ZjFh
MWU1YjA0MDcyOWNiOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzkwNSwxOCArMzkwNSwzNiBA
QCBpbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmxhYmVsU2NvcGVEZXB0aCgpIGNvbnN0CiAgICAgcmV0
dXJuIGxvY2FsU2NvcGVEZXB0aCgpICsgbV9maW5hbGx5RGVwdGg7CiB9CiAKLXZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1N0YXRpY0Vycm9yKEVycm9yVHlw
ZSBlcnJvclR5cGUsIGNvbnN0IElkZW50aWZpZXImIG1lc3NhZ2UpCiB7CiAgICAgZW1pdE9wY29k
ZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRD
b25zdGFudFZhbHVlKGFkZFN0cmluZ0NvbnN0YW50KElkZW50aWZpZXI6OmZyb21TdHJpbmcobV92
bSwgbWVzc2FnZSkpKS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRydWUp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0cmluZ0Nv
bnN0YW50KG1lc3NhZ2UpKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihlcnJvclR5cGUpKTsKK30KKwordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIGVtaXRUaHJvd1N0YXRpY0Vycm9yKEVycm9yVHlwZTo6UmVmZXJlbmNlRXJyb3IsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcobV92bSwgbWVzc2FnZSkpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0VGhyb3dUeXBlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAg
IGVtaXRPcGNvZGUob3BfdGhyb3dfc3RhdGljX2Vycm9yKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShhZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKG1fdm0sIG1lc3NhZ2UpKSktPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChmYWxzZSk7CisgICAgZW1pdFRocm93U3RhdGljRXJyb3IoRXJyb3JUeXBlOjpUeXBlRXJy
b3IsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobV92bSwgbWVzc2FnZSkpOworfQorCit2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dUeXBlRXJyb3IoY29uc3QgSWRlbnRpZmllciYgbWVz
c2FnZSkKK3sKKyAgICBlbWl0VGhyb3dTdGF0aWNFcnJvcihFcnJvclR5cGU6OlR5cGVFcnJvciwg
bWVzc2FnZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1JhbmdlRXJy
b3IoY29uc3QgSWRlbnRpZmllciYgbWVzc2FnZSkKK3sKKyAgICBlbWl0VGhyb3dTdGF0aWNFcnJv
cihFcnJvclR5cGU6OlJhbmdlRXJyb3IsIG1lc3NhZ2UpOworfQorCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0VGhyb3dPdXRPZk1lbW9yeUVycm9yKCkKK3sKKyAgICBlbWl0VGhyb3dTdGF0
aWNFcnJvcihFcnJvclR5cGU6OkVycm9yLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKG1fdm0sICJP
dXQgb2YgbWVtb3J5IikpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEZ1
bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiBj
YWxsZWUsIGJvb2wgaXNDYXB0dXJlZCkKQEAgLTQxMDQsOSArNDEyMiw3IEBAIGJvb2wgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZWFkT25seUV4Y2VwdGlvbklmTmVlZGVkKGNvbnN0IFZhcmlhYmxl
JiB2YXJpYWJsZSkKICAgICAvLyBJZiB3ZSdyZSBpbiBzdHJpY3QgbW9kZSwgd2UgYWx3YXlzIHRo
cm93LgogICAgIC8vIElmIHdlJ3JlIG5vdCBpbiBzdHJpY3QgbW9kZSwgd2UgdGhyb3cgZm9yICJj
b25zdCIgdmFyaWFibGVzIGJ1dCBub3QgdGhlIGZ1bmN0aW9uIGNhbGxlZS4KICAgICBpZiAoaXNT
dHJpY3RNb2RlKCkgfHwgdmFyaWFibGUuaXNDb25zdCgpKSB7Ci0gICAgICAgIGVtaXRPcGNvZGUo
b3BfdGhyb3dfc3RhdGljX2Vycm9yKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFk
ZENvbnN0YW50VmFsdWUoYWRkU3RyaW5nQ29uc3RhbnQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyht
X3ZtLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSktPmluZGV4KCkpOwot
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmFsc2UpOworICAgICAgICBlbWl0VGhyb3dU
eXBlRXJyb3IoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhtX3ZtLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAzZTU2Y2E3ZTk1NWQ4NDM5ZTg1YzM3YmRiYzgx
YjlkMDk0NWI4MDg2Li5mOTk1MzMyMTZkMWQxZDY3OGNlMWE3OGMyMGJkNWMyMTAxMmQwNzk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCkBAIC02NjIsOCArNjYyLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgZW1pdFVuYXJ5Tm9Ec3RPcChvcF90aHJvdywgZXhjKTsKICAgICAgICAgfQogCisgICAg
ICAgIHZvaWQgZW1pdFRocm93U3RhdGljRXJyb3IoRXJyb3JUeXBlLCBjb25zdCBJZGVudGlmaWVy
JiBtZXNzYWdlKTsKICAgICAgICAgdm9pZCBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2b2lkIGVtaXRUaHJvd1R5cGVFcnJvcihjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOworICAgICAgICB2b2lkIGVtaXRUaHJvd1R5cGVFcnJvcihjb25zdCBJ
ZGVudGlmaWVyJiBtZXNzYWdlKTsKKyAgICAgICAgdm9pZCBlbWl0VGhyb3dSYW5nZUVycm9yKGNv
bnN0IElkZW50aWZpZXImIG1lc3NhZ2UpOworICAgICAgICB2b2lkIGVtaXRUaHJvd091dE9mTWVt
b3J5RXJyb3IoKTsKIAogICAgICAgICB2b2lkIGVtaXRQdXNoQ2F0Y2hTY29wZShWYXJpYWJsZUVu
dmlyb25tZW50Jik7CiAgICAgICAgIHZvaWQgZW1pdFBvcENhdGNoU2NvcGUoVmFyaWFibGVFbnZp
cm9ubWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCmluZGV4IDYxNWZiZGU1Yzk2OTBmZjc0OTQzMDY2ODMxZTI4YjIxNjIz
NDJlZDcuLjE2OThmYTlkNWVjOTkzZTUyOWRjZTk0OGIyYWNkZDEyZTllYWNiODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
QEAgLTg5OCw2ICs4OTgsMzYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY190YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMoQnl0ZWMKICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRDYWxsRm9yd2FyZEFyZ3VtZW50c0luVGFpbFBvc2l0aW9uKGZpbmFsRHN0
LmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIDAsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSwgRGVidWdn
YWJsZUNhbGw6Ok5vKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY190aHJvd1R5cGVFcnJvcihCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJn
cy0+bV9saXN0Tm9kZTsKKyAgICBBU1NFUlQobm9kZS0+bV9leHByLT5pc1N0cmluZygpKTsKKyAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rl
LT5tX2V4cHIpLT52YWx1ZSgpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIGdl
bmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoaWRlbnQpOworICAgIHJldHVybiBkc3Q7Cit9CisK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdGhyb3dS
YW5nZUVycm9yKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
K3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAg
IEFTU0VSVChub2RlLT5tX2V4cHItPmlzU3RyaW5nKCkpOworICAgIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50ID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG5vZGUtPm1fZXhwciktPnZhbHVlKCk7
CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1Jh
bmdlRXJyb3IoaWRlbnQpOworICAgIHJldHVybiBkc3Q7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdGhyb3dPdXRPZk1lbW9yeUVycm9yKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBU1NF
UlQoIW1fYXJncy0+bV9saXN0Tm9kZSk7CisKKyAgICBnZW5lcmF0b3IuZW1pdFRocm93T3V0T2ZN
ZW1vcnlFcnJvcigpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdHJ5R2V0QnlJZChCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSog
bm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5ZjVmMGUw
NzJjN2I0MGQzZWZhMThjY2NjZDUzOGM3ZDVmYTAxMDE3Li4wYmJlZTM0ZWFiYTNiN2FiZTcxMGMy
YzY5OTVjZTI0OWQ5ZDJjOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xNzg1LDcgKzE3ODUs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgY2FzZSBUaHJvdzoKLSAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CisgICAgY2FzZSBU
aHJvd1N0YXRpY0Vycm9yOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA4Y2RmNTBhNDk5MzNmZWU1NDQ5M2Q2ZDYwYmUx
OWRkZjJiM2JlNDE3Li5lZmYyM2E4NTQyMGQ5MDg5ZTk4YWI1Y2RlMGNiMTQxZTViMGJkMGZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApA
QCAtNDY2MCw3ICs0NjYwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3Rocm93KTsKICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKLSAgICAgICAgICAgIGFk
ZFRvR3JhcGgoVGhyb3dSZWZlcmVuY2VFcnJvcik7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFRo
cm93U3RhdGljRXJyb3IpOwogICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwogICAgICAg
ICAgICAgYWRkVG9HcmFwaChVbnJlYWNoYWJsZSk7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShv
cF90aHJvd19zdGF0aWNfZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAppbmRleCAxNzk5NjNkYmJkNzU3ZGExNzdjOTI1MWY5NTQ4MjZhZmFjNzRmYzQ2Li4y
ZWJmYTQyNGNmNjFiYWIyZTVkZTdiNTk0NGY5NjE0ZTAwYjA5YTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTI2NSw3ICsxMjY1LDcgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJl
YWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CisgICAgY2FzZSBUaHJvd1N0YXRpY0Vy
cm9yOgogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA3MTFkZTdmODA3
ODNlODcyZDk2ZDMwNjFjOGRmYjVmYTZjNDhhZTguLmZiODMzMzI0MTg3ZTAyMjk5MDg1N2EwZjQ2
NDkzYjQ1ZmRlNDE4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
QEAgLTI4Miw3ICsyODIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgog
ICAgIGNhc2UgTmV3VHlwZWRBcnJheToKLSAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6Cisg
ICAgY2FzZSBUaHJvd1N0YXRpY0Vycm9yOgogICAgIGNhc2UgR2V0UHJvcGVydHlFbnVtZXJhdG9y
OgogICAgIGNhc2UgR2V0RW51bWVyYXRvclN0cnVjdHVyZVBuYW1lOgogICAgIGNhc2UgR2V0RW51
bWVyYXRvckdlbmVyaWNQbmFtZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IGI1M2FjODg3YTcyMjc0YmVlYTY2NDNiYjM2YjAxNjMwZTM4MTQ1YmYu
LjE0NGYyNjUyMzM1ODkzZmIxZDI3MTI5MGE2ZGNkOWZmMzE5ZTJiMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTc1Nyw3ICsxNzU3LDcgQEAg
Y2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgVGFpbENhbGw6
CiAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgogICAgICAgICBjYXNlIFRocm93OgotICAg
ICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CisgICAgICAgIGNhc2UgVGhyb3dTdGF0aWNF
cnJvcjoKICAgICAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICAgICAgY2FzZSBGb3JjZU9T
UkV4aXQ6CiAgICAgICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCmluZGV4IDcxNGI4YjI0ODhhNDZkMDNhMjRmMzc0NzM4OWUxZGU4YTg5
MmJiODIuLjc0OWZiYmRmMTdkM2RlNzAxNzhiNTQwNTIyYmU3ODBkNzhlNjc2YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM1MCw3ICszNTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0
ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0ICovIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RH
ZW5lcmF0ZSkgXAotICAgIG1hY3JvKFRocm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKKyAgICBtYWNybyhUaHJvd1N0YXRpY0Vycm9yLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgXAogICAgIC8qIEJsb2NrIHRlcm1pbmFscy4gKi9cCiAgICAgbWFjcm8oSnVtcCwgTm9kZU11
c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBiZWEzNjE2N2NkMGU1YTk1
YjVlODUwNzgzYjUwODJjNjI0NDU2NWI3Li40ZjA0MzhhM2JkMTUwMjRkNzk4NTQzYWQyNGRiN2Fm
NDE2ZmNhMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTA1Nyw3ICsxMDU3LDcgQEAg
Y2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICBjYXNlIFN3aXRjaDoKICAgICAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICAgICAgY2FzZSBQ
cm9maWxlQ29udHJvbEZsb3c6Ci0gICAgICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKKyAg
ICAgICAgY2FzZSBUaHJvd1N0YXRpY0Vycm9yOgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoK
ICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKICAgICAgICAgY2FzZSBTZXRGdW5jdGlvbk5hbWU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGZh
MzI3Yzk3Y2I1NzYyNGNkMDFkNzA0YTk3YTdiODVkNmE4ZGMzNDEuLjljNjI2MTVhYTJkMjk3ZDY3
Y2ZjN2U0OWIxOGFmNGQyOGE0NGJiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zMDQsNyArMzA0LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgVGFpbENhbGxWYXJhcmdzOgogICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoK
ICAgICBjYXNlIFRocm93OgotICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKKyAgICBjYXNl
IFRocm93U3RhdGljRXJyb3I6CiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEZv
cmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrV2F0Y2hkb2dUaW1lcjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDlh
YTA5M2E4MjM0MzExNTZkODg0ZDk0MWFjOWJiZDVjNmI3MGEwYzkuLmJjZDhiMWEyZjgyOWEwNjQw
M2ZiZGFkNzc3OTg0ZjI0YjVlYjhiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzQ3OSw3ICszNDc5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBUaHJvdzoKLSAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6IHsKKyAgICBj
YXNlIFRocm93U3RhdGljRXJyb3I6IHsKICAgICAgICAgLy8gV2UgZXhwZWN0IHRoYXQgdGhyb3cg
c3RhdGVtZW50cyBhcmUgcmFyZSBhbmQgYXJlIGludGVuZGVkIHRvIGV4aXQgdGhlIGNvZGUgYmxv
Y2sKICAgICAgICAgLy8gYW55d2F5LCBzbyB3ZSBqdXN0IE9TUiBiYWNrIHRvIHRoZSBvbGQgSklU
IGZvciBub3cuCiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGMwY2Y0MjNkOTVlNjhlZWNkMzQ1M2QxYjBl
MmE0NzIzNDE0MDFmOTIuLjMzNWNjYzdlNmQzY2VlMGRhNTQ1YjgwMGQwZWVhMTViYWY0ZTcyMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtMzQ3OSw3ICszNDc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJvdzoKLSAgICBjYXNlIFRo
cm93UmVmZXJlbmNlRXJyb3I6IHsKKyAgICBjYXNlIFRocm93U3RhdGljRXJyb3I6IHsKICAgICAg
ICAgLy8gV2UgZXhwZWN0IHRoYXQgdGhyb3cgc3RhdGVtZW50cyBhcmUgcmFyZSBhbmQgYXJlIGlu
dGVuZGVkIHRvIGV4aXQgdGhlIGNvZGUgYmxvY2sKICAgICAgICAgLy8gYW55d2F5LCBzbyB3ZSBq
dXN0IE9TUiBiYWNrIHRvIHRoZSBvbGQgSklUIGZvciBub3cuCiAgICAgICAgIHRlcm1pbmF0ZVNw
ZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBlODA4ZjQz
N2FkOWEwMThkZGZlNDAzMDM3Y2JiYzM0ZjI0MjhlMDU1Li43NDU2OGEyYTJiZGZlZjliM2VlMjcz
YTA4MmU4NmY5ZTVhYWU0NWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgogICAg
IGNhc2UgVG9QcmltaXRpdmU6CiAgICAgY2FzZSBUaHJvdzoKLSAgICBjYXNlIFRocm93UmVmZXJl
bmNlRXJyb3I6CisgICAgY2FzZSBUaHJvd1N0YXRpY0Vycm9yOgogICAgIGNhc2UgVW5yZWFjaGFi
bGU6CiAgICAgY2FzZSBJbjoKICAgICBjYXNlIEhhc093blByb3BlcnR5OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDk4ODlmYjA2Y2E1Y2Qx
ODU3ZTQ2OWNhY2JiY2Q2MzVkZDViODlhODEuLjdjZjc2ZmIyNGE0NzcwYTgyOTVlNjhmZGMyYzgz
MjhjZWU0OWFkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKQEAgLTg5MCw3ICs4OTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICAgICAgY29tcGlsZUZvcmNlT1NSRXhpdCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgVGhyb3c6Ci0gICAgICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKKyAgICAgICAg
Y2FzZSBUaHJvd1N0YXRpY0Vycm9yOgogICAgICAgICAgICAgY29tcGlsZVRocm93KCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDVmNjZmMmU0NGMxYzRiMzJkNGFh
M2Y2NTA4Yjg0YzI0Mjc5MWU4OTAuLmI5MDFiYjQ2MzEwNjAwMTIwZTExZjg0ZTFlY2E5Y2I2MjY3
NDliOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtNjE4
LDEyICs2MTgsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3Rocm93X3N0YXRpY19lcnJvcihJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQotewotICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShtX2Nv
ZGVCbG9jay0+Z2V0Q29uc3RhbnQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKSwg
cmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGF0aWNFcnJvciwgcmVn
VDAsIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotfQotCiB2b2lkIEpJVDo6ZW1p
dF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGxvYWQz
Mihjb2RlQmxvY2soKS0+ZGVidWdnZXJSZXF1ZXN0c0FkZHJlc3MoKSwgcmVnVDApOwpAQCAtOTM4
LDYgKzkzMiwxMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaQogI2VuZGlmCiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX3Rocm93X3N0YXRpY19lcnJvcihJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfdGhyb3dfc3RhdGljX2Vycm9yKTsKKyAgICBzbG93UGF0
aENhbGwuY2FsbCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF93YXRjaGRvZyhJbnN0cnVjdGlv
biopCiB7CiAgICAgQVNTRVJUKG1fdm0tPndhdGNoZG9nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDg3YzZhN2RhZTI2NzgzNzcyODk0
YTQ0MmMwYTc2NGQ1MjFhNmMxMTIuLmRlZjMxMzYyMzJkYmU2MWYxOWNiNzZlYWQ0MDhmNWMyYTcy
NGJiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTkxOSwxMiArOTE5LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX3N0cmluZyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGp1bXAocmV0dXJuVmFsdWVHUFIp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90aHJvd19zdGF0aWNfZXJyb3IoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBlbWl0TG9hZChtX2NvZGVCbG9jay0+Z2V0Q29u
c3RhbnQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIHJlZ1QxLCByZWdUMCk7Ci0g
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yLCByZWdUMSwgcmVnVDAs
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9v
cF9kZWJ1ZyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGxvYWQzMihj
b2RlQmxvY2soKS0+ZGVidWdnZXJSZXF1ZXN0c0FkZHJlc3MoKSwgcmVnVDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZjFmZjVlZGMwNjI5YmEx
YmE5MTBiODhkMDk5MDcxZmUzMDJjYTEwYy4uMzdlZDliNjllODhmMTVlNzljZjJhNjA0YWMxYmVj
MmIyYzU2YTZjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCkBAIC0xMTY0LDIxICsxMTY0LDYgQEAgVW51c2VkUHRyIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSGFuZGxlV2F0Y2hkb2dUaW1lcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBpbnQzMl90IHJlZmVy
ZW5jZUVycm9yRmxhZykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIGVycm9yTWVzc2FnZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZXJyb3JNZXNz
YWdlVmFsdWUuaXNTdHJpbmcoKSk7Ci0gICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IGFzU3RyaW5n
KGVycm9yTWVzc2FnZVZhbHVlKS0+dmFsdWUoZXhlYyk7Ci0gICAgaWYgKHJlZmVyZW5jZUVycm9y
RmxhZykKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5j
ZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSkpOwotICAgIGVsc2UKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7Ci19Ci0KIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZGVidWdIb29rVHlwZSkK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAppbmRleCA4MDY1MTc3ZWQyOTEyNDNmMDM2YWNlMTBmZTE0NjVjMjYyMjM4
OTFlLi41ODEwZTJkNzJmNmI5ODZhMDBkYTBhZjBjZWY5N2EwMjhmZjM2ZDE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzc2LDcgKzM3Niw2IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKiwgSlND
ZWxsKiwgRW5jb2RlZEpTVmFsdWUpCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIHZvaWQqKSBX
VEZfSU5URVJOQUw7CiBVbnVzZWRQdHIgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYW5kbGVXYXRj
aGRvZ1RpbWVyKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQz
Ml90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYg
RU5BQkxFKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAppbmRleCAyZGFkNTY5NmQ0ZDI4NGQwN2VkMTliZjUzYmFhZTk2MWE4NzMzNTk5
Li40Y2I4ZGEyNzkyNGE1YWQyNmIyYTMzOTQxOWI2OTEwZjc3NzQzZTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE0NzQsMTggKzE0
NzQsNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3cpCiAgICAgTExJTlRf
VEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfdGhyb3dfc3RhdGljX2Vycm9yKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0g
ICAgSlNWYWx1ZSBlcnJvck1lc3NhZ2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOwot
ICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yTWVzc2FnZVZhbHVlLmlzU3RyaW5nKCkpOwotICAgIFN0
cmluZyBlcnJvck1lc3NhZ2UgPSBhc1N0cmluZyhlcnJvck1lc3NhZ2VWYWx1ZSktPnZhbHVlKGV4
ZWMpOwotICAgIGlmIChwY1syXS51Lm9wZXJhbmQpCi0gICAgICAgIExMSU5UX1RIUk9XKGNyZWF0
ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSkpOwotICAgIGVsc2UKLSAgICAgICAg
TExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSkpOwotfQotCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFuZGxlX3dhdGNoZG9nX3RpbWVyKQogewog
ICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaAppbmRleCBiM2IwNmQ3OWFlODA5M2Q2NmZlZDBlM2M4MDRmNTkw
Y2I0MGRkNmUyLi45ODRlOWNjNDAzMDMyNzlhYTcwMmRmOGZlYjc4OGMzYjhiOTYwNTBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtMTE2LDcg
KzExNiw2IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGVhcl9vZmZf
YXJndW1lbnRzKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3RyY2F0
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3cpOwotTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJvd19zdGF0aWNfZXJyb3IpOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9oYW5kbGVfd2F0Y2hkb2dfdGltZXIpOwog
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWJ1Zyk7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhbmRsZV9leGNlcHRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4
IDk3ZjQyYjJjMDI3YWRlMjAwZGE4MGJkNWM2MjdkOTIzMDg5NjdmNDcuLmZiMGM0NzA0NWU2NzRl
YTI4ZWQ1ZWQ2YTUxYTZmODkwOTU5NDljZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE3NDEsNyArMTc0MSw3IEBA
IF9sbGludF9vcF90aHJvdzoKIAogX2xsaW50X29wX3Rocm93X3N0YXRpY19lcnJvcjoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
dGhyb3dfc3RhdGljX2Vycm9yKQorICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX3Ro
cm93X3N0YXRpY19lcnJvcikKICAgICBkaXNwYXRjaCgzKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGYyNWVlODExYWNh
OWVjYTRhOTZkYTkwZTVlMGE5NDI1Yjk3NDU4YzAuLjIyMjNiNjU5MzAwZWIzMGFjMWUyNjQ0YTY4
ZWM0Nzc1NmQ4OWI1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcApAQCAtOTY2LDQgKzk2NiwxNCBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KQogICAgIEVORCgpOwogfQogCitTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfc3RhdGljX2Vycm9yKQoreworICAgIEJFR0lOKCk7
CisgICAgSlNWYWx1ZSBlcnJvck1lc3NhZ2VWYWx1ZSA9IE9QX0MoMSkuanNWYWx1ZSgpOworICAg
IFJFTEVBU0VfQVNTRVJUKGVycm9yTWVzc2FnZVZhbHVlLmlzU3RyaW5nKCkpOworICAgIFN0cmlu
ZyBlcnJvck1lc3NhZ2UgPSBhc1N0cmluZyhlcnJvck1lc3NhZ2VWYWx1ZSktPnZhbHVlKGV4ZWMp
OworICAgIEVycm9yVHlwZSBlcnJvclR5cGUgPSBzdGF0aWNfY2FzdDxFcnJvclR5cGU+KHBjWzJd
LnUudW5zaWduZWRWYWx1ZSk7CisgICAgVEhST1coY3JlYXRlRXJyb3IoZXhlYywgZXJyb3JUeXBl
LCBlcnJvck1lc3NhZ2UpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGY4ODMwZDQyMGRi
NjU2YWEwYmNkNzc2Y2IyYjVlYjE3MzVmOGViNjAuLjY4MmM5YjE1M2I3NjRhNjI2ODRjMGU3ODlj
OTNlOTM3NTFhMTFiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCkBAIC0yNTgsNSArMjU4LDYgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Rocm93X3N0YXRpY19lcnJvcik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDAyOWFjNDdiYzk0Y2VkMTc5
YWI5MjNiMGVlMmMwN2NjN2VmZGVhOTcuLmJkYzI5MDVlMzNiMzVlOTE4NWQ3MDM1MDgyZDUzNDNj
N2NlNjMzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTk4
LDYgKzk4LDI4IEBAIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgRXJyb3JJbnN0YW5jZTo6CiAgICAgcmV0dXJuIEVycm9ySW5z
dGFuY2U6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdC0+VVJJ
RXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlLCBhcHBlbmRlciwg
VHlwZU5vdGhpbmcsIHRydWUpOwogfQogCitKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBFcnJvclR5cGUgZXJyb3JUeXBlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgc3dpdGNoIChlcnJvclR5cGUpIHsKKyAgICBjYXNlIEVycm9yVHlwZTo6RXJyb3I6CisgICAg
ICAgIHJldHVybiBjcmVhdGVFcnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICBjYXNlIEVycm9yVHlw
ZTo6RXZhbEVycm9yOgorICAgICAgICByZXR1cm4gY3JlYXRlRXZhbEVycm9yKGV4ZWMsIG1lc3Nh
Z2UpOworICAgIGNhc2UgRXJyb3JUeXBlOjpSYW5nZUVycm9yOgorICAgICAgICByZXR1cm4gY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICBjYXNlIEVycm9yVHlwZTo6UmVmZXJl
bmNlRXJyb3I6CisgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNz
YWdlKTsKKyAgICBjYXNlIEVycm9yVHlwZTo6U3ludGF4RXJyb3I6CisgICAgICAgIHJldHVybiBj
cmVhdGVTeW50YXhFcnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICBjYXNlIEVycm9yVHlwZTo6VHlw
ZUVycm9yOgorICAgICAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwor
ICAgIGNhc2UgRXJyb3JUeXBlOjpVUklFcnJvcjoKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVVSSUVy
cm9yKGV4ZWMsIG1lc3NhZ2UpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwogY2xhc3MgRmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29k
ZWJsb2NrRnVuY3RvciB7CiBwdWJsaWM6CiAgICAgRmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29k
ZWJsb2NrRnVuY3RvcihDYWxsRnJhbWUqIHN0YXJ0Q2FsbEZyYW1lKQpAQCAtMjgyLDMgKzMwNCwz
NiBAQCB2b2lkIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpT
Qzo6RXJyb3JUeXBlIGVycm9yVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGVycm9yVHlwZSkgeworICAg
IGNhc2UgSlNDOjpFcnJvclR5cGU6OkVycm9yOgorICAgICAgICBvdXQucHJpbnQoIkVycm9yIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSlNDOjpFcnJvclR5cGU6OkV2YWxFcnJvcjoKKyAg
ICAgICAgb3V0LnByaW50KCJFdmFsRXJyb3IiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBK
U0M6OkVycm9yVHlwZTo6UmFuZ2VFcnJvcjoKKyAgICAgICAgb3V0LnByaW50KCJSYW5nZUVycm9y
Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSlNDOjpFcnJvclR5cGU6OlJlZmVyZW5jZUVy
cm9yOgorICAgICAgICBvdXQucHJpbnQoIlJlZmVyZW5jZUVycm9yIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSlNDOjpFcnJvclR5cGU6OlN5bnRheEVycm9yOgorICAgICAgICBvdXQucHJp
bnQoIlN5bnRheEVycm9yIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSlNDOjpFcnJvclR5
cGU6OlR5cGVFcnJvcjoKKyAgICAgICAgb3V0LnByaW50KCJUeXBlRXJyb3IiKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBKU0M6OkVycm9yVHlwZTo6VVJJRXJyb3I6CisgICAgICAgIG91dC5w
cmludCgiVVJJRXJyb3IiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IDg1ODM3Yjdh
ODJmNTdjZTQ2MTNhNzQxNWYzMjVmYzQ1Y2NkOTQzYjYuLmU3NDhlZWQxMmY5MWU5NzJiZjliMzY2
YmMxNjQwNGYzZWYzMzQ2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApA
QCAtMzgsNiArMzgsMTYgQEAgY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xh
c3MgU3RydWN0dXJlOwogCitlbnVtIGNsYXNzIEVycm9yVHlwZSA6IHVpbnQ4X3QgeworICAgIEVy
cm9yLAorICAgIEV2YWxFcnJvciwKKyAgICBSYW5nZUVycm9yLAorICAgIFJlZmVyZW5jZUVycm9y
LAorICAgIFN5bnRheEVycm9yLAorICAgIFR5cGVFcnJvciwKKyAgICBVUklFcnJvciwKK307CisK
IC8vIEV4ZWNTdGF0ZSB3cmFwcGVycy4KIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmLCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlcik7CiBKU09iamVj
dCogY3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYsIEVycm9ySW5zdGFu
Y2U6OlNvdXJjZUFwcGVuZGVyKTsKQEAgLTYwLDYgKzcwLDggQEAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKEV4ZWNTdGF0ZSopOwogSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYpOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5
RXJyb3IoRXhlY1N0YXRlKik7CiAKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVF
cnJvcihFeGVjU3RhdGUqLCBFcnJvclR5cGUsIGNvbnN0IFN0cmluZyYpOworCiAKIGJvb2wgYWRk
RXJyb3JJbmZvQW5kR2V0Qnl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiwgVk0mLCBKU09iamVjdCos
IGJvb2wsIENhbGxGcmFtZSomLCB1bnNpZ25lZCogPSBudWxscHRyKTsKIApAQCAtMTQ2LDMgKzE1
OCwxMSBAQCBjbGFzcyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJu
YWxGdW5jdGlvbiB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
LCBKU0M6OkVycm9yVHlwZSk7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE0YWU4Nzlh
ZDljNmE2ODQ1Y2FhMDY3NzJlYzdjZjIzZDc3MjA2M2IuLmZiY2NlZTZkYmU0ZDAyYzcxYzFiYmU2
YTFiNDk0MTZjYjRiOWE2YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0xMC0wNSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQg
QHRocm93WFhYRXJyb3IgYnl0ZWNvZGUgaW50cmluc2ljCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL09iamVjdC1hc3NpZ24tZXhwZWN0ZWQudHh0
OgorCiAyMDE2LTEwLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIEludHJvZHVjZSBJbnB1dEV2ZW50IGJpbmRpbmdzIGluIHByZXBhcmF0aW9uIGZv
ciB0aGUgaW5wdXQgZXZlbnRzIHNwZWMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL09iamVj
dC1hc3NpZ24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWFzc2lnbi1leHBl
Y3RlZC50eHQKaW5kZXggY2JkN2NjYzEyYTJhNTA4YTc4MTE3ZTgxOTg0YTJiODQ2Nzg1ZmFjNS4u
MzYyZWIyMTZjOTNiMDQyNmVjMmQ3MDJkZmZkODNkMGQ4NjQ4ZDJjNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvanMvT2JqZWN0LWFzc2lnbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
anMvT2JqZWN0LWFzc2lnbi1leHBlY3RlZC50eHQKQEAgLTYsOSArNiw5IEBAIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFCiBQQVNTIE9iamVjdC5hc3NpZ24ubGVuZ3RoIGlzIDIKIFBBU1MgT2JqZWN0
LmFzc2lnbi5uYW1lIGlzICdhc3NpZ24nCiBjaGVjayBUeXBlRXJyb3Igb24gbnVsbC91bmRlZmlu
ZWQKLVBBU1MgT2JqZWN0LmFzc2lnbigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IGNhbid0
IGNvbnZlcnQgdW5kZWZpbmVkIHRvIG9iamVjdC4KLVBBU1MgT2JqZWN0LmFzc2lnbih1bmRlZmlu
ZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IGNhbid0IGNvbnZlcnQgdW5kZWZpbmVkIHRv
IG9iamVjdC4KLVBBU1MgT2JqZWN0LmFzc2lnbihudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBjYW4ndCBjb252ZXJ0IG51bGwgdG8gb2JqZWN0LgorUEFTUyBPYmplY3QuYXNzaWduKCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LmFzc2lnbiByZXF1aXJlcyB0aGF0IGlu
cHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuCitQQVNTIE9iamVjdC5hc3Np
Z24odW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QuYXNzaWduIHJl
cXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4KK1BB
U1MgT2JqZWN0LmFzc2lnbihudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3Qu
YXNzaWduIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVm
aW5lZC4KIFBBU1MgdmFyIHRhcmdldCA9IHt9LCByZXQgPSBPYmplY3QuYXNzaWduKHRhcmdldCk7
IHRhcmdldCA9PT0gcmV0IGlzIHRydWUKIG11bHRpcGxlIHNvdXJjZXMgYXJlIGNvcGllZAogUEFT
UyB2YXIgdGFyZ2V0ID0ge30sIHJldCA9IE9iamVjdC5hc3NpZ24odGFyZ2V0LCB7YTogMX0pOyB0
YXJnZXQgPT09IHJldCBpcyB0cnVlCg==
</data>
<flag name="review"
          id="313944"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>