<?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>193858</bug_id>
          
          <creation_ts>2019-01-25 17:41:16 -0800</creation_ts>
          <short_desc>[JSC] Offer @makeTypeError instead of exposing @TypeError</short_desc>
          <delta_ts>2019-03-04 10:57:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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>InRadar</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>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1498604</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-25 17:41:16 -0800</bug_when>
    <thetext>And by doing so, we can make TypeError, ErrorPrototype, ErrorConstructor etc.&apos;s dependency tree lazily-allocated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511932</commentid>
    <comment_count>1</comment_count>
      <attachid>363454</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-03 02:37:57 -0800</bug_when>
    <thetext>Created attachment 363454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511933</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-03 02:41:22 -0800</bug_when>
    <thetext>Attachment 363454 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511935</commentid>
    <comment_count>3</comment_count>
      <attachid>363455</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-03 03:27:34 -0800</bug_when>
    <thetext>Created attachment 363455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511982</commentid>
    <comment_count>4</comment_count>
      <attachid>363455</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-03 12:55:08 -0800</bug_when>
    <thetext>Comment on attachment 363455
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp:698
&gt; +

This seems unnecessary.

&gt; Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp:762
&gt; -    JSGlobalObject* globalObject = exec-&gt;lexicalGlobalObject();
&gt; -    VM&amp; vm = globalObject-&gt;vm();
&gt; +    VM&amp; vm = exec-&gt;vm();
&gt;      auto scope = DECLARE_THROW_SCOPE(vm);
&gt;  
&gt; +    JSGlobalObject* globalObject = exec-&gt;lexicalGlobalObject();

Why make this change?  It&apos;s more efficient to get the vm from the globalObject than from the ExecState, and getting the lexicalGlobalObject() cannot throw an exception, can it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512237</commentid>
    <comment_count>5</comment_count>
      <attachid>363455</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-04 10:52:37 -0800</bug_when>
    <thetext>Comment on attachment 363455
Patch

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

Thank you

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp:698
&gt;&gt; +
&gt; 
&gt; This seems unnecessary.

Removed.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp:762
&gt;&gt; +    JSGlobalObject* globalObject = exec-&gt;lexicalGlobalObject();
&gt; 
&gt; Why make this change?  It&apos;s more efficient to get the vm from the globalObject than from the ExecState, and getting the lexicalGlobalObject() cannot throw an exception, can it?

I aligned this code to the other places, but it seems that this code is better in terms of performance. Reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512239</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-04 10:56:32 -0800</bug_when>
    <thetext>Committed r242365: &lt;https://trac.webkit.org/changeset/242365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512240</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-04 10:57:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/48568181&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363454</attachid>
            <date>2019-03-03 02:37:57 -0800</date>
            <delta_ts>2019-03-03 03:27:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193858-20190303023757.patch</filename>
            <type>text/plain</type>
            <size>34434</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MDBhMDQ5YmI5MDk5ZGYwZDc2ZTA3OGE3MWVjNGM3MTFhYmY2NTM0Li4zNmEzNjExNDk3OWVjNDNi
ZTUxZGE1N2E1YTdmMjE4YmFlMTJjMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxOS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9mZmVyIEBtYWtlVHlwZUVycm9yIGluc3RlYWQgb2YgZXhwb3Np
bmcgQFR5cGVFcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkzODU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW5zdGVhZCBvZiBleHBvc2luZyBAVHlwZUVycm9yLCB3ZSBleHBvc2UgQG1ha2VUeXBl
RXJyb3IgZnVuY3Rpb24uCisgICAgICAgIEFuZCB3ZSBtYWtlIFR5cGVFcnJvciBhbmQgRXJyb3Ig
bGF6aWx5LWFsbG9jYXRlZCBvYmplY3RzIGluIG5vbiBKSVQgZW52aXJvbm1lbnQuCisgICAgICAg
IEluIEpJVCBlbnZpcm9ubWVudCwgb25seSBUeXBlRXJyb3IgYmVjb21lcyBsYXppbHktYWxsb2Nh
dGVkIHNpbmNlIFdlYkFzc2VtYmx5IGVycm9ycworICAgICAgICB0b3VjaCBFcnJvciBwcm90b3R5
cGUgYW55d2F5LiBCdXQgd2UgY2FuIG1ha2UgdGhlbSBsYXp5IGluIGEgc3Vic2VxdWVudCBwYXRj
aC4KKworICAgICAgICAqIGJ1aWx0aW5zL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5q
czoKKyAgICAgICAgKiBidWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qczoKKyAgICAg
ICAgKGdsb2JhbFByaXZhdGUuYXN5bmNHZW5lcmF0b3JFbnF1ZXVlKToKKyAgICAgICAgKiBidWls
dGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlT3BlcmF0aW9u
cy5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zLnJl
c29sdmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjplcnJvclByb3RvdHlwZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjplcnJvclN0cnVjdHVyZSBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
Omdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik6CisgICAg
ICAgIChKU0M6Omdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Z2xvYmFs
RnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcik6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oOgorCiAyMDE5LTAzLTAxICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5pc2ggcmVtb3ZpbmcgU3RyaW5nOjpmb3JtYXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA2NGUzMDFmNjcwMmYxODJhZGRiN2YwZjVjNTg2YmY3NDM0NDZiNGFiLi4yM2Vk
ZjlhMGZkYTc2ZWE3YThhYmExNTAwZDQ1ZGZmYzNlMWZkYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTktMDMtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBbSlNDXSBPZmZlciBAbWFrZVR5cGVFcnJvciBpbnN0ZWFkIG9mIGV4cG9zaW5n
IEBUeXBlRXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5Mzg1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5qczoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzLmpzOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgIChyZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyQ2xvc2UpOgorICAgICAgICAocmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxl
clB1bGxJbnRvKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanM6
CisgICAgICAgIChjYW5jZWwpOgorICAgICAgICAocGlwZVRvKToKKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmpzOgorICAgICAgICAoY2FuY2VsKToK
KyAgICAgICAgKHJlYWQpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIuanM6CisgICAgICAgIChjYW5jZWwpOgorICAgICAgICAocmVhZCk6Cisg
ICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzOgorICAg
ICAgICAocmVhZGFibGVTdHJlYW1SZWFkZXJHZW5lcmljUmVsZWFzZSk6CisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzOgorICAgICAgICAoYWJvcnQpOgorICAgICAg
ICAoY2xvc2UpOgorICAgICAgICAod3JpdGUpOgorICAgICAgICAoZ2V0dGVyLmNsb3NlZCk6Cisg
ICAgICAgIChnZXR0ZXIucmVhZHkpOgorCiAyMDE5LTAzLTAyICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gSW50cm9kdWNl
IENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6TW91c2VNb3ZlZFNjb3BlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnJvbVN5bmNJdGVyYXRv
clByb3RvdHlwZS5qcwppbmRleCAyNmFlOWU1NWIyOWIxZWU4ZjYzMmVmY2E5MTI1ZThjNzY3ZDc4
ZTk0Li42ZWExYTdmMDVmODdjNWM2ZmY1NTlhM2NkMzAwNTEwNzY2ZWZiOWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJv
dG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Zyb21T
eW5jSXRlcmF0b3JQcm90b3R5cGUuanMKQEAgLTMwLDcgKzMwLDcgQEAgZnVuY3Rpb24gbmV4dCh2
YWx1ZSkKICAgICBjb25zdCBwcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0
eShAUHJvbWlzZSk7CiAKICAgICBpZiAoIUBpc09iamVjdCh0aGlzKSB8fCAhQGlzT2JqZWN0KEBn
ZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic3luY0l0ZXJhdG9yIikpKSB7Ci0gICAgICAgIHBy
b21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3Io
J0l0ZXJhdG9yIGlzIG5vdCBhbiBvYmplY3QuJykpOworICAgICAgICBwcm9taXNlQ2FwYWJpbGl0
eS5AcmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIEBtYWtlVHlwZUVycm9yKCdJdGVyYXRvciBpcyBu
b3QgYW4gb2JqZWN0LicpKTsKICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkBwcm9t
aXNlOwogICAgIH0KIApAQCAtNTcsNyArNTcsNyBAQCBmdW5jdGlvbiByZXR1cm4odmFsdWUpCiAg
ICAgY29uc3QgcHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQFByb21p
c2UpOwogCiAgICAgaWYgKCFAaXNPYmplY3QodGhpcykgfHwgIUBpc09iamVjdChAZ2V0QnlJZERp
cmVjdFByaXZhdGUodGhpcywgInN5bmNJdGVyYXRvciIpKSkgewotICAgICAgICBwcm9taXNlQ2Fw
YWJpbGl0eS5AcmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCdJdGVyYXRv
ciBpcyBub3QgYW4gb2JqZWN0LicpKTsKKyAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVj
dC5AY2FsbChAdW5kZWZpbmVkLCBAbWFrZVR5cGVFcnJvcignSXRlcmF0b3IgaXMgbm90IGFuIG9i
amVjdC4nKSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKICAg
ICB9CiAKQEAgLTgxLDcgKzgxLDcgQEAgZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQogICAgICAgICBj
b25zdCByZXR1cm5SZXN1bHQgPSByZXR1cm5NZXRob2QuQGNhbGwoc3luY0l0ZXJhdG9yLCB2YWx1
ZSk7CiAKICAgICAgICAgaWYgKCFAaXNPYmplY3QocmV0dXJuUmVzdWx0KSkgewotICAgICAgICAg
ICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2FsbChAdW5kZWZpbmVkLCBuZXcgQFR5cGVF
cnJvcignSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LicpKTsKKyAg
ICAgICAgICAgIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgQG1h
a2VUeXBlRXJyb3IoJ0l0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4n
KSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CiAgICAg
ICAgIH0KIApAQCAtMTA2LDcgKzEwNiw3IEBAIGZ1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikKICAg
ICBjb25zdCBwcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShAUHJvbWlz
ZSk7CiAKICAgICBpZiAoIUBpc09iamVjdCh0aGlzKSB8fCAhQGlzT2JqZWN0KEBnZXRCeUlkRGly
ZWN0UHJpdmF0ZSh0aGlzLCAic3luY0l0ZXJhdG9yIikpKSB7Ci0gICAgICAgIHByb21pc2VDYXBh
YmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3IoJ0l0ZXJhdG9y
IGlzIG5vdCBhbiBvYmplY3QuJykpOworICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0
LkBjYWxsKEB1bmRlZmluZWQsIEBtYWtlVHlwZUVycm9yKCdJdGVyYXRvciBpcyBub3QgYW4gb2Jq
ZWN0LicpKTsKICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkBwcm9taXNlOwogICAg
IH0KIApAQCAtMTMwLDcgKzEzMCw3IEBAIGZ1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikKICAgICAg
ICAgY29uc3QgdGhyb3dSZXN1bHQgPSB0aHJvd01ldGhvZC5AY2FsbChzeW5jSXRlcmF0b3IsIGV4
Y2VwdGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAoIUBpc09iamVjdCh0aHJvd1Jlc3VsdCkp
IHsKLSAgICAgICAgICAgIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5l
ZCwgbmV3IEBUeXBlRXJyb3IoJ0l0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4nKSk7CisgICAgICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0LkBjYWxsKEB1
bmRlZmluZWQsIEBtYWtlVHlwZUVycm9yKCdJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5v
dCBhbiBvYmplY3QuJykpOwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkBw
cm9taXNlOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDRlNzg2
ODAxNzFlMDljY2QyNjk4MjE5MGM5MzVjYmJmZWRlN2YwMzYuLmQ5YWZkNDI0NWNmYWQ0NjFlMWM0
NzYxZWU4NzcwY2FjMWE2NWViYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTI2NSw3ICsyNjUs
NyBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvckVucXVldWUoZ2VuZXJhdG9yLCB2YWx1ZSwgcmVz
dW1lTW9kZSkKICAgICAKICAgICBjb25zdCBwcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNl
Q2FwYWJpbGl0eShAUHJvbWlzZSk7CiAgICAgaWYgKCFAaXNPYmplY3QoZ2VuZXJhdG9yKSB8fCB0
eXBlb2YgQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3Vz
cGVuZFJlYXNvbiIpICE9PSAnbnVtYmVyJykgewotICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5A
cmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCd8dGhpc3wgc2hvdWxkIGJl
IGFuIGFzeW5jIGdlbmVyYXRvcicpKTsKKyAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVj
dC5AY2FsbChAdW5kZWZpbmVkLCBAbWFrZVR5cGVFcnJvcignfHRoaXN8IHNob3VsZCBiZSBhbiBh
c3luYyBnZW5lcmF0b3InKSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5AcHJv
bWlzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaAppbmRleCAxZjgyNjBiMGZiZTcyYjhkNWM3ZDAxZjU4NjU2OTYxYjM1YzVjZTkxLi41
YWQwYzdiN2FiMTE1OGQ0OGVhZjc1ZDUyMTg0NDUyYzNhOTdhMmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC03NCw3ICs3NCw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGdldE93blByb3BlcnR5TmFtZXMpIFwKICAgICBtYWNy
byhvd25LZXlzKSBcCiAgICAgbWFjcm8oU2V0KSBcCi0gICAgbWFjcm8oVHlwZUVycm9yKSBcCiAg
ICAgbWFjcm8odHlwZWRBcnJheUxlbmd0aCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlTb3J0KSBc
CiAgICAgbWFjcm8odHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IpIFwKQEAgLTE0Myw2
ICsxNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhyZWdFeHBDcmVhdGUpIFwKICAg
ICBtYWNybyhyZXBsYWNlVXNpbmdSZWdFeHApIFwKICAgICBtYWNybyhyZXBsYWNlVXNpbmdTdHJp
bmdTZWFyY2gpIFwKKyAgICBtYWNybyhtYWtlVHlwZUVycm9yKSBcCiAgICAgbWFjcm8obWFwQnVj
a2V0KSBcCiAgICAgbWFjcm8obWFwQnVja2V0SGVhZCkgXAogICAgIG1hY3JvKG1hcEJ1Y2tldE5l
eHQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNl
T3BlcmF0aW9ucy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlT3Bl
cmF0aW9ucy5qcwppbmRleCBiZTg1NDk5ZDBmYjllNGU3NmVkNmQ1MjAwMmIwNzUyNWE0Y2JmODEx
Li41NGQ4MWJjZTQzNzkxZTZjNTU4MGE2M2IwYjQ2MWRjOGU1Njk2NTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzCkBAIC0x
NDgsNyArMTQ4LDcgQEAgZnVuY3Rpb24gY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zKHByb21pc2Up
CiAgICAgICAgIGFscmVhZHlSZXNvbHZlZCA9IHRydWU7CiAKICAgICAgICAgaWYgKHJlc29sdXRp
b24gPT09IHByb21pc2UpCi0gICAgICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2UocHJvbWlz
ZSwgbmV3IEBUeXBlRXJyb3IoIlJlc29sdmUgYSBwcm9taXNlIHdpdGggaXRzZWxmIikpOworICAg
ICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlKHByb21pc2UsIEBtYWtlVHlwZUVycm9yKCJS
ZXNvbHZlIGEgcHJvbWlzZSB3aXRoIGl0c2VsZiIpKTsKIAogICAgICAgICBpZiAoIUBpc09iamVj
dChyZXNvbHV0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBAZnVsZmlsbFByb21pc2UocHJvbWlz
ZSwgcmVzb2x1dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggNDkwZDhjZDBiY2Q2ZDJkNTM3NTRlMTBhZjA0ZTBhYTU1YWM0
ZTAzNS4uMWY5NzM4OWQxNWVmOTYwYTEzZmI5MzI5MWE4Njg1OWRjOGRkZjY1YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzM1
LDYgKzMzNSw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0
OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICBGbG9hdDY0QXJyYXkgICAgICAgICAg
SlNHbG9iYWxPYmplY3Q6Om1fdHlwZWRBcnJheUZsb2F0NjQgICAgICAgICAgRG9udEVudW18Q2xh
c3NTdHJ1Y3R1cmUKICAgRGF0YVZpZXcgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX3R5
cGVkQXJyYXlEYXRhVmlldyAgICAgICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIERhdGUg
ICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6bV9kYXRlU3RydWN0dXJlICAgICAgICAg
ICAgICBEb250RW51bXxDbGFzc1N0cnVjdHVyZQorICBFcnJvciAgICAgICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3Q6Om1fZXJyb3JTdHJ1Y3R1cmUgICAgICAgICAgICAgRG9udEVudW18Q2xhc3NT
dHJ1Y3R1cmUKICAgQm9vbGVhbiAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX2Jvb2xl
YW5PYmplY3RTdHJ1Y3R1cmUgICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIE51bWJlciAg
ICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6bV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUgICAg
ICBEb250RW51bXxDbGFzc1N0cnVjdHVyZQogICBTeW1ib2wgICAgICAgICAgICAgICAgSlNHbG9i
YWxPYmplY3Q6Om1fc3ltYm9sT2JqZWN0U3RydWN0dXJlICAgICAgRG9udEVudW18Q2xhc3NTdHJ1
Y3R1cmUKQEAgLTQwOSw5ICs0MTAsOSBAQCBzdGF0aWMgSlNPYmplY3QqIGdldEdldHRlckJ5SWQo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllcgogdGVtcGxh
dGU8RXJyb3JUeXBlIGVycm9yVHlwZT4KIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXRpYWxpemVF
cnJvckNvbnN0cnVjdG9yKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpCiB7
Ci0gICAgaW5pdC5zZXRQcm90b3R5cGUoTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZShpbml0
LnZtLCBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIHRoaXMs
IG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpLCBlcnJvclR5cGVOYW1lKGVycm9yVHlwZSkpKTsKKyAg
ICBpbml0LnNldFByb3RvdHlwZShOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0s
IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9l
cnJvclN0cnVjdHVyZS5wcm90b3R5cGUodGhpcykpLCBlcnJvclR5cGVOYW1lKGVycm9yVHlwZSkp
KTsKICAgICBpbml0LnNldFN0cnVjdHVyZShFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUo
aW5pdC52bSwgdGhpcywgaW5pdC5wcm90b3R5cGUpKTsKLSAgICBpbml0LnNldENvbnN0cnVjdG9y
KE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y3JlYXRlKGluaXQudm0sIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIHRo
aXMsIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSksIGpzQ2FzdDxOYXRpdmVFcnJvclByb3RvdHlw
ZSo+KGluaXQucHJvdG90eXBlKSkpOworICAgIGluaXQuc2V0Q29uc3RydWN0b3IoTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGUoaW5pdC52bSwgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9lcnJv
clN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKSksIGpzQ2FzdDxOYXRpdmVFcnJvclByb3RvdHlw
ZSo+KGluaXQucHJvdG90eXBlKSkpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZN
JiB2bSkKQEAgLTcyNiw3ICs3MjcsNiBAQCBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YwogICAgIG1f
cHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9yKTsKICAg
ICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IpOwogICAgIAotICAgIG1fZXJyb3JDb25zdHJ1Y3Rvci5zZXQodm0sIHRo
aXMsIGVycm9yQ29uc3RydWN0b3IpOwogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmluaXRMYXRl
cigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsK
ICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplRXJyb3JDb25zdHJ1Y3RvcjxFcnJv
clR5cGU6OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC04NTQsNiArODU0LDcgQEAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAj
IyBDb25zdHJ1Y3QKIAogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jUHJvcGVydHlJc0VudW1l
cmFibGUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxG
dW5jUHJvcGVydHlJc0VudW1lcmFibGUpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSW1w
b3J0TW9kdWxlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xv
YmFsRnVuY0ltcG9ydE1vZHVsZSk7CisgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNNYWtlVHlw
ZUVycm9yID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFs
RnVuY01ha2VUeXBlRXJyb3IpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlwZWRBcnJh
eUxlbmd0aCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVk
QXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5j
VHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3JpZ2luYWxD
b25zdHJ1Y3Rvcik7CiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5U29ydCA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3
UHJpdmF0ZUZ1bmNTb3J0KTsKQEAgLTkyNSw5ICs5MjYsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0
cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkucHJvcGVydHlJc0VudW1lcmFibGVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1By
b3BlcnR5SXNFbnVtZXJhYmxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5pbXBvcnRNb2R1bGVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0ltcG9ydE1vZHVsZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW5xdWV1ZUpvYlByaXZhdGVOYW1l
KCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGVucXVldWVKb2Ip
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIC8vIEZJWE1FOiBP
ZmZlciBAbWFrZVR5cGVFcnJvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGV4cG9zaW5nIEBUeXBlRXJy
b3IgaGVyZS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5Mzg1OAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuVHlwZUVycm9yUHJpdmF0ZU5hbWUoKSwgbV90eXBlRXJyb3JTdHJ1Y3R1
cmUuY29uc3RydWN0b3IodGhpcyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwK
KyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLm1ha2VUeXBlRXJyb3JQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01ha2VUeXBlRXJyb3Is
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlMZW5ndGhQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlMZW5ndGgsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9y
UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rv
ciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJheVNvcnRQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlTb3J0LCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCkBAIC0xMDMxLDcgKzEwMzAsNyBAQCBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENv
bnN0cnVjdAogICAgICAgICB0eXBlZGVmIGNhcGl0YWxOYW1lICMjIFByb3RvdHlwZSBQcm90b3R5
cGU7IFwKICAgICAgICAgdHlwZWRlZiBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciBDb25zdHJ1
Y3RvcjsgXAogICAgICAgICB0eXBlZGVmIEpTICMjIGNhcGl0YWxOYW1lIEpTT2JqOyBcCi0gICAg
ICAgIGF1dG8qIGJhc2UgPSBtXyAjIyBwcm90b3R5cGVCYXNlICMjIFByb3RvdHlwZS5nZXQoKTsg
XAorICAgICAgICBhdXRvKiBiYXNlID0gcHJvdG90eXBlQmFzZSAjIyBQcm90b3R5cGUoKTsgXAog
ICAgICAgICBhdXRvKiBwcm90b3R5cGUgPSBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGJhc2UpKTsgXAogICAgICAgICBhdXRv
KiBzdHJ1Y3R1cmUgPSBKU09iajo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBwcm90b3R5cGUp
OyBcCiAgICAgICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgdGhpcy0+ZnVuY3Rpb25Qcm90
b3R5cGUoKSksIHByb3RvdHlwZSk7IFwKQEAgLTE1ODcsNyArMTU4Niw2IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dsb2JhbFNjb3BlRXh0ZW5zaW9u
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dsb2JhbENhbGxlZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zdGFja092ZXJmbG93RnJhbWVDYWxsZWUpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAg
dGhpc09iamVjdC0+bV9ldmFsRXJyb3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhp
c09iamVjdC0+bV9yYW5nZUVycm9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNP
YmplY3QtPm1fcmVmZXJlbmNlRXJyb3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CkBAIC0xNjMw
LDcgKzE2MjgsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9vYmplY3RQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
ZnVuY3Rpb25Qcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXJy
YXlQcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZXJyb3JQcm90
b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5
cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJv
dG90eXBlKTsKQEAgLTE2NjQsNyArMTY2MSw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2Jq
ZWN0LT5tX2dsaWJXcmFwcGVyT2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogI2VuZGlm
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsUHJvdG90eXBlT2JqZWN0U3Ry
dWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxlZVN0cnVjdHVyZSk7CiAK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2hvc3RGdW5jdGlvblN0cnVjdHVyZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCBmZWFkNzliM2FmOTBlZjU5NDY5YTZjNTUyYzJkMGU0M2JkM2Y3MzNjLi45ZTI2N2IzOGZmOWZk
ODllOTI5YTUyODYxYWY3NzVlZGRiNjU2NDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEyOCw3ICsxMjgsNiBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBXYXRjaHBvaW50PiBjbGFzcyBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDsKIAogI2RlZmluZSBGT1JfRUFDSF9TSU1QTEVfQlVJTFRJTl9UWVBFX1dJVEhfQ09O
U1RSVUNUT1IobWFjcm8pIFwKICAgICBtYWNybyhTdHJpbmcsIHN0cmluZywgc3RyaW5nT2JqZWN0
LCBTdHJpbmdPYmplY3QsIFN0cmluZywgb2JqZWN0KSBcCi0gICAgbWFjcm8oRXJyb3IsIGVycm9y
LCBlcnJvciwgRXJyb3JJbnN0YW5jZSwgRXJyb3IsIG9iamVjdCkgXAogICAgIG1hY3JvKE1hcCwg
bWFwLCBtYXAsIEpTTWFwLCBNYXAsIG9iamVjdCkgXAogICAgIG1hY3JvKFNldCwgc2V0LCBzZXQs
IEpTU2V0LCBTZXQsIG9iamVjdCkgXAogICAgIG1hY3JvKEpTUHJvbWlzZSwgcHJvbWlzZSwgcHJv
bWlzZSwgSlNQcm9taXNlLCBQcm9taXNlLCBvYmplY3QpCkBAIC0xNDYsNiArMTQ1LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgV2F0Y2hwb2ludD4gY2xhc3MgT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ7CiAjZGVmaW5lIEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBFKG1hY3Jv
KSBcCiAgICAgbWFjcm8oQm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVhbk9iamVjdCwgQm9vbGVhbk9i
amVjdCwgQm9vbGVhbiwgb2JqZWN0KSBcCiAgICAgbWFjcm8oRGF0ZSwgZGF0ZSwgZGF0ZSwgRGF0
ZUluc3RhbmNlLCBEYXRlLCBvYmplY3QpIFwKKyAgICBtYWNybyhFcnJvciwgZXJyb3IsIGVycm9y
LCBFcnJvckluc3RhbmNlLCBFcnJvciwgb2JqZWN0KSBcCiAgICAgbWFjcm8oTnVtYmVyLCBudW1i
ZXIsIG51bWJlck9iamVjdCwgTnVtYmVyT2JqZWN0LCBOdW1iZXIsIG9iamVjdCkgXAogICAgIG1h
Y3JvKFN5bWJvbCwgc3ltYm9sLCBzeW1ib2xPYmplY3QsIFN5bWJvbE9iamVjdCwgU3ltYm9sLCBv
YmplY3QpIFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgV2Vha01hcCwgd2Vh
a01hcCkgXApAQCAtNjMxLDcgKzYzMSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTT2JqZWN0KiBkYXRlUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRlU3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsgfQogICAg
IEpTT2JqZWN0KiBzeW1ib2xQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbE9iamVj
dFN0cnVjdHVyZS5wcm90b3R5cGVJbml0aWFsaXplZE9uTWFpblRocmVhZCh0aGlzKTsgfQogICAg
IFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdF
eHBQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX2Vycm9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgSlNPYmplY3Qq
IGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5wcm90b3R5
cGUodGhpcyk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgQXN5bmNJdGVy
YXRvclByb3RvdHlwZSogYXN5bmNJdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXN5bmNJdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KQEAgLTY5Miw3ICs2OTIsNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAg
ICBTdHJ1Y3R1cmUqIGRhdGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RhdGVTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBzeW1ib2xPYmplY3RTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3N5bWJvbE9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBT
dHJ1Y3R1cmUqIG51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICBTdHJ1Y3R1cmUqIGVy
cm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQor
ICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yU3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoRXJyb3JU
eXBlIGVycm9yVHlwZSkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoZXJyb3JUeXBlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggMWNiOTBkYTU4ODk3YzNjZGJiNjU4YjU5MzY1Y2Q3NTRl
NWViMTVkZC4uZTRmNGJlNzAxMTQyZmMxZjE0YTExYWE2OTdkZjIyZTFhOGI0YmFkZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcApAQCAtNjk1LDkgKzY5NSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcihF
eAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICInYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNz
ZWQgaW4gdGhpcyBjb250ZXh0LiIpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAg
IFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0dXJl
KEVycm9yVHlwZTo6VHlwZUVycm9yKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9y
SW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgZXhlYy0+YXJndW1lbnQoMCks
IG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTc0OCwxMCArNzU2LDEwIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSG9zdFByb21pc2VSZWplY3Rp
b25UcmFja2VyKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmpl
Y3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnByb21pc2VSZWplY3Rpb25UcmFja2VyKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaAppbmRleCBlNzc1NTI0MDc4MTVkZjc0NzgxMTdjYmM5ZDAwOGExZTA1OTA2Y2QwLi45ZjE2
YWExOTczNTY0NWQ5YmQ3ZGIxNGYzOTQ4ODBiMGU1MWY2MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKQEAg
LTQ4LDYgKzQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXNj
YXBlKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
VW5lc2NhcGUoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKEV4
ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jTWFrZVR5
cGVFcnJvcihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY1Byb3RvR2V0dGVyKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIoRXhlY1N0YXRl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5qcwppbmRleCBhZTgwZGFkYWUwYzUwNjY2YTQ5ODA4MzJiZjdhNDlhN2U0
OGQ4OThkLi43OTgxN2U0OGMwNmQ3MTM0MTMyYjI3MjllZGUzNTFhYjBjYjI5MzM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uanMKQEAgLTc5LDcgKzc5LDcgQEAgZnVuY3Rpb24gc2V0TG9jYWxEZXNjcmlwdGlvbihk
ZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUaGlzVHlw
ZUVycm9yKCJSVENQZWVyQ29ubmVjdGlvbiIsICJzZXRMb2NhbERlc2NyaXB0aW9uIikpOwogCiAg
ICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJl
amVjdChuZXcgQFR5cGVFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiKSk7CisgICAgICAgIHJl
dHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50
cyIpKTsKIAogICAgIC8vIEZJWE1FIDE2OTY0NDogQWNjb3JkaW5nIHRoZSBzcGVjLCB3ZSBzaG91
bGQgdGhyb3cgd2hlbiByZWNlaXZpbmcgYSBSVENTZXNzaW9uRGVzY3JpcHRpb24uCiAgICAgY29u
c3Qgb2JqZWN0SW5mbyA9IHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBmdW5jdGlvbiBzZXRSZW1vdGVE
ZXNjcmlwdGlvbihkZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3Qo
QG1ha2VUaGlzVHlwZUVycm9yKCJSVENQZWVyQ29ubmVjdGlvbiIsICJzZXRSZW1vdGVEZXNjcmlw
dGlvbiIpKTsKIAogICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkKLSAgICAgICAgcmV0dXJu
IEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIikp
OworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiTm90IGVu
b3VnaCBhcmd1bWVudHMiKSk7CiAKICAgICAvLyBGSVhNRTogQWNjb3JkaW5nIHRoZSBzcGVjLCB3
ZSBzaG91bGQgb25seSBleHBlY3QgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdC4KICAgICBjb25z
dCBvYmplY3RJbmZvID0gewpAQCAtMTI3LDcgKzEyNyw3IEBAIGZ1bmN0aW9uIGFkZEljZUNhbmRp
ZGF0ZShjYW5kaWRhdGUpCiAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVGhp
c1R5cGVFcnJvcigiUlRDUGVlckNvbm5lY3Rpb24iLCAiYWRkSWNlQ2FuZGlkYXRlIikpOwogCiAg
ICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJl
amVjdChuZXcgQFR5cGVFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiKSk7CisgICAgICAgIHJl
dHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50
cyIpKTsKIAogICAgIGNvbnN0IG9iamVjdEluZm8gPSB7CiAgICAgICAgICJjb25zdHJ1Y3RvciI6
IEBSVENJY2VDYW5kaWRhdGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkludGVybmFscy5qcwppbmRleCBm
M2NhNDQzZDNhZTZkODAyZTk0ZWM4NWUyZDQ2OGU3NWY3NTQzNDhkLi4yOTIxZGY4YThmZWJhYzQz
Njk0NTY5ZmJkYmQzNmFkNzkzNTBhNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHMu
anMKQEAgLTc2LDcgKzc2LDcgQEAgZWxzZSBpZiAob2JqZWN0QXJnID09IG51bGwgJiYgb2JqZWN0
SW5mby5kZWZhdWx0c1RvTnVsbCkgewogICAgIH0KIAogICAgIGlmICghb2JqZWN0QXJnT2spCi0g
ICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKGBBcmd1bWVudCAx
ICgnJHtvYmplY3RJbmZvLmFyZ05hbWV9JykgdG8gUlRDUGVlckNvbm5lY3Rpb24uJHtmdW5jdGlv
bk5hbWV9IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgJHtvYmplY3RJbmZvLmFyZ1R5cGV9YCkpOwor
ICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcihgQXJndW1lbnQg
MSAoJyR7b2JqZWN0SW5mby5hcmdOYW1lfScpIHRvIFJUQ1BlZXJDb25uZWN0aW9uLiR7ZnVuY3Rp
b25OYW1lfSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mICR7b2JqZWN0SW5mby5hcmdUeXBlfWApKTsK
IAogICAgIHJldHVybiBwcm9taXNlTW9kZShvYmplY3RBcmcpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5q
cyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRl
cm5hbHMuanMKaW5kZXggNzc4NjVmMTM0MGMxMTBlYjRlZWQzN2VhMGI2NjUwODQzZTAwNjI0My4u
ODYzNjRmMGZhOGViN2I0MmRhMDk1MjE5OGM4ZGYzMTc0YTIwYmZjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFt
SW50ZXJuYWxzLmpzCkBAIC0xNDksNyArMTQ5LDcgQEAgZnVuY3Rpb24gcmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlckNsb3NlKGNvbnRyb2xsZXIpCiAgICAgdmFyIHBlbmRpbmdQdWxsSW50b3Mg
PSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoY29udHJvbGxlciwgInBlbmRpbmdQdWxsSW50b3MiKTsK
ICAgICBpZiAocGVuZGluZ1B1bGxJbnRvcy5sZW5ndGggPiAwKSB7CiAgICAgICAgIGlmIChwZW5k
aW5nUHVsbEludG9zWzBdLmJ5dGVzRmlsbGVkID4gMCkgewotICAgICAgICAgICAgY29uc3QgZSA9
IG5ldyBAVHlwZUVycm9yKCJDbG9zZSByZXF1ZXN0ZWQgd2hpbGUgdGhlcmUgcmVtYWluIHBlbmRp
bmcgYnl0ZXMiKTsKKyAgICAgICAgICAgIGNvbnN0IGUgPSBAbWFrZVR5cGVFcnJvcigiQ2xvc2Ug
cmVxdWVzdGVkIHdoaWxlIHRoZXJlIHJlbWFpbiBwZW5kaW5nIGJ5dGVzIik7CiAgICAgICAgICAg
ICBAcmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckVycm9yKGNvbnRyb2xsZXIsIGUpOwogICAg
ICAgICAgICAgdGhyb3cgZTsKICAgICAgICAgfQpAQCAtNjQ4LDcgKzY0OCw3IEBAIGZ1bmN0aW9u
IHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJQdWxsSW50byhjb250cm9sbGVyLCB2aWV3KQog
ICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHsgdmFsdWU6IGZpbGxlZFZpZXcs
IGRvbmU6IGZhbHNlIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChAZ2V0QnlJZERpcmVjdFBy
aXZhdGUoY29udHJvbGxlciwgImNsb3NlUmVxdWVzdGVkIikpIHsKLSAgICAgICAgICAgIGNvbnN0
IGUgPSBuZXcgQFR5cGVFcnJvcigiQ2xvc2luZyBzdHJlYW0gaGFzIGJlZW4gcmVxdWVzdGVkIik7
CisgICAgICAgICAgICBjb25zdCBlID0gQG1ha2VUeXBlRXJyb3IoIkNsb3Npbmcgc3RyZWFtIGhh
cyBiZWVuIHJlcXVlc3RlZCIpOwogICAgICAgICAgICAgQHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXJFcnJvcihjb250cm9sbGVyLCBlKTsKICAgICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5A
cmVqZWN0KGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW0uanMKaW5kZXggMDY4ZmUyNGNhYmU1Y2U4NTE3ODkwMGU3Nzg4NDk4
NjliMmI0MGFjNi4uZGYzMWU2Nzk4ZTg3M2QyMTg4MDE2ZGQ4YTljZDI1NTA2NzYyMTIwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcwpA
QCAtODAsNyArODAsNyBAQCBmdW5jdGlvbiBjYW5jZWwocmVhc29uKQogICAgICAgICByZXR1cm4g
QFByb21pc2UuQHJlamVjdChAbWFrZVRoaXNUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIiwgImNh
bmNlbCIpKTsKIAogICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCh0aGlzKSkKLSAgICAg
ICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFt
IGlzIGxvY2tlZCIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBl
RXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZCIpKTsKIAogICAgIHJldHVybiBAcmVhZGFi
bGVTdHJlYW1DYW5jZWwodGhpcywgcmVhc29uKTsKIH0KQEAgLTE5OCw3ICsxOTgsNyBAQCBmdW5j
dGlvbiBhYm9ydERlc3RpbmF0aW9uKHJlYXNvbikgewogICAgIEBQcm9taXNlLnByb3RvdHlwZS5A
dGhlbi5AY2FsbChkZXN0aW5hdGlvbi5jbG9zZWQsCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgaWYgKCFjbG9zZWRQdXJwb3NlZnVsbHkpCi0gICAgICAgICAgICAgICAgY2FuY2Vs
U291cmNlKG5ldyBAVHlwZUVycm9yKCdkZXN0aW5hdGlvbiBpcyBjbG9zaW5nIG9yIGNsb3NlZCBh
bmQgY2Fubm90IGJlIHBpcGVkIHRvIGFueW1vcmUnKSk7CisgICAgICAgICAgICAgICAgY2FuY2Vs
U291cmNlKEBtYWtlVHlwZUVycm9yKCdkZXN0aW5hdGlvbiBpcyBjbG9zaW5nIG9yIGNsb3NlZCBh
bmQgY2Fubm90IGJlIHBpcGVkIHRvIGFueW1vcmUnKSk7CiAgICAgICAgIH0sCiAgICAgICAgIGNh
bmNlbFNvdXJjZQogICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5qcwppbmRleCBlM2I0MzJkMjc1YzRj
ZDFkN2JmODU5Y2NhZTc0ZWU5NjRhM2Y1ZDM2Li4zYWMwNGEzYTc0ZWRhMGJiZWY1MzQyMWQ2YzZj
YTA5ZWM0MmM1OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuanMKQEAgLTQ5LDcgKzQ5LDcgQEAgZnVu
Y3Rpb24gY2FuY2VsKHJlYXNvbikKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1h
a2VUaGlzVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIiLCAiY2FuY2VsIikpOwog
CiAgICAgaWYgKCFAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgIm93bmVyUmVhZGFibGVTdHJl
YW0iKSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoImNh
bmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0iKSk7
CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJjYW5jZWwo
KSBjYWxsZWQgb24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtIikpOwogCiAg
ICAgcmV0dXJuIEByZWFkYWJsZVN0cmVhbVJlYWRlckdlbmVyaWNDYW5jZWwodGhpcywgcmVhc29u
KTsKIH0KQEAgLTYyLDE2ICs2MiwxNiBAQCBmdW5jdGlvbiByZWFkKHZpZXcpCiAgICAgICAgIHJl
dHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVGhpc1R5cGVFcnJvcigiUmVhZGFibGVTdHJlYW1C
WU9CUmVhZGVyIiwgInJlYWQiKSk7CiAKICAgICBpZiAoIUBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0
aGlzLCAib3duZXJSZWFkYWJsZVN0cmVhbSIpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJl
amVjdChuZXcgQFR5cGVFcnJvcigicmVhZCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBu
byByZWFkYWJsZSBzdHJlYW0iKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBt
YWtlVHlwZUVycm9yKCJyZWFkKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRh
YmxlIHN0cmVhbSIpKTsKIAogICAgIGlmICghQGlzT2JqZWN0KHZpZXcpKQotICAgICAgICByZXR1
cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiUHJvdmlkZWQgdmlldyBpcyBub3Qg
YW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVF
cnJvcigiUHJvdmlkZWQgdmlldyBpcyBub3QgYW4gb2JqZWN0IikpOwogCiAgICAgaWYgKCFAQXJy
YXlCdWZmZXIuQGlzVmlldyh2aWV3KSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3Qo
bmV3IEBUeXBlRXJyb3IoIlByb3ZpZGVkIHZpZXcgaXMgbm90IGFuIEFycmF5QnVmZmVyVmlldyIp
KTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIlByb3Zp
ZGVkIHZpZXcgaXMgbm90IGFuIEFycmF5QnVmZmVyVmlldyIpKTsKIAogICAgIGlmICh2aWV3LmJ5
dGVMZW5ndGggPT09IDApCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlw
ZUVycm9yKCJQcm92aWRlZCB2aWV3IGNhbm5vdCBoYXZlIGEgMCBieXRlTGVuZ3RoIikpOworICAg
ICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiUHJvdmlkZWQgdmll
dyBjYW5ub3QgaGF2ZSBhIDAgYnl0ZUxlbmd0aCIpKTsKIAogICAgIHJldHVybiBAcmVhZGFibGVT
dHJlYW1CWU9CUmVhZGVyUmVhZCh0aGlzLCB2aWV3KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIuanMgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVy
LmpzCmluZGV4IGRhNzVhM2Y2MjlhNDFhYzg0ODljY2U5ZmRiMmVjZWVlYTdmMmYwM2IuLmZiZTIy
OWYyYWRiOGYyY2U4YWFhZTUxNzk2MWYxOGNlNDg2MWM0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlci5qcwpAQCAtNDgsNyArNDgsNyBAQCBmdW5jdGlvbiBjYW5jZWwocmVhc29uKQogICAgICAg
ICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVRoaXNUeXBlRXJyb3IoIlJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdFJlYWRlciIsICJjYW5jZWwiKSk7CiAKICAgICBpZiAoIUBnZXRCeUlkRGlyZWN0
UHJpdmF0ZSh0aGlzLCAib3duZXJSZWFkYWJsZVN0cmVhbSIpKQotICAgICAgICByZXR1cm4gQFBy
b21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiY2FuY2VsKCkgY2FsbGVkIG9uIGEgcmVhZGVy
IG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNl
LkByZWplY3QoQG1ha2VUeXBlRXJyb3IoImNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25l
ZCBieSBubyByZWFkYWJsZSBzdHJlYW0iKSk7CiAKICAgICByZXR1cm4gQHJlYWRhYmxlU3RyZWFt
UmVhZGVyR2VuZXJpY0NhbmNlbCh0aGlzLCByZWFzb24pOwogfQpAQCAtNjAsNyArNjAsNyBAQCBm
dW5jdGlvbiByZWFkKCkKICAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcih0
aGlzKSkKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUaGlzVHlwZUVycm9y
KCJSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIiLCAicmVhZCIpKTsKICAgICBpZiAoIUBnZXRC
eUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAib3duZXJSZWFkYWJsZVN0cmVhbSIpKQotICAgICAgICBy
ZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigicmVhZCgpIGNhbGxlZCBvbiBh
IHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0iKSk7CisgICAgICAgIHJldHVybiBA
UHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJyZWFkKCkgY2FsbGVkIG9uIGEgcmVhZGVy
IG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbSIpKTsKIAogICAgIHJldHVybiBAcmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyUmVhZCh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwppbmRleCA1
MWYwMTk4NzE4NWI5OWEwYjNkN2IyYTFiMjFlZWZiZTkxMmU0ZDk1Li4zYTMyZmU0MzdkNmU2NDFm
MGE3MGQ1OWE2NjllYzU5ODI1OGY2NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC01MTQsOSAr
NTE0LDkgQEAgZnVuY3Rpb24gcmVhZGFibGVTdHJlYW1SZWFkZXJHZW5lcmljUmVsZWFzZShyZWFk
ZXIpCiAgICAgQGFzc2VydChAZ2V0QnlJZERpcmVjdFByaXZhdGUoQGdldEJ5SWREaXJlY3RQcml2
YXRlKHJlYWRlciwgIm93bmVyUmVhZGFibGVTdHJlYW0iKSwgInJlYWRlciIpID09PSByZWFkZXIp
OwogCiAgICAgaWYgKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShAZ2V0QnlJZERpcmVjdFByaXZhdGUo
cmVhZGVyLCAib3duZXJSZWFkYWJsZVN0cmVhbSIpLCAic3RhdGUiKSA9PT0gQHN0cmVhbVJlYWRh
YmxlKQotICAgICAgICBAZ2V0QnlJZERpcmVjdFByaXZhdGUocmVhZGVyLCAiY2xvc2VkUHJvbWlz
ZUNhcGFiaWxpdHkiKS5AcmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCJy
ZWxlYXNpbmcgbG9jayBvZiByZWFkZXIgd2hvc2Ugc3RyZWFtIGlzIHN0aWxsIGluIHJlYWRhYmxl
IHN0YXRlIikpOworICAgICAgICBAZ2V0QnlJZERpcmVjdFByaXZhdGUocmVhZGVyLCAiY2xvc2Vk
UHJvbWlzZUNhcGFiaWxpdHkiKS5AcmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIEBtYWtlVHlwZUVy
cm9yKCJyZWxlYXNpbmcgbG9jayBvZiByZWFkZXIgd2hvc2Ugc3RyZWFtIGlzIHN0aWxsIGluIHJl
YWRhYmxlIHN0YXRlIikpOwogICAgIGVsc2UKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRl
KHJlYWRlciwgImNsb3NlZFByb21pc2VDYXBhYmlsaXR5IiwgeyBAcHJvbWlzZTogQG5ld0hhbmRs
ZWRSZWplY3RlZFByb21pc2UobmV3IEBUeXBlRXJyb3IoInJlYWRlciByZWxlYXNlZCBsb2NrIikp
IH0pOworICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUocmVhZGVyLCAiY2xvc2VkUHJvbWlz
ZUNhcGFiaWxpdHkiLCB7IEBwcm9taXNlOiBAbmV3SGFuZGxlZFJlamVjdGVkUHJvbWlzZShAbWFr
ZVR5cGVFcnJvcigicmVhZGVyIHJlbGVhc2VkIGxvY2siKSkgfSk7CiAKICAgICBAcHV0QnlJZERp
cmVjdFByaXZhdGUoQGdldEJ5SWREaXJlY3RQcml2YXRlKHJlYWRlciwgImNsb3NlZFByb21pc2VD
YXBhYmlsaXR5IikuQHByb21pc2UsICJwcm9taXNlSXNIYW5kbGVkIiwgdHJ1ZSk7CiAgICAgQHB1
dEJ5SWREaXJlY3RQcml2YXRlKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShyZWFkZXIsICJvd25lclJl
YWRhYmxlU3RyZWFtIiksICJyZWFkZXIiLCBAdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcwppbmRleCA1ZGE1NGQyM2UwMzVi
MzhiMjUyMDEzMmQ1ZTBlZWQ5MmE4ODFhZjg0Li5mNjhhZGZiMTFkYTVjNjc5NzgwMjkwMGE4NmEx
MDM4NmZmZGRiM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
V3JpdGFibGVTdHJlYW0uanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dy
aXRhYmxlU3RyZWFtLmpzCkBAIC03MCw3ICs3MCw3IEBAIGZ1bmN0aW9uIGFib3J0KHJlYXNvbikK
ICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRoaXMpKQot
ICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRh
YmxlU3RyZWFtLmFib3J0IG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBX
cml0YWJsZVN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VU
eXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS5hYm9ydCBtZXRob2QgY2FuIG9ubHkgYmUgdXNl
ZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CiAKICAgICBjb25zdCBzdGF0ZSA9
IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic3RhdGUiKTsKICAgICBpZiAoc3RhdGUgPT09
IEBzdHJlYW1DbG9zZWQpCkBAIC04OSwxMSArODksMTEgQEAgZnVuY3Rpb24gY2xvc2UoKQogICAg
ICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAg
ICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJUaGUgV3JpdGFibGVT
dHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdyaXRh
YmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVF
cnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNsb3NlIG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKIAogICAgIGNvbnN0IHN0YXRlID0gQGdl
dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJzdGF0ZSIpOwogICAgIGlmIChzdGF0ZSA9PT0gQHN0
cmVhbUNsb3NlZCB8fCBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NpbmcpCi0gICAgICAgIHJldHVybiBA
UHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJDYW5ub3QgY2xvc2UgYSBXcml0YWJsZVN0
cmluZyB0aGF0IGlzIGNsb3NlZCBvciBjbG9zaW5nIikpOworICAgICAgICByZXR1cm4gQFByb21p
c2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiQ2Fubm90IGNsb3NlIGEgV3JpdGFibGVTdHJpbmcg
dGhhdCBpcyBjbG9zZWQgb3IgY2xvc2luZyIpKTsKIAogICAgIGlmIChzdGF0ZSA9PT0gQHN0cmVh
bUVycm9yZWQpCiAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBnZXRCeUlkRGlyZWN0
UHJpdmF0ZSh0aGlzLCAic3RvcmVkRXJyb3IiKSk7CkBAIC0xMTMsMTEgKzExMywxMSBAQCBmdW5j
dGlvbiB3cml0ZShjaHVuaykKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dyaXRh
YmxlU3RyZWFtKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5
cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLndyaXRlIG1ldGhvZCBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9t
aXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS53cml0ZSBtZXRo
b2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CiAK
ICAgICBjb25zdCBzdGF0ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic3RhdGUiKTsK
ICAgICBpZiAoc3RhdGUgPT09IEBzdHJlYW1DbG9zZWQgfHwgc3RhdGUgPT09IEBzdHJlYW1DbG9z
aW5nKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiQ2Fu
bm90IHdyaXRlIG9uIGEgV3JpdGFibGVTdHJpbmcgdGhhdCBpcyBjbG9zZWQgb3IgY2xvc2luZyIp
KTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIkNhbm5v
dCB3cml0ZSBvbiBhIFdyaXRhYmxlU3RyaW5nIHRoYXQgaXMgY2xvc2VkIG9yIGNsb3NpbmciKSk7
CiAKICAgICBpZiAoc3RhdGUgPT09IEBzdHJlYW1FcnJvcmVkKQogICAgICAgICByZXR1cm4gQFBy
b21pc2UuQHJlamVjdCh0aGlzLkBzdG9yZWRFcnJvcik7CkBAIC0xNTQsNyArMTU0LDcgQEAgZnVu
Y3Rpb24gY2xvc2VkKCkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dyaXRhYmxl
U3RyZWFtKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVF
cnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNsb3NlZCBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlz
ZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJUaGUgV3JpdGFibGVTdHJlYW0uY2xvc2VkIGdldHRl
ciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKIAog
ICAgIHJldHVybiBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImNsb3NlZFByb21pc2VDYXBh
YmlsaXR5IikuQHByb21pc2U7CiB9CkBAIC0xNjUsNyArMTY1LDcgQEAgZnVuY3Rpb24gcmVhZHko
KQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykp
Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJUaGUgV3Jp
dGFibGVTdHJlYW0ucmVhZHkgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
IFdyaXRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFr
ZVR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLnJlYWR5IGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKIAogICAgIHJldHVybiBAZ2V0
QnlJZERpcmVjdFByaXZhdGUodGhpcywgInJlYWR5UHJvbWlzZUNhcGFiaWxpdHkiKS5AcHJvbWlz
ZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363455</attachid>
            <date>2019-03-03 03:27:34 -0800</date>
            <delta_ts>2019-03-03 12:55:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193858-20190303032733.patch</filename>
            <type>text/plain</type>
            <size>34440</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MDBhMDQ5YmI5MDk5ZGYwZDc2ZTA3OGE3MWVjNGM3MTFhYmY2NTM0Li4zNmEzNjExNDk3OWVjNDNi
ZTUxZGE1N2E1YTdmMjE4YmFlMTJjMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxOS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9mZmVyIEBtYWtlVHlwZUVycm9yIGluc3RlYWQgb2YgZXhwb3Np
bmcgQFR5cGVFcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkzODU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW5zdGVhZCBvZiBleHBvc2luZyBAVHlwZUVycm9yLCB3ZSBleHBvc2UgQG1ha2VUeXBl
RXJyb3IgZnVuY3Rpb24uCisgICAgICAgIEFuZCB3ZSBtYWtlIFR5cGVFcnJvciBhbmQgRXJyb3Ig
bGF6aWx5LWFsbG9jYXRlZCBvYmplY3RzIGluIG5vbiBKSVQgZW52aXJvbm1lbnQuCisgICAgICAg
IEluIEpJVCBlbnZpcm9ubWVudCwgb25seSBUeXBlRXJyb3IgYmVjb21lcyBsYXppbHktYWxsb2Nh
dGVkIHNpbmNlIFdlYkFzc2VtYmx5IGVycm9ycworICAgICAgICB0b3VjaCBFcnJvciBwcm90b3R5
cGUgYW55d2F5LiBCdXQgd2UgY2FuIG1ha2UgdGhlbSBsYXp5IGluIGEgc3Vic2VxdWVudCBwYXRj
aC4KKworICAgICAgICAqIGJ1aWx0aW5zL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5q
czoKKyAgICAgICAgKiBidWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qczoKKyAgICAg
ICAgKGdsb2JhbFByaXZhdGUuYXN5bmNHZW5lcmF0b3JFbnF1ZXVlKToKKyAgICAgICAgKiBidWls
dGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlT3BlcmF0aW9u
cy5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zLnJl
c29sdmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjplcnJvclByb3RvdHlwZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjplcnJvclN0cnVjdHVyZSBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
Omdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik6CisgICAg
ICAgIChKU0M6Omdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Z2xvYmFs
RnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlcik6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oOgorCiAyMDE5LTAzLTAxICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5pc2ggcmVtb3ZpbmcgU3RyaW5nOjpmb3JtYXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA2NGUzMDFmNjcwMmYxODJhZGRiN2YwZjVjNTg2YmY3NDM0NDZiNGFiLi5jOGE5
NmYzNDUwZTI5YWMyODAwNTc4MzViMjViZjVhZDA2NWMxNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTktMDMtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBbSlNDXSBPZmZlciBAbWFrZVR5cGVFcnJvciBpbnN0ZWFkIG9mIGV4cG9zaW5n
IEBUeXBlRXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5Mzg1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBAbWFrZVR5cGVFcnJvciBpbnN0ZWFkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5qczoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzLmpzOgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgIChyZWFkYWJsZUJ5
dGVTdHJlYW1Db250cm9sbGVyQ2xvc2UpOgorICAgICAgICAocmVhZGFibGVCeXRlU3RyZWFtQ29u
dHJvbGxlclB1bGxJbnRvKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uanM6CisgICAgICAgIChjYW5jZWwpOgorICAgICAgICAocGlwZVRvKToKKyAgICAgICAgKiBN
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmpzOgorICAgICAgICAoY2Fu
Y2VsKToKKyAgICAgICAgKHJlYWQpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbURlZmF1bHRSZWFkZXIuanM6CisgICAgICAgIChjYW5jZWwpOgorICAgICAgICAocmVh
ZCk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpz
OgorICAgICAgICAocmVhZGFibGVTdHJlYW1SZWFkZXJHZW5lcmljUmVsZWFzZSk6CisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzOgorICAgICAgICAoYWJvcnQpOgor
ICAgICAgICAoY2xvc2UpOgorICAgICAgICAod3JpdGUpOgorICAgICAgICAoZ2V0dGVyLmNsb3Nl
ZCk6CisgICAgICAgIChnZXR0ZXIucmVhZHkpOgorCiAyMDE5LTAzLTAyICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gSW50
cm9kdWNlIENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6TW91c2VNb3ZlZFNjb3BlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJv
dG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnJvbVN5bmNJ
dGVyYXRvclByb3RvdHlwZS5qcwppbmRleCAyNmFlOWU1NWIyOWIxZWU4ZjYzMmVmY2E5MTI1ZThj
NzY3ZDc4ZTk0Li42ZWExYTdmMDVmODdjNWM2ZmY1NTlhM2NkMzAwNTEwNzY2ZWZiOWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGcm9tU3luY0l0ZXJh
dG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3lu
Y0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuanMKQEAgLTMwLDcgKzMwLDcgQEAgZnVuY3Rpb24g
bmV4dCh2YWx1ZSkKICAgICBjb25zdCBwcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2Fw
YWJpbGl0eShAUHJvbWlzZSk7CiAKICAgICBpZiAoIUBpc09iamVjdCh0aGlzKSB8fCAhQGlzT2Jq
ZWN0KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic3luY0l0ZXJhdG9yIikpKSB7Ci0gICAg
ICAgIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgbmV3IEBUeXBl
RXJyb3IoJ0l0ZXJhdG9yIGlzIG5vdCBhbiBvYmplY3QuJykpOworICAgICAgICBwcm9taXNlQ2Fw
YWJpbGl0eS5AcmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIEBtYWtlVHlwZUVycm9yKCdJdGVyYXRv
ciBpcyBub3QgYW4gb2JqZWN0LicpKTsKICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5
LkBwcm9taXNlOwogICAgIH0KIApAQCAtNTcsNyArNTcsNyBAQCBmdW5jdGlvbiByZXR1cm4odmFs
dWUpCiAgICAgY29uc3QgcHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHko
QFByb21pc2UpOwogCiAgICAgaWYgKCFAaXNPYmplY3QodGhpcykgfHwgIUBpc09iamVjdChAZ2V0
QnlJZERpcmVjdFByaXZhdGUodGhpcywgInN5bmNJdGVyYXRvciIpKSkgewotICAgICAgICBwcm9t
aXNlQ2FwYWJpbGl0eS5AcmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCdJ
dGVyYXRvciBpcyBub3QgYW4gb2JqZWN0LicpKTsKKyAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHku
QHJlamVjdC5AY2FsbChAdW5kZWZpbmVkLCBAbWFrZVR5cGVFcnJvcignSXRlcmF0b3IgaXMgbm90
IGFuIG9iamVjdC4nKSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlz
ZTsKICAgICB9CiAKQEAgLTgxLDcgKzgxLDcgQEAgZnVuY3Rpb24gcmV0dXJuKHZhbHVlKQogICAg
ICAgICBjb25zdCByZXR1cm5SZXN1bHQgPSByZXR1cm5NZXRob2QuQGNhbGwoc3luY0l0ZXJhdG9y
LCB2YWx1ZSk7CiAKICAgICAgICAgaWYgKCFAaXNPYmplY3QocmV0dXJuUmVzdWx0KSkgewotICAg
ICAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2FsbChAdW5kZWZpbmVkLCBuZXcg
QFR5cGVFcnJvcignSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0Licp
KTsKKyAgICAgICAgICAgIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5l
ZCwgQG1ha2VUeXBlRXJyb3IoJ0l0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4nKSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7
CiAgICAgICAgIH0KIApAQCAtMTA2LDcgKzEwNiw3IEBAIGZ1bmN0aW9uIHRocm93KGV4Y2VwdGlv
bikKICAgICBjb25zdCBwcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShA
UHJvbWlzZSk7CiAKICAgICBpZiAoIUBpc09iamVjdCh0aGlzKSB8fCAhQGlzT2JqZWN0KEBnZXRC
eUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic3luY0l0ZXJhdG9yIikpKSB7Ci0gICAgICAgIHByb21p
c2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3IoJ0l0
ZXJhdG9yIGlzIG5vdCBhbiBvYmplY3QuJykpOworICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5A
cmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIEBtYWtlVHlwZUVycm9yKCdJdGVyYXRvciBpcyBub3Qg
YW4gb2JqZWN0LicpKTsKICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkBwcm9taXNl
OwogICAgIH0KIApAQCAtMTMwLDcgKzEzMCw3IEBAIGZ1bmN0aW9uIHRocm93KGV4Y2VwdGlvbikK
ICAgICAgICAgY29uc3QgdGhyb3dSZXN1bHQgPSB0aHJvd01ldGhvZC5AY2FsbChzeW5jSXRlcmF0
b3IsIGV4Y2VwdGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAoIUBpc09iamVjdCh0aHJvd1Jl
c3VsdCkpIHsKLSAgICAgICAgICAgIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVu
ZGVmaW5lZCwgbmV3IEBUeXBlRXJyb3IoJ0l0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4nKSk7CisgICAgICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0LkBj
YWxsKEB1bmRlZmluZWQsIEBtYWtlVHlwZUVycm9yKCdJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNl
IGlzIG5vdCBhbiBvYmplY3QuJykpOwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmls
aXR5LkBwcm9taXNlOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4
IDRlNzg2ODAxNzFlMDljY2QyNjk4MjE5MGM5MzVjYmJmZWRlN2YwMzYuLmQ5YWZkNDI0NWNmYWQ0
NjFlMWM0NzYxZWU4NzcwY2FjMWE2NWViYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTI2NSw3
ICsyNjUsNyBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvckVucXVldWUoZ2VuZXJhdG9yLCB2YWx1
ZSwgcmVzdW1lTW9kZSkKICAgICAKICAgICBjb25zdCBwcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQ
cm9taXNlQ2FwYWJpbGl0eShAUHJvbWlzZSk7CiAgICAgaWYgKCFAaXNPYmplY3QoZ2VuZXJhdG9y
KSB8fCB0eXBlb2YgQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJh
dG9yU3VzcGVuZFJlYXNvbiIpICE9PSAnbnVtYmVyJykgewotICAgICAgICBwcm9taXNlQ2FwYWJp
bGl0eS5AcmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIG5ldyBAVHlwZUVycm9yKCd8dGhpc3wgc2hv
dWxkIGJlIGFuIGFzeW5jIGdlbmVyYXRvcicpKTsKKyAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHku
QHJlamVjdC5AY2FsbChAdW5kZWZpbmVkLCBAbWFrZVR5cGVFcnJvcignfHRoaXN8IHNob3VsZCBi
ZSBhbiBhc3luYyBnZW5lcmF0b3InKSk7CiAgICAgICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0
eS5AcHJvbWlzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaAppbmRleCAxZjgyNjBiMGZiZTcyYjhkNWM3ZDAxZjU4NjU2OTYxYjM1YzVj
ZTkxLi41YWQwYzdiN2FiMTE1OGQ0OGVhZjc1ZDUyMTg0NDUyYzNhOTdhMmIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC03NCw3ICs3NCw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGdldE93blByb3BlcnR5TmFtZXMpIFwKICAg
ICBtYWNybyhvd25LZXlzKSBcCiAgICAgbWFjcm8oU2V0KSBcCi0gICAgbWFjcm8oVHlwZUVycm9y
KSBcCiAgICAgbWFjcm8odHlwZWRBcnJheUxlbmd0aCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlT
b3J0KSBcCiAgICAgbWFjcm8odHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IpIFwKQEAg
LTE0Myw2ICsxNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhyZWdFeHBDcmVhdGUp
IFwKICAgICBtYWNybyhyZXBsYWNlVXNpbmdSZWdFeHApIFwKICAgICBtYWNybyhyZXBsYWNlVXNp
bmdTdHJpbmdTZWFyY2gpIFwKKyAgICBtYWNybyhtYWtlVHlwZUVycm9yKSBcCiAgICAgbWFjcm8o
bWFwQnVja2V0KSBcCiAgICAgbWFjcm8obWFwQnVja2V0SGVhZCkgXAogICAgIG1hY3JvKG1hcEJ1
Y2tldE5leHQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Q
cm9taXNlT3BlcmF0aW9ucy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9t
aXNlT3BlcmF0aW9ucy5qcwppbmRleCBiZTg1NDk5ZDBmYjllNGU3NmVkNmQ1MjAwMmIwNzUyNWE0
Y2JmODExLi41NGQ4MWJjZTQzNzkxZTZjNTU4MGE2M2IwYjQ2MWRjOGU1Njk2NTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpz
CkBAIC0xNDgsNyArMTQ4LDcgQEAgZnVuY3Rpb24gY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zKHBy
b21pc2UpCiAgICAgICAgIGFscmVhZHlSZXNvbHZlZCA9IHRydWU7CiAKICAgICAgICAgaWYgKHJl
c29sdXRpb24gPT09IHByb21pc2UpCi0gICAgICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2Uo
cHJvbWlzZSwgbmV3IEBUeXBlRXJyb3IoIlJlc29sdmUgYSBwcm9taXNlIHdpdGggaXRzZWxmIikp
OworICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlKHByb21pc2UsIEBtYWtlVHlwZUVy
cm9yKCJSZXNvbHZlIGEgcHJvbWlzZSB3aXRoIGl0c2VsZiIpKTsKIAogICAgICAgICBpZiAoIUBp
c09iamVjdChyZXNvbHV0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBAZnVsZmlsbFByb21pc2Uo
cHJvbWlzZSwgcmVzb2x1dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNDkwZDhjZDBiY2Q2ZDJkNTM3NTRlMTBhZjA0ZTBh
YTU1YWM0ZTAzNS4uMWY5NzM4OWQxNWVmOTYwYTEzZmI5MzI5MWE4Njg1OWRjOGRkZjY1YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApA
QCAtMzM1LDYgKzMzNSw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFs
T2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICBGbG9hdDY0QXJyYXkgICAg
ICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fdHlwZWRBcnJheUZsb2F0NjQgICAgICAgICAgRG9udEVu
dW18Q2xhc3NTdHJ1Y3R1cmUKICAgRGF0YVZpZXcgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
OjptX3R5cGVkQXJyYXlEYXRhVmlldyAgICAgICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAg
IERhdGUgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6bV9kYXRlU3RydWN0dXJlICAg
ICAgICAgICAgICBEb250RW51bXxDbGFzc1N0cnVjdHVyZQorICBFcnJvciAgICAgICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3Q6Om1fZXJyb3JTdHJ1Y3R1cmUgICAgICAgICAgICAgRG9udEVudW18
Q2xhc3NTdHJ1Y3R1cmUKICAgQm9vbGVhbiAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0Ojpt
X2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUgICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIE51
bWJlciAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6bV9udW1iZXJPYmplY3RTdHJ1Y3R1
cmUgICAgICBEb250RW51bXxDbGFzc1N0cnVjdHVyZQogICBTeW1ib2wgICAgICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3Q6Om1fc3ltYm9sT2JqZWN0U3RydWN0dXJlICAgICAgRG9udEVudW18Q2xh
c3NTdHJ1Y3R1cmUKQEAgLTQwOSw5ICs0MTAsOSBAQCBzdGF0aWMgSlNPYmplY3QqIGdldEdldHRl
ckJ5SWQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllcgog
dGVtcGxhdGU8RXJyb3JUeXBlIGVycm9yVHlwZT4KIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXRp
YWxpemVFcnJvckNvbnN0cnVjdG9yKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGlu
aXQpCiB7Ci0gICAgaW5pdC5zZXRQcm90b3R5cGUoTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0
ZShpbml0LnZtLCBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IHRoaXMsIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpLCBlcnJvclR5cGVOYW1lKGVycm9yVHlwZSkp
KTsKKyAgICBpbml0LnNldFByb3RvdHlwZShOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGlu
aXQudm0sIE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhp
cywgbV9lcnJvclN0cnVjdHVyZS5wcm90b3R5cGUodGhpcykpLCBlcnJvclR5cGVOYW1lKGVycm9y
VHlwZSkpKTsKICAgICBpbml0LnNldFN0cnVjdHVyZShFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgdGhpcywgaW5pdC5wcm90b3R5cGUpKTsKLSAgICBpbml0LnNldENvbnN0
cnVjdG9yKE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y3JlYXRlKGluaXQudm0s
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIHRoaXMsIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSksIGpzQ2FzdDxOYXRpdmVFcnJvclBy
b3RvdHlwZSo+KGluaXQucHJvdG90eXBlKSkpOworICAgIGluaXQuc2V0Q29uc3RydWN0b3IoTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGUoaW5pdC52bSwgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywg
bV9lcnJvclN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKSksIGpzQ2FzdDxOYXRpdmVFcnJvclBy
b3RvdHlwZSo+KGluaXQucHJvdG90eXBlKSkpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKQEAgLTcyNiw3ICs3MjcsNiBAQCBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Ywog
ICAgIG1fcHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgcHJvbWlzZUNvbnN0cnVjdG9y
KTsKICAgICBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgaW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IpOwogICAgIAotICAgIG1fZXJyb3JDb25zdHJ1Y3Rvci5zZXQo
dm0sIHRoaXMsIGVycm9yQ29uc3RydWN0b3IpOwogICAgIG1fZXZhbEVycm9yU3RydWN0dXJlLmlu
aXRMYXRlcigKICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGlu
aXQpIHsKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5pbml0aWFsaXplRXJyb3JDb25zdHJ1Y3Rv
cjxFcnJvclR5cGU6OkV2YWxFcnJvcj4oaW5pdCk7CkBAIC04NTQsNiArODU0LDcgQEAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3QKIAogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jUHJvcGVydHlJ
c0VudW1lcmFibGUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBn
bG9iYWxGdW5jUHJvcGVydHlJc0VudW1lcmFibGUpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVG
dW5jSW1wb3J0TW9kdWxlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgZ2xvYmFsRnVuY0ltcG9ydE1vZHVsZSk7CisgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNN
YWtlVHlwZUVycm9yID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwg
Z2xvYmFsRnVuY01ha2VUeXBlRXJyb3IpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVHlw
ZWRBcnJheUxlbmd0aCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCks
IHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgpOwogICAgIEpTRnVuY3Rpb24qIHByaXZh
dGVGdW5jVHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0T3Jp
Z2luYWxDb25zdHJ1Y3Rvcik7CiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUeXBlZEFycmF5
U29ydCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIHR5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTsKQEAgLTkyNSw5ICs5MjYsNyBAQCBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMj
IENvbnN0cnVjdAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkucHJvcGVydHlJc0VudW1lcmFibGVQcml2YXRlTmFtZSgpLCBwcml2YXRl
RnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0ltcG9ydE1vZHVs
ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW5xdWV1ZUpvYlByaXZh
dGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGVucXVl
dWVKb2IpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCi0gICAgICAgIC8vIEZJ
WE1FOiBPZmZlciBAbWFrZVR5cGVFcnJvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGV4cG9zaW5nIEBU
eXBlRXJyb3IgaGVyZS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5Mzg1OAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuVHlwZUVycm9yUHJpdmF0ZU5hbWUoKSwgbV90eXBlRXJyb3JT
dHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLm1ha2VUeXBlRXJyb3JQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY01ha2VUeXBl
RXJyb3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlM
ZW5ndGhQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlMZW5ndGgsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0
cnVjdG9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5R2V0T3JpZ2luYWxDb25z
dHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudHlwZWRBcnJh
eVNvcnRQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlTb3J0LCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCkBAIC0xMDMxLDcgKzEwMzAsNyBAQCBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1l
ICMjIENvbnN0cnVjdAogICAgICAgICB0eXBlZGVmIGNhcGl0YWxOYW1lICMjIFByb3RvdHlwZSBQ
cm90b3R5cGU7IFwKICAgICAgICAgdHlwZWRlZiBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciBD
b25zdHJ1Y3RvcjsgXAogICAgICAgICB0eXBlZGVmIEpTICMjIGNhcGl0YWxOYW1lIEpTT2JqOyBc
Ci0gICAgICAgIGF1dG8qIGJhc2UgPSBtXyAjIyBwcm90b3R5cGVCYXNlICMjIFByb3RvdHlwZS5n
ZXQoKTsgXAorICAgICAgICBhdXRvKiBiYXNlID0gcHJvdG90eXBlQmFzZSAjIyBQcm90b3R5cGUo
KTsgXAogICAgICAgICBhdXRvKiBwcm90b3R5cGUgPSBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhp
cywgUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGJhc2UpKTsgXAogICAgICAg
ICBhdXRvKiBzdHJ1Y3R1cmUgPSBKU09iajo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBwcm90
b3R5cGUpOyBcCiAgICAgICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgdGhpcy0+ZnVuY3Rp
b25Qcm90b3R5cGUoKSksIHByb3RvdHlwZSk7IFwKQEAgLTE1ODcsNyArMTU4Niw2IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dsb2JhbFNjb3BlRXh0
ZW5zaW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dsb2JhbENhbGxlZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zdGFja092ZXJmbG93RnJhbWVDYWxs
ZWUpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZXJyb3JDb25zdHJ1Y3Rvcik7
CiAgICAgdGhpc09iamVjdC0+bV9ldmFsRXJyb3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAg
ICAgdGhpc09iamVjdC0+bV9yYW5nZUVycm9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAg
IHRoaXNPYmplY3QtPm1fcmVmZXJlbmNlRXJyb3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CkBA
IC0xNjMwLDcgKzE2MjgsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fYXJyYXlQcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZXJy
b3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faXRlcmF0b3JQ
cm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJh
dG9yUHJvdG90eXBlKTsKQEAgLTE2NjQsNyArMTY2MSw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0
aGlzT2JqZWN0LT5tX2dsaWJXcmFwcGVyT2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwog
I2VuZGlmCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsUHJvdG90eXBlT2Jq
ZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Vycm9yU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxlZVN0cnVjdHVy
ZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2hvc3RGdW5jdGlvblN0cnVj
dHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCBmZWFkNzliM2FmOTBlZjU5NDY5YTZjNTUyYzJkMGU0M2JkM2Y3MzNjLi45ZTI2N2Iz
OGZmOWZkODllOTI5YTUyODYxYWY3NzVlZGRiNjU2NDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEyOCw3ICsxMjgsNiBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBXYXRjaHBvaW50PiBjbGFzcyBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludDsKIAogI2RlZmluZSBGT1JfRUFDSF9TSU1QTEVfQlVJTFRJTl9UWVBFX1dJ
VEhfQ09OU1RSVUNUT1IobWFjcm8pIFwKICAgICBtYWNybyhTdHJpbmcsIHN0cmluZywgc3RyaW5n
T2JqZWN0LCBTdHJpbmdPYmplY3QsIFN0cmluZywgb2JqZWN0KSBcCi0gICAgbWFjcm8oRXJyb3Is
IGVycm9yLCBlcnJvciwgRXJyb3JJbnN0YW5jZSwgRXJyb3IsIG9iamVjdCkgXAogICAgIG1hY3Jv
KE1hcCwgbWFwLCBtYXAsIEpTTWFwLCBNYXAsIG9iamVjdCkgXAogICAgIG1hY3JvKFNldCwgc2V0
LCBzZXQsIEpTU2V0LCBTZXQsIG9iamVjdCkgXAogICAgIG1hY3JvKEpTUHJvbWlzZSwgcHJvbWlz
ZSwgcHJvbWlzZSwgSlNQcm9taXNlLCBQcm9taXNlLCBvYmplY3QpCkBAIC0xNDYsNiArMTQ1LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgV2F0Y2hwb2ludD4gY2xhc3MgT2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ7CiAjZGVmaW5lIEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBF
KG1hY3JvKSBcCiAgICAgbWFjcm8oQm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVhbk9iamVjdCwgQm9v
bGVhbk9iamVjdCwgQm9vbGVhbiwgb2JqZWN0KSBcCiAgICAgbWFjcm8oRGF0ZSwgZGF0ZSwgZGF0
ZSwgRGF0ZUluc3RhbmNlLCBEYXRlLCBvYmplY3QpIFwKKyAgICBtYWNybyhFcnJvciwgZXJyb3Is
IGVycm9yLCBFcnJvckluc3RhbmNlLCBFcnJvciwgb2JqZWN0KSBcCiAgICAgbWFjcm8oTnVtYmVy
LCBudW1iZXIsIG51bWJlck9iamVjdCwgTnVtYmVyT2JqZWN0LCBOdW1iZXIsIG9iamVjdCkgXAog
ICAgIG1hY3JvKFN5bWJvbCwgc3ltYm9sLCBzeW1ib2xPYmplY3QsIFN5bWJvbE9iamVjdCwgU3lt
Ym9sLCBvYmplY3QpIFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgV2Vha01h
cCwgd2Vha01hcCkgXApAQCAtNjMxLDcgKzYzMSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTT2JqZWN0KiBkYXRlUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRlU3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsg
fQogICAgIEpTT2JqZWN0KiBzeW1ib2xQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJv
bE9iamVjdFN0cnVjdHVyZS5wcm90b3R5cGVJbml0aWFsaXplZE9uTWFpblRocmVhZCh0aGlzKTsg
fQogICAgIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgSlNP
YmplY3QqIGVycm9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5w
cm90b3R5cGUodGhpcyk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgQXN5
bmNJdGVyYXRvclByb3RvdHlwZSogYXN5bmNJdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXN5bmNJdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KQEAgLTY5Miw3ICs2OTIsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICBTdHJ1Y3R1cmUqIGRhdGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RhdGVT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBzeW1ib2xPYmplY3RTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbE9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0K
ICAgICBTdHJ1Y3R1cmUqIG51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICBTdHJ1Y3R1
cmUqIGVycm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQo
KTsgfQorICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Vy
cm9yU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUo
RXJyb3JUeXBlIGVycm9yVHlwZSkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoZXJyb3JU
eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggMWNiOTBkYTU4ODk3YzNjZGJiNjU4YjU5MzY1
Y2Q3NTRlNWViMTVkZC4uZTRmNGJlNzAxMTQyZmMxZjE0YTExYWE2OTdkZjIyZTFhOGI0YmFkZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNjk1LDkgKzY5NSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENh
bGxlcihFeAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICInYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUg
YWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OworICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmVycm9yU3Ry
dWN0dXJlKEVycm9yVHlwZTo6VHlwZUVycm9yKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgZXhlYy0+YXJndW1l
bnQoMCksIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTc0OCwxMCArNzU2LDEwIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jSG9zdFByb21pc2VS
ZWplY3Rpb25UcmFja2VyKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9i
YWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnByb21pc2VSZWplY3Rpb25UcmFj
a2VyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuaAppbmRleCBlNzc1NTI0MDc4MTVkZjc0NzgxMTdjYmM5ZDAwOGExZTA1OTA2Y2Qw
Li45ZjE2YWExOTczNTY0NWQ5YmQ3ZGIxNGYzOTQ4ODBiMGU1MWY2MmVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jRXNjYXBlKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jVW5lc2NhcGUoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2Fs
bGVyKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
TWFrZVR5cGVFcnJvcihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY1Byb3RvR2V0dGVyKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIoRXhl
Y1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5qcwppbmRleCBhZTgwZGFkYWUwYzUwNjY2YTQ5ODA4MzJiZjdh
NDlhN2U0OGQ4OThkLi43OTgxN2U0OGMwNmQ3MTM0MTMyYjI3MjllZGUzNTFhYjBjYjI5MzM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uanMKQEAgLTc5LDcgKzc5LDcgQEAgZnVuY3Rpb24gc2V0TG9jYWxEZXNjcmlw
dGlvbihkZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VU
aGlzVHlwZUVycm9yKCJSVENQZWVyQ29ubmVjdGlvbiIsICJzZXRMb2NhbERlc2NyaXB0aW9uIikp
OwogCiAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKQotICAgICAgICByZXR1cm4gQFByb21p
c2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiKSk7CisgICAg
ICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJOb3QgZW5vdWdoIGFy
Z3VtZW50cyIpKTsKIAogICAgIC8vIEZJWE1FIDE2OTY0NDogQWNjb3JkaW5nIHRoZSBzcGVjLCB3
ZSBzaG91bGQgdGhyb3cgd2hlbiByZWNlaXZpbmcgYSBSVENTZXNzaW9uRGVzY3JpcHRpb24uCiAg
ICAgY29uc3Qgb2JqZWN0SW5mbyA9IHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBmdW5jdGlvbiBzZXRS
ZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkBy
ZWplY3QoQG1ha2VUaGlzVHlwZUVycm9yKCJSVENQZWVyQ29ubmVjdGlvbiIsICJzZXRSZW1vdGVE
ZXNjcmlwdGlvbiIpKTsKIAogICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkKLSAgICAgICAg
cmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIk5vdCBlbm91Z2ggYXJndW1l
bnRzIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigi
Tm90IGVub3VnaCBhcmd1bWVudHMiKSk7CiAKICAgICAvLyBGSVhNRTogQWNjb3JkaW5nIHRoZSBz
cGVjLCB3ZSBzaG91bGQgb25seSBleHBlY3QgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdC4KICAg
ICBjb25zdCBvYmplY3RJbmZvID0gewpAQCAtMTI3LDcgKzEyNyw3IEBAIGZ1bmN0aW9uIGFkZElj
ZUNhbmRpZGF0ZShjYW5kaWRhdGUpCiAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBt
YWtlVGhpc1R5cGVFcnJvcigiUlRDUGVlckNvbm5lY3Rpb24iLCAiYWRkSWNlQ2FuZGlkYXRlIikp
OwogCiAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKQotICAgICAgICByZXR1cm4gQFByb21p
c2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiKSk7CisgICAg
ICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJOb3QgZW5vdWdoIGFy
Z3VtZW50cyIpKTsKIAogICAgIGNvbnN0IG9iamVjdEluZm8gPSB7CiAgICAgICAgICJjb25zdHJ1
Y3RvciI6IEBSVENJY2VDYW5kaWRhdGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzLmpzIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkludGVybmFscy5qcwpp
bmRleCBmM2NhNDQzZDNhZTZkODAyZTk0ZWM4NWUyZDQ2OGU3NWY3NTQzNDhkLi4yOTIxZGY4YThm
ZWJhYzQzNjk0NTY5ZmJkYmQzNmFkNzkzNTBhNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JbnRl
cm5hbHMuanMKQEAgLTc2LDcgKzc2LDcgQEAgZWxzZSBpZiAob2JqZWN0QXJnID09IG51bGwgJiYg
b2JqZWN0SW5mby5kZWZhdWx0c1RvTnVsbCkgewogICAgIH0KIAogICAgIGlmICghb2JqZWN0QXJn
T2spCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKGBBcmd1
bWVudCAxICgnJHtvYmplY3RJbmZvLmFyZ05hbWV9JykgdG8gUlRDUGVlckNvbm5lY3Rpb24uJHtm
dW5jdGlvbk5hbWV9IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgJHtvYmplY3RJbmZvLmFyZ1R5cGV9
YCkpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcihgQXJn
dW1lbnQgMSAoJyR7b2JqZWN0SW5mby5hcmdOYW1lfScpIHRvIFJUQ1BlZXJDb25uZWN0aW9uLiR7
ZnVuY3Rpb25OYW1lfSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mICR7b2JqZWN0SW5mby5hcmdUeXBl
fWApKTsKIAogICAgIHJldHVybiBwcm9taXNlTW9kZShvYmplY3RBcmcpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVy
bmFscy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJl
YW1JbnRlcm5hbHMuanMKaW5kZXggNzc4NjVmMTM0MGMxMTBlYjRlZWQzN2VhMGI2NjUwODQzZTAw
NjI0My4uODYzNjRmMGZhOGViN2I0MmRhMDk1MjE5OGM4ZGYzMTc0YTIwYmZjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVy
bmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRl
U3RyZWFtSW50ZXJuYWxzLmpzCkBAIC0xNDksNyArMTQ5LDcgQEAgZnVuY3Rpb24gcmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlckNsb3NlKGNvbnRyb2xsZXIpCiAgICAgdmFyIHBlbmRpbmdQdWxs
SW50b3MgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoY29udHJvbGxlciwgInBlbmRpbmdQdWxsSW50
b3MiKTsKICAgICBpZiAocGVuZGluZ1B1bGxJbnRvcy5sZW5ndGggPiAwKSB7CiAgICAgICAgIGlm
IChwZW5kaW5nUHVsbEludG9zWzBdLmJ5dGVzRmlsbGVkID4gMCkgewotICAgICAgICAgICAgY29u
c3QgZSA9IG5ldyBAVHlwZUVycm9yKCJDbG9zZSByZXF1ZXN0ZWQgd2hpbGUgdGhlcmUgcmVtYWlu
IHBlbmRpbmcgYnl0ZXMiKTsKKyAgICAgICAgICAgIGNvbnN0IGUgPSBAbWFrZVR5cGVFcnJvcigi
Q2xvc2UgcmVxdWVzdGVkIHdoaWxlIHRoZXJlIHJlbWFpbiBwZW5kaW5nIGJ5dGVzIik7CiAgICAg
ICAgICAgICBAcmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckVycm9yKGNvbnRyb2xsZXIsIGUp
OwogICAgICAgICAgICAgdGhyb3cgZTsKICAgICAgICAgfQpAQCAtNjQ4LDcgKzY0OCw3IEBAIGZ1
bmN0aW9uIHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJQdWxsSW50byhjb250cm9sbGVyLCB2
aWV3KQogICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHsgdmFsdWU6IGZpbGxl
ZFZpZXcsIGRvbmU6IGZhbHNlIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChAZ2V0QnlJZERp
cmVjdFByaXZhdGUoY29udHJvbGxlciwgImNsb3NlUmVxdWVzdGVkIikpIHsKLSAgICAgICAgICAg
IGNvbnN0IGUgPSBuZXcgQFR5cGVFcnJvcigiQ2xvc2luZyBzdHJlYW0gaGFzIGJlZW4gcmVxdWVz
dGVkIik7CisgICAgICAgICAgICBjb25zdCBlID0gQG1ha2VUeXBlRXJyb3IoIkNsb3Npbmcgc3Ry
ZWFtIGhhcyBiZWVuIHJlcXVlc3RlZCIpOwogICAgICAgICAgICAgQHJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXJFcnJvcihjb250cm9sbGVyLCBlKTsKICAgICAgICAgICAgIHJldHVybiBAUHJv
bWlzZS5AcmVqZWN0KGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKaW5kZXggMDY4ZmUyNGNhYmU1Y2U4NTE3ODkwMGU3
Nzg4NDk4NjliMmI0MGFjNi4uZGYzMWU2Nzk4ZTg3M2QyMTg4MDE2ZGQ4YTljZDI1NTA2NzYyMTIw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5qcwpAQCAtODAsNyArODAsNyBAQCBmdW5jdGlvbiBjYW5jZWwocmVhc29uKQogICAgICAgICBy
ZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVRoaXNUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFt
IiwgImNhbmNlbCIpKTsKIAogICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCh0aGlzKSkK
LSAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxl
U3RyZWFtIGlzIGxvY2tlZCIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1h
a2VUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZCIpKTsKIAogICAgIHJldHVybiBA
cmVhZGFibGVTdHJlYW1DYW5jZWwodGhpcywgcmVhc29uKTsKIH0KQEAgLTE5OCw3ICsxOTgsNyBA
QCBmdW5jdGlvbiBhYm9ydERlc3RpbmF0aW9uKHJlYXNvbikgewogICAgIEBQcm9taXNlLnByb3Rv
dHlwZS5AdGhlbi5AY2FsbChkZXN0aW5hdGlvbi5jbG9zZWQsCiAgICAgICAgIGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgaWYgKCFjbG9zZWRQdXJwb3NlZnVsbHkpCi0gICAgICAgICAgICAgICAg
Y2FuY2VsU291cmNlKG5ldyBAVHlwZUVycm9yKCdkZXN0aW5hdGlvbiBpcyBjbG9zaW5nIG9yIGNs
b3NlZCBhbmQgY2Fubm90IGJlIHBpcGVkIHRvIGFueW1vcmUnKSk7CisgICAgICAgICAgICAgICAg
Y2FuY2VsU291cmNlKEBtYWtlVHlwZUVycm9yKCdkZXN0aW5hdGlvbiBpcyBjbG9zaW5nIG9yIGNs
b3NlZCBhbmQgY2Fubm90IGJlIHBpcGVkIHRvIGFueW1vcmUnKSk7CiAgICAgICAgIH0sCiAgICAg
ICAgIGNhbmNlbFNvdXJjZQogICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmpzIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5qcwppbmRleCBlM2I0MzJk
Mjc1YzRjZDFkN2JmODU5Y2NhZTc0ZWU5NjRhM2Y1ZDM2Li4zYWMwNGEzYTc0ZWRhMGJiZWY1MzQy
MWQ2YzZjYTA5ZWM0MmM1OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuanMKQEAgLTQ5LDcgKzQ5LDcg
QEAgZnVuY3Rpb24gY2FuY2VsKHJlYXNvbikKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWpl
Y3QoQG1ha2VUaGlzVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIiLCAiY2FuY2Vs
IikpOwogCiAgICAgaWYgKCFAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgIm93bmVyUmVhZGFi
bGVTdHJlYW0iKSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJy
b3IoImNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJl
YW0iKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJj
YW5jZWwoKSBjYWxsZWQgb24gYSByZWFkZXIgb3duZWQgYnkgbm8gcmVhZGFibGUgc3RyZWFtIikp
OwogCiAgICAgcmV0dXJuIEByZWFkYWJsZVN0cmVhbVJlYWRlckdlbmVyaWNDYW5jZWwodGhpcywg
cmVhc29uKTsKIH0KQEAgLTYyLDE2ICs2MiwxNiBAQCBmdW5jdGlvbiByZWFkKHZpZXcpCiAgICAg
ICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVGhpc1R5cGVFcnJvcigiUmVhZGFibGVT
dHJlYW1CWU9CUmVhZGVyIiwgInJlYWQiKSk7CiAKICAgICBpZiAoIUBnZXRCeUlkRGlyZWN0UHJp
dmF0ZSh0aGlzLCAib3duZXJSZWFkYWJsZVN0cmVhbSIpKQotICAgICAgICByZXR1cm4gQFByb21p
c2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigicmVhZCgpIGNhbGxlZCBvbiBhIHJlYWRlciBvd25l
ZCBieSBubyByZWFkYWJsZSBzdHJlYW0iKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVq
ZWN0KEBtYWtlVHlwZUVycm9yKCJyZWFkKCkgY2FsbGVkIG9uIGEgcmVhZGVyIG93bmVkIGJ5IG5v
IHJlYWRhYmxlIHN0cmVhbSIpKTsKIAogICAgIGlmICghQGlzT2JqZWN0KHZpZXcpKQotICAgICAg
ICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiUHJvdmlkZWQgdmlldyBp
cyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFr
ZVR5cGVFcnJvcigiUHJvdmlkZWQgdmlldyBpcyBub3QgYW4gb2JqZWN0IikpOwogCiAgICAgaWYg
KCFAQXJyYXlCdWZmZXIuQGlzVmlldyh2aWV3KSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLkBy
ZWplY3QobmV3IEBUeXBlRXJyb3IoIlByb3ZpZGVkIHZpZXcgaXMgbm90IGFuIEFycmF5QnVmZmVy
VmlldyIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3Io
IlByb3ZpZGVkIHZpZXcgaXMgbm90IGFuIEFycmF5QnVmZmVyVmlldyIpKTsKIAogICAgIGlmICh2
aWV3LmJ5dGVMZW5ndGggPT09IDApCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5l
dyBAVHlwZUVycm9yKCJQcm92aWRlZCB2aWV3IGNhbm5vdCBoYXZlIGEgMCBieXRlTGVuZ3RoIikp
OworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiUHJvdmlk
ZWQgdmlldyBjYW5ub3QgaGF2ZSBhIDAgYnl0ZUxlbmd0aCIpKTsKIAogICAgIHJldHVybiBAcmVh
ZGFibGVTdHJlYW1CWU9CUmVhZGVyUmVhZCh0aGlzLCB2aWV3KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIu
anMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyLmpzCmluZGV4IGRhNzVhM2Y2MjlhNDFhYzg0ODljY2U5ZmRiMmVjZWVlYTdmMmYwM2Iu
LmZiZTIyOWYyYWRiOGYyY2U4YWFhZTUxNzk2MWYxOGNlNDg2MWM0MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtRGVm
YXVsdFJlYWRlci5qcwpAQCAtNDgsNyArNDgsNyBAQCBmdW5jdGlvbiBjYW5jZWwocmVhc29uKQog
ICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFrZVRoaXNUeXBlRXJyb3IoIlJlYWRh
YmxlU3RyZWFtRGVmYXVsdFJlYWRlciIsICJjYW5jZWwiKSk7CiAKICAgICBpZiAoIUBnZXRCeUlk
RGlyZWN0UHJpdmF0ZSh0aGlzLCAib3duZXJSZWFkYWJsZVN0cmVhbSIpKQotICAgICAgICByZXR1
cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiY2FuY2VsKCkgY2FsbGVkIG9uIGEg
cmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoImNhbmNlbCgpIGNhbGxlZCBvbiBhIHJlYWRl
ciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0iKSk7CiAKICAgICByZXR1cm4gQHJlYWRhYmxl
U3RyZWFtUmVhZGVyR2VuZXJpY0NhbmNlbCh0aGlzLCByZWFzb24pOwogfQpAQCAtNjAsNyArNjAs
NyBAQCBmdW5jdGlvbiByZWFkKCkKICAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlcih0aGlzKSkKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUaGlzVHlw
ZUVycm9yKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIiLCAicmVhZCIpKTsKICAgICBpZiAo
IUBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAib3duZXJSZWFkYWJsZVN0cmVhbSIpKQotICAg
ICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigicmVhZCgpIGNhbGxl
ZCBvbiBhIHJlYWRlciBvd25lZCBieSBubyByZWFkYWJsZSBzdHJlYW0iKSk7CisgICAgICAgIHJl
dHVybiBAUHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJyZWFkKCkgY2FsbGVkIG9uIGEg
cmVhZGVyIG93bmVkIGJ5IG5vIHJlYWRhYmxlIHN0cmVhbSIpKTsKIAogICAgIHJldHVybiBAcmVh
ZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyUmVhZCh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwpp
bmRleCA1MWYwMTk4NzE4NWI5OWEwYjNkN2IyYTFiMjFlZWZiZTkxMmU0ZDk1Li4zYTMyZmU0Mzdk
NmU2NDFmMGE3MGQ1OWE2NjllYzU5ODI1OGY2NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC01
MTQsOSArNTE0LDkgQEAgZnVuY3Rpb24gcmVhZGFibGVTdHJlYW1SZWFkZXJHZW5lcmljUmVsZWFz
ZShyZWFkZXIpCiAgICAgQGFzc2VydChAZ2V0QnlJZERpcmVjdFByaXZhdGUoQGdldEJ5SWREaXJl
Y3RQcml2YXRlKHJlYWRlciwgIm93bmVyUmVhZGFibGVTdHJlYW0iKSwgInJlYWRlciIpID09PSBy
ZWFkZXIpOwogCiAgICAgaWYgKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShAZ2V0QnlJZERpcmVjdFBy
aXZhdGUocmVhZGVyLCAib3duZXJSZWFkYWJsZVN0cmVhbSIpLCAic3RhdGUiKSA9PT0gQHN0cmVh
bVJlYWRhYmxlKQotICAgICAgICBAZ2V0QnlJZERpcmVjdFByaXZhdGUocmVhZGVyLCAiY2xvc2Vk
UHJvbWlzZUNhcGFiaWxpdHkiKS5AcmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIG5ldyBAVHlwZUVy
cm9yKCJyZWxlYXNpbmcgbG9jayBvZiByZWFkZXIgd2hvc2Ugc3RyZWFtIGlzIHN0aWxsIGluIHJl
YWRhYmxlIHN0YXRlIikpOworICAgICAgICBAZ2V0QnlJZERpcmVjdFByaXZhdGUocmVhZGVyLCAi
Y2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkiKS5AcmVqZWN0LkBjYWxsKEB1bmRlZmluZWQsIEBtYWtl
VHlwZUVycm9yKCJyZWxlYXNpbmcgbG9jayBvZiByZWFkZXIgd2hvc2Ugc3RyZWFtIGlzIHN0aWxs
IGluIHJlYWRhYmxlIHN0YXRlIikpOwogICAgIGVsc2UKLSAgICAgICAgQHB1dEJ5SWREaXJlY3RQ
cml2YXRlKHJlYWRlciwgImNsb3NlZFByb21pc2VDYXBhYmlsaXR5IiwgeyBAcHJvbWlzZTogQG5l
d0hhbmRsZWRSZWplY3RlZFByb21pc2UobmV3IEBUeXBlRXJyb3IoInJlYWRlciByZWxlYXNlZCBs
b2NrIikpIH0pOworICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUocmVhZGVyLCAiY2xvc2Vk
UHJvbWlzZUNhcGFiaWxpdHkiLCB7IEBwcm9taXNlOiBAbmV3SGFuZGxlZFJlamVjdGVkUHJvbWlz
ZShAbWFrZVR5cGVFcnJvcigicmVhZGVyIHJlbGVhc2VkIGxvY2siKSkgfSk7CiAKICAgICBAcHV0
QnlJZERpcmVjdFByaXZhdGUoQGdldEJ5SWREaXJlY3RQcml2YXRlKHJlYWRlciwgImNsb3NlZFBy
b21pc2VDYXBhYmlsaXR5IikuQHByb21pc2UsICJwcm9taXNlSXNIYW5kbGVkIiwgdHJ1ZSk7CiAg
ICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShyZWFkZXIsICJv
d25lclJlYWRhYmxlU3RyZWFtIiksICJyZWFkZXIiLCBAdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcwppbmRleCA1ZGE1NGQy
M2UwMzViMzhiMjUyMDEzMmQ1ZTBlZWQ5MmE4ODFhZjg0Li5mNjhhZGZiMTFkYTVjNjc5NzgwMjkw
MGE4NmExMDM4NmZmZGRiM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvV3JpdGFibGVTdHJlYW0uanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1dyaXRhYmxlU3RyZWFtLmpzCkBAIC03MCw3ICs3MCw3IEBAIGZ1bmN0aW9uIGFib3J0KHJl
YXNvbikKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRo
aXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhl
IFdyaXRhYmxlU3RyZWFtLmFib3J0IG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3Qo
QG1ha2VUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS5hYm9ydCBtZXRob2QgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CiAKICAgICBjb25zdCBz
dGF0ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic3RhdGUiKTsKICAgICBpZiAoc3Rh
dGUgPT09IEBzdHJlYW1DbG9zZWQpCkBAIC04OSwxMSArODksMTEgQEAgZnVuY3Rpb24gY2xvc2Uo
KQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykp
Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJUaGUgV3Jp
dGFibGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
IFdyaXRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChAbWFr
ZVR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNsb3NlIG1ldGhvZCBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKIAogICAgIGNvbnN0IHN0YXRl
ID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJzdGF0ZSIpOwogICAgIGlmIChzdGF0ZSA9
PT0gQHN0cmVhbUNsb3NlZCB8fCBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NpbmcpCi0gICAgICAgIHJl
dHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJDYW5ub3QgY2xvc2UgYSBXcml0
YWJsZVN0cmluZyB0aGF0IGlzIGNsb3NlZCBvciBjbG9zaW5nIikpOworICAgICAgICByZXR1cm4g
QFByb21pc2UuQHJlamVjdChAbWFrZVR5cGVFcnJvcigiQ2Fubm90IGNsb3NlIGEgV3JpdGFibGVT
dHJpbmcgdGhhdCBpcyBjbG9zZWQgb3IgY2xvc2luZyIpKTsKIAogICAgIGlmIChzdGF0ZSA9PT0g
QHN0cmVhbUVycm9yZWQpCiAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KEBnZXRCeUlk
RGlyZWN0UHJpdmF0ZSh0aGlzLCAic3RvcmVkRXJyb3IiKSk7CkBAIC0xMTMsMTEgKzExMywxMSBA
QCBmdW5jdGlvbiB3cml0ZShjaHVuaykKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBp
c1dyaXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChu
ZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLndyaXRlIG1ldGhvZCBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJu
IEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS53cml0
ZSBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0i
KSk7CiAKICAgICBjb25zdCBzdGF0ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic3Rh
dGUiKTsKICAgICBpZiAoc3RhdGUgPT09IEBzdHJlYW1DbG9zZWQgfHwgc3RhdGUgPT09IEBzdHJl
YW1DbG9zaW5nKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJv
cigiQ2Fubm90IHdyaXRlIG9uIGEgV3JpdGFibGVTdHJpbmcgdGhhdCBpcyBjbG9zZWQgb3IgY2xv
c2luZyIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoQG1ha2VUeXBlRXJyb3Io
IkNhbm5vdCB3cml0ZSBvbiBhIFdyaXRhYmxlU3RyaW5nIHRoYXQgaXMgY2xvc2VkIG9yIGNsb3Np
bmciKSk7CiAKICAgICBpZiAoc3RhdGUgPT09IEBzdHJlYW1FcnJvcmVkKQogICAgICAgICByZXR1
cm4gQFByb21pc2UuQHJlamVjdCh0aGlzLkBzdG9yZWRFcnJvcik7CkBAIC0xNTQsNyArMTU0LDcg
QEAgZnVuY3Rpb24gY2xvc2VkKCkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dy
aXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcg
QFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNsb3NlZCBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CisgICAgICAgIHJldHVybiBA
UHJvbWlzZS5AcmVqZWN0KEBtYWtlVHlwZUVycm9yKCJUaGUgV3JpdGFibGVTdHJlYW0uY2xvc2Vk
IGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIp
KTsKIAogICAgIHJldHVybiBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImNsb3NlZFByb21p
c2VDYXBhYmlsaXR5IikuQHByb21pc2U7CiB9CkBAIC0xNjUsNyArMTY1LDcgQEAgZnVuY3Rpb24g
cmVhZHkoKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0o
dGhpcykpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJU
aGUgV3JpdGFibGVTdHJlYW0ucmVhZHkgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mIFdyaXRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVj
dChAbWFrZVR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLnJlYWR5IGdldHRlciBjYW4gb25s
eSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKIAogICAgIHJldHVy
biBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgInJlYWR5UHJvbWlzZUNhcGFiaWxpdHkiKS5A
cHJvbWlzZTsKIH0K
</data>
<flag name="review"
          id="380052"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>