<?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>185065</bug_id>
          
          <creation_ts>2018-04-26 20:04:20 -0700</creation_ts>
          <short_desc>[JSC] Add SameValue DFG node</short_desc>
          <delta_ts>2020-04-17 09:01:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Safari 11</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=173226</see_also>
          <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>goktug</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1418382</commentid>
    <comment_count>0</comment_count>
    <who name="">goktug</who>
    <bug_when>2018-04-26 20:04:20 -0700</bug_when>
    <thetext>It seems like Object.is has very poor performance; even polyfill performs much better than the built-in method (2x). Also for comparison &quot;===&quot; performs ~10x.

See the following benchmarks:
https://jsperf.com/string-object-is-performance
https://jsperf.com/object-is-vs-polyfill

You can see similar issue fixed for V8 here:
https://bugs.chromium.org/p/v8/issues/detail?id=7007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418386</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-26 20:37:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/39781064&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418841</commentid>
    <comment_count>2</comment_count>
      <attachid>339081</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-28 16:35:38 -0700</bug_when>
    <thetext>Created attachment 339081
Patch

WIP: 64bit works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418850</commentid>
    <comment_count>3</comment_count>
      <attachid>339084</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-28 18:52:44 -0700</bug_when>
    <thetext>Created attachment 339084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418851</commentid>
    <comment_count>4</comment_count>
      <attachid>339085</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-28 18:54:12 -0700</bug_when>
    <thetext>Created attachment 339085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419530</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-01 20:30:17 -0700</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419562</commentid>
    <comment_count>6</comment_count>
      <attachid>339085</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-01 21:53:35 -0700</bug_when>
    <thetext>Comment on attachment 339085
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2643
&gt; +        if (argumentCountIncludingThis != 3)

Why not &lt; instead of !=?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6383
&gt; +        m_jit.compareDouble(CCallHelpers::DoubleNotEqualOrUnordered, arg1FPR, arg1FPR, tempGPR);

Since this code branches internally, it feels like we should only do it if the doubles aren’t bitwise equal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419574</commentid>
    <comment_count>7</comment_count>
      <attachid>339085</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-01 22:49:44 -0700</bug_when>
    <thetext>Comment on attachment 339085
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2643
&gt;&gt; +        if (argumentCountIncludingThis != 3)
&gt; 
&gt; Why not &lt; instead of !=?

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:6383
&gt;&gt; +        m_jit.compareDouble(CCallHelpers::DoubleNotEqualOrUnordered, arg1FPR, arg1FPR, tempGPR);
&gt; 
&gt; Since this code branches internally, it feels like we should only do it if the doubles aren’t bitwise equal

OK, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419575</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-01 22:51:39 -0700</bug_when>
    <thetext>Committed r231224: &lt;https://trac.webkit.org/changeset/231224&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419667</commentid>
    <comment_count>9</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-05-02 09:16:58 -0700</bug_when>
    <thetext>The test added with this change is failing on the 32-bit JSC bot:

stress/object-is.js.default: Exception: Error: bad value: true
stress/object-is.js.default: shouldBe@object-is.js:3:24
stress/object-is.js.default: global code@object-is.js:67:13
stress/object-is.js.default: ERROR: Unexpected exit code: 3
FAIL: stress/object-is.js.default

https://build.webkit.org/builders/Apple%20High%20Sierra%2032-bit%20JSC%20%28BuildAndTest%29/builds/1808</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419952</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-02 17:42:17 -0700</bug_when>
    <thetext>Committed r231284: &lt;https://trac.webkit.org/changeset/231284&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339081</attachid>
            <date>2018-04-28 16:35:38 -0700</date>
            <delta_ts>2018-04-28 18:52:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185065-20180429003536.patch</filename>
            <type>text/plain</type>
            <size>43388</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTJhYTQ0OWNhNTc5MmE4MTMyMGYxMWZmZjVjNzJiYmZlOGM0ZGUxLi45MDc1NWU4NzBlNjNiZDFi
MTBmNjQzZmUxYWZjZTE3MzgyNTdjNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxOC0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBQb29yIE9iamVjdC5pcyBwZXJmb3JtYW5jZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MDY1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNvbXBhcmVEb3VibGUpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29tcGFyZURvdWJsZSk6IERlbGV0ZWQuCisgICAgICAg
IFRoaXMgb2xkIGNvbXBhcmVEb3VibGUgd2FzIGRlYWQgY29kZSBzaW5jZSBNYWNyb0Fzc2VtYmxl
ciBoYXMgYSBnZW5lcmFsaXplZCBjb21wYXJlRG91YmxlLAorICAgICAgICB3aGljaCBqdXN0IHVz
ZXMgYnJhbmNoRG91YmxlLiBTaW5jZSB0aGlzIHdhcyBub3QgdXNlZCwgdGhpcyBmdW5jdGlvbiB3
YXMgYnJva2VuLiBUaGlzIHBhdGNoCisgICAgICAgIGZpeGVzIGlzc3VlcyBhbmQgbW92ZSBjb21w
YXJlRG91YmxlIHRvIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLCBhbmQgcmVtb3ZlIGEgZ2VuZXJh
bGl6ZWQKKyAgICAgICAgY29tcGFyZURvdWJsZSBmb3IgeDg2IGFyY2ggdG8gdXNlIHRoaXMgc3Bl
Y2lhbGl6ZWQgZWZmaWNpZW50IHZlcnNpb24gaW5zdGVhZC4KKworICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9s
ZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQ29tcGFyZVN0cmljdEVxQW5kU2FtZVZhbHVl
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZl
VG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVNhbWVWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVNhbWVWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5z
aWMuY3BwOgorICAgICAgICAoSlNDOjppbnRyaW5zaWNOYW1lKToKKyAgICAgICAgKiBydW50aW1l
L0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgor
CiAyMDE4LTA0LTI2ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBzdXBwb3J0IGZvciAiKiIgb3BlcmF0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5k
ZXggZDI1ZGEzYzFkNzRkZjYwZDBjYzM4ODk5YzMwZGQ1MjhjNzI5MjljZC4uODY3OTI2MWZiOGVi
ODg4OThjNGQwNmVlMWNkNzg5YzE5YTg3NGNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtMTQ1OSw5ICsxNDU5LDEwIEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAKICNlbmRp
ZiAvLyAhQ1BVKFg4Nl82NCkKIAotI2lmIEVOQUJMRShCM19KSVQpCiAgICAgLy8gV2Ugc2hvdWxk
IGltcGxlbWVudCB0aGlzIHRoZSByaWdodCB3YXkgZXZlbnR1YWxseSwgYnV0IGZvciBub3csIGl0
J3MgZmluZSBiZWNhdXNlIGl0IGFyaXNlcyBzbwogICAgIC8vIGluZnJlcXVlbnRseS4KKworI2lm
ICFDUFUoWDg2KSAmJiAhQ1BVKFg4Nl82NCkKICAgICB2b2lkIGNvbXBhcmVEb3VibGUoRG91Ymxl
Q29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCBkZXN0
KTsKQEAgLTE0NjksNiArMTQ3MCw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1h
Y3JvQXNzZW1ibGVyQmFzZSB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCBkZXN0KTsK
ICAgICAgICAgZmFsc2VDYXNlLmxpbmsodGhpcyk7CiAgICAgfQorI2VuZGlmCisKKyNpZiBFTkFC
TEUoQjNfSklUKQogICAgIHZvaWQgY29tcGFyZUZsb2F0KERvdWJsZUNvbmRpdGlvbiBjb25kLCBG
UFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgZGVzdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmgKaW5kZXggZThjODU5OTA2ZmVlMTJlZDVlMWE4OTA2YTk1ZmE0MjczOGJhMDFlOS4uMWE5OTI0
M2NjMWU1ZDdmYmZlMjc5ZTEwOWNiYjFlNWU1YmI2NTJiZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApA
QCAtMjAwNCw2ICsyMDA0LDQ4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVi
bGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBq
dW1wQWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdodCk7CiAgICAgfQog
CisgICAgdm9pZCBjb21wYXJlRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVy
SUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBpZiAoY29uZCAmIERvdWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwpIHsKKyAgICAgICAgICAg
IEFTU0VSVCghKGNvbmQgJiBEb3VibGVDb25kaXRpb25CaXRJbnZlcnQpKTsKKyAgICAgICAgICAg
IGlmIChjb25kID09IERvdWJsZUVxdWFsKSB7CisgICAgICAgICAgICAgICAgaWYgKGxlZnQgPT0g
cmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9ycihyaWdo
dCwgbGVmdCk7CisgICAgICAgICAgICAgICAgICAgIHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0
aW9uTlAsIGRlc3QpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIGRlc3QpOworICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2RfcnIocmlnaHQsIGxlZnQpOworICAgICAg
ICAgICAgICAgIEp1bXAgaXNVbm9yZGVyZWQobV9hc3NlbWJsZXIuanAoKSk7CisgICAgICAgICAg
ICAgICAgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb25FLCBkZXN0KTsKKyAgICAgICAgICAg
ICAgICBpc1Vub3JkZXJlZC5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb25kID09IERvdWJsZU5vdEVxdWFsT3JVbm9y
ZGVyZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkgeworICAgICAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNkX3JyKHJpZ2h0LCBsZWZ0KTsKKyAgICAgICAg
ICAgICAgICAgICAgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb25QLCBkZXN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCBkZXN0KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci51Y29taXNkX3JyKHJpZ2h0LCBsZWZ0KTsKKyAgICAgICAgICAgICAgICBKdW1wIGlzVW5v
cmRlcmVkKG1fYXNzZW1ibGVyLmpwKCkpOworICAgICAgICAgICAgICAgIHNldDMyKFg4NkFzc2Vt
Ymxlcjo6Q29uZGl0aW9uTkUsIGRlc3QpOworICAgICAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxp
bmsodGhpcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbmQgJiBEb3VibGVDb25k
aXRpb25CaXRJbnZlcnQpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNkX3JyKGxlZnQs
IHJpZ2h0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9y
cihyaWdodCwgbGVmdCk7CisgICAgICAgIHNldDMyKHN0YXRpY19jYXN0PFg4NkFzc2VtYmxlcjo6
Q29uZGl0aW9uPihjb25kICYgfkRvdWJsZUNvbmRpdGlvbkJpdHMpLCBkZXN0KTsKKyAgICB9CisK
ICAgICAvLyBUcnVuY2F0ZXMgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVz
dWx0aW5nICdkZXN0Jy4KICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxl
IGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFsc28gYnJhbmNoIGZvciBz
b21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApp
bmRleCBkNDQyOGNjNTNkMDUyOWE1YzFhMjdiOTNkMmUxYzEzYTY2YTEzNzkwLi5kNTUwYTg4YTFm
ODliMGZkNDlmNGQ3ZDM0YTU0MDliZDlhZDMzZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC05ODMsNDAg
Kzk4Myw2IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2XzY0IDogcHVibGljIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uIHsKICAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNvbmQpLCBkZXN0KTsK
ICAgICB9CiAKLSAgICB2b2lkIGNvbXBhcmVEb3VibGUoRG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQ
UmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAg
ICB7Ci0gICAgICAgIGlmIChjb25kICYgRG91YmxlQ29uZGl0aW9uQml0SW52ZXJ0KQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9ycihsZWZ0LCByaWdodCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2RfcnIocmlnaHQsIGxlZnQpOwotCi0gICAg
ICAgIGlmIChjb25kID09IERvdWJsZUVxdWFsKSB7Ci0gICAgICAgICAgICBpZiAobGVmdCA9PSBy
aWdodCkgewotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNldG5wX3IoZGVzdCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBKdW1wIGlz
VW5vcmRlcmVkKG1fYXNzZW1ibGVyLmpwKCkpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2V0
ZV9yKGRlc3QpOwotICAgICAgICAgICAgaXNVbm9yZGVyZWQubGluayh0aGlzKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb25kID09IERvdWJsZU5vdEVx
dWFsT3JVbm9yZGVyZWQpIHsKLSAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KSB7Ci0gICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2V0cF9yKGRlc3QpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2V0cF9yKGRl
c3QpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2V0bmVfcihkZXN0KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVCghKGNvbmQgJiBEb3VibGVDb25k
aXRpb25CaXRTcGVjaWFsKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnNldENDX3Ioc3RhdGljX2Nh
c3Q8WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQgJiB+RG91YmxlQ29uZGl0aW9uQml0cyks
IGRlc3QpOwotICAgIH0KLQogICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5jbXBxX3JyKHJpZ2h0LCBsZWZ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA2
Zjg1NzM0MGIwZjc5NDIwYTcwMzVlNGQ3ZDU5MTE2NDUxZDZlMjE0Li5kYTY5ZjQ0YjkyZTFmYmI1
NmNlNGJhNTg4MGFmODVlZDcwNDhkZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xNjczLDcg
KzE2NzMsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgICAgICAKLSAgICBjYXNlIENvbXBhcmVTdHJpY3RFcTogeworICAgIGNhc2UgQ29t
cGFyZVN0cmljdEVxOgorICAgIGNhc2UgU2FtZVZhbHVlOiB7CiAgICAgICAgIE5vZGUqIGxlZnRO
b2RlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgpOwogICAgICAgICBOb2RlKiByaWdodE5vZGUgPSBu
b2RlLT5jaGlsZDIoKS5ub2RlKCk7CiAgICAgICAgIEpTVmFsdWUgbGVmdCA9IGZvck5vZGUobGVm
dE5vZGUpLnZhbHVlKCk7CkBAIC0xNjg5LDcgKzE2OTAsMTAgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jv
b2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoMCwgbGVmdCwgcmlnaHQpKSk7CisgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ29tcGFyZVN0cmljdEVxKQorICAgICAgICAgICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwobnVs
bHB0ciwgbGVmdCwgcmlnaHQpKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oc2FtZVZhbHVlKG51bGxwdHIsIGxl
ZnQsIHJpZ2h0KSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDY2MTMyZmFhMGQwYzlhMWJhNTQ5MGVlZDA2Y2Q2ZTY1M2UyYmZjMTUuLjY1NzZi
NGVlYjExY2M4MDNiYjU1NmMzYWIyZmIyMTJhMjMxZDFhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjM5LDYgKzI2MzksMTUg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUs
IGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CisgICAgY2FzZSBPYmplY3RJc0ludHJpbnNpYzogeworICAgICAgICBpZiAoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgIT0gMykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVy
YW5kKSwgYWRkVG9HcmFwaChTYW1lVmFsdWUsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dCgxLCByZWdpc3Rlck9mZnNldCkpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMiwg
cmVnaXN0ZXJPZmZzZXQpKSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBj
YXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzogewogICAgICAgICBpZiAoYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMjRmZDk0MTNjYWI0
OTRmYjdmNWVhZjM2N2IxMmI2MDQ2NzFiYWI0Zi4uOGE3MzY1MjExOTc5NGNhYTMzOTEwMjNlZmNm
NGY4Mjc4MzZlNDBhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTE2NSw2ICsxNjUsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
R2V0R2xvYmFsT2JqZWN0OgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIENv
bXBhcmVTdHJpY3RFcToKKyAgICBjYXNlIFNhbWVWYWx1ZToKICAgICBjYXNlIElzRW1wdHk6CiAg
ICAgY2FzZSBJc1VuZGVmaW5lZDoKICAgICBjYXNlIElzQm9vbGVhbjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXgg
ZTQ2NTBhYzMwODBmNmI0MjBiNjM3OGI2NjVjZWQ1MjZiYjlkZTVhNy4uN2UyYzc1NGQzYmRkZTdh
YmMyMGVhNjgzY2ZlYmE2NTVjNDk2MWZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTE0MCw3ICsxNDAsOCBA
QCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgQ29tcGFyZVN0
cmljdEVxOiB7CisgICAgICAgICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKKyAgICAgICAgICAg
IGNhc2UgU2FtZVZhbHVlOiB7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChVbnR5cGVkVXNlKSkgewogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIGNoaWxkMUNv
bnN0YW50ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkudmFsdWUoKTsK
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBjaGlsZDJDb25zdGFudCA9IG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDIoKS5ub2RlKCkpLnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMzkwYjRlM2ExYmQyMmM3NTJkZGJmZTRiZWJlYTI2YTUy
ZWZhNzA4My4uM2VmOGY1OGEyNmQyNWQ5MjhhOWIxZGEzYTA5ZTFmOTA1OTE4NjE3MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTUzLDYgKzE1Myw3IEBAIGJv
b2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENvbXBhcmVFcToK
ICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICBjYXNlIENvbXBhcmVFcVB0cjoKKyAgICBj
YXNlIFNhbWVWYWx1ZToKICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAg
IGNhc2UgVGFpbENhbGxJbmxpbmVkQ2FsbGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKaW5kZXggNDdkMGU2NmIzODYwMjE5MWVkYzcwNTRjNjE5ZDFiNmY2
MTMxM2FjNi4uY2MwMTdlNTdiYzhhY2Y5N2NjYzY5ZTE3MmE1OGJjMDE2MjUwY2IzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC01ODksMTA2ICs1
ODksMTIgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQ29tcGFyZVN0cmlj
dEVxOiB7Ci0gICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQm9vbGVhbihub2Rl
LT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVuYWJsZUludDUy
KCkKLSAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVBbnlJbnQobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxh
dGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNo
aWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5j
aGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRV
c2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
SWRlbnQoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkg
ewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDIo
KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpICYmIG5vZGUtPmNoaWxk
MigpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSAmJiAoKEdQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzID49IDcpIHx8IGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSkgewotICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJhZGVz
QXNVbmRlZmluZWRXYXRjaHBvaW50ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKTsKLSAgICAg
ICAgICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludC0+aXNTdGlsbFZhbGlk
KCkpIHsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnQpOwotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkg
ewotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KG1h
c3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KTsKLSAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgJiYgbm9kZS0+
Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PE9iamVjdFVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVTeW1ib2woKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKSB7Ci0gICAg
ICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlTWlzYygpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxN
aXNjVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU1p
c2MoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWlzY1VzZT4obm9kZS0+Y2hpbGQyKCkp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpCi0gICAgICAgICAg
ICAgICAgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU5vdFN0cmluZ1ZhcigpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Tm90U3RyaW5nVmFyVXNlPihub2RlLT5jaGlsZDIo
KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkKLSAgICAgICAg
ICAgICAgICAmJiBub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTm90U3RyaW5nVmFyKCkp
IHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDIo
KSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxOb3RTdHJpbmdWYXJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkgJiYgKChHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVycyA+PSA4KSB8fCBpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkp
IHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSAmJiAoKEdQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzID49IDgpIHx8IGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSkgewotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgIGNhc2UgQ29tcGFyZVN0cmlj
dEVxOgorICAgICAgICBjYXNlIFNhbWVWYWx1ZTogeworICAgICAgICAgICAgZml4dXBDb21wYXJl
U3RyaWN0RXFBbmRTYW1lVmFsdWUobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICAgICAgCisKICAgICAgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6CiAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKICAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CkBAIC0zNDc0
LDYgKzMzODAsMTM4IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICB9CiAgICAgfQogCisgICAgdm9pZCBmaXh1cENvbXBhcmVTdHJpY3RFcUFuZFNhbWVWYWx1ZShO
b2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2FtZVZhbHVl
IHx8IG5vZGUtPm9wKCkgPT0gQ29tcGFyZVN0cmljdEVxKTsKKworICAgICAgICBpZiAoTm9kZTo6
c2hvdWxkU3BlY3VsYXRlQm9vbGVhbihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxk
MigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChOb2RlOjpzaG91
bGRTcGVjdWxhdGVJbnQzMihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5v
ZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVuYWJsZUludDUyKCkKKyAgICAg
ICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUFueUludChub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJS
ZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdz
KENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVw
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgLy8gS2VlcCBTYW1lVmFsdWUgYW5kIENvbXBh
cmVTdHJpY3RFcSBzaW5jZSBTYW1lVmFsdWUoTmFOLCBOYU4pIGlzIG5vdCB0aGUgc2FtZSB0bwor
ICAgICAgICAgICAgLy8gQ29tcGFyZVN0cmljdEVxKE5hTiwgTmFOKS4KKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlU3ltYm9s
KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAg
ICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZp
eEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRP
cEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVCaWdJbnQobm9kZS0+
Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICBm
aXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxC
aWdJbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVm
YXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVu
dCgpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpKSB7Cisg
ICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlU3RyaW5nKCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0
cmluZygpICYmICgoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNykgfHwgaXNGVEwobV9n
cmFwaC5tX3BsYW4ubW9kZSkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJp
Y3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBTYW1lVmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE9iamVj
dFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVm
YXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxh
dGVPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29t
cGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBXYXRjaHBvaW50U2V0KiBtYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCk7CisgICAgICAg
ICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQtPmlzU3RpbGxWYWxpZCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVP
YmplY3QoKSkgeworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRk
TGF6aWx5KG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KTsKKyAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkobWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnQpOworICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlT2JqZWN0KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7
CisgICAgICAgICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpIHsKKyAgICAgICAgICAg
IGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5z
ZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRl
U3ltYm9sKCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0
RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTWlzYygpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE1p
c2NVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVs
dEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVNaXNjKCkpIHsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8TWlzY1VzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
bm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZVN0cmluZ0lkZW50KCkKKyAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLT5zaG91
bGRTcGVjdWxhdGVOb3RTdHJpbmdWYXIoKSkgeworICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJ
ZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxOb3RTdHJpbmdW
YXJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVs
dEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgp
CisgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTm90U3RyaW5n
VmFyKCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8Tm90U3RyaW5nVmFyVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0
RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkgJiYgKChHUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVycyA+PSA4KSB8fCBpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkpIHsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2Rl
LT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3Vs
YXRlU3RyaW5nKCkgJiYgKChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA4KSB8fCBpc0ZU
TChtX2dyYXBoLm1fcGxhbi5tb2RlKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFn
cyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCiAgICAgdm9pZCBmaXh1cENoZWNrc0luQmxvY2soQmFzaWNCbG9jayogYmxvY2spCiAgICAg
ewogICAgICAgICBpZiAoIWJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCmluZGV4IGQ2MzBiMWQ2MWVjNmYzNmE3MDIzYjlhNjNkNjg3NDliYjBiMmI5NjQuLmVmMzg2
MjBhZmM1ZGRlMjA2MDlkNjM4OWVlODEyNjMxOGQxMTRhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ29tcGFyZUVxLCBOb2RlUmVzdWx0Qm9vbGVhbiB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDb21wYXJlU3RyaWN0RXEsIE5vZGVSZXN1
bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oQ29tcGFyZUVxUHRyLCBOb2RlUmVzdWx0Qm9vbGVhbikg
XAorICAgIG1hY3JvKFNhbWVWYWx1ZSwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBcCiAgICAg
LyogQ2FsbHMuICovXAogICAgIG1hY3JvKENhbGwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKaW5kZXggZjhmYTkyOTVmZmRiN2U5Mzk4Njk0OWU1ZTNmMDcxMjZmOWM1
MzQwNy4uZTc5ZDU4NTIwMDFlOTc2ZTllNDliMjMxOWYwYWZiZDU2ZWQ1MGQyNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xMjM3LDYgKzEyMzcs
MTQgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChF
eGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3AxLAogICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RF
cXVhbFNsb3dDYXNlSW5saW5lKGV4ZWMsIG9wMSwgb3AyKTsKIH0KIAorc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU2FtZVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
YXJnMSwgRW5jb2RlZEpTVmFsdWUgYXJnMikKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIHJldHVy
biBzYW1lVmFsdWUoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGFyZzEpLCBKU1ZhbHVlOjpkZWNvZGUo
YXJnMikpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCmluZGV4IGY0OGY5YWI4OWYxOGY5ZTIyMTk5ODdiZWE2Y2MzMWZmMTM5MWIwZDEuLmRkNjJi
NGVjZDYwMGQ3ZWE3OGI1ZjcyOGExNTY4MDNmMzc2NDQ1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0xNjEsNiArMTYxLDcgQEAgc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyhFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIFJlZ0UKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdl
bmVyaWMoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcUNlbGwoRXhlY1N0YXRlKiwgSlNDZWxsKiBvcDEsIEpTQ2VsbCogb3AyKSBX
VEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TYW1lVmFsdWUoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1
ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRz
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgbWluQ2Fw
YWNpdHkpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3Vt
ZW50c0R1cmluZ0V4aXQoRXhlY1N0YXRlKiwgSW5saW5lQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbios
IHVpbnQzMl90IGFyZ3VtZW50Q291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA0Nzc0
Mzg1M2JjOTdhYTYxYTg5M2Q4NDJlZWYxY2ZmYTVjZDQ5NmI1Li4yZjY3Y2RhODAxMjMzYzYxZDE5
MzcwNzg1ZDY3YWU5NTllZDcxMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtODUwLDYg
Kzg1MCw3IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgY2FzZSBDb21wYXJlRXE6CiAgICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVx
OgogICAgICAgICBjYXNlIENvbXBhcmVFcVB0cjoKKyAgICAgICAgY2FzZSBTYW1lVmFsdWU6CiAg
ICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgSW5zdGFuY2VP
ZjoKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mQ3VzdG9tOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCA2YmM3NDUxM2VlZThkYTMxY2Q0OTM0Mjcz
OGFmMWE3MDNhNzM1ZGUzLi5mNjJiZTBiMmUzYTQ3Mzc5ZTFkZDFiNTY3NDNlZmI0YzgxMjNhMWUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAt
Mjc4LDYgKzI3OCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3Rh
dGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENvbXBhcmVFcToKICAgICBj
YXNlIENvbXBhcmVTdHJpY3RFcToKICAgICBjYXNlIENvbXBhcmVFcVB0cjoKKyAgICBjYXNlIFNh
bWVWYWx1ZToKICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgIGNhc2Ug
VGFpbENhbGxJbmxpbmVkQ2FsbGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBkZjY5MjI3OTU4MmQ5YTVlN2ZjZGEwMWU0NThlYmJi
MDEwNmZiY2RmLi4yZmYxYzU0MDE3M2YzNjU5OWRkYmFjMTE0MGIwNWM5YTgwODdmZWMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAt
NjM2NSw2ICs2MzY1LDYxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdJZGVu
dENvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0CiAgICAgdW5ibGVzc2Vk
Qm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU2FtZVZhbHVlKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChEb3VibGVSZXBVc2UpKSB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQg
YXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcDIodGhpcyk7CisKKyAgICAgICAgRlBSUmVnIGFyZzFGUFIgPSBhcmcxLmZw
cigpOworICAgICAgICBGUFJSZWcgYXJnMkZQUiA9IGFyZzIuZnByKCk7CisgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVt
cC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHRlbXAyR1BSID0gdGVtcDIuZ3ByKCk7CisKKyAgICAg
ICAgbV9qaXQuY29tcGFyZURvdWJsZShDQ2FsbEhlbHBlcnM6OkRvdWJsZU5vdEVxdWFsT3JVbm9y
ZGVyZWQsIGFyZzFGUFIsIGFyZzFGUFIsIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5jb21wYXJl
RG91YmxlKENDYWxsSGVscGVyczo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgYXJnMkZQUiwg
YXJnMkZQUiwgdGVtcDJHUFIpOworICAgICAgICBtX2ppdC5vcjMyKHRlbXBHUFIsIHRlbXAyR1BS
LCByZXN1bHRHUFIpOworICAgICAgICBhdXRvIG5vdE5hTkNhc2UgPSBtX2ppdC5icmFuY2hUZXN0
MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5hbmQzMih0
ZW1wR1BSLCB0ZW1wMkdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgYXV0byBkb25lID0gbV9qaXQu
anVtcCgpOworCisgICAgICAgIG5vdE5hTkNhc2UubGluaygmbV9qaXQpOworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIG1faml0Lm1vdmVEb3VibGVUbzY0KGFyZzFGUFIsIHRlbXBHUFIpOwor
ICAgICAgICBtX2ppdC5tb3ZlRG91YmxlVG82NChhcmcyRlBSLCB0ZW1wMkdQUik7CisgICAgICAg
IG1faml0LmNvbXBhcmU2NChDQ2FsbEhlbHBlcnM6OkVxdWFsLCB0ZW1wR1BSLCB0ZW1wMkdQUiwg
cmVzdWx0R1BSKTsKKyNlbHNlCisjZW5kaWYKKworICAgICAgICBkb25lLmxpbmsoJm1faml0KTsK
KyAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5
cGVkVXNlKSk7CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBK
U1ZhbHVlUmVncyBhcmcxUmVncyA9IGFyZzEuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVn
cyBhcmcyUmVncyA9IGFyZzIuanNWYWx1ZVJlZ3MoKTsKKworICAgIGFyZzEudXNlKCk7CisgICAg
YXJnMi51c2UoKTsKKworICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisKKyAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNhbWVWYWx1ZSwgcmVzdWx0R1BSLCBhcmcx
UmVncywgYXJnMlJlZ3MpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICB1bmJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBs
aWNpdGx5KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1plcm9MZW5n
dGgoTm9kZSogbm9kZSkKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzdHIodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCmluZGV4IGJiZjE3NGM3Zjc0MzhkODVmY2U3NTg0ZGYwMGFkZTZmM2JlZmNjMTQuLjcw
OTdhYjhlZTBiYWQ4Yzc2M2I4MjE4ZDA4NjM0ZGY3NzJhY2UxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEyNjMsNiArMTI2Myw4IEBA
IGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdJZGVudENvbXBh
cmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICAKICAg
ICBib29sIGNvbXBpbGVTdHJpY3RFcShOb2RlKik7CisKKyAgICB2b2lkIGNvbXBpbGVTYW1lVmFs
dWUoTm9kZSopOwogICAgIAogICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKE5vZGUq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCmluZGV4IDk5YmZhMDk4ODBkNDk4Nzk2MzdiZjhhMDczMjY5MGE4ZTYxNWFkNGIu
LjU1NzA5ZjkzMGVlNzg3ZTVmOWFmYjhjYTI4MTE2YTZhZTk4NmNmZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAt
MjIxMSw2ICsyMjExLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgY29tcGlsZUNvbXBhcmVFcVB0cihub2RlKTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIFNhbWVWYWx1ZToKKyAgICAgICAgY29tcGlsZVNhbWVWYWx1ZShub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6IHsKICAgICAgICAgY29t
cGlsZUdldENoYXJDb2RlQXQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNWM5ODBlNGEx
ZjQ1NDlkY2Q3MTE5ZDY5ZTJmNGJjZjIzYzkzNjY0Yi4uNTExOTM0ODM4N2I0MmFlZjYxNmVhNjFl
ZGQ1ZjFjMDU2MmQ5NzlkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0yMzc3LDYgKzIzNzcsMTAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ29tcGFyZUVxUHRy
KG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgU2FtZVZhbHVlOgorICAgICAgICBj
b21waWxlU2FtZVZhbHVlKG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgU3RyaW5n
Q2hhckNvZGVBdDogewogICAgICAgICBjb21waWxlR2V0Q2hhckNvZGVBdChub2RlKTsKICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4
IGU5NDc4MzM1MzA0MmM5ODAyMDU0NTFkOWEwZmE0ODhhZmFmNjYzMmIuLmQ3NzI2YmJlMWRmNGMy
YjBiNzJkOTczMDRiZjg3NzdjYmRkMWU1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsaWRhdGUuY3BwCkBAIC0yNzEsNiArMjcxLDcgQEAgY2xhc3MgVmFsaWRhdGUgewogICAg
ICAgICAgICAgICAgIGNhc2UgQ29tcGFyZUJlbG93RXE6CiAgICAgICAgICAgICAgICAgY2FzZSBD
b21wYXJlRXE6CiAgICAgICAgICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CisgICAgICAg
ICAgICAgICAgY2FzZSBTYW1lVmFsdWU6CiAgICAgICAgICAgICAgICAgY2FzZSBTdHJDYXQ6CiAg
ICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgISFub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgISFub2RlLT5jaGlsZDIoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZjFh
NDVhOGRkNjRiNGYyOTQwOWZjMGJkNDE0NTJmZjcwYzgwOWNiYi4uM2JlZWNhZjcyOGE1YzE5MDZi
ZTEwNzMyZWNmZGVhZGMyY2IwMWY2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzEzLDYgKzMxMyw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ29tcGFyZUJlbG93OgogICAg
IGNhc2UgQ29tcGFyZUJlbG93RXE6CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CisgICAgY2Fz
ZSBTYW1lVmFsdWU6CiAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CiAgICAgY2FzZSBEZWZp
bmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgU3RyaW5nU2xpY2U6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggY2MzZWU5ODQyZGIzOGQy
MzZkNzExMWQ3NjhhY2Q2MDU1NzM1MWMwYy4uOTIwNTJjMGU5ZGNhNWVmOTE4YTY1ZGNhYzNmZGM1
N2YwYzA0Mzg5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcApAQCAtOTg0LDYgKzk4NCw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IGNhc2UgQ29tcGFyZUVxUHRyOgogICAgICAgICAgICAgY29tcGlsZUNvbXBhcmVFcVB0cigpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2FtZVZhbHVlOgorICAgICAgICAgICAg
Y29tcGlsZVNhbWVWYWx1ZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTG9n
aWNhbE5vdDoKICAgICAgICAgICAgIGNvbXBpbGVMb2dpY2FsTm90KCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTcwNjMsNiArNzA2Niw0NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHsK
ICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5iZWxvd09yRXF1YWwobG93SW50MzIobV9ub2RlLT5j
aGlsZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgfQorCisgICAgdm9p
ZCBjb21waWxlU2FtZVZhbHVlKCkKKyAgICB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChEb3VibGVSZXBVc2UpKSB7CisgICAgICAgICAgICBMVmFsdWUgYXJnMSA9IGxvd0Rv
dWJsZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSBhcmcyID0gbG93RG91
YmxlKG1fbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBudW1iZXJD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgICAgIExWYWx1ZSBpc0FyZzFOYU4g
PSBtX291dC5kb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKGFyZzEsIGFyZzEpOworICAgICAgICAg
ICAgTFZhbHVlIGlzQXJnMk5hTiA9IG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQoYXJn
MiwgYXJnMik7CisKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5hblJlc3VsdCA9IG1fb3V0
LmFuY2hvcihtX291dC5iaXRBbmQoaXNBcmcxTmFOLCBpc0FyZzJOYU4pKTsKKyAgICAgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5iaXRPcihpc0FyZzFOYU4sIGlzQXJnMk5hTiksIHVuc3VyZShj
b250aW51YXRpb24pLCB1bnN1cmUobnVtYmVyQ2FzZSkpOworCisgICAgICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG51bWJlckNhc2UsIGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNo
cG9pbnQoSW50MzIpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGFyZzEsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGFyZzIs
IFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BT
Y3JhdGNoUmVnaXN0ZXJzID0gMTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKKyAgICAgICAgICAgICAgICBbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKyAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmVEb3VibGVUbzY0KHBhcmFtc1sxXS5mcHIoKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5tb3ZlRG91YmxlVG82NChwYXJhbXNbMl0uZnByKCksIHBhcmFtc1swXS5n
cHIoKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5jb21wYXJlNjQoQ0NhbGxIZWxwZXJzOjpF
cXVhbCwgc2NyYXRjaEdQUiwgcGFyYW1zWzBdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVj
dHM6Om5vbmUoKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNvbXBhcmVSZXN1bHQgPSBt
X291dC5hbmNob3IocGF0Y2hwb2ludCk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIG5hblJlc3VsdCwg
Y29tcGFyZVJlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgQVNTRVJUKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKKyAgICAgICAg
c2V0Qm9vbGVhbih2bUNhbGwoSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TYW1lVmFs
dWUpLCBtX2NhbGxGcmFtZSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMigpKSkpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVMb2dp
Y2FsTm90KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2lj
LmNwcAppbmRleCBhZDQ5YjE3YjJkMTg1NzEyM2NmYWFiMWNhZjRjNTAxZmQ2ZjhlMGE3Li42NjUy
ZGUwNDQ2N2I0NjE1Y2Q4MGZmNzUzYmYyZGE1Y2I5OTBkOTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTExNSw2ICsxMTUsOCBAQCBjb25zdCBj
aGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiAi
UmVnRXhwTWF0Y2hGYXN0SW50cmluc2ljIjsKICAgICBjYXNlIE9iamVjdEdldFByb3RvdHlwZU9m
SW50cmluc2ljOgogICAgICAgICByZXR1cm4gIk9iamVjdEdldFByb3RvdHlwZU9mSW50cmluc2lj
IjsKKyAgICBjYXNlIE9iamVjdElzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gIk9iamVjdElz
SW50cmluc2ljIjsKICAgICBjYXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzoKICAg
ICAgICAgcmV0dXJuICJSZWZsZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMiOwogICAgIGNhc2Ug
U3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmgKaW5kZXggZDY0ZTljN2YxMmFkNjRlOTU2YjM4YzY2MDliZThhMDI4
NDZmNmU0NC4uNjFmZTBiZDdmMjU4MGYyNjU2NTIxNjdmZjgyYmNlYWFiYmU3NmEwMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTcwLDYgKzcwLDcgQEAg
ZW51bSBJbnRyaW5zaWMgewogICAgIFJlZ0V4cFRlc3RGYXN0SW50cmluc2ljLAogICAgIFJlZ0V4
cE1hdGNoRmFzdEludHJpbnNpYywKICAgICBPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYywK
KyAgICBPYmplY3RJc0ludHJpbnNpYywKICAgICBSZWZsZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5z
aWMsCiAgICAgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYywKICAgICBTdHJpbmdQcm90
b3R5cGVSZXBsYWNlSW50cmluc2ljLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDIyZDY0NTk2ZGFjMmY5MzE5YzUxNGI3
MjY4Y2Q3MmY5NmZjNzEzOGYuLmUxOGM3NjU0NzNhMDI0ZDMzYmY1MGNlZDBiZTljMWNjMWEyOWIx
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKICAg
aXNTZWFsZWQgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkICAgICAg
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgaXNGcm96ZW4gICAgICAgICAgICAg
ICAgICBvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuICAgICAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKICAgaXNFeHRlbnNpYmxlICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3Rv
cklzRXh0ZW5zaWJsZSAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgaXMgICAg
ICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvcklzICAgICAgICAgICAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgaXMgICAgICAgICAgICAgICAgICAgICAgICBv
YmplY3RDb25zdHJ1Y3RvcklzICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIgT2JqZWN0SXNJbnRyaW5zaWMKICAgYXNzaWduICAgICAgICAgICAgICAgICAgICBvYmpl
Y3RDb25zdHJ1Y3RvckFzc2lnbiAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDIKICAgdmFsdWVzICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyAg
ICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZW50cmllcyAgICAgICAg
ICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODIzNjMzN2JjNGMxNWUwYzM0MDU5MWE2Y2UwNWFiNjBmNWY4NDY0
Ni4uNDIxMWM2NjBjOGI2Y2FjZTE4NzYwMmZlYWMzYjM5Y2Y3YzZkY2YwYiAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBA
QAorMjAxOC0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBQb29yIE9iamVjdC5pcyBwZXJmb3JtYW5jZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWlzLmpz
OiBBZGRlZC4KKyAgICAgICAgKGluY29nbml0byk6CisgICAgICAgIChzYW1lVmFsdWUpOgorICAg
ICAgICAodGVzdDEpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorICAgICAg
ICAodGVzdDQpOgorICAgICAgICAodGVzdDUpOgorICAgICAgICAodGVzdDYpOgorICAgICAgICAq
IHN0cmVzcy9vYmplY3QtaXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAoaXMxKToKKyAgICAgICAgKGlzMik6CisgICAgICAgIChpczMpOgorICAgICAgICAoaXM0KToK
KyAgICAgICAgKGlzNSk6CisgICAgICAgIChpczYpOgorICAgICAgICAoaXM3KToKKyAgICAgICAg
KGlzOCk6CisgICAgICAgIChpczkpOgorICAgICAgICAoaXMxMCk6CisgICAgICAgIChpczExKToK
KyAgICAgICAgKGlzMTIpOgorICAgICAgICAoaXMxMyk6CisgICAgICAgIChpczE0KToKKyAgICAg
ICAgKGlzMTUpOgorCiAyMDE4LTA0LTI2ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNv
bT4KIAogICAgICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBzdXBwb3J0IGZvciAiKiIg
b3BlcmF0aW9uCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtaXMu
anMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtaXMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0
ZDk0ZjE0MmI0NDVhMjJmMDYwY2Q0YWZlMTYzYzExMzU4YWQwYgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1pcy5qcwpAQCAtMCwwICsxLDgyIEBACitm
dW5jdGlvbiBpbmNvZ25pdG8odmFsdWUpIHsKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICBhcnJh
eS5wdXNoKHZhbHVlKTsKKyAgICBhcnJheS5wdXNoKCJpZ25vcmUgbWUiKTsKKyAgICBhcnJheS5w
dXNoKHZhbHVlKTsKKyAgICBhcnJheS5wdXNoKHsgaWdub3JlOiAibWUiIH0pOworICAgIHJldHVy
biBhcnJheVsoKE1hdGgucmFuZG9tKCkgKiAyKSB8IDApICogMl07Cit9CisKKy8vIGNhY2hlZCBP
YmplY3QuaXMKK3ZhciBvYmplY3RJcyA9IE9iamVjdC5pczsKKworLy8gcHVyZSBKUyB2ZXJzaW9u
IG9mIE9iamVjdC5pcworZnVuY3Rpb24gc2FtZVZhbHVlKGEsIGIpIHsKKyAgICByZXR1cm4gKGEg
PT09IGIpID8KKyAgICAgICAgKGEgIT09IDAgfHwgKDEgLyBhID09PSAxIC8gYikpIDoKKyAgICAg
ICAgKGEgIT09IGEgJiYgYiAhPT0gYik7Cit9CisKK3ZhciB0ZXN0Rml2ZUEgPSBpbmNvZ25pdG8o
ImJhY2s1Iik7Cit2YXIgdGVzdEZpdmVCID0gaW5jb2duaXRvKCIyYmFjazUiLnN1YnN0cmluZygx
KSk7Cit2YXIgdGVzdFBpID0gaW5jb2duaXRvKCJQSSIpOwordmFyIHRlc3ROYU4gPSBpbmNvZ25p
dG8oTmFOKTsKK3ZhciB0ZXN0TmFOXzIgPSBpbmNvZ25pdG8oTmFOKTsKKwordmFyIHJlc3VsdDsK
KworZnVuY3Rpb24gdGVzdDEoKQoreworICAgIHJldHVybiB0ZXN0Rml2ZUEgPT09IHRlc3RGaXZl
QjsKK30KK25vSW5saW5lKHRlc3QxKTsKKworZnVuY3Rpb24gdGVzdDIoKQoreworICAgIHJldHVy
biBPYmplY3QuaXModGVzdEZpdmVBLCB0ZXN0Rml2ZUIpOworfQorbm9JbmxpbmUodGVzdDIpOwor
CitmdW5jdGlvbiB0ZXN0MygpCit7CisgICAgcmV0dXJuIHNhbWVWYWx1ZSh0ZXN0Rml2ZUEsIHRl
c3RGaXZlQik7Cit9Citub0lubGluZSh0ZXN0Myk7CisKK2Z1bmN0aW9uIHRlc3Q0KCkKK3sKKyAg
ICByZXR1cm4gdGVzdEZpdmVBID09PSB0ZXN0UGk7Cit9Citub0lubGluZSh0ZXN0NCk7CisKK2Z1
bmN0aW9uIHRlc3Q1KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmlzKHRlc3RGaXZlQSwgdGVzdFBp
KTsKK30KK25vSW5saW5lKHRlc3Q1KTsKKworZnVuY3Rpb24gdGVzdDYoKQoreworICAgIHJldHVy
biBzYW1lVmFsdWUodGVzdEZpdmVBLCB0ZXN0UGkpOworfQorbm9JbmxpbmUodGVzdDYpOworCit2
YXIgdmVyYm9zZSA9IGZhbHNlOwordmFyIHRlc3RzID0gWworLy8gICAgIHRlc3QxLAorICAgIHRl
c3QyLAorLy8gICAgIHRlc3QzLAorLy8gICAgIHRlc3Q0LAorICAgIHRlc3Q1LAorLy8gICAgIHRl
c3Q2LAorXTsKK2ZvciAobGV0IHRlc3Qgb2YgdGVzdHMpIHsKKyAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgdmFyIHRpbWUgPSBEYXRlLm5vdygpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAy
ZTc7ICsraSkKKyAgICAgICAgdGVzdCgpOworCisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIHBy
aW50KERhdGUubm93KCkgLSB0aW1lKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29i
amVjdC1pcy5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1pcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTc0
ZTM1ZGMyYmRjYjZiN2FjNjJkZWUwOGYwYjRiNjc0MzcwOWFjCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWlzLmpzCkBAIC0wLDAgKzEsNzIgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiBpczEoYSwgYikgeyByZXR1cm4gT2JqZWN0LmlzKGEsIGIpOyB9Citub0lubGluZShp
czEpOworZnVuY3Rpb24gaXMyKGEsIGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9J
bmxpbmUoaXMyKTsKK2Z1bmN0aW9uIGlzMyhhLCBiKSB7IHJldHVybiBPYmplY3QuaXMoYSwgYik7
IH0KK25vSW5saW5lKGlzMyk7CitmdW5jdGlvbiBpczQoYSwgYikgeyByZXR1cm4gT2JqZWN0Lmlz
KGEsIGIpOyB9Citub0lubGluZShpczQpOworZnVuY3Rpb24gaXM1KGEsIGIpIHsgcmV0dXJuIE9i
amVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXM1KTsKK2Z1bmN0aW9uIGlzNihhLCBiKSB7IHJl
dHVybiBPYmplY3QuaXMoYSwgYik7IH0KK25vSW5saW5lKGlzNik7CitmdW5jdGlvbiBpczcoYSwg
YikgeyByZXR1cm4gT2JqZWN0LmlzKGEsIGIpOyB9Citub0lubGluZShpczcpOworZnVuY3Rpb24g
aXM4KGEsIGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXM4KTsKK2Z1
bmN0aW9uIGlzOShhLCBiKSB7IHJldHVybiBPYmplY3QuaXMoYSwgYik7IH0KK25vSW5saW5lKGlz
OSk7CitmdW5jdGlvbiBpczEwKGEsIGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9J
bmxpbmUoaXMxMCk7CitmdW5jdGlvbiBpczExKGEsIGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBi
KTsgfQorbm9JbmxpbmUoaXMxMSk7CitmdW5jdGlvbiBpczEyKGEsIGIpIHsgcmV0dXJuIE9iamVj
dC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXMxMik7CitmdW5jdGlvbiBpczEzKGEsIGIpIHsgcmV0
dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXMxMyk7CitmdW5jdGlvbiBpczE0KGEs
IGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXMxNCk7CitmdW5jdGlv
biBpczE1KGEsIGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXMxNSk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBzaG91bGRCZShPYmplY3Qu
aXMoTmFOLCBOYU4pLCB0cnVlKTsKKyAgICBzaG91bGRCZShPYmplY3QuaXMobnVsbCwgbnVsbCks
IHRydWUpOworICAgIHNob3VsZEJlKE9iamVjdC5pcyhudWxsKSwgZmFsc2UpOworICAgIHNob3Vs
ZEJlKE9iamVjdC5pcyh1bmRlZmluZWQsIHVuZGVmaW5lZCksIHRydWUpOworICAgIHNob3VsZEJl
KE9iamVjdC5pcyh0cnVlLCB0cnVlKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmlzKGZh
bHNlLCBmYWxzZSksIHRydWUpOworICAgIHNob3VsZEJlKE9iamVjdC5pcygnYWJjJywgJ2FiYycp
LCB0cnVlKTsKKyAgICBzaG91bGRCZShPYmplY3QuaXMoSW5maW5pdHksIEluZmluaXR5KSwgdHJ1
ZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmlzKDAsIDApLCB0cnVlKTsKKyAgICBzaG91bGRCZShP
YmplY3QuaXMoLTAsIC0wKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmlzKDAsIC0wKSwg
ZmFsc2UpOworICAgIHNob3VsZEJlKE9iamVjdC5pcygtMCwgMCksIGZhbHNlKTsKKyAgICB2YXIg
b2JqID0ge307CisgICAgc2hvdWxkQmUoT2JqZWN0LmlzKG9iaiwgb2JqKSwgdHJ1ZSk7CisgICAg
dmFyIGFyciA9IFtdOworICAgIHNob3VsZEJlKE9iamVjdC5pcyhhcnIsIGFyciksIHRydWUpOwor
ICAgIHZhciBzeW0gPSBTeW1ib2woKTsKKyAgICBzaG91bGRCZShPYmplY3QuaXMoc3ltLCBzeW0p
LCB0cnVlKTsKKworICAgIHNob3VsZEJlKGlzMShOYU4sIE5hTiksIHRydWUpOworICAgIHNob3Vs
ZEJlKGlzMihudWxsLCBudWxsKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoaXMzKG51bGwpLCBmYWxz
ZSk7CisgICAgc2hvdWxkQmUoaXM0KHVuZGVmaW5lZCwgdW5kZWZpbmVkKSwgdHJ1ZSk7CisgICAg
c2hvdWxkQmUoaXM1KHRydWUsIHRydWUpLCB0cnVlKTsKKyAgICBzaG91bGRCZShpczYoZmFsc2Us
IGZhbHNlKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoaXM3KCdhYmMnLCAnYWJjJyksIHRydWUpOwor
ICAgIHNob3VsZEJlKGlzOChJbmZpbml0eSwgSW5maW5pdHkpLCB0cnVlKTsKKyAgICBzaG91bGRC
ZShpczkoMCwgMCksIHRydWUpOworICAgIHNob3VsZEJlKGlzMTAoLTAsIC0wKSwgdHJ1ZSk7Cisg
ICAgc2hvdWxkQmUoaXMxMSgwLCAtMCksIGZhbHNlKTsKKyAgICBzaG91bGRCZShpczEyKC0wLCAw
KSwgZmFsc2UpOworICAgIHNob3VsZEJlKGlzMTMob2JqLCBvYmopLCB0cnVlKTsKKyAgICBzaG91
bGRCZShpczE0KGFyciwgYXJyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoaXMxNShzeW0sIHN5bSks
IHRydWUpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339084</attachid>
            <date>2018-04-28 18:52:44 -0700</date>
            <delta_ts>2018-04-28 18:54:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185065-20180429025242.patch</filename>
            <type>text/plain</type>
            <size>48505</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTJhYTQ0OWNhNTc5MmE4MTMyMGYxMWZmZjVjNzJiYmZlOGM0ZGUxLi41ZjljZDdlMTFlYjk3OTlk
N2JmMWJmOGY1NzliNGIyMjVjODIzMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxOC0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBQb29yIE9iamVjdC5pcyBwZXJmb3JtYW5jZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MDY1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIE9iamVj
dC5pcyBoYW5kbGluZyBpbiBERkcgYW5kIEZUTC4gT2JqZWN0LmlzIGlzIGNvbnZlcnRlZCB0byBT
YW1lVmFsdWUgREZHIG5vZGUuCisgICAgICAgIEFuZCBERkcgZml4dXAgcGhhc2UgYXR0ZW1wdHMg
dG8gY29udmVydCBTYW1lVmFsdWUgbm9kZSB0byBDb21wYXJlU3RyaWN0RXEgd2l0aCB0eXBlIGZp
bHRlciBlZGdlcworICAgICAgICBpZiBwb3NzaWJsZS4gU2luY2UgU2FtZVZhbHVlKFVudHlwZWQs
IFVudHlwZWQpIGFuZCBTYW1lVmFsdWUoRG91YmxlLCBEb3VibGUpIGhhdmUgZGlmZmVyZW50IHNl
bWFudGljcworICAgICAgICBmcm9tIENvbXBhcmVTdHJpY3RFcSwgd2UgZG8gbm90IGNvbnZlcnQg
U2FtZVZhbHVlIHRvIENvbXBhcmVTdHJpY3RFcSBmb3IgdGhlbS4gREZHIGFuZCBGVEwgaGF2ZQor
ICAgICAgICBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZXNlIFNhbWVWYWx1ZSBub2Rlcy4KKworICAg
ICAgICBUaGlzIG9sZCBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29tcGFyZURvdWJsZSB3YXMg
ZGVhZCBjb2RlIHNpbmNlIHRoZSBkZXJpdmVkIGNsYXNzLCAiTWFjcm9Bc3NlbWJsZXIiCisgICAg
ICAgIGhhcyBhIGdlbmVyYWxpemVkIGNvbXBhcmVEb3VibGUsIHdoaWNoIGp1c3QgdXNlcyBicmFu
Y2hEb3VibGUuIFNpbmNlIHRoaXMgd2FzIG5vdCB1c2VkLCB0aGlzIGZ1bmN0aW9uCisgICAgICAg
IHdhcyBicm9rZW4uIFRoaXMgcGF0Y2ggZml4ZXMgaXNzdWVzIGFuZCBtb3ZlIGNvbXBhcmVEb3Vi
bGUgdG8gTWFjcm9Bc3NlbWJsZXJYODZDb21tb24sIGFuZCByZW1vdmUgYQorICAgICAgICBnZW5l
cmFsaXplZCBjb21wYXJlRG91YmxlIGZvciB4ODYgYXJjaCB0byB1c2UgdGhpcyBzcGVjaWFsaXpl
ZCBlZmZpY2llbnQgdmVyc2lvbiBpbnN0ZWFkLiBUaGUgZml4ZXMgYXJlCisgICAgICAgIGNvcnJl
Y3RseSB1c2luZyBzZXQzMiB0byB6ZXJvLWV4dGVuZGluZyB0aGUgcmVzdWx0LCBhbmQgc2V0dGlu
ZyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBgZGVzdGAgcmVnaXN0ZXIKKyAgICAgICAgY29ycmVjdGx5
IGZvciBEb3VibGVFcXVhbCBhbmQgRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCBjYXNlcy4KKwor
ICAgICAgICBBZGRlZCBtaWNyb2JlbmNobWFyayBzaG93cyBwZXJmb3JtYW5jZSBpbXByb3ZlbWVu
dC4KKworICAgICAgICAgICAgb2JqZWN0LWlzICAgICAgICAgICA2NTEuMDA1MystMzguODIwNCAg
ICBeICAgIDI0MS4zNDY3Ky0xNS44NzUzICAgICAgIF4gZGVmaW5pdGVseSAyLjY5NzR4IGZhc3Rl
cgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgICogYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpjb21wYXJlRG91YmxlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OmNvbXBhcmVEb3VibGUpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5j
cHA6CisgICAgICAgIChKU0M6OmRvdWJsZU9wZXJhbmRzKToKKyAgICAgICAgKEpTQzo6dGVzdENv
bXBhcmVEb3VibGUpOgorICAgICAgICAoSlNDOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGlu
Z1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQ29tcGFyZVN0cmljdEVxQW5kU2FtZVZhbHVlKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9F
eGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVNhbWVWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
Lmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVNhbWVWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMu
Y3BwOgorICAgICAgICAoSlNDOjppbnRyaW5zaWNOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0lu
dHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorCiAy
MDE4LTA0LTI2ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAgICBb
RVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBzdXBwb3J0IGZvciAiKiIgb3BlcmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXgg
ZDI1ZGEzYzFkNzRkZjYwZDBjYzM4ODk5YzMwZGQ1MjhjNzI5MjljZC4uODY3OTI2MWZiOGViODg4
OThjNGQwNmVlMWNkNzg5YzE5YTg3NGNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtMTQ1OSw5ICsxNDU5LDEwIEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAKICNlbmRpZiAv
LyAhQ1BVKFg4Nl82NCkKIAotI2lmIEVOQUJMRShCM19KSVQpCiAgICAgLy8gV2Ugc2hvdWxkIGlt
cGxlbWVudCB0aGlzIHRoZSByaWdodCB3YXkgZXZlbnR1YWxseSwgYnV0IGZvciBub3csIGl0J3Mg
ZmluZSBiZWNhdXNlIGl0IGFyaXNlcyBzbwogICAgIC8vIGluZnJlcXVlbnRseS4KKworI2lmICFD
UFUoWDg2KSAmJiAhQ1BVKFg4Nl82NCkKICAgICB2b2lkIGNvbXBhcmVEb3VibGUoRG91YmxlQ29u
ZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCBkZXN0KTsK
QEAgLTE0NjksNiArMTQ3MCw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3Jv
QXNzZW1ibGVyQmFzZSB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCBkZXN0KTsKICAg
ICAgICAgZmFsc2VDYXNlLmxpbmsodGhpcyk7CiAgICAgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUo
QjNfSklUKQogICAgIHZvaWQgY29tcGFyZUZsb2F0KERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJl
Z2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgZGVzdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
aW5kZXggZThjODU5OTA2ZmVlMTJlZDVlMWE4OTA2YTk1ZmE0MjczOGJhMDFlOS4uZDk2OWU4NTRj
ZDdkMmJjYTAxYzU3ZDQxMDFjNGJlNzg1MjU0ZmQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAt
MjAwNCw2ICsyMDA0LDQ4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGlj
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIHJldHVybiBqdW1w
QWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdodCk7CiAgICAgfQogCisg
ICAgdm9pZCBjb21wYXJlRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQg
bGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBpZiAoY29uZCAmIERvdWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwpIHsKKyAgICAgICAgICAgIEFT
U0VSVCghKGNvbmQgJiBEb3VibGVDb25kaXRpb25CaXRJbnZlcnQpKTsKKyAgICAgICAgICAgIGlm
IChjb25kID09IERvdWJsZUVxdWFsKSB7CisgICAgICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmln
aHQpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9ycihyaWdodCwg
bGVmdCk7CisgICAgICAgICAgICAgICAgICAgIHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9u
TlAsIGRlc3QpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIGRlc3QpOworICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2RfcnIocmlnaHQsIGxlZnQpOworICAgICAgICAg
ICAgICAgIEp1bXAgaXNVbm9yZGVyZWQgPSBtX2Fzc2VtYmxlci5qcCgpOworICAgICAgICAgICAg
ICAgIHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRSwgZGVzdCk7CisgICAgICAgICAgICAg
ICAgaXNVbm9yZGVyZWQubGluayh0aGlzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBEb3VibGVOb3RFcXVhbE9yVW5vcmRl
cmVkKSB7CisgICAgICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9ycihyaWdodCwgbGVmdCk7CisgICAgICAgICAg
ICAgICAgICAgIHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uUCwgZGVzdCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgZGVzdCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIudWNvbWlzZF9ycihyaWdodCwgbGVmdCk7CisgICAgICAgICAgICAgICAgSnVtcCBpc1Vub3Jk
ZXJlZCA9IG1fYXNzZW1ibGVyLmpwKCk7CisgICAgICAgICAgICAgICAgc2V0MzIoWDg2QXNzZW1i
bGVyOjpDb25kaXRpb25ORSwgZGVzdCk7CisgICAgICAgICAgICAgICAgaXNVbm9yZGVyZWQubGlu
ayh0aGlzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uZCAmIERvdWJsZUNvbmRp
dGlvbkJpdEludmVydCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2RfcnIobGVmdCwg
cmlnaHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNkX3Jy
KHJpZ2h0LCBsZWZ0KTsKKyAgICAgICAgc2V0MzIoc3RhdGljX2Nhc3Q8WDg2QXNzZW1ibGVyOjpD
b25kaXRpb24+KGNvbmQgJiB+RG91YmxlQ29uZGl0aW9uQml0cyksIGRlc3QpOworICAgIH0KKwog
ICAgIC8vIFRydW5jYXRlcyAnc3JjJyB0byBhbiBpbnRlZ2VyLCBhbmQgcGxhY2VzIHRoZSByZXN1
bHRpbmcgJ2Rlc3QnLgogICAgIC8vIElmIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUg
YXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5jaC4KICAgICAvLyBNYXkgYWxzbyBicmFuY2ggZm9yIHNv
bWUgdmFsdWVzIHRoYXQgYXJlIHJlcHJlc2VudGFibGUgaW4gMzIgYml0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmlu
ZGV4IGQ0NDI4Y2M1M2QwNTI5YTVjMWEyN2I5M2QyZTFjMTNhNjZhMTM3OTAuLmQ1NTBhODhhMWY4
OWIwZmQ0OWY0ZDdkMzRhNTQwOWJkOWFkMzNkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTk4Myw0MCAr
OTgzLDYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZfNjQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24gewogICAgICAgICBzZXQzMih4ODZDb25kaXRpb24oY29uZCksIGRlc3QpOwog
ICAgIH0KIAotICAgIHZvaWQgY29tcGFyZURvdWJsZShEb3VibGVDb25kaXRpb24gY29uZCwgRlBS
ZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgaWYgKGNvbmQgJiBEb3VibGVDb25kaXRpb25CaXRJbnZlcnQpCi0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci51Y29taXNkX3JyKGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9ycihyaWdodCwgbGVmdCk7Ci0KLSAgICAg
ICAgaWYgKGNvbmQgPT0gRG91YmxlRXF1YWwpIHsKLSAgICAgICAgICAgIGlmIChsZWZ0ID09IHJp
Z2h0KSB7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2V0bnBfcihkZXN0KTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEp1bXAgaXNV
bm9yZGVyZWQobV9hc3NlbWJsZXIuanAoKSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zZXRl
X3IoZGVzdCk7Ci0gICAgICAgICAgICBpc1Vub3JkZXJlZC5saW5rKHRoaXMpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlTm90RXF1
YWxPclVub3JkZXJlZCkgewotICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpIHsKLSAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5zZXRwX3IoZGVzdCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zZXRwX3IoZGVz
dCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zZXRuZV9yKGRlc3QpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKCEoY29uZCAmIERvdWJsZUNvbmRp
dGlvbkJpdFNwZWNpYWwpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc2V0Q0NfcihzdGF0aWNfY2Fz
dDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCAmIH5Eb3VibGVDb25kaXRpb25CaXRzKSwg
ZGVzdCk7Ci0gICAgfQotCiAgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmNtcHFfcnIocmlnaHQsIGxlZnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCBmMThjNDEyMTU0NDkyMjg1YzQ0YjUwZjU3Njdk
ODEyY2Q5MWY0ZWI0Li5lNGZlMTUzYmFmZjIzM2IzOTM4OTVlNWQ3MDhlYjEyMjExMDZkODRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMjI3
LDYgKzIyNyw2NyBAQCB2b2lkIHRlc3RCcmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZG91Ymxl
IHZhbCwgaW50MzJfdCBleHBlY3RlZCkKIH0KIAogCitzdGF0aWMgVmVjdG9yPGRvdWJsZT4gZG91
YmxlT3BlcmFuZHMoKQoreworICAgIHJldHVybiBWZWN0b3I8ZG91YmxlPiB7CisgICAgICAgIDAs
CisgICAgICAgIC0wLAorICAgICAgICAxLAorICAgICAgICAtMSwKKyAgICAgICAgNDIsCisgICAg
ICAgIC00MiwKKyAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSwKKyAg
ICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptaW4oKSwKKyAgICAgICAgc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSwKKyAgICAgICAgc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSwKKyAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjppbmZpbml0eSgpLAorICAgICAgICAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjppbmZpbml0eSgpLAorICAgIH07Cit9CisKKwordm9pZCB0ZXN0Q29tcGFyZURvdWJsZShNYWNy
b0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBkb3VibGUgYXJn
MSA9IDA7CisgICAgZG91YmxlIGFyZzIgPSAwOworCisgICAgYXV0byBjb21wYXJlRG91YmxlID0g
Y29tcGlsZShbJiwgY29uZGl0aW9uXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgaml0
LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisKKyAgICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZhcmcxKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAg
IGppdC5sb2FkRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmYXJnMiksIEZQUklu
Zm86OmZwUmVnVDEpOworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigtMSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgaml0LmNvbXBhcmVEb3Vi
bGUoY29uZGl0aW9uLCBGUFJJbmZvOjpmcFJlZ1QwLCBGUFJJbmZvOjpmcFJlZ1QxLCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7
CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9KTsKKworICAgIGF1dG8gY29tcGFyZURvdWJsZUdl
bmVyaWMgPSBjb21waWxlKFsmLCBjb25kaXRpb25dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAg
ICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKworICAgICAgICBqaXQubG9hZERvdWJs
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmFyZzEpLCBGUFJJbmZvOjpmcFJlZ1QwKTsK
KyAgICAgICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZhcmcy
KSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgIGF1dG8ganVt
cCA9IGppdC5icmFuY2hEb3VibGUoY29uZGl0aW9uLCBGUFJJbmZvOjpmcFJlZ1QwLCBGUFJJbmZv
OjpmcFJlZ1QxKTsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAganVtcC5saW5rKCZqaXQpOwor
CisgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBqaXQucmV0KCk7
CisgICAgfSk7CisKKyAgICBhdXRvIG9wZXJhbmRzID0gZG91YmxlT3BlcmFuZHMoKTsKKyAgICBm
b3IgKGF1dG8gYSA6IG9wZXJhbmRzKSB7CisgICAgICAgIGZvciAoYXV0byBiIDogb3BlcmFuZHMp
IHsKKyAgICAgICAgICAgIGFyZzEgPSBhOworICAgICAgICAgICAgYXJnMiA9IGI7CisgICAgICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50Pihjb21wYXJlRG91YmxlKSwgaW52b2tlPGludD4oY29t
cGFyZURvdWJsZUdlbmVyaWMpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworCiAjaWYgRU5BQkxF
KE1BU01fUFJPQkUpCiB2b2lkIHRlc3RQcm9iZVJlYWRzQXJndW1lbnRSZWdpc3RlcnMoKQogewpA
QCAtNzg3LDYgKzg0OCwxOSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgLy8g
cmVzZXQgdG8gY2hlY2sgYSBjb252ZXJzaW9uIHJlc3VsdAogICAgIFJVTih0ZXN0QnJhbmNoVHJ1
bmNhdGVEb3VibGVUb0ludDMyKDEyMywgMTIzKSk7CiAKKyAgICBSVU4odGVzdENvbXBhcmVEb3Vi
bGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsKSk7CisgICAgUlVOKHRlc3RDb21wYXJlRG91
YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbCkpOworICAgIFJVTih0ZXN0Q29tcGFy
ZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW4pKTsKKyAgICBSVU4odGVz
dENvbXBhcmVEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCkp
OworICAgIFJVTih0ZXN0Q29tcGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1Ro
YW4pKTsKKyAgICBSVU4odGVzdENvbXBhcmVEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxl
c3NUaGFuT3JFcXVhbCkpOworICAgIFJVTih0ZXN0Q29tcGFyZURvdWJsZShNYWNyb0Fzc2VtYmxl
cjo6RG91YmxlRXF1YWxPclVub3JkZXJlZCkpOworICAgIFJVTih0ZXN0Q29tcGFyZURvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1YWxPclVub3JkZXJlZCkpOworICAgIFJVTih0ZXN0
Q29tcGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJl
ZCkpOworICAgIFJVTih0ZXN0Q29tcGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3Jl
YXRlclRoYW5PckVxdWFsT3JVbm9yZGVyZWQpKTsKKyAgICBSVU4odGVzdENvbXBhcmVEb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JVbm9yZGVyZWQpKTsKKyAgICBSVU4odGVz
dENvbXBhcmVEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5v
cmRlcmVkKSk7CisKICNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKICAgICBSVU4odGVzdFByb2JlUmVh
ZHNBcmd1bWVudFJlZ2lzdGVycygpKTsKICAgICBSVU4odGVzdFByb2JlV3JpdGVzQXJndW1lbnRS
ZWdpc3RlcnMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNmY4NTczNDBiMGY3OTQyMGE3MDM1
ZTRkN2Q1OTExNjQ1MWQ2ZTIxNC4uZGE2OWY0NGI5MmUxZmJiNTZjZTRiYTU4ODBhZjg1ZWQ3MDQ4
ZGQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTY3Myw3ICsxNjczLDggQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCi0gICAg
Y2FzZSBDb21wYXJlU3RyaWN0RXE6IHsKKyAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKKyAgICBj
YXNlIFNhbWVWYWx1ZTogewogICAgICAgICBOb2RlKiBsZWZ0Tm9kZSA9IG5vZGUtPmNoaWxkMSgp
Lm5vZGUoKTsKICAgICAgICAgTm9kZSogcmlnaHROb2RlID0gbm9kZS0+Y2hpbGQyKCkubm9kZSgp
OwogICAgICAgICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKGxlZnROb2RlKS52YWx1ZSgpOwpAQCAt
MTY4OSw3ICsxNjkwLDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKEpTVmFsdWU6OnN0cmlj
dEVxdWFsKDAsIGxlZnQsIHJpZ2h0KSkpOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IENvbXBhcmVTdHJpY3RFcSkKKyAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9k
ZSwganNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKG51bGxwdHIsIGxlZnQsIHJpZ2h0KSkp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwganNCb29sZWFuKHNhbWVWYWx1ZShudWxscHRyLCBsZWZ0LCByaWdodCkpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA2NjEzMmZhYTBk
MGM5YTFiYTU0OTBlZWQwNmNkNmU2NTNlMmJmYzE1Li42NTc2YjRlZWIxMWNjODAzYmI1NTZjM2Fi
MmZiMjEyYTIzMWQxYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtMjYzOSw2ICsyNjM5LDE1IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwg
SW50cmluCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0SXNJ
bnRyaW5zaWM6IHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDMp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Cisg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoU2Ft
ZVZhbHVlLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQp
KSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDIsIHJlZ2lzdGVyT2Zmc2V0KSkpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgY2FzZSBSZWZsZWN0R2V0UHJvdG90
eXBlT2ZJbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICE9IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDI0ZmQ5NDEzY2FiNDk0ZmI3ZjVlYWYzNjdiMTJiNjA0
NjcxYmFiNGYuLjhhNzM2NTIxMTk3OTRjYWEzMzkxMDIzZWZjZjRmODI3ODM2ZTQwYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNjUsNiArMTY1LDcg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAg
ICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CisgICAg
Y2FzZSBTYW1lVmFsdWU6CiAgICAgY2FzZSBJc0VtcHR5OgogICAgIGNhc2UgSXNVbmRlZmluZWQ6
CiAgICAgY2FzZSBJc0Jvb2xlYW46CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGU0NjUwYWMzMDgwZjZiNDIwYjYz
NzhiNjY1Y2VkNTI2YmI5ZGU1YTcuLjdlMmM3NTRkM2JkZGU3YWJjMjBlYTY4M2NmZWJhNjU1YzQ5
NjFmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xNDAsNyArMTQwLDggQEAgY2xhc3MgQ29uc3RhbnRGb2xk
aW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcTogeworICAgICAgICAg
ICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CisgICAgICAgICAgICBjYXNlIFNhbWVWYWx1ZTogewog
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBjaGlsZDFDb25zdGFudCA9IG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAg
IEpTVmFsdWUgY2hpbGQyQ29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCku
bm9kZSgpKS52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmlu
ZGV4IDM5MGI0ZTNhMWJkMjJjNzUyZGRiZmU0YmViZWEyNmE1MmVmYTcwODMuLjNlZjhmNThhMjZk
MjVkOTI4YTliMWRhM2EwOWUxZjkwNTkxODYxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKQEAgLTE1Myw2ICsxNTMsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlRXE6CiAgICAgY2FzZSBDb21wYXJlU3Ry
aWN0RXE6CiAgICAgY2FzZSBDb21wYXJlRXFQdHI6CisgICAgY2FzZSBTYW1lVmFsdWU6CiAgICAg
Y2FzZSBDYWxsOgogICAgIGNhc2UgRGlyZWN0Q2FsbDoKICAgICBjYXNlIFRhaWxDYWxsSW5saW5l
ZENhbGxlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IDQ3ZDBlNjZiMzg2MDIxOTFlZGM3MDU0YzYxOWQxYjZmNjEzMTNhYzYuLmQ4MjI3MzdhMTky
ZWU3YTJkMDVmNTY4Y2JjNjVlMDgyOThkZmQxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtNTg5LDEwNiArNTg5LDEyIEBAIGNsYXNzIEZpeHVw
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIAotICAgICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcTogewotICAgICAgICAgICAg
aWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4obm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBu
b2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFu
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNl
Pihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZS0+Y2hpbGQx
KCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpCi0gICAgICAgICAgICAgICAg
JiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlQW55SW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNl
Pihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVT
eW1ib2wobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0g
ICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKE5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5v
ZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDIoKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hp
bGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVTdHJpbmcoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRl
U3RyaW5nKCkgJiYgKChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA3KSB8fCBpc0ZUTCht
X2dyYXBoLm1fcGxhbi5tb2RlKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1Vz
ZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihu
b2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBXYXRjaHBvaW50U2V0KiBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCk7Ci0gICAgICAgICAgICBpZiAobWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQtPmlzU3RpbGxWYWxpZCgpKSB7Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVP
YmplY3QoKSkgewotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRk
TGF6aWx5KG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KTsKLSAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShtYXNxdWVyYWRlc0FzVW5kZWZpbmVk
V2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2Rl
LT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVj
dWxhdGVPYmplY3QoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNo
aWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpIHsKLSAgICAg
ICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MigpLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZU1pc2MoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWlzY1VzZT4obm9kZS0+Y2hpbGQx
KCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVNaXNjKCkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPE1pc2NVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKQotICAgICAgICAgICAgICAgICYmIG5vZGUtPmNoaWxk
MigpLT5zaG91bGRTcGVjdWxhdGVOb3RTdHJpbmdWYXIoKSkgewotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPE5vdFN0cmluZ1ZhclVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5z
aG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpCi0gICAgICAgICAgICAgICAgJiYgbm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZU5vdFN0cmluZ1ZhcigpKSB7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8Tm90U3RyaW5nVmFyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZVN0cmluZygpICYmICgoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMg
Pj0gOCkgfHwgaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpKSB7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxk
U3BlY3VsYXRlU3RyaW5nKCkgJiYgKChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA4KSB8
fCBpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQorICAgICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKKyAgICAgICAgY2FzZSBT
YW1lVmFsdWU6IHsKKyAgICAgICAgICAgIGZpeHVwQ29tcGFyZVN0cmljdEVxQW5kU2FtZVZhbHVl
KG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAg
ICAgICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOgogICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwpAQCAtMzQ3NCw2ICszMzgwLDEzOCBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgfQogICAgIH0KIAorICAgIHZv
aWQgZml4dXBDb21wYXJlU3RyaWN0RXFBbmRTYW1lVmFsdWUoTm9kZSogbm9kZSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNhbWVWYWx1ZSB8fCBub2RlLT5vcCgpID09IENv
bXBhcmVTdHJpY3RFcSk7CisKKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJvb2xl
YW4obm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAg
ICAgICAgICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+
c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50MzIobm9k
ZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERl
ZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGlmIChlbmFibGVJbnQ1MigpCisgICAgICAgICAgICAmJiBOb2RlOjpzaG91
bGRTcGVjdWxhdGVBbnlJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5u
b2RlKCkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRT
cGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2Rl
KCkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIC8vIERvIG5vdCBjb252ZXJ0IFNhbWVWYWx1ZSB0byBDb21wYXJlU3RyaWN0RXEg
aW4gdGhpcyBjYXNlIHNpbmNlIFNhbWVWYWx1ZShOYU4sIE5hTikgYW5kIFNhbWVWYWx1ZSgtMCwg
KzApCisgICAgICAgICAgICAvLyBhcmUgbm90IHRoZSBzYW1lIHRvIENvbXBhcmVTdHJpY3RFcShO
YU4sIE5hTikgYW5kIENvbXBhcmVTdHJpY3RFcSgtMCwgKzApLgorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVTeW1ib2wobm9k
ZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAg
ICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRn
ZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5k
RGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUJpZ0ludChub2RlLT5jaGls
ZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVk
Z2U8QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEJpZ0lu
dFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0
RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkg
JiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVTdHJpbmcoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
KCkgJiYgKChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA3KSB8fCBpc0ZUTChtX2dyYXBo
Lm1fcGxhbi5tb2RlKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVx
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChub2RlLT5v
cCgpID09IFNhbWVWYWx1ZSkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0
RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU9i
amVjdCgpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJl
U3RyaWN0RXEpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKTsKKyAgICAgICAgICAg
IGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludC0+aXNTdGlsbFZhbGlkKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVj
dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXpp
bHkobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQpOworICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExhemlseShtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludCk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVP
YmplY3QoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkgeworICAgICAgICAgICAgZml4
RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9w
QW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVTeW1i
b2woKSkgeworICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVNaXNjKCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8TWlzY1Vz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0Rmxh
Z3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU1pc2MoKSkgeworICAgICAg
ICAgICAgZml4RWRnZTxNaXNjVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2Rl
LT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlU3RyaW5nSWRlbnQoKQorICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNw
ZWN1bGF0ZU5vdFN0cmluZ1ZhcigpKSB7CisgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPE5vdFN0cmluZ1ZhclVz
ZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0Rmxh
Z3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkKKyAg
ICAgICAgICAgICYmIG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOb3RTdHJpbmdWYXIo
KSkgeworICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgZml4RWRnZTxOb3RTdHJpbmdWYXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSAmJiAoKEdQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzID49IDgpIHx8IGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSkgeworICAgICAgICAgICAg
Zml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNl
dE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVT
dHJpbmcoKSAmJiAoKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDgpIHx8IGlzRlRMKG1f
Z3JhcGgubV9wbGFuLm1vZGUpKSkgeworICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENv
bXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
ICAgICB2b2lkIGZpeHVwQ2hlY2tzSW5CbG9jayhCYXNpY0Jsb2NrKiBibG9jaykKICAgICB7CiAg
ICAgICAgIGlmICghYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
aW5kZXggZDYzMGIxZDYxZWM2ZjM2YTcwMjNiOWE2M2Q2ODc0OWJiMGIyYjk2NC4uZWYzODYyMGFm
YzVkZGUyMDYwOWQ2Mzg5ZWU4MTI2MzE4ZDExNGFjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaApAQCAtMjk0LDYgKzI5NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKICAgICBtYWNybyhDb21wYXJlRXEsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENvbXBhcmVTdHJpY3RFcSwgTm9kZVJlc3VsdEJv
b2xlYW4pIFwKICAgICBtYWNybyhDb21wYXJlRXFQdHIsIE5vZGVSZXN1bHRCb29sZWFuKSBcCisg
ICAgbWFjcm8oU2FtZVZhbHVlLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIFwKICAgICAvKiBD
YWxscy4gKi9cCiAgICAgbWFjcm8oQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAppbmRleCBmOGZhOTI5NWZmZGI3ZTkzOTg2OTQ5ZTVlM2YwNzEyNmY5YzUzNDA3
Li5lNzlkNTg1MjAwMWU5NzZlOWU0OWIyMzE5ZjBhZmJkNTZlZDUwZDI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTEyMzcsNiArMTIzNywxNCBA
QCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBvcDEsCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFs
U2xvd0Nhc2VJbmxpbmUoZXhlYywgb3AxLCBvcDIpOwogfQogCitzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25TYW1lVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBhcmcx
LCBFbmNvZGVkSlNWYWx1ZSBhcmcyKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgcmV0dXJuIHNh
bWVWYWx1ZShleGVjLCBKU1ZhbHVlOjpkZWNvZGUoYXJnMSksIEpTVmFsdWU6OmRlY29kZShhcmcy
KSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9QcmltaXRp
dmUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
aW5kZXggZjQ4ZjlhYjg5ZjE4ZjllMjIxOTk4N2JlYTZjYzMxZmYxMzkxYjBkMS4uZGQ2MmI0ZWNk
NjAwZDdlYTc4YjVmNzI4YTE1NjgwM2YzNzY0NDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgUmVnRQogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdChFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZf
SU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJp
YyhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxQ2VsbChFeGVjU3RhdGUqLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpIFdURl9J
TlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNhbWVWYWx1ZShFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKTsK
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHMoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBtaW5DYXBhY2l0
eSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRz
RHVyaW5nRXhpdChFeGVjU3RhdGUqLCBJbmxpbmVDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgdWlu
dDMyX3QgYXJndW1lbnRDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDQ3NzQzODUz
YmM5N2FhNjFhODkzZDg0MmVlZjFjZmZhNWNkNDk2YjUuLjJmNjdjZGE4MDEyMzNjNjFkMTkzNzA3
ODVkNjdhZTk1OWVkNzEwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC04NTAsNiArODUw
LDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICBjYXNlIENvbXBhcmVFcToKICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAg
ICAgICAgIGNhc2UgQ29tcGFyZUVxUHRyOgorICAgICAgICBjYXNlIFNhbWVWYWx1ZToKICAgICAg
ICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBJbnN0YW5jZU9mOgog
ICAgICAgICBjYXNlIEluc3RhbmNlT2ZDdXN0b206CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDZiYzc0NTEzZWVlOGRhMzFjZDQ5MzQyNzM4YWYx
YTcwM2E3MzVkZTMuLmY2MmJlMGIyZTNhNDczNzllMWRkMWI1Njc0M2VmYjRjODEyM2ExZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yNzgs
NiArMjc4LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ29tcGFyZUVxOgogICAgIGNhc2Ug
Q29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgQ29tcGFyZUVxUHRyOgorICAgIGNhc2UgU2FtZVZh
bHVlOgogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNlIERpcmVjdENhbGw6CiAgICAgY2FzZSBUYWls
Q2FsbElubGluZWRDYWxsZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IGRmNjkyMjc5NTgyZDlhNWU3ZmNkYTAxZTQ1OGViYmIwMTA2
ZmJjZGYuLmU0OTI3NDY4NTllOGRkMTEzZWEwYzc3YTFhYWMxNTFhMTkyNjliOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC02MzY1
LDYgKzYzNjUsNzMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0lkZW50Q29t
cGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXQKICAgICB1bmJsZXNzZWRCb29s
ZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVTYW1lVmFsdWUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKERvdWJsZVJlcFVzZSkpIHsKKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBhcmcx
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBh
cmcyKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wMih0aGlzKTsKKworICAgICAgICBGUFJSZWcgYXJnMUZQUiA9IGFyZzEuZnByKCk7
CisgICAgICAgIEZQUlJlZyBhcmcyRlBSID0gYXJnMi5mcHIoKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdw
cigpOworICAgICAgICBHUFJSZWcgdGVtcDJHUFIgPSB0ZW1wMi5ncHIoKTsKKworICAgICAgICBt
X2ppdC5jb21wYXJlRG91YmxlKENDYWxsSGVscGVyczo6RG91YmxlTm90RXF1YWxPclVub3JkZXJl
ZCwgYXJnMUZQUiwgYXJnMUZQUiwgdGVtcEdQUik7CisgICAgICAgIG1faml0LmNvbXBhcmVEb3Vi
bGUoQ0NhbGxIZWxwZXJzOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBhcmcyRlBSLCBhcmcy
RlBSLCB0ZW1wMkdQUik7CisgICAgICAgIG1faml0Lm9yMzIodGVtcEdQUiwgdGVtcDJHUFIsIHJl
c3VsdEdQUik7CisgICAgICAgIGF1dG8gbm90TmFOQ2FzZSA9IG1faml0LmJyYW5jaFRlc3QzMihD
Q2FsbEhlbHBlcnM6Olplcm8sIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmFuZDMyKHRlbXBH
UFIsIHRlbXAyR1BSLCByZXN1bHRHUFIpOworICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CisKKyAgICAgICAgbm90TmFOQ2FzZS5saW5rKCZtX2ppdCk7CisgICAgICAgIC8vIEhlcmUs
IHJlc3VsdEdQUiBpcyAwLgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0Lm1vdmVE
b3VibGVUbzY0KGFyZzFGUFIsIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5tb3ZlRG91YmxlVG82
NChhcmcyRlBSLCB0ZW1wMkdQUik7CisgICAgICAgIG1faml0LmNvbXBhcmU2NChDQ2FsbEhlbHBl
cnM6OkVxdWFsLCB0ZW1wR1BSLCB0ZW1wMkdQUiwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAgICAg
IEdQUlRlbXBvcmFyeSB0ZW1wMyh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXA0KHRo
aXMpOworCisgICAgICAgIEdQUlJlZyB0ZW1wM0dQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyB0ZW1wNEdQUiA9IHRlbXAyLmdwcigpOworCisgICAgICAgIG1faml0Lm1vdmVEb3VibGVU
b0ludHMoYXJnMUZQUiwgdGVtcEdQUiwgdGVtcDJHUFIpOworICAgICAgICBtX2ppdC5tb3ZlRG91
YmxlVG9JbnRzKGFyZzJGUFIsIHRlbXAzR1BSLCB0ZW1wNEdQUik7CisgICAgICAgIGF1dG8gbm90
RXF1YWwgPSBtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCB0ZW1wR1BSLCB0
ZW1wM0dQUik7CisgICAgICAgIG1faml0LmNvbXBhcmUzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCB0
ZW1wMkdQUiwgdGVtcDRHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIG5vdEVxdWFsLmxpbmsoJm1f
aml0KTsKKyNlbmRpZgorCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICB1bmJs
ZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlQobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKKwor
ICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEpTVmFs
dWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVSZWdzIGFy
ZzFSZWdzID0gYXJnMS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVSZWdzIGFyZzJSZWdzID0g
YXJnMi5qc1ZhbHVlUmVncygpOworCisgICAgYXJnMS51c2UoKTsKKyAgICBhcmcyLnVzZSgpOwor
CisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKworICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uU2FtZVZhbHVlLCByZXN1bHRHUFIsIGFyZzFSZWdzLCBhcmcyUmVn
cyk7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgIHVuYmxlc3NlZEJvb2xlYW5S
ZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworfQor
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nWmVyb0xlbmd0aChOb2RlKiBub2Rl
KQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cih0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXgg
YmJmMTc0YzdmNzQzOGQ4NWZjZTc1ODRkZjAwYWRlNmYzYmVmY2MxNC4uNzA5N2FiOGVlMGJhZDhj
NzYzYjgyMThkMDg2MzRkZjc3MmFjZTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTI2Myw2ICsxMjYzLDggQEAgY2xhc3MgU3BlY3Vs
YXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVN0cmluZ0lkZW50Q29tcGFyZShOb2RlKiwgTWFj
cm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIAogICAgIGJvb2wgY29tcGls
ZVN0cmljdEVxKE5vZGUqKTsKKworICAgIHZvaWQgY29tcGlsZVNhbWVWYWx1ZShOb2RlKik7CiAg
ICAgCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5k
ZXggOTliZmEwOTg4MGQ0OTg3OTYzN2JmOGEwNzMyNjkwYThlNjE1YWQ0Yi4uNTU3MDlmOTMwZWU3
ODdlNWY5YWZiOGNhMjgxMTZhNmFlOTg2Y2ZkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMjExLDYgKzIyMTEs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
b21waWxlQ29tcGFyZUVxUHRyKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgU2Ft
ZVZhbHVlOgorICAgICAgICBjb21waWxlU2FtZVZhbHVlKG5vZGUpOworICAgICAgICBicmVhazsK
KwogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDogewogICAgICAgICBjb21waWxlR2V0Q2hhckNv
ZGVBdChub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA1Yzk4MGU0YTFmNDU0OWRjZDcxMTlk
NjllMmY0YmNmMjNjOTM2NjRiLi41MTE5MzQ4Mzg3YjQyYWVmNjE2ZWE2MWVkZDVmMWMwNTYyZDk3
OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKQEAgLTIzNzcsNiArMjM3NywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDb21wYXJlRXFQdHIobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogCisgICAgY2FzZSBTYW1lVmFsdWU6CisgICAgICAgIGNvbXBpbGVTYW1lVmFs
dWUobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OiB7
CiAgICAgICAgIGNvbXBpbGVHZXRDaGFyQ29kZUF0KG5vZGUpOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggZTk0NzgzMzUzMDQy
Yzk4MDIwNTQ1MWQ5YTBmYTQ4OGFmYWY2NjMyYi4uZDc3MjZiYmUxZGY0YzJiMGI3MmQ5NzMwNGJm
ODc3N2NiZGQxZTUzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5j
cHAKQEAgLTI3MSw2ICsyNzEsNyBAQCBjbGFzcyBWYWxpZGF0ZSB7CiAgICAgICAgICAgICAgICAg
Y2FzZSBDb21wYXJlQmVsb3dFcToKICAgICAgICAgICAgICAgICBjYXNlIENvbXBhcmVFcToKICAg
ICAgICAgICAgICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKKyAgICAgICAgICAgICAgICBjYXNl
IFNhbWVWYWx1ZToKICAgICAgICAgICAgICAgICBjYXNlIFN0ckNhdDoKICAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCAhIW5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCAhIW5vZGUtPmNoaWxkMigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmMWE0NWE4ZGQ2NGI0ZjI5
NDA5ZmMwYmQ0MTQ1MmZmNzBjODA5Y2JiLi4zYmVlY2FmNzI4YTVjMTkwNmJlMTA3MzJlY2ZkZWFk
YzJjYjAxZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCkBAIC0zMTMsNiArMzEzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlQmVsb3c6CiAgICAgY2FzZSBDb21wYXJl
QmVsb3dFcToKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKKyAgICBjYXNlIFNhbWVWYWx1ZToK
ICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJv
cGVydHk6CiAgICAgY2FzZSBTdHJpbmdTbGljZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBjYzNlZTk4NDJkYjM4ZDIzNmQ3MTExZDc2OGFj
ZDYwNTU3MzUxYzBjLi45MjA1MmMwZTlkY2E1ZWY5MThhNjVkY2FjM2ZkYzU3ZjBjMDQzODk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05
ODQsNiArOTg0LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBDb21wYXJl
RXFQdHI6CiAgICAgICAgICAgICBjb21waWxlQ29tcGFyZUVxUHRyKCk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTYW1lVmFsdWU6CisgICAgICAgICAgICBjb21waWxlU2FtZVZh
bHVlKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMb2dpY2FsTm90OgogICAg
ICAgICAgICAgY29tcGlsZUxvZ2ljYWxOb3QoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzA2
Myw2ICs3MDY2LDQ3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgewogICAgICAgICBzZXRC
b29sZWFuKG1fb3V0LmJlbG93T3JFcXVhbChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgbG93
SW50MzIobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVTYW1l
VmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJs
ZVJlcFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBhcmcxID0gbG93RG91YmxlKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIGFyZzIgPSBsb3dEb3VibGUobV9ub2RlLT5j
aGlsZDIoKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG51bWJlckNhc2UgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKKworICAgICAgICAgICAgTFZhbHVlIGlzQXJnMU5hTiA9IG1fb3V0LmRvdWJs
ZU5vdEVxdWFsT3JVbm9yZGVyZWQoYXJnMSwgYXJnMSk7CisgICAgICAgICAgICBMVmFsdWUgaXNB
cmcyTmFOID0gbV9vdXQuZG91YmxlTm90RXF1YWxPclVub3JkZXJlZChhcmcyLCBhcmcyKTsKKwor
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbmFuUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0
LmJpdEFuZChpc0FyZzFOYU4sIGlzQXJnMk5hTikpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KG1fb3V0LmJpdE9yKGlzQXJnMU5hTiwgaXNBcmcyTmFOKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiks
IHVuc3VyZShudW1iZXJDYXNlKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuYXBwZW5kVG8obnVtYmVyQ2FzZSwgY29udGludWF0aW9uKTsKKworICAgICAgICAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQzMik7
CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoYXJnMSwgVmFsdWVSZXA6OlNvbWVSZWdp
c3Rlcik7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoYXJnMiwgVmFsdWVSZXA6OlNv
bWVSZWdpc3Rlcik7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3Rl
cnMgPSAxOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAg
ICAgICAgIFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBw
YXJhbXMuZ3BTY3JhdGNoKDApOworICAgICAgICAgICAgICAgICAgICBqaXQubW92ZURvdWJsZVRv
NjQocGFyYW1zWzFdLmZwcigpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmVEb3VibGVUbzY0KHBhcmFtc1syXS5mcHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LmNvbXBhcmU2NChDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzY3JhdGNo
R1BSLCBwYXJhbXNbMF0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwor
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY29tcGFyZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihw
YXRjaHBvaW50KTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAg
ICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgbmFuUmVzdWx0LCBjb21wYXJlUmVzdWx0
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworICAgICAgICBzZXRCb29sZWFuKHZt
Q2FsbChJbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblNhbWVWYWx1ZSksIG1fY2FsbEZy
YW1lLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQyKCkpKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUxvZ2ljYWxOb3QoKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IGFk
NDliMTdiMmQxODU3MTIzY2ZhYWIxY2FmNGM1MDFmZDZmOGUwYTcuLjY2NTJkZTA0NDY3YjQ2MTVj
ZDgwZmY3NTNiZjJkYTVjYjk5MGQ5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50cmluc2ljLmNwcApAQCAtMTE1LDYgKzExNSw4IEBAIGNvbnN0IGNoYXIqIGludHJpbnNp
Y05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJuICJSZWdFeHBNYXRjaEZh
c3RJbnRyaW5zaWMiOwogICAgIGNhc2UgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWM6CiAg
ICAgICAgIHJldHVybiAiT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMiOworICAgIGNhc2Ug
T2JqZWN0SXNJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiT2JqZWN0SXNJbnRyaW5zaWMiOwog
ICAgIGNhc2UgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljOgogICAgICAgICByZXR1cm4g
IlJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7CiAgICAgY2FzZSBTdHJpbmdQcm90b3R5
cGVWYWx1ZU9mSW50cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuaAppbmRleCBkNjRlOWM3ZjEyYWQ2NGU5NTZiMzhjNjYwOWJlOGEwMjg0NmY2ZTQ0Li42MWZl
MGJkN2YyNTgwZjI2NTY1MjE2N2ZmODJiY2VhYWJiZTc2YTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtNzAsNiArNzAsNyBAQCBlbnVtIEludHJpbnNp
YyB7CiAgICAgUmVnRXhwVGVzdEZhc3RJbnRyaW5zaWMsCiAgICAgUmVnRXhwTWF0Y2hGYXN0SW50
cmluc2ljLAogICAgIE9iamVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljLAorICAgIE9iamVjdElz
SW50cmluc2ljLAogICAgIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYywKICAgICBTdHJp
bmdQcm90b3R5cGVWYWx1ZU9mSW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VJ
bnRyaW5zaWMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggMjJkNjQ1OTZkYWMyZjkzMTljNTE0YjcyNjhjZDcyZjk2ZmM3
MTM4Zi4uZTE4Yzc2NTQ3M2EwMjRkMzNiZjUwY2VkMGJlOWMxY2MxYTI5YjE2NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApA
QCAtODMsNyArODMsNyBAQCBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaQogICBpc1NlYWxlZCAgICAg
ICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQgICAgICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQogICBpc0Zyb3plbiAgICAgICAgICAgICAgICAgIG9iamVjdENv
bnN0cnVjdG9ySXNGcm96ZW4gICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQog
ICBpc0V4dGVuc2libGUgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxl
ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICBpcyAgICAgICAgICAgICAgICAg
ICAgICAgIG9iamVjdENvbnN0cnVjdG9ySXMgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMgorICBpcyAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVj
dG9ySXMgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMiBPYmplY3RJ
c0ludHJpbnNpYwogICBhc3NpZ24gICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9y
QXNzaWduICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICB2YWx1ZXMg
ICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzICAgICAgICAgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICBlbnRyaWVzICAgICAgICAgICAgICAgICAgIEpT
QnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCA4MjM2MzM3YmM0YzE1ZTBjMzQwNTkxYTZjZTA1YWI2MGY1Zjg0NjQ2Li40MjExYzY2MGM4
YjZjYWNlMTg3NjAyZmVhYzNiMzljZjdjNmRjZjBiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE4LTA0LTI4
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFBvb3Ig
T2JqZWN0LmlzIHBlcmZvcm1hbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODUwNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9vYmplY3QtaXMuanM6IEFkZGVkLgorICAg
ICAgICAoaW5jb2duaXRvKToKKyAgICAgICAgKHNhbWVWYWx1ZSk6CisgICAgICAgICh0ZXN0MSk6
CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0Myk6CisgICAgICAgICh0ZXN0NCk6Cisg
ICAgICAgICh0ZXN0NSk6CisgICAgICAgICh0ZXN0Nik6CisgICAgICAgICogc3RyZXNzL29iamVj
dC1pcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChpczEpOgorICAg
ICAgICAoaXMyKToKKyAgICAgICAgKGlzMyk6CisgICAgICAgIChpczQpOgorICAgICAgICAoaXM1
KToKKyAgICAgICAgKGlzNik6CisgICAgICAgIChpczcpOgorICAgICAgICAoaXM4KToKKyAgICAg
ICAgKGlzOSk6CisgICAgICAgIChpczEwKToKKyAgICAgICAgKGlzMTEpOgorICAgICAgICAoaXMx
Mik6CisgICAgICAgIChpczEzKToKKyAgICAgICAgKGlzMTQpOgorICAgICAgICAoaXMxNSk6CisK
IDIwMTgtMDQtMjYgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAg
IFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IHN1cHBvcnQgZm9yICIqIiBvcGVyYXRpb24KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1pcy5qcyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL29iamVjdC1pcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzRkOTRmMTQyYjQ0NWEy
MmYwNjBjZDRhZmUxNjNjMTEzNThhZDBiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNy
b2JlbmNobWFya3Mvb2JqZWN0LWlzLmpzCkBAIC0wLDAgKzEsODIgQEAKK2Z1bmN0aW9uIGluY29n
bml0byh2YWx1ZSkgeworICAgIHZhciBhcnJheSA9IFtdOworICAgIGFycmF5LnB1c2godmFsdWUp
OworICAgIGFycmF5LnB1c2goImlnbm9yZSBtZSIpOworICAgIGFycmF5LnB1c2godmFsdWUpOwor
ICAgIGFycmF5LnB1c2goeyBpZ25vcmU6ICJtZSIgfSk7CisgICAgcmV0dXJuIGFycmF5WygoTWF0
aC5yYW5kb20oKSAqIDIpIHwgMCkgKiAyXTsKK30KKworLy8gY2FjaGVkIE9iamVjdC5pcwordmFy
IG9iamVjdElzID0gT2JqZWN0LmlzOworCisvLyBwdXJlIEpTIHZlcnNpb24gb2YgT2JqZWN0Lmlz
CitmdW5jdGlvbiBzYW1lVmFsdWUoYSwgYikgeworICAgIHJldHVybiAoYSA9PT0gYikgPworICAg
ICAgICAoYSAhPT0gMCB8fCAoMSAvIGEgPT09IDEgLyBiKSkgOgorICAgICAgICAoYSAhPT0gYSAm
JiBiICE9PSBiKTsKK30KKwordmFyIHRlc3RGaXZlQSA9IGluY29nbml0bygiYmFjazUiKTsKK3Zh
ciB0ZXN0Rml2ZUIgPSBpbmNvZ25pdG8oIjJiYWNrNSIuc3Vic3RyaW5nKDEpKTsKK3ZhciB0ZXN0
UGkgPSBpbmNvZ25pdG8oIlBJIik7Cit2YXIgdGVzdE5hTiA9IGluY29nbml0byhOYU4pOwordmFy
IHRlc3ROYU5fMiA9IGluY29nbml0byhOYU4pOworCit2YXIgcmVzdWx0OworCitmdW5jdGlvbiB0
ZXN0MSgpCit7CisgICAgcmV0dXJuIHRlc3RGaXZlQSA9PT0gdGVzdEZpdmVCOworfQorbm9Jbmxp
bmUodGVzdDEpOworCitmdW5jdGlvbiB0ZXN0MigpCit7CisgICAgcmV0dXJuIE9iamVjdC5pcyh0
ZXN0Rml2ZUEsIHRlc3RGaXZlQik7Cit9Citub0lubGluZSh0ZXN0Mik7CisKK2Z1bmN0aW9uIHRl
c3QzKCkKK3sKKyAgICByZXR1cm4gc2FtZVZhbHVlKHRlc3RGaXZlQSwgdGVzdEZpdmVCKTsKK30K
K25vSW5saW5lKHRlc3QzKTsKKworZnVuY3Rpb24gdGVzdDQoKQoreworICAgIHJldHVybiB0ZXN0
Rml2ZUEgPT09IHRlc3RQaTsKK30KK25vSW5saW5lKHRlc3Q0KTsKKworZnVuY3Rpb24gdGVzdDUo
KQoreworICAgIHJldHVybiBPYmplY3QuaXModGVzdEZpdmVBLCB0ZXN0UGkpOworfQorbm9Jbmxp
bmUodGVzdDUpOworCitmdW5jdGlvbiB0ZXN0NigpCit7CisgICAgcmV0dXJuIHNhbWVWYWx1ZSh0
ZXN0Rml2ZUEsIHRlc3RQaSk7Cit9Citub0lubGluZSh0ZXN0Nik7CisKK3ZhciB2ZXJib3NlID0g
ZmFsc2U7Cit2YXIgdGVzdHMgPSBbCisvLyAgICAgdGVzdDEsCisgICAgdGVzdDIsCisvLyAgICAg
dGVzdDMsCisvLyAgICAgdGVzdDQsCisgICAgdGVzdDUsCisvLyAgICAgdGVzdDYsCitdOworZm9y
IChsZXQgdGVzdCBvZiB0ZXN0cykgeworICAgIGlmICh2ZXJib3NlKQorICAgICAgICB2YXIgdGlt
ZSA9IERhdGUubm93KCk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDJlNzsgKytpKQorICAg
ICAgICB0ZXN0KCk7CisKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgcHJpbnQoRGF0ZS5ub3co
KSAtIHRpbWUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWlzLmpzIGIv
SlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNzRlMzVkYzJiZGNiNmI3
YWM2MmRlZTA4ZjBiNGI2NzQzNzA5YWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9vYmplY3QtaXMuanMKQEAgLTAsMCArMSw3MiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIGlzMShh
LCBiKSB7IHJldHVybiBPYmplY3QuaXMoYSwgYik7IH0KK25vSW5saW5lKGlzMSk7CitmdW5jdGlv
biBpczIoYSwgYikgeyByZXR1cm4gT2JqZWN0LmlzKGEsIGIpOyB9Citub0lubGluZShpczIpOwor
ZnVuY3Rpb24gaXMzKGEsIGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUo
aXMzKTsKK2Z1bmN0aW9uIGlzNChhLCBiKSB7IHJldHVybiBPYmplY3QuaXMoYSwgYik7IH0KK25v
SW5saW5lKGlzNCk7CitmdW5jdGlvbiBpczUoYSwgYikgeyByZXR1cm4gT2JqZWN0LmlzKGEsIGIp
OyB9Citub0lubGluZShpczUpOworZnVuY3Rpb24gaXM2KGEsIGIpIHsgcmV0dXJuIE9iamVjdC5p
cyhhLCBiKTsgfQorbm9JbmxpbmUoaXM2KTsKK2Z1bmN0aW9uIGlzNyhhLCBiKSB7IHJldHVybiBP
YmplY3QuaXMoYSwgYik7IH0KK25vSW5saW5lKGlzNyk7CitmdW5jdGlvbiBpczgoYSwgYikgeyBy
ZXR1cm4gT2JqZWN0LmlzKGEsIGIpOyB9Citub0lubGluZShpczgpOworZnVuY3Rpb24gaXM5KGEs
IGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXM5KTsKK2Z1bmN0aW9u
IGlzMTAoYSwgYikgeyByZXR1cm4gT2JqZWN0LmlzKGEsIGIpOyB9Citub0lubGluZShpczEwKTsK
K2Z1bmN0aW9uIGlzMTEoYSwgYikgeyByZXR1cm4gT2JqZWN0LmlzKGEsIGIpOyB9Citub0lubGlu
ZShpczExKTsKK2Z1bmN0aW9uIGlzMTIoYSwgYikgeyByZXR1cm4gT2JqZWN0LmlzKGEsIGIpOyB9
Citub0lubGluZShpczEyKTsKK2Z1bmN0aW9uIGlzMTMoYSwgYikgeyByZXR1cm4gT2JqZWN0Lmlz
KGEsIGIpOyB9Citub0lubGluZShpczEzKTsKK2Z1bmN0aW9uIGlzMTQoYSwgYikgeyByZXR1cm4g
T2JqZWN0LmlzKGEsIGIpOyB9Citub0lubGluZShpczE0KTsKK2Z1bmN0aW9uIGlzMTUoYSwgYikg
eyByZXR1cm4gT2JqZWN0LmlzKGEsIGIpOyB9Citub0lubGluZShpczE1KTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHNob3VsZEJlKE9iamVjdC5pcyhOYU4sIE5hTiks
IHRydWUpOworICAgIHNob3VsZEJlKE9iamVjdC5pcyhudWxsLCBudWxsKSwgdHJ1ZSk7CisgICAg
c2hvdWxkQmUoT2JqZWN0LmlzKG51bGwpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0Lmlz
KHVuZGVmaW5lZCwgdW5kZWZpbmVkKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmlzKHRy
dWUsIHRydWUpLCB0cnVlKTsKKyAgICBzaG91bGRCZShPYmplY3QuaXMoZmFsc2UsIGZhbHNlKSwg
dHJ1ZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmlzKCdhYmMnLCAnYWJjJyksIHRydWUpOworICAg
IHNob3VsZEJlKE9iamVjdC5pcyhJbmZpbml0eSwgSW5maW5pdHkpLCB0cnVlKTsKKyAgICBzaG91
bGRCZShPYmplY3QuaXMoMCwgMCksIHRydWUpOworICAgIHNob3VsZEJlKE9iamVjdC5pcygtMCwg
LTApLCB0cnVlKTsKKyAgICBzaG91bGRCZShPYmplY3QuaXMoMCwgLTApLCBmYWxzZSk7CisgICAg
c2hvdWxkQmUoT2JqZWN0LmlzKC0wLCAwKSwgZmFsc2UpOworICAgIHZhciBvYmogPSB7fTsKKyAg
ICBzaG91bGRCZShPYmplY3QuaXMob2JqLCBvYmopLCB0cnVlKTsKKyAgICB2YXIgYXJyID0gW107
CisgICAgc2hvdWxkQmUoT2JqZWN0LmlzKGFyciwgYXJyKSwgdHJ1ZSk7CisgICAgdmFyIHN5bSA9
IFN5bWJvbCgpOworICAgIHNob3VsZEJlKE9iamVjdC5pcyhzeW0sIHN5bSksIHRydWUpOworCisg
ICAgc2hvdWxkQmUoaXMxKE5hTiwgTmFOKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoaXMyKG51bGws
IG51bGwpLCB0cnVlKTsKKyAgICBzaG91bGRCZShpczMobnVsbCksIGZhbHNlKTsKKyAgICBzaG91
bGRCZShpczQodW5kZWZpbmVkLCB1bmRlZmluZWQpLCB0cnVlKTsKKyAgICBzaG91bGRCZShpczUo
dHJ1ZSwgdHJ1ZSksIHRydWUpOworICAgIHNob3VsZEJlKGlzNihmYWxzZSwgZmFsc2UpLCB0cnVl
KTsKKyAgICBzaG91bGRCZShpczcoJ2FiYycsICdhYmMnKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUo
aXM4KEluZmluaXR5LCBJbmZpbml0eSksIHRydWUpOworICAgIHNob3VsZEJlKGlzOSgwLCAwKSwg
dHJ1ZSk7CisgICAgc2hvdWxkQmUoaXMxMCgtMCwgLTApLCB0cnVlKTsKKyAgICBzaG91bGRCZShp
czExKDAsIC0wKSwgZmFsc2UpOworICAgIHNob3VsZEJlKGlzMTIoLTAsIDApLCBmYWxzZSk7Cisg
ICAgc2hvdWxkQmUoaXMxMyhvYmosIG9iaiksIHRydWUpOworICAgIHNob3VsZEJlKGlzMTQoYXJy
LCBhcnIpLCB0cnVlKTsKKyAgICBzaG91bGRCZShpczE1KHN5bSwgc3ltKSwgdHJ1ZSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339085</attachid>
            <date>2018-04-28 18:54:12 -0700</date>
            <delta_ts>2018-05-01 21:53:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185065-20180429025411.patch</filename>
            <type>text/plain</type>
            <size>48509</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTJhYTQ0OWNhNTc5MmE4MTMyMGYxMWZmZjVjNzJiYmZlOGM0ZGUxLi5lZTE1MDU4NjkxYmM5YjU1
NjBmOTFjYzMyZjdjYWIyOWRmYjQ5MTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxOC0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgU2FtZVZhbHVlIERGRyBub2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUwNjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgT2Jq
ZWN0LmlzIGhhbmRsaW5nIGluIERGRyBhbmQgRlRMLiBPYmplY3QuaXMgaXMgY29udmVydGVkIHRv
IFNhbWVWYWx1ZSBERkcgbm9kZS4KKyAgICAgICAgQW5kIERGRyBmaXh1cCBwaGFzZSBhdHRlbXB0
cyB0byBjb252ZXJ0IFNhbWVWYWx1ZSBub2RlIHRvIENvbXBhcmVTdHJpY3RFcSB3aXRoIHR5cGUg
ZmlsdGVyIGVkZ2VzCisgICAgICAgIGlmIHBvc3NpYmxlLiBTaW5jZSBTYW1lVmFsdWUoVW50eXBl
ZCwgVW50eXBlZCkgYW5kIFNhbWVWYWx1ZShEb3VibGUsIERvdWJsZSkgaGF2ZSBkaWZmZXJlbnQg
c2VtYW50aWNzCisgICAgICAgIGZyb20gQ29tcGFyZVN0cmljdEVxLCB3ZSBkbyBub3QgY29udmVy
dCBTYW1lVmFsdWUgdG8gQ29tcGFyZVN0cmljdEVxIGZvciB0aGVtLiBERkcgYW5kIEZUTCBoYXZl
CisgICAgICAgIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlc2UgU2FtZVZhbHVlIG5vZGVzLgorCisg
ICAgICAgIFRoaXMgb2xkIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjb21wYXJlRG91YmxlIHdh
cyBkZWFkIGNvZGUgc2luY2UgdGhlIGRlcml2ZWQgY2xhc3MsICJNYWNyb0Fzc2VtYmxlciIKKyAg
ICAgICAgaGFzIGEgZ2VuZXJhbGl6ZWQgY29tcGFyZURvdWJsZSwgd2hpY2gganVzdCB1c2VzIGJy
YW5jaERvdWJsZS4gU2luY2UgdGhpcyB3YXMgbm90IHVzZWQsIHRoaXMgZnVuY3Rpb24KKyAgICAg
ICAgd2FzIGJyb2tlbi4gVGhpcyBwYXRjaCBmaXhlcyBpc3N1ZXMgYW5kIG1vdmUgY29tcGFyZURv
dWJsZSB0byBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiwgYW5kIHJlbW92ZSBhCisgICAgICAgIGdl
bmVyYWxpemVkIGNvbXBhcmVEb3VibGUgZm9yIHg4NiBhcmNoIHRvIHVzZSB0aGlzIHNwZWNpYWxp
emVkIGVmZmljaWVudCB2ZXJzaW9uIGluc3RlYWQuIFRoZSBmaXhlcyBhcmUKKyAgICAgICAgY29y
cmVjdGx5IHVzaW5nIHNldDMyIHRvIHplcm8tZXh0ZW5kaW5nIHRoZSByZXN1bHQsIGFuZCBzZXR0
aW5nIHRoZSBpbml0aWFsIHZhbHVlIG9mIGBkZXN0YCByZWdpc3RlcgorICAgICAgICBjb3JyZWN0
bHkgZm9yIERvdWJsZUVxdWFsIGFuZCBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkIGNhc2VzLgor
CisgICAgICAgIEFkZGVkIG1pY3JvYmVuY2htYXJrIHNob3dzIHBlcmZvcm1hbmNlIGltcHJvdmVt
ZW50LgorCisgICAgICAgICAgICBvYmplY3QtaXMgICAgICAgICAgIDY1MS4wMDUzKy0zOC44MjA0
ICAgIF4gICAgMjQxLjM0NjcrLTE1Ljg3NTMgICAgICAgXiBkZWZpbml0ZWx5IDIuNjk3NHggZmFz
dGVyCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmNvbXBhcmVEb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82
NDo6Y29tcGFyZURvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNt
LmNwcDoKKyAgICAgICAgKEpTQzo6ZG91YmxlT3BlcmFuZHMpOgorICAgICAgICAoSlNDOjp0ZXN0
Q29tcGFyZURvdWJsZSk6CisgICAgICAgIChKU0M6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xk
aW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBDb21wYXJlU3RyaWN0RXFBbmRTYW1lVmFsdWUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlU2FtZVZhbHVlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlU2FtZVZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNp
Yy5jcHA6CisgICAgICAgIChKU0M6OmludHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50cmluc2ljLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisK
IDIwMTgtMDQtMjYgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAg
IFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IHN1cHBvcnQgZm9yICIqIiBvcGVyYXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRl
eCBkMjVkYTNjMWQ3NGRmNjBkMGNjMzg4OTljMzBkZDUyOGM3MjkyOWNkLi44Njc5MjYxZmI4ZWI4
ODg5OGM0ZDA2ZWUxY2Q3ODljMTlhODc0Y2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xNDU5LDkgKzE0NTksMTAgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKIAogI2VuZGlm
IC8vICFDUFUoWDg2XzY0KQogCi0jaWYgRU5BQkxFKEIzX0pJVCkKICAgICAvLyBXZSBzaG91bGQg
aW1wbGVtZW50IHRoaXMgdGhlIHJpZ2h0IHdheSBldmVudHVhbGx5LCBidXQgZm9yIG5vdywgaXQn
cyBmaW5lIGJlY2F1c2UgaXQgYXJpc2VzIHNvCiAgICAgLy8gaW5mcmVxdWVudGx5LgorCisjaWYg
IUNQVShYODYpICYmICFDUFUoWDg2XzY0KQogICAgIHZvaWQgY29tcGFyZURvdWJsZShEb3VibGVD
b25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIGRlc3Qp
OwpAQCAtMTQ2OSw2ICsxNDcwLDkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFj
cm9Bc3NlbWJsZXJCYXNlIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIGRlc3QpOwog
ICAgICAgICBmYWxzZUNhc2UubGluayh0aGlzKTsKICAgICB9CisjZW5kaWYKKworI2lmIEVOQUJM
RShCM19KSVQpCiAgICAgdm9pZCBjb21wYXJlRmxvYXQoRG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQ
UmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCBkZXN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aAppbmRleCBlOGM4NTk5MDZmZWUxMmVkNWUxYTg5MDZhOTVmYTQyNzM4YmEwMWU5Li5kOTY5ZTg1
NGNkN2QyYmNhMDFjNTdkNDEwMWM0YmU3ODUyNTRmZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBA
IC0yMDA0LDYgKzIwMDQsNDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJs
aWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgcmV0dXJuIGp1
bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKGNvbmQsIGxlZnQsIHJpZ2h0KTsKICAgICB9CiAK
KyAgICB2b2lkIGNvbXBhcmVEb3VibGUoRG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJ
RCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGlmIChjb25kICYgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCkgeworICAgICAgICAgICAg
QVNTRVJUKCEoY29uZCAmIERvdWJsZUNvbmRpdGlvbkJpdEludmVydCkpOworICAgICAgICAgICAg
aWYgKGNvbmQgPT0gRG91YmxlRXF1YWwpIHsKKyAgICAgICAgICAgICAgICBpZiAobGVmdCA9PSBy
aWdodCkgeworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNkX3JyKHJpZ2h0
LCBsZWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRp
b25OUCwgZGVzdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgZGVzdCk7CisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9ycihyaWdodCwgbGVmdCk7CisgICAgICAg
ICAgICAgICAgSnVtcCBpc1Vub3JkZXJlZCA9IG1fYXNzZW1ibGVyLmpwKCk7CisgICAgICAgICAg
ICAgICAgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb25FLCBkZXN0KTsKKyAgICAgICAgICAg
ICAgICBpc1Vub3JkZXJlZC5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb25kID09IERvdWJsZU5vdEVxdWFsT3JVbm9y
ZGVyZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkgeworICAgICAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNkX3JyKHJpZ2h0LCBsZWZ0KTsKKyAgICAgICAg
ICAgICAgICAgICAgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb25QLCBkZXN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCBkZXN0KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci51Y29taXNkX3JyKHJpZ2h0LCBsZWZ0KTsKKyAgICAgICAgICAgICAgICBKdW1wIGlzVW5v
cmRlcmVkID0gbV9hc3NlbWJsZXIuanAoKTsKKyAgICAgICAgICAgICAgICBzZXQzMihYODZBc3Nl
bWJsZXI6OkNvbmRpdGlvbk5FLCBkZXN0KTsKKyAgICAgICAgICAgICAgICBpc1Vub3JkZXJlZC5s
aW5rKHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb25kICYgRG91YmxlQ29u
ZGl0aW9uQml0SW52ZXJ0KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9ycihsZWZ0
LCByaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2Rf
cnIocmlnaHQsIGxlZnQpOworICAgICAgICBzZXQzMihzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6
OkNvbmRpdGlvbj4oY29uZCAmIH5Eb3VibGVDb25kaXRpb25CaXRzKSwgZGVzdCk7CisgICAgfQor
CiAgICAgLy8gVHJ1bmNhdGVzICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJl
c3VsdGluZyAnZGVzdCcuCiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJs
ZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Ig
c29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgK
aW5kZXggZDQ0MjhjYzUzZDA1MjlhNWMxYTI3YjkzZDJlMWMxM2E2NmExMzc5MC4uZDU1MGE4OGEx
Zjg5YjBmZDQ5ZjRkN2QzNGE1NDA5YmQ5YWQzM2RiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtOTgzLDQw
ICs5ODMsNiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4Nl82NCA6IHB1YmxpYyBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbiB7CiAgICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7
CiAgICAgfQogCi0gICAgdm9pZCBjb21wYXJlRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBG
UFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBpZiAoY29uZCAmIERvdWJsZUNvbmRpdGlvbkJpdEludmVydCkKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2RfcnIobGVmdCwgcmlnaHQpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNkX3JyKHJpZ2h0LCBsZWZ0KTsKLQotICAg
ICAgICBpZiAoY29uZCA9PSBEb3VibGVFcXVhbCkgewotICAgICAgICAgICAgaWYgKGxlZnQgPT0g
cmlnaHQpIHsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zZXRucF9yKGRlc3QpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgSnVtcCBp
c1Vub3JkZXJlZChtX2Fzc2VtYmxlci5qcCgpKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNl
dGVfcihkZXN0KTsKLSAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxpbmsodGhpcyk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZCA9PSBEb3VibGVOb3RF
cXVhbE9yVW5vcmRlcmVkKSB7Ci0gICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkgewotICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNldHBfcihkZXN0KTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNldHBfcihk
ZXN0KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNldG5lX3IoZGVzdCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQoIShjb25kICYgRG91YmxlQ29u
ZGl0aW9uQml0U3BlY2lhbCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5zZXRDQ19yKHN0YXRpY19j
YXN0PFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kICYgfkRvdWJsZUNvbmRpdGlvbkJpdHMp
LCBkZXN0KTsKLSAgICB9Ci0KICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIuY21wcV9ycihyaWdodCwgbGVmdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IGYxOGM0MTIxNTQ0OTIyODVjNDRiNTBmNTc2
N2Q4MTJjZDkxZjRlYjQuLmU0ZmUxNTNiYWZmMjMzYjM5Mzg5NWU1ZDcwOGViMTIyMTEwNmQ4NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0y
MjcsNiArMjI3LDY3IEBAIHZvaWQgdGVzdEJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihkb3Vi
bGUgdmFsLCBpbnQzMl90IGV4cGVjdGVkKQogfQogCiAKK3N0YXRpYyBWZWN0b3I8ZG91YmxlPiBk
b3VibGVPcGVyYW5kcygpCit7CisgICAgcmV0dXJuIFZlY3Rvcjxkb3VibGU+IHsKKyAgICAgICAg
MCwKKyAgICAgICAgLTAsCisgICAgICAgIDEsCisgICAgICAgIC0xLAorICAgICAgICA0MiwKKyAg
ICAgICAgLTQyLAorICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpLAor
ICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpLAorICAgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpLAorICAgICAgICBzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpLAorICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OmluZmluaXR5KCksCisgICAgICAgIC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmluZmluaXR5KCksCisgICAgfTsKK30KKworCit2b2lkIHRlc3RDb21wYXJlRG91YmxlKE1h
Y3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIGRvdWJsZSBh
cmcxID0gMDsKKyAgICBkb3VibGUgYXJnMiA9IDA7CisKKyAgICBhdXRvIGNvbXBhcmVEb3VibGUg
PSBjb21waWxlKFsmLCBjb25kaXRpb25dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKworICAgICAgICBqaXQubG9hZERvdWJsZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmFyZzEpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAg
ICAgaml0LmxvYWREb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZhcmcyKSwgRlBS
SW5mbzo6ZnBSZWdUMSk7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKC0xKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICBqaXQuY29tcGFyZURv
dWJsZShjb25kaXRpb24sIEZQUkluZm86OmZwUmVnVDAsIEZQUkluZm86OmZwUmVnVDEsIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0pOworCisgICAgYXV0byBjb21wYXJlRG91Ymxl
R2VuZXJpYyA9IGNvbXBpbGUoWyYsIGNvbmRpdGlvbl0gKENDYWxsSGVscGVycyYgaml0KSB7Cisg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCisgICAgICAgIGppdC5sb2FkRG91
YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmYXJnMSksIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICBqaXQubG9hZERvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmFy
ZzIpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgYXV0byBq
dW1wID0gaml0LmJyYW5jaERvdWJsZShjb25kaXRpb24sIEZQUkluZm86OmZwUmVnVDAsIEZQUklu
Zm86OmZwUmVnVDEpOworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigwKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICBqdW1wLmxpbmsoJmppdCk7
CisKKyAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIGppdC5yZXQo
KTsKKyAgICB9KTsKKworICAgIGF1dG8gb3BlcmFuZHMgPSBkb3VibGVPcGVyYW5kcygpOworICAg
IGZvciAoYXV0byBhIDogb3BlcmFuZHMpIHsKKyAgICAgICAgZm9yIChhdXRvIGIgOiBvcGVyYW5k
cykgeworICAgICAgICAgICAgYXJnMSA9IGE7CisgICAgICAgICAgICBhcmcyID0gYjsKKyAgICAg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGNvbXBhcmVEb3VibGUpLCBpbnZva2U8aW50Pihj
b21wYXJlRG91YmxlR2VuZXJpYykpOworICAgICAgICB9CisgICAgfQorfQorCisKICNpZiBFTkFC
TEUoTUFTTV9QUk9CRSkKIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiB7
CkBAIC03ODcsNiArODQ4LDE5IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICAv
LyByZXNldCB0byBjaGVjayBhIGNvbnZlcnNpb24gcmVzdWx0CiAgICAgUlVOKHRlc3RCcmFuY2hU
cnVuY2F0ZURvdWJsZVRvSW50MzIoMTIzLCAxMjMpKTsKIAorICAgIFJVTih0ZXN0Q29tcGFyZURv
dWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwpKTsKKyAgICBSVU4odGVzdENvbXBhcmVE
b3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsKSk7CisgICAgUlVOKHRlc3RDb21w
YXJlRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbikpOworICAgIFJVTih0
ZXN0Q29tcGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW5PckVxdWFs
KSk7CisgICAgUlVOKHRlc3RDb21wYXJlRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVMZXNz
VGhhbikpOworICAgIFJVTih0ZXN0Q29tcGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91Ymxl
TGVzc1RoYW5PckVxdWFsKSk7CisgICAgUlVOKHRlc3RDb21wYXJlRG91YmxlKE1hY3JvQXNzZW1i
bGVyOjpEb3VibGVFcXVhbE9yVW5vcmRlcmVkKSk7CisgICAgUlVOKHRlc3RDb21wYXJlRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKSk7CisgICAgUlVOKHRl
c3RDb21wYXJlRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRl
cmVkKSk7CisgICAgUlVOKHRlc3RDb21wYXJlRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVH
cmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZCkpOworICAgIFJVTih0ZXN0Q29tcGFyZURvdWJs
ZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCkpOworICAgIFJVTih0
ZXN0Q29tcGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFsT3JV
bm9yZGVyZWQpKTsKKwogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogICAgIFJVTih0ZXN0UHJvYmVS
ZWFkc0FyZ3VtZW50UmVnaXN0ZXJzKCkpOwogICAgIFJVTih0ZXN0UHJvYmVXcml0ZXNBcmd1bWVu
dFJlZ2lzdGVycygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA2Zjg1NzM0MGIwZjc5NDIwYTcw
MzVlNGQ3ZDU5MTE2NDUxZDZlMjE0Li5kYTY5ZjQ0YjkyZTFmYmI1NmNlNGJhNTg4MGFmODVlZDcw
NDhkZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xNjczLDcgKzE2NzMsOCBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNp
Z25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgICAgICAKLSAg
ICBjYXNlIENvbXBhcmVTdHJpY3RFcTogeworICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgorICAg
IGNhc2UgU2FtZVZhbHVlOiB7CiAgICAgICAgIE5vZGUqIGxlZnROb2RlID0gbm9kZS0+Y2hpbGQx
KCkubm9kZSgpOwogICAgICAgICBOb2RlKiByaWdodE5vZGUgPSBub2RlLT5jaGlsZDIoKS5ub2Rl
KCk7CiAgICAgICAgIEpTVmFsdWUgbGVmdCA9IGZvck5vZGUobGVmdE5vZGUpLnZhbHVlKCk7CkBA
IC0xNjg5LDcgKzE2OTAsMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oSlNWYWx1ZTo6c3Ry
aWN0RXF1YWwoMCwgbGVmdCwgcmlnaHQpKSk7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gQ29tcGFyZVN0cmljdEVxKQorICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwobnVsbHB0ciwgbGVmdCwgcmlnaHQp
KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0Jvb2xlYW4oc2FtZVZhbHVlKG51bGxwdHIsIGxlZnQsIHJpZ2h0KSkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDY2MTMyZmFh
MGQwYzlhMWJhNTQ5MGVlZDA2Y2Q2ZTY1M2UyYmZjMTUuLjY1NzZiNGVlYjExY2M4MDNiYjU1NmMz
YWIyZmIyMTJhMjMxZDFhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjM5LDYgKzI2MzksMTUgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5k
LCBJbnRyaW4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgY2FzZSBPYmplY3RJ
c0ludHJpbnNpYzogeworICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0g
MykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpbnNlcnRDaGVja3MoKTsK
KyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChT
YW1lVmFsdWUsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNl
dCkpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMiwgcmVnaXN0ZXJPZmZzZXQpKSkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBjYXNlIFJlZmxlY3RHZXRQcm90
b3R5cGVPZkludHJpbnNpYzogewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgIT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMjRmZDk0MTNjYWI0OTRmYjdmNWVhZjM2N2IxMmI2
MDQ2NzFiYWI0Zi4uOGE3MzY1MjExOTc5NGNhYTMzOTEwMjNlZmNmNGY4Mjc4MzZlNDBhNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTE2NSw2ICsxNjUs
NyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFk
RnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0Ogog
ICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKKyAg
ICBjYXNlIFNhbWVWYWx1ZToKICAgICBjYXNlIElzRW1wdHk6CiAgICAgY2FzZSBJc1VuZGVmaW5l
ZDoKICAgICBjYXNlIElzQm9vbGVhbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggZTQ2NTBhYzMwODBmNmI0MjBi
NjM3OGI2NjVjZWQ1MjZiYjlkZTVhNy4uN2UyYzc1NGQzYmRkZTdhYmMyMGVhNjgzY2ZlYmE2NTVj
NDk2MWZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTE0MCw3ICsxNDAsOCBAQCBjbGFzcyBDb25zdGFudEZv
bGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOiB7CisgICAgICAg
ICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKKyAgICAgICAgICAgIGNhc2UgU2FtZVZhbHVlOiB7
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSkg
ewogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIGNoaWxkMUNvbnN0YW50ID0gbV9zdGF0ZS5m
b3JOb2RlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkudmFsdWUoKTsKICAgICAgICAgICAgICAgICAg
ICAgSlNWYWx1ZSBjaGlsZDJDb25zdGFudCA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIo
KS5ub2RlKCkpLnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
aW5kZXggMzkwYjRlM2ExYmQyMmM3NTJkZGJmZTRiZWJlYTI2YTUyZWZhNzA4My4uM2VmOGY1OGEy
NmQyNWQ5MjhhOWIxZGEzYTA5ZTFmOTA1OTE4NjE3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcApAQCAtMTUzLDYgKzE1Myw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENvbXBhcmVFcToKICAgICBjYXNlIENvbXBhcmVT
dHJpY3RFcToKICAgICBjYXNlIENvbXBhcmVFcVB0cjoKKyAgICBjYXNlIFNhbWVWYWx1ZToKICAg
ICBjYXNlIENhbGw6CiAgICAgY2FzZSBEaXJlY3RDYWxsOgogICAgIGNhc2UgVGFpbENhbGxJbmxp
bmVkQ2FsbGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
aW5kZXggNDdkMGU2NmIzODYwMjE5MWVkYzcwNTRjNjE5ZDFiNmY2MTMxM2FjNi4uZDgyMjczN2Ex
OTJlZTdhMmQwNWY1NjhjYmM2NWUwODI5OGRmZDEzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC01ODksMTA2ICs1ODksMTIgQEAgY2xhc3MgRml4
dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOiB7Ci0gICAgICAgICAg
ICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQm9vbGVhbihub2RlLT5jaGlsZDEoKS5ub2RlKCks
IG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xl
YW5Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5V
c2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLT5jaGls
ZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkKLSAgICAgICAgICAgICAg
ICAmJiBOb2RlOjpzaG91bGRTcGVjdWxhdGVBbnlJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBu
b2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJl
cFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBV
c2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZVN5bWJvbChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsK
LSAgICAgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoTm9kZTo6c2hv
dWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCku
bm9kZSgpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50VXNlPihub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMigp
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSAmJiBub2RlLT5j
aGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgewotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZVN0cmluZygpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxh
dGVTdHJpbmcoKSAmJiAoKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDcpIHx8IGlzRlRM
KG1fZ3JhcGgubV9wbGFuLm1vZGUpKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5n
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+
KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBv
aW50ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+bWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKTsKLSAgICAgICAgICAgIGlmIChtYXNxdWVy
YWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludC0+aXNTdGlsbFZhbGlkKCkpIHsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZU9iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5h
ZGRMYXppbHkobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQpOwotICAgICAgICAgICAg
ICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkgewotICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KG1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWRXYXRjaHBvaW50KTsKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNw
ZWN1bGF0ZU9iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+
Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkgewotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQyKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlTWlzYygpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxNaXNjVXNlPihub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU1pc2MoKSkgewotICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8TWlzY1VzZT4obm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpCi0gICAgICAgICAgICAgICAgJiYgbm9kZS0+Y2hp
bGQyKCktPnNob3VsZFNwZWN1bGF0ZU5vdFN0cmluZ1ZhcigpKSB7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8Tm90U3RyaW5nVmFyVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkt
PnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkKLSAgICAgICAgICAgICAgICAmJiBub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTm90U3RyaW5nVmFyKCkpIHsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxOb3RTdHJpbmdWYXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkgJiYgKChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVy
cyA+PSA4KSB8fCBpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkpIHsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91
bGRTcGVjdWxhdGVTdHJpbmcoKSAmJiAoKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDgp
IHx8IGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSkgewotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9CisgICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgorICAgICAgICBjYXNl
IFNhbWVWYWx1ZTogeworICAgICAgICAgICAgZml4dXBDb21wYXJlU3RyaWN0RXFBbmRTYW1lVmFs
dWUobm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAgICAgCisK
ICAgICAgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6CiAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKICAgICAgICAgICAgICAgICBmaXhF
ZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CkBAIC0zNDc0LDYgKzMzODAsMTM4IEBAIGNs
YXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICB9CiAgICAgfQogCisgICAg
dm9pZCBmaXh1cENvbXBhcmVTdHJpY3RFcUFuZFNhbWVWYWx1ZShOb2RlKiBub2RlKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2FtZVZhbHVlIHx8IG5vZGUtPm9wKCkgPT0g
Q29tcGFyZVN0cmljdEVxKTsKKworICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQm9v
bGVhbihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2Rl
LT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnQzMihu
b2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5k
RGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGVuYWJsZUludDUyKCkKKyAgICAgICAgICAgICYmIE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUFueUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigp
Lm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZU51bWJlcihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5v
ZGUoKSkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBmaXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgLy8gRG8gbm90IGNvbnZlcnQgU2FtZVZhbHVlIHRvIENvbXBhcmVTdHJpY3RF
cSBpbiB0aGlzIGNhc2Ugc2luY2UgU2FtZVZhbHVlKE5hTiwgTmFOKSBhbmQgU2FtZVZhbHVlKC0w
LCArMCkKKyAgICAgICAgICAgIC8vIGFyZSBub3QgdGhlIHNhbWUgdG8gQ29tcGFyZVN0cmljdEVx
KE5hTiwgTmFOKSBhbmQgQ29tcGFyZVN0cmljdEVxKC0wLCArMCkuCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVN5bWJvbChu
b2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhF
ZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BB
bmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQmlnSW50KG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgZml4
RWRnZTxCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1
bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQo
KSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgeworICAg
ICAgICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgZml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZVN0cmluZygpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVTdHJp
bmcoKSAmJiAoKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDcpIHx8IGlzRlRMKG1fZ3Jh
cGgubV9wbGFuLm1vZGUpKSkgeworICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0
RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5vZGUt
Pm9wKCkgPT0gU2FtZVZhbHVlKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxPYmplY3RV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1
bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRl
T2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBh
cmVTdHJpY3RFcSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgV2F0Y2hwb2ludFNldCogbWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnQgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpOworICAgICAgICAg
ICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50LT5pc1N0aWxsVmFsaWQoKSkg
eworICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2Jq
ZWN0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFkZExh
emlseShtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCk7CisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkgeworICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50KTsKKyAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZU9iamVjdCgpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkgewor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKSB7CisgICAgICAgICAgICBm
aXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0
T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN5
bWJvbCgpKSB7CisgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVx
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZU1pc2MoKSkgeworICAgICAgICAgICAgZml4RWRnZTxNaXNj
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRG
bGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlTWlzYygpKSB7CisgICAg
ICAgICAgICBmaXhFZGdlPE1pc2NVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5v
ZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVTdHJpbmdJZGVudCgpCisgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxk
U3BlY3VsYXRlTm90U3RyaW5nVmFyKCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRl
bnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8Tm90U3RyaW5nVmFy
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRG
bGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKQor
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU5vdFN0cmluZ1Zh
cigpKSB7CisgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBmaXhFZGdlPE5vdFN0cmluZ1ZhclVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVx
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpICYmICgoR1BSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnMgPj0gOCkgfHwgaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpKSB7CisgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+
c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0
ZVN0cmluZygpICYmICgoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gOCkgfHwgaXNGVEwo
bV9ncmFwaC5tX3BsYW4ubW9kZSkpKSB7CisgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4o
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3Mo
Q29tcGFyZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIHZvaWQgZml4dXBDaGVja3NJbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsK
ICAgICAgICAgaWYgKCFibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAppbmRleCBkNjMwYjFkNjFlYzZmMzZhNzAyM2I5YTYzZDY4NzQ5YmIwYjJiOTY0Li5lZjM4NjIw
YWZjNWRkZTIwNjA5ZDYzODllZTgxMjYzMThkMTE0YWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yOTQsNiArMjk0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKENvbXBhcmVFcSwgTm9kZVJlc3VsdEJvb2xlYW4gfCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ29tcGFyZVN0cmljdEVxLCBOb2RlUmVzdWx0
Qm9vbGVhbikgXAogICAgIG1hY3JvKENvbXBhcmVFcVB0ciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwK
KyAgICBtYWNybyhTYW1lVmFsdWUsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgXAogICAgIC8q
IENhbGxzLiAqL1wKICAgICBtYWNybyhDYWxsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCmluZGV4IGY4ZmE5Mjk1ZmZkYjdlOTM5ODY5NDllNWUzZjA3MTI2ZjljNTM0
MDcuLmU3OWQ1ODUyMDAxZTk3NmU5ZTQ5YjIzMTlmMGFmYmQ1NmVkNTBkMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMTIzNyw2ICsxMjM3LDE0
IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1
YWxTbG93Q2FzZUlubGluZShleGVjLCBvcDEsIG9wMik7CiB9CiAKK3NpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblNhbWVWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGFy
ZzEsIEVuY29kZWRKU1ZhbHVlIGFyZzIpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICByZXR1cm4g
c2FtZVZhbHVlKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShhcmcxKSwgSlNWYWx1ZTo6ZGVjb2RlKGFy
ZzIpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1ByaW1p
dGl2ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAppbmRleCBmNDhmOWFiODlmMThmOWUyMjE5OTg3YmVhNmNjMzFmZjEzOTFiMGQxLi5kZDYyYjRl
Y2Q2MDBkN2VhNzhiNWY3MjhhMTU2ODAzZjM3NjQ0NTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTYxLDYgKzE2MSw3IEBAIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBSZWdFCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0KEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdU
Rl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5l
cmljKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlU3RyaWN0RXFDZWxsKEV4ZWNTdGF0ZSosIEpTQ2VsbCogb3AxLCBKU0NlbGwqIG9wMikgV1RG
X0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2FtZVZhbHVlKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFsdWUp
OwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cyhF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IG1pbkNhcGFj
aXR5KTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVu
dHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCB1
aW50MzJfdCBhcmd1bWVudENvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNDc3NDM4
NTNiYzk3YWE2MWE4OTNkODQyZWVmMWNmZmE1Y2Q0OTZiNS4uMmY2N2NkYTgwMTIzM2M2MWQxOTM3
MDc4NWQ2N2FlOTU5ZWQ3MTAxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTg1MCw2ICs4
NTAsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgIGNhc2UgQ29tcGFyZUVxOgogICAgICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToK
ICAgICAgICAgY2FzZSBDb21wYXJlRXFQdHI6CisgICAgICAgIGNhc2UgU2FtZVZhbHVlOgogICAg
ICAgICBjYXNlIE92ZXJyaWRlc0hhc0luc3RhbmNlOgogICAgICAgICBjYXNlIEluc3RhbmNlT2Y6
CiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggNmJjNzQ1MTNlZWU4ZGEzMWNkNDkzNDI3Mzhh
ZjFhNzAzYTczNWRlMy4uZjYyYmUwYjJlM2E0NzM3OWUxZGQxYjU2NzQzZWZiNGM4MTIzYTFlMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTI3
OCw2ICsyNzgsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRl
LCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlRXE6CiAgICAgY2Fz
ZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBDb21wYXJlRXFQdHI6CisgICAgY2FzZSBTYW1l
VmFsdWU6CiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgRGlyZWN0Q2FsbDoKICAgICBjYXNlIFRh
aWxDYWxsSW5saW5lZENhbGxlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZGY2OTIyNzk1ODJkOWE1ZTdmY2RhMDFlNDU4ZWJiYjAx
MDZmYmNkZi4uZTQ5Mjc0Njg1OWU4ZGQxMTNlYTBjNzdhMWFhYzE1MWExOTI2OWI5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTYz
NjUsNiArNjM2NSw3MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nSWRlbnRD
b21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdAogICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVNhbWVWYWx1ZShOb2RlKiBub2RlKQoreworICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoRG91YmxlUmVwVXNlKSkgeworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIGFy
ZzEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IGFyZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHRlbXAyKHRoaXMpOworCisgICAgICAgIEZQUlJlZyBhcmcxRlBSID0gYXJnMS5mcHIo
KTsKKyAgICAgICAgRlBSUmVnIGFyZzJGUFIgPSBhcmcyLmZwcigpOworICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAu
Z3ByKCk7CisgICAgICAgIEdQUlJlZyB0ZW1wMkdQUiA9IHRlbXAyLmdwcigpOworCisgICAgICAg
IG1faml0LmNvbXBhcmVEb3VibGUoQ0NhbGxIZWxwZXJzOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRl
cmVkLCBhcmcxRlBSLCBhcmcxRlBSLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZURv
dWJsZShDQ2FsbEhlbHBlcnM6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGFyZzJGUFIsIGFy
ZzJGUFIsIHRlbXAyR1BSKTsKKyAgICAgICAgbV9qaXQub3IzMih0ZW1wR1BSLCB0ZW1wMkdQUiwg
cmVzdWx0R1BSKTsKKyAgICAgICAgYXV0byBub3ROYU5DYXNlID0gbV9qaXQuYnJhbmNoVGVzdDMy
KENDYWxsSGVscGVyczo6WmVybywgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQuYW5kMzIodGVt
cEdQUiwgdGVtcDJHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1
bXAoKTsKKworICAgICAgICBub3ROYU5DYXNlLmxpbmsoJm1faml0KTsKKyAgICAgICAgLy8gSGVy
ZSwgcmVzdWx0R1BSIGlzIDAuCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQubW92
ZURvdWJsZVRvNjQoYXJnMUZQUiwgdGVtcEdQUik7CisgICAgICAgIG1faml0Lm1vdmVEb3VibGVU
bzY0KGFyZzJGUFIsIHRlbXAyR1BSKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTY0KENDYWxsSGVs
cGVyczo6RXF1YWwsIHRlbXBHUFIsIHRlbXAyR1BSLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHRlbXAzKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDQo
dGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHRlbXAzR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIHRlbXA0R1BSID0gdGVtcDIuZ3ByKCk7CisKKyAgICAgICAgbV9qaXQubW92ZURvdWJs
ZVRvSW50cyhhcmcxRlBSLCB0ZW1wR1BSLCB0ZW1wMkdQUik7CisgICAgICAgIG1faml0Lm1vdmVE
b3VibGVUb0ludHMoYXJnMkZQUiwgdGVtcDNHUFIsIHRlbXA0R1BSKTsKKyAgICAgICAgYXV0byBu
b3RFcXVhbCA9IG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHRlbXBHUFIs
IHRlbXAzR1BSKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTMyKENDYWxsSGVscGVyczo6RXF1YWws
IHRlbXAyR1BSLCB0ZW1wNEdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgbm90RXF1YWwubGluaygm
bV9qaXQpOworI2VuZGlmCisKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgIHVu
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOwor
CisgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNW
YWx1ZU9wZXJhbmQgYXJnMih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNWYWx1ZVJlZ3Mg
YXJnMVJlZ3MgPSBhcmcxLmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3MgYXJnMlJlZ3Mg
PSBhcmcyLmpzVmFsdWVSZWdzKCk7CisKKyAgICBhcmcxLnVzZSgpOworICAgIGFyZzIudXNlKCk7
CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworCisgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25TYW1lVmFsdWUsIHJlc3VsdEdQUiwgYXJnMVJlZ3MsIGFyZzJS
ZWdzKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgdW5ibGVzc2VkQm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9
CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdaZXJvTGVuZ3RoKE5vZGUqIG5v
ZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc3RyKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRl
eCBiYmYxNzRjN2Y3NDM4ZDg1ZmNlNzU4NGRmMDBhZGU2ZjNiZWZjYzE0Li43MDk3YWI4ZWUwYmFk
OGM3NjNiODIxOGQwODYzNGRmNzcyYWNlMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMjYzLDYgKzEyNjMsOCBAQCBjbGFzcyBTcGVj
dWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlU3RyaW5nSWRlbnRDb21wYXJlKE5vZGUqLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgCiAgICAgYm9vbCBjb21w
aWxlU3RyaWN0RXEoTm9kZSopOworCisgICAgdm9pZCBjb21waWxlU2FtZVZhbHVlKE5vZGUqKTsK
ICAgICAKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShOb2RlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApp
bmRleCA5OWJmYTA5ODgwZDQ5ODc5NjM3YmY4YTA3MzI2OTBhOGU2MTVhZDRiLi41NTcwOWY5MzBl
ZTc4N2U1ZjlhZmI4Y2EyODExNmE2YWU5ODZjZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIyMTEsNiArMjIx
MSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGNvbXBpbGVDb21wYXJlRXFQdHIobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBT
YW1lVmFsdWU6CisgICAgICAgIGNvbXBpbGVTYW1lVmFsdWUobm9kZSk7CisgICAgICAgIGJyZWFr
OworCiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OiB7CiAgICAgICAgIGNvbXBpbGVHZXRDaGFy
Q29kZUF0KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDVjOTgwZTRhMWY0NTQ5ZGNkNzEx
OWQ2OWUyZjRiY2YyM2M5MzY2NGIuLjUxMTkzNDgzODdiNDJhZWY2MTZlYTYxZWRkNWYxYzA1NjJk
OTc5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcApAQCAtMjM3Nyw2ICsyMzc3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNvbXBhcmVFcVB0cihub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFNhbWVWYWx1ZToKKyAgICAgICAgY29tcGlsZVNhbWVW
YWx1ZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6
IHsKICAgICAgICAgY29tcGlsZUdldENoYXJDb2RlQXQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCBlOTQ3ODMzNTMw
NDJjOTgwMjA1NDUxZDlhMGZhNDg4YWZhZjY2MzJiLi5kNzcyNmJiZTFkZjRjMmIwYjcyZDk3MzA0
YmY4Nzc3Y2JkZDFlNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcApAQCAtMjcxLDYgKzI3MSw3IEBAIGNsYXNzIFZhbGlkYXRlIHsKICAgICAgICAgICAgICAg
ICBjYXNlIENvbXBhcmVCZWxvd0VxOgogICAgICAgICAgICAgICAgIGNhc2UgQ29tcGFyZUVxOgog
ICAgICAgICAgICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgorICAgICAgICAgICAgICAgIGNh
c2UgU2FtZVZhbHVlOgogICAgICAgICAgICAgICAgIGNhc2UgU3RyQ2F0OgogICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSksICEhbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSksICEhbm9kZS0+Y2hpbGQyKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGYxYTQ1YThkZDY0YjRm
Mjk0MDlmYzBiZDQxNDUyZmY3MGM4MDljYmIuLjNiZWVjYWY3MjhhNWMxOTA2YmUxMDczMmVjZmRl
YWRjMmNiMDFmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKQEAgLTMxMyw2ICszMTMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENvbXBhcmVCZWxvdzoKICAgICBjYXNlIENvbXBh
cmVCZWxvd0VxOgogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgorICAgIGNhc2UgU2FtZVZhbHVl
OgogICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgogICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eToKICAgICBjYXNlIFN0cmluZ1NsaWNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGNjM2VlOTg0MmRiMzhkMjM2ZDcxMTFkNzY4
YWNkNjA1NTczNTFjMGMuLjkyMDUyYzBlOWRjYTVlZjkxOGE2NWRjYWMzZmRjNTdmMGMwNDM4OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTk4NCw2ICs5ODQsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIENvbXBh
cmVFcVB0cjoKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlRXFQdHIoKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFNhbWVWYWx1ZToKKyAgICAgICAgICAgIGNvbXBpbGVTYW1l
VmFsdWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAg
ICAgICAgICAgICBjb21waWxlTG9naWNhbE5vdCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03
MDYzLDYgKzcwNjYsNDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICB7CiAgICAgICAgIHNl
dEJvb2xlYW4obV9vdXQuYmVsb3dPckVxdWFsKGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpLCBs
b3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZVNh
bWVWYWx1ZSgpCisgICAgeworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91
YmxlUmVwVXNlKSkgeworICAgICAgICAgICAgTFZhbHVlIGFyZzEgPSBsb3dEb3VibGUobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgYXJnMiA9IGxvd0RvdWJsZShtX25vZGUt
PmNoaWxkMigpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbnVtYmVyQ2FzZSA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBMVmFsdWUgaXNBcmcxTmFOID0gbV9vdXQuZG91
YmxlTm90RXF1YWxPclVub3JkZXJlZChhcmcxLCBhcmcxKTsKKyAgICAgICAgICAgIExWYWx1ZSBp
c0FyZzJOYU4gPSBtX291dC5kb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKGFyZzIsIGFyZzIpOwor
CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBuYW5SZXN1bHQgPSBtX291dC5hbmNob3IobV9v
dXQuYml0QW5kKGlzQXJnMU5hTiwgaXNBcmcyTmFOKSk7CisgICAgICAgICAgICBtX291dC5icmFu
Y2gobV9vdXQuYml0T3IoaXNBcmcxTmFOLCBpc0FyZzJOYU4pLCB1bnN1cmUoY29udGludWF0aW9u
KSwgdW5zdXJlKG51bWJlckNhc2UpKTsKKworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5hcHBlbmRUbyhudW1iZXJDYXNlLCBjb250aW51YXRpb24pOworCisgICAgICAg
ICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDMy
KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChhcmcxLCBWYWx1ZVJlcDo6U29tZVJl
Z2lzdGVyKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChhcmcyLCBWYWx1ZVJlcDo6
U29tZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lz
dGVycyA9IDE7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAg
ICAgICAgICAgW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlRG91Ymxl
VG82NChwYXJhbXNbMV0uZnByKCksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgICAgICBq
aXQubW92ZURvdWJsZVRvNjQocGFyYW1zWzJdLmZwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAg
ICAgICAgICAgICAgICAgICBqaXQuY29tcGFyZTY0KENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0
Y2hHUFIsIHBhcmFtc1swXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7
CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjb21wYXJlUmVzdWx0ID0gbV9vdXQuYW5jaG9y
KHBhdGNocG9pbnQpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAg
ICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBuYW5SZXN1bHQsIGNvbXBhcmVSZXN1
bHQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSk7CisgICAgICAgIHNldEJvb2xlYW4o
dm1DYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU2FtZVZhbHVlKSwgbV9jYWxs
RnJhbWUsIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDIoKSkpKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlTG9naWNhbE5vdCgpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2lj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXgg
YWQ0OWIxN2IyZDE4NTcxMjNjZmFhYjFjYWY0YzUwMWZkNmY4ZTBhNy4uNjY1MmRlMDQ0NjdiNDYx
NWNkODBmZjc1M2JmMmRhNWNiOTkwZDk4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRyaW5zaWMuY3BwCkBAIC0xMTUsNiArMTE1LDggQEAgY29uc3QgY2hhciogaW50cmlu
c2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIlJlZ0V4cE1hdGNo
RmFzdEludHJpbnNpYyI7CiAgICAgY2FzZSBPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzoK
ICAgICAgICAgcmV0dXJuICJPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7CisgICAgY2Fz
ZSBPYmplY3RJc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJPYmplY3RJc0ludHJpbnNpYyI7
CiAgICAgY2FzZSBSZWZsZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWM6CiAgICAgICAgIHJldHVy
biAiUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljIjsKICAgICBjYXNlIFN0cmluZ1Byb3Rv
dHlwZVZhbHVlT2ZJbnRyaW5zaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJp
bnNpYy5oCmluZGV4IGQ2NGU5YzdmMTJhZDY0ZTk1NmIzOGM2NjA5YmU4YTAyODQ2ZjZlNDQuLjYx
ZmUwYmQ3ZjI1ODBmMjY1NjUyMTY3ZmY4MmJjZWFhYmJlNzZhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC03MCw2ICs3MCw3IEBAIGVudW0gSW50cmlu
c2ljIHsKICAgICBSZWdFeHBUZXN0RmFzdEludHJpbnNpYywKICAgICBSZWdFeHBNYXRjaEZhc3RJ
bnRyaW5zaWMsCiAgICAgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMsCisgICAgT2JqZWN0
SXNJbnRyaW5zaWMsCiAgICAgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljLAogICAgIFN0
cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMsCiAgICAgU3RyaW5nUHJvdG90eXBlUmVwbGFj
ZUludHJpbnNpYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAppbmRleCAyMmQ2NDU5NmRhYzJmOTMxOWM1MTRiNzI2OGNkNzJmOTZm
YzcxMzhmLi5lMThjNzY1NDczYTAyNGQzM2JmNTBjZWQwYmU5YzFjYzFhMjliMTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CkBAIC04Myw3ICs4Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBPYmplY3RDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pCiAgIGlzU2VhbGVkICAg
ICAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZCAgICAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCiAgIGlzRnJvemVuICAgICAgICAgICAgICAgICAgb2JqZWN0
Q29uc3RydWN0b3JJc0Zyb3plbiAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CiAgIGlzRXh0ZW5zaWJsZSAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2li
bGUgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIGlzICAgICAgICAgICAgICAg
ICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JJcyAgICAgICAgICAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAyCisgIGlzICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Q29uc3Ry
dWN0b3JJcyAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyIE9iamVj
dElzSW50cmluc2ljCiAgIGFzc2lnbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0
b3JBc3NpZ24gICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgIHZhbHVl
cyAgICAgICAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMgICAgICAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgIGVudHJpZXMgICAgICAgICAgICAgICAgICAg
SlNCdWlsdGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDgyMzYzMzdiYzRjMTVlMGMzNDA1OTFhNmNlMDVhYjYwZjVmODQ2NDYuLjgxY2U4YTUw
ZWExMzgyOTMyZmY5YjAwMjFhOGQwODY0OTc3ZjNmYmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTgtMDQt
MjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pT
Q10gQWRkIFNhbWVWYWx1ZSBERkcgbm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWlzLmpzOiBBZGRlZC4K
KyAgICAgICAgKGluY29nbml0byk6CisgICAgICAgIChzYW1lVmFsdWUpOgorICAgICAgICAodGVz
dDEpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorICAgICAgICAodGVzdDQp
OgorICAgICAgICAodGVzdDUpOgorICAgICAgICAodGVzdDYpOgorICAgICAgICAqIHN0cmVzcy9v
YmplY3QtaXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoaXMxKToK
KyAgICAgICAgKGlzMik6CisgICAgICAgIChpczMpOgorICAgICAgICAoaXM0KToKKyAgICAgICAg
KGlzNSk6CisgICAgICAgIChpczYpOgorICAgICAgICAoaXM3KToKKyAgICAgICAgKGlzOCk6Cisg
ICAgICAgIChpczkpOgorICAgICAgICAoaXMxMCk6CisgICAgICAgIChpczExKToKKyAgICAgICAg
KGlzMTIpOgorICAgICAgICAoaXMxMyk6CisgICAgICAgIChpczE0KToKKyAgICAgICAgKGlzMTUp
OgorCiAyMDE4LTA0LTI2ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAg
ICAgICBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBzdXBwb3J0IGZvciAiKiIgb3BlcmF0aW9u
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtaXMuanMgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtaXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0ZDk0ZjE0MmI0
NDVhMjJmMDYwY2Q0YWZlMTYzYzExMzU4YWQwYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL29iamVjdC1pcy5qcwpAQCAtMCwwICsxLDgyIEBACitmdW5jdGlvbiBp
bmNvZ25pdG8odmFsdWUpIHsKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICBhcnJheS5wdXNoKHZh
bHVlKTsKKyAgICBhcnJheS5wdXNoKCJpZ25vcmUgbWUiKTsKKyAgICBhcnJheS5wdXNoKHZhbHVl
KTsKKyAgICBhcnJheS5wdXNoKHsgaWdub3JlOiAibWUiIH0pOworICAgIHJldHVybiBhcnJheVso
KE1hdGgucmFuZG9tKCkgKiAyKSB8IDApICogMl07Cit9CisKKy8vIGNhY2hlZCBPYmplY3QuaXMK
K3ZhciBvYmplY3RJcyA9IE9iamVjdC5pczsKKworLy8gcHVyZSBKUyB2ZXJzaW9uIG9mIE9iamVj
dC5pcworZnVuY3Rpb24gc2FtZVZhbHVlKGEsIGIpIHsKKyAgICByZXR1cm4gKGEgPT09IGIpID8K
KyAgICAgICAgKGEgIT09IDAgfHwgKDEgLyBhID09PSAxIC8gYikpIDoKKyAgICAgICAgKGEgIT09
IGEgJiYgYiAhPT0gYik7Cit9CisKK3ZhciB0ZXN0Rml2ZUEgPSBpbmNvZ25pdG8oImJhY2s1Iik7
Cit2YXIgdGVzdEZpdmVCID0gaW5jb2duaXRvKCIyYmFjazUiLnN1YnN0cmluZygxKSk7Cit2YXIg
dGVzdFBpID0gaW5jb2duaXRvKCJQSSIpOwordmFyIHRlc3ROYU4gPSBpbmNvZ25pdG8oTmFOKTsK
K3ZhciB0ZXN0TmFOXzIgPSBpbmNvZ25pdG8oTmFOKTsKKwordmFyIHJlc3VsdDsKKworZnVuY3Rp
b24gdGVzdDEoKQoreworICAgIHJldHVybiB0ZXN0Rml2ZUEgPT09IHRlc3RGaXZlQjsKK30KK25v
SW5saW5lKHRlc3QxKTsKKworZnVuY3Rpb24gdGVzdDIoKQoreworICAgIHJldHVybiBPYmplY3Qu
aXModGVzdEZpdmVBLCB0ZXN0Rml2ZUIpOworfQorbm9JbmxpbmUodGVzdDIpOworCitmdW5jdGlv
biB0ZXN0MygpCit7CisgICAgcmV0dXJuIHNhbWVWYWx1ZSh0ZXN0Rml2ZUEsIHRlc3RGaXZlQik7
Cit9Citub0lubGluZSh0ZXN0Myk7CisKK2Z1bmN0aW9uIHRlc3Q0KCkKK3sKKyAgICByZXR1cm4g
dGVzdEZpdmVBID09PSB0ZXN0UGk7Cit9Citub0lubGluZSh0ZXN0NCk7CisKK2Z1bmN0aW9uIHRl
c3Q1KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmlzKHRlc3RGaXZlQSwgdGVzdFBpKTsKK30KK25v
SW5saW5lKHRlc3Q1KTsKKworZnVuY3Rpb24gdGVzdDYoKQoreworICAgIHJldHVybiBzYW1lVmFs
dWUodGVzdEZpdmVBLCB0ZXN0UGkpOworfQorbm9JbmxpbmUodGVzdDYpOworCit2YXIgdmVyYm9z
ZSA9IGZhbHNlOwordmFyIHRlc3RzID0gWworLy8gICAgIHRlc3QxLAorICAgIHRlc3QyLAorLy8g
ICAgIHRlc3QzLAorLy8gICAgIHRlc3Q0LAorICAgIHRlc3Q1LAorLy8gICAgIHRlc3Q2LAorXTsK
K2ZvciAobGV0IHRlc3Qgb2YgdGVzdHMpIHsKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgdmFy
IHRpbWUgPSBEYXRlLm5vdygpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyZTc7ICsraSkK
KyAgICAgICAgdGVzdCgpOworCisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIHByaW50KERhdGUu
bm93KCkgLSB0aW1lKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1pcy5q
cyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1pcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTc0ZTM1ZGMyYmRj
YjZiN2FjNjJkZWUwOGYwYjRiNjc0MzcwOWFjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3Mvb2JqZWN0LWlzLmpzCkBAIC0wLDAgKzEsNzIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBp
czEoYSwgYikgeyByZXR1cm4gT2JqZWN0LmlzKGEsIGIpOyB9Citub0lubGluZShpczEpOworZnVu
Y3Rpb24gaXMyKGEsIGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXMy
KTsKK2Z1bmN0aW9uIGlzMyhhLCBiKSB7IHJldHVybiBPYmplY3QuaXMoYSwgYik7IH0KK25vSW5s
aW5lKGlzMyk7CitmdW5jdGlvbiBpczQoYSwgYikgeyByZXR1cm4gT2JqZWN0LmlzKGEsIGIpOyB9
Citub0lubGluZShpczQpOworZnVuY3Rpb24gaXM1KGEsIGIpIHsgcmV0dXJuIE9iamVjdC5pcyhh
LCBiKTsgfQorbm9JbmxpbmUoaXM1KTsKK2Z1bmN0aW9uIGlzNihhLCBiKSB7IHJldHVybiBPYmpl
Y3QuaXMoYSwgYik7IH0KK25vSW5saW5lKGlzNik7CitmdW5jdGlvbiBpczcoYSwgYikgeyByZXR1
cm4gT2JqZWN0LmlzKGEsIGIpOyB9Citub0lubGluZShpczcpOworZnVuY3Rpb24gaXM4KGEsIGIp
IHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXM4KTsKK2Z1bmN0aW9uIGlz
OShhLCBiKSB7IHJldHVybiBPYmplY3QuaXMoYSwgYik7IH0KK25vSW5saW5lKGlzOSk7CitmdW5j
dGlvbiBpczEwKGEsIGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXMx
MCk7CitmdW5jdGlvbiBpczExKGEsIGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9J
bmxpbmUoaXMxMSk7CitmdW5jdGlvbiBpczEyKGEsIGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBi
KTsgfQorbm9JbmxpbmUoaXMxMik7CitmdW5jdGlvbiBpczEzKGEsIGIpIHsgcmV0dXJuIE9iamVj
dC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXMxMyk7CitmdW5jdGlvbiBpczE0KGEsIGIpIHsgcmV0
dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXMxNCk7CitmdW5jdGlvbiBpczE1KGEs
IGIpIHsgcmV0dXJuIE9iamVjdC5pcyhhLCBiKTsgfQorbm9JbmxpbmUoaXMxNSk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBzaG91bGRCZShPYmplY3QuaXMoTmFOLCBO
YU4pLCB0cnVlKTsKKyAgICBzaG91bGRCZShPYmplY3QuaXMobnVsbCwgbnVsbCksIHRydWUpOwor
ICAgIHNob3VsZEJlKE9iamVjdC5pcyhudWxsKSwgZmFsc2UpOworICAgIHNob3VsZEJlKE9iamVj
dC5pcyh1bmRlZmluZWQsIHVuZGVmaW5lZCksIHRydWUpOworICAgIHNob3VsZEJlKE9iamVjdC5p
cyh0cnVlLCB0cnVlKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmlzKGZhbHNlLCBmYWxz
ZSksIHRydWUpOworICAgIHNob3VsZEJlKE9iamVjdC5pcygnYWJjJywgJ2FiYycpLCB0cnVlKTsK
KyAgICBzaG91bGRCZShPYmplY3QuaXMoSW5maW5pdHksIEluZmluaXR5KSwgdHJ1ZSk7CisgICAg
c2hvdWxkQmUoT2JqZWN0LmlzKDAsIDApLCB0cnVlKTsKKyAgICBzaG91bGRCZShPYmplY3QuaXMo
LTAsIC0wKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmlzKDAsIC0wKSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKE9iamVjdC5pcygtMCwgMCksIGZhbHNlKTsKKyAgICB2YXIgb2JqID0ge307
CisgICAgc2hvdWxkQmUoT2JqZWN0LmlzKG9iaiwgb2JqKSwgdHJ1ZSk7CisgICAgdmFyIGFyciA9
IFtdOworICAgIHNob3VsZEJlKE9iamVjdC5pcyhhcnIsIGFyciksIHRydWUpOworICAgIHZhciBz
eW0gPSBTeW1ib2woKTsKKyAgICBzaG91bGRCZShPYmplY3QuaXMoc3ltLCBzeW0pLCB0cnVlKTsK
KworICAgIHNob3VsZEJlKGlzMShOYU4sIE5hTiksIHRydWUpOworICAgIHNob3VsZEJlKGlzMihu
dWxsLCBudWxsKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoaXMzKG51bGwpLCBmYWxzZSk7CisgICAg
c2hvdWxkQmUoaXM0KHVuZGVmaW5lZCwgdW5kZWZpbmVkKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUo
aXM1KHRydWUsIHRydWUpLCB0cnVlKTsKKyAgICBzaG91bGRCZShpczYoZmFsc2UsIGZhbHNlKSwg
dHJ1ZSk7CisgICAgc2hvdWxkQmUoaXM3KCdhYmMnLCAnYWJjJyksIHRydWUpOworICAgIHNob3Vs
ZEJlKGlzOChJbmZpbml0eSwgSW5maW5pdHkpLCB0cnVlKTsKKyAgICBzaG91bGRCZShpczkoMCwg
MCksIHRydWUpOworICAgIHNob3VsZEJlKGlzMTAoLTAsIC0wKSwgdHJ1ZSk7CisgICAgc2hvdWxk
QmUoaXMxMSgwLCAtMCksIGZhbHNlKTsKKyAgICBzaG91bGRCZShpczEyKC0wLCAwKSwgZmFsc2Up
OworICAgIHNob3VsZEJlKGlzMTMob2JqLCBvYmopLCB0cnVlKTsKKyAgICBzaG91bGRCZShpczE0
KGFyciwgYXJyKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoaXMxNShzeW0sIHN5bSksIHRydWUpOwor
fQo=
</data>
<flag name="review"
          id="357324"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>