<?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>130939</bug_id>
          
          <creation_ts>2014-03-29 22:55:49 -0700</creation_ts>
          <short_desc>Make RenderStyle&apos;s non inherited flags more JSC friendly</short_desc>
          <delta_ts>2014-03-31 11:45: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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>995634</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-29 22:55:49 -0700</bug_when>
    <thetext>Make RenderStyle&apos;s non inherited flags more JSC friendly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995636</commentid>
    <comment_count>1</comment_count>
      <attachid>228120</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-29 22:59:47 -0700</bug_when>
    <thetext>Created attachment 228120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995640</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-29 23:02:41 -0700</bug_when>
    <thetext>Attachment 228120 did not pass style-queue:


ERROR: Source/WebCore/rendering/style/RenderStyle.h:471:  noninherited_flags is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995644</commentid>
    <comment_count>3</comment_count>
      <attachid>228120</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-30 00:23:52 -0700</bug_when>
    <thetext>Comment on attachment 228120
Patch

r=me!

Would it be possible to mash the ref count together with the flag bits somehow in the future?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995645</commentid>
    <comment_count>4</comment_count>
      <attachid>228120</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-30 00:24:36 -0700</bug_when>
    <thetext>Comment on attachment 228120
Patch

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

&gt; Source/WebCore/rendering/style/RenderStyle.h:165
&gt; +            // Only a subset i copied because NonInheritedFlags contains a bunch of stuff other than real style data.

i copied -&gt; is copied</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995679</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-30 13:33:36 -0700</bug_when>
    <thetext>Committed r166465: &lt;http://trac.webkit.org/changeset/166465&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995680</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-30 13:34:51 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 228120 [details])
&gt; r=me!
&gt; 
&gt; Would it be possible to mash the ref count together with the flag bits somehow in the future?


Looks like there are only 24 bits left in total. A bit short for the ref count.

If we use TBI we can get rid of tons of stuff. The change would be big though :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995683</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-30 13:46:48 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 228120 [details] [details])
&gt; &gt; r=me!
&gt; &gt; 
&gt; &gt; Would it be possible to mash the ref count together with the flag bits somehow in the future?
&gt; 
&gt; 
&gt; Looks like there are only 24 bits left in total. A bit short for the ref count.
&gt; 
&gt; If we use TBI we can get rid of tons of stuff. The change would be big though :)

We could also move some of the rarely-used flags to substructures. Anyways, NABD, but something to consider in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995863</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-03-31 07:51:13 -0700</bug_when>
    <thetext>It broke the Apple Windows debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995928</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-31 11:45:26 -0700</bug_when>
    <thetext>This broke the Windows build, probably because it is 32-bit:

12&gt;c:\projects\webkit\opensource\source\webcore\rendering\style\RenderStyle.cpp(78): error C2338: RenderStyle_should_stay_small (..\rendering\style\StyleAllInOne.cpp)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228120</attachid>
            <date>2014-03-29 22:59:47 -0700</date>
            <delta_ts>2014-03-30 00:24:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130939-20140329225926.patch</filename>
            <type>text/plain</type>
            <size>69037</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDhiODYyNjU0NDlhZjY1
ZjAxNzk0MjdiNzU1YmYxYjYxOGY4MjhlZC4uZThhOTFlYjlhYzk1MGQ1YjYxZTVkYjgyOWYwMDEw
MTk2ODQwNWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0LTAzLTI5ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIFJlbmRl
clN0eWxlJ3Mgbm9uIGluaGVyaXRlZCBmbGFncyBtb3JlIEpTQyBmcmllbmRseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwOTM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBSZW5kZXJTdHlsZTo6
Tm9uSW5oZXJpdGVkRmxhZ3MgYWNjZXNzaWJsZSB0byB0aGUgSklUOgorICAgICAgICAtTWFrZSB0
aGUgc3RydWN0IHB1YmxpYyB0byBnaXZlIGFjY2VzcyB0byB0aGUgb2Zmc2V0LgorICAgICAgICAt
TW92ZSBhd2F5IGZyb20gYSBiaXQgZmllbGQgdG8gc3RhdGljIG9mZnNldHMgd2UgY2FuIHVzZQor
ICAgICAgICAgd2l0aCB0aGUgTWFjcm9Bc3NlbWJsZXIuCisgICAgICAgIC1SZW9yZGVyIHRoZSBm
aWVsZCB0byBzaW1wbGlmeSBiaXQgYWNjZXNzIG9mIHRoZSBmbGFncyB3ZSBuZWVkLgorCisgICAg
ICAgICogY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eVZlcnRpY2FsQWxpZ246OmNyZWF0ZUhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eURpc3BsYXk6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlcHJlY2F0ZWRTdHlsZUJ1aWxkZXI6OkRlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIp
OgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OlJlbmRl
clN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVk
RnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzaEZvclRleHRBdXRvc2l6
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjplcXVhbEZvclRleHRBdXRvc2l6
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzQW55UHVibGljUHNldWRvU3R5bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpoYXNQc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0SGFzUHNldWRvU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU11bHRp
Q29sRGF0YTo6U3R5bGVNdWx0aUNvbERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorCiAyMDE0LTAz
LTI3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29udmVydCB5ZXQg
bW9yZSBvZiBIVE1MQ29udmVydGVyIHRvIEMrKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJl
Y2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCmluZGV4IGE5ZjUxZDBkOWQxNTI3ZTQ0MjQ4Nzg1NjcxYjgy
NjJhMDRmMGRlZTguLjE0ZGNhOWFjYTVjMTk4M2NiYmE5OGVkMjc3ZThlNTRhYTljZGNjNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29y
cG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE5Nzcs
NyArMTk3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRl
SGFuZGxlcigpCiAgICAgewotICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5
UHJvcGVydHlEZWZhdWx0QmFzZTxFVmVydGljYWxBbGlnbiwgJlJlbmRlclN0eWxlOjp2ZXJ0aWNh
bEFsaWduLCBFVmVydGljYWxBbGlnbiwgJlJlbmRlclN0eWxlOjpzZXRWZXJ0aWNhbEFsaWduLCBF
VmVydGljYWxBbGlnbiwgJlJlbmRlclN0eWxlOjppbml0aWFsVmVydGljYWxBbGlnbj46OmNyZWF0
ZUhhbmRsZXIoKTsKKyAgICAgICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3Bl
cnR5RGVmYXVsdEJhc2U8RVZlcnRpY2FsQWxpZ24sICZSZW5kZXJTdHlsZTo6dmVydGljYWxBbGln
biwgRVZlcnRpY2FsQWxpZ24sICZSZW5kZXJTdHlsZTo6c2V0VmVydGljYWxBbGlnbiwgRVZlcnRp
Y2FsQWxpZ24sICZSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmluaXRpYWxWZXJ0aWNh
bEFsaWduPjo6Y3JlYXRlSGFuZGxlcigpOwogICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVy
KGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9uKCksIGhhbmRsZXIuaW5pdGlhbEZ1bmN0aW9uKCksICZh
cHBseVZhbHVlKTsKICAgICB9CiB9OwpAQCAtMjEwMiw3ICsyMTAyLDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5bGVSZXNv
bHZlciogc3R5bGVSZXNvbHZlcikKICAgICB7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxl
KCktPnNldERpc3BsYXkoUmVuZGVyU3R5bGU6OmluaXRpYWxEaXNwbGF5KCkpOworICAgICAgICBz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXREaXNwbGF5KFJlbmRlclN0eWxlOjpOb25Jbmhlcml0
ZWRGbGFnczo6aW5pdGlhbERpc3BsYXkoKSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgYXBw
bHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSogdmFsdWUpCkBAIC0yMzg1LDcgKzIzODUsNyBAQCBEZXByZWNhdGVkU3R5bGVCdWlsZGVy
OjpEZXByZWNhdGVkU3R5bGVCdWlsZGVyKCkKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlCb3R0b20sIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjpib3R0b20sICZS
ZW5kZXJTdHlsZTo6c2V0Qm90dG9tLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPZmZzZXQsIEF1dG9F
bmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlCb3hTaXppbmcsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3hTaXppbmcsICZSZW5kZXJT
dHlsZTo6Ym94U2l6aW5nLCBFQm94U2l6aW5nLCAmUmVuZGVyU3R5bGU6OnNldEJveFNpemluZywg
RUJveFNpemluZywgJlJlbmRlclN0eWxlOjppbml0aWFsQm94U2l6aW5nPjo6Y3JlYXRlSGFuZGxl
cigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSwgQXBw
bHlQcm9wZXJ0eURlZmF1bHQ8RUNhcHRpb25TaWRlLCAmUmVuZGVyU3R5bGU6OmNhcHRpb25TaWRl
LCBFQ2FwdGlvblNpZGUsICZSZW5kZXJTdHlsZTo6c2V0Q2FwdGlvblNpZGUsIEVDYXB0aW9uU2lk
ZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQ2FwdGlvblNpZGU+OjpjcmVhdGVIYW5kbGVyKCkpOwot
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUNsZWFyLCBBcHBseVByb3BlcnR5RGVm
YXVsdDxFQ2xlYXIsICZSZW5kZXJTdHlsZTo6Y2xlYXIsIEVDbGVhciwgJlJlbmRlclN0eWxlOjpz
ZXRDbGVhciwgRUNsZWFyLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxDbGVhcj46OmNyZWF0ZUhhbmRs
ZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Q2xlYXIsIEFwcGx5UHJv
cGVydHlEZWZhdWx0PEVDbGVhciwgJlJlbmRlclN0eWxlOjpjbGVhciwgRUNsZWFyLCAmUmVuZGVy
U3R5bGU6OnNldENsZWFyLCBFQ2xlYXIsICZSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6
OmluaXRpYWxDbGVhcj46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5Q2xpcCwgQXBwbHlQcm9wZXJ0eUNsaXA6OmNyZWF0ZUhhbmRsZXIoKSk7CiAg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Q29sb3IsIEFwcGx5UHJvcGVydHlDb2xv
cjxJbmhlcml0RnJvbVBhcmVudCwgJlJlbmRlclN0eWxlOjpjb2xvciwgJlJlbmRlclN0eWxlOjpz
ZXRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbG9yLCAmUmVuZGVyU3R5bGU6
OmludmFsaWRDb2xvciwgUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcj46OmNyZWF0ZUhhbmRsZXIo
KSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCwg
QXBwbHlQcm9wZXJ0eUNvdW50ZXI8SW5jcmVtZW50Pjo6Y3JlYXRlSGFuZGxlcigpKTsKQEAgLTIz
OTQsNyArMjM5NCw3IEBAIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXI6OkRlcHJlY2F0ZWRTdHlsZUJ1
aWxkZXIoKQogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQXBw
bHlQcm9wZXJ0eURpcmVjdGlvbjwmUmVuZGVyU3R5bGU6OmRpcmVjdGlvbiwgJlJlbmRlclN0eWxl
OjpzZXREaXJlY3Rpb24sIFJlbmRlclN0eWxlOjppbml0aWFsRGlyZWN0aW9uPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlEaXNwbGF5LCBBcHBs
eVByb3BlcnR5RGlzcGxheTo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlFbXB0eUNlbGxzLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFRW1wdHlDZWxs
LCAmUmVuZGVyU3R5bGU6OmVtcHR5Q2VsbHMsIEVFbXB0eUNlbGwsICZSZW5kZXJTdHlsZTo6c2V0
RW1wdHlDZWxscywgRUVtcHR5Q2VsbCwgJlJlbmRlclN0eWxlOjppbml0aWFsRW1wdHlDZWxscz46
OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Rmxv
YXQsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVGbG9hdCwgJlJlbmRlclN0eWxlOjpmbG9hdGluZywg
RUZsb2F0LCAmUmVuZGVyU3R5bGU6OnNldEZsb2F0aW5nLCBFRmxvYXQsICZSZW5kZXJTdHlsZTo6
aW5pdGlhbEZsb2F0aW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlGbG9hdCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUZsb2F0LCAmUmVuZGVy
U3R5bGU6OmZsb2F0aW5nLCBFRmxvYXQsICZSZW5kZXJTdHlsZTo6c2V0RmxvYXRpbmcsIEVGbG9h
dCwgJlJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6aW5pdGlhbEZsb2F0aW5nPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlGb250RmFt
aWx5LCBBcHBseVByb3BlcnR5Rm9udEZhbWlseTo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlGb250U2l6ZSwgQXBwbHlQcm9wZXJ0eUZvbnRTaXpl
OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUZv
bnRTdHlsZSwgQXBwbHlQcm9wZXJ0eUZvbnQ8Rm9udEl0YWxpYywgJkZvbnREZXNjcmlwdGlvbjo6
aXRhbGljLCAmRm9udERlc2NyaXB0aW9uOjpzZXRJdGFsaWMsIEZvbnRJdGFsaWNPZmY+OjpjcmVh
dGVIYW5kbGVyKCkpOwpAQCAtMjQzNSwyMiArMjQzNSwyMiBAQCBEZXByZWNhdGVkU3R5bGVCdWls
ZGVyOjpEZXByZWNhdGVkU3R5bGVCdWlsZGVyKCkKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlPdXRsaW5lU3R5bGUsIEFwcGx5UHJvcGVydHlPdXRsaW5lU3R5bGU6OmNyZWF0ZUhh
bmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3V0bGluZVdpZHRo
LCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgJlJlbmRlclN0eWxl
OjpvdXRsaW5lV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxPdXRsaW5lV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlja25lc3NFbmFibGVk
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlP
dmVyZmxvd1dyYXAsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVPdmVyZmxvd1dyYXAsICZSZW5kZXJT
dHlsZTo6b3ZlcmZsb3dXcmFwLCBFT3ZlcmZsb3dXcmFwLCAmUmVuZGVyU3R5bGU6OnNldE92ZXJm
bG93V3JhcCwgRU92ZXJmbG93V3JhcCwgJlJlbmRlclN0eWxlOjppbml0aWFsT3ZlcmZsb3dXcmFw
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlP
dmVyZmxvd1gsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVPdmVyZmxvdywgJlJlbmRlclN0eWxlOjpv
dmVyZmxvd1gsIEVPdmVyZmxvdywgJlJlbmRlclN0eWxlOjpzZXRPdmVyZmxvd1gsIEVPdmVyZmxv
dywgJlJlbmRlclN0eWxlOjppbml0aWFsT3ZlcmZsb3dYPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIEFwcGx5UHJvcGVydHlE
ZWZhdWx0PEVPdmVyZmxvdywgJlJlbmRlclN0eWxlOjpvdmVyZmxvd1ksIEVPdmVyZmxvdywgJlJl
bmRlclN0eWxlOjpzZXRPdmVyZmxvd1ksIEVPdmVyZmxvdywgJlJlbmRlclN0eWxlOjppbml0aWFs
T3ZlcmZsb3dZPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlPdmVyZmxvd1gsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVPdmVyZmxvdywgJlJlbmRl
clN0eWxlOjpvdmVyZmxvd1gsIEVPdmVyZmxvdywgJlJlbmRlclN0eWxlOjpzZXRPdmVyZmxvd1gs
IEVPdmVyZmxvdywgJlJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6aW5pdGlhbE92ZXJm
bG93WD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5T3ZlcmZsb3dZLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFT3ZlcmZsb3csICZSZW5kZXJTdHls
ZTo6b3ZlcmZsb3dZLCBFT3ZlcmZsb3csICZSZW5kZXJTdHlsZTo6c2V0T3ZlcmZsb3dZLCBFT3Zl
cmZsb3csICZSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmluaXRpYWxPdmVyZmxvd1k+
OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVBh
ZGRpbmdCb3R0b20sIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjpwYWRkaW5nQm90
dG9tLCAmUmVuZGVyU3R5bGU6OnNldFBhZGRpbmdCb3R0b20sICZSZW5kZXJTdHlsZTo6aW5pdGlh
bFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVBhZGRpbmdMZWZ0LCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6cGFk
ZGluZ0xlZnQsICZSZW5kZXJTdHlsZTo6c2V0UGFkZGluZ0xlZnQsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6
OnBhZGRpbmdSaWdodCwgJlJlbmRlclN0eWxlOjpzZXRQYWRkaW5nUmlnaHQsICZSZW5kZXJTdHls
ZTo6aW5pdGlhbFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0
eWxlOjpwYWRkaW5nVG9wLCAmUmVuZGVyU3R5bGU6OnNldFBhZGRpbmdUb3AsICZSZW5kZXJTdHls
ZTo6aW5pdGlhbFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFUGFn
ZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnBhZ2VCcmVha0FmdGVyLCBFUGFnZUJyZWFrLCAmUmVuZGVy
U3R5bGU6OnNldFBhZ2VCcmVha0FmdGVyLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxQYWdlQnJlYWs+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVBhZ2VCcmVh
aywgJlJlbmRlclN0eWxlOjpwYWdlQnJlYWtCZWZvcmUsIEVQYWdlQnJlYWssICZSZW5kZXJTdHls
ZTo6c2V0UGFnZUJyZWFrQmVmb3JlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQ
YWdlQnJlYWs+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVBhZ2VCcmVha0luc2lkZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVBhZ2VCcmVhaywg
JlJlbmRlclN0eWxlOjpwYWdlQnJlYWtJbnNpZGUsIEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6
c2V0UGFnZUJyZWFrSW5zaWRlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQYWdl
QnJlYWs+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVBhZ2VCcmVha0FmdGVyLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFUGFnZUJyZWFrLCAmUmVu
ZGVyU3R5bGU6OnBhZ2VCcmVha0FmdGVyLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnNldFBh
Z2VCcmVha0FmdGVyLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdz
Ojppbml0aWFsUGFnZUJyZWFrPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVQ
YWdlQnJlYWssICZSZW5kZXJTdHlsZTo6cGFnZUJyZWFrQmVmb3JlLCBFUGFnZUJyZWFrLCAmUmVu
ZGVyU3R5bGU6OnNldFBhZ2VCcmVha0JlZm9yZSwgRVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpO
b25Jbmhlcml0ZWRGbGFnczo6aW5pdGlhbFBhZ2VCcmVhaz46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlLCBBcHBseVBy
b3BlcnR5RGVmYXVsdDxFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnBhZ2VCcmVha0luc2lkZSwg
RVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpzZXRQYWdlQnJlYWtJbnNpZGUsIEVQYWdlQnJlYWss
ICZSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmluaXRpYWxQYWdlQnJlYWs+OjpjcmVh
dGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVBvaW50ZXJF
dmVudHMsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVQb2ludGVyRXZlbnRzLCAmUmVuZGVyU3R5bGU6
OnBvaW50ZXJFdmVudHMsIEVQb2ludGVyRXZlbnRzLCAmUmVuZGVyU3R5bGU6OnNldFBvaW50ZXJF
dmVudHMsIEVQb2ludGVyRXZlbnRzLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQb2ludGVyRXZlbnRz
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlQ
b3NpdGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVBvc2l0aW9uLCAmUmVuZGVyU3R5bGU6OnBv
c2l0aW9uLCBFUG9zaXRpb24sICZSZW5kZXJTdHlsZTo6c2V0UG9zaXRpb24sIEVQb3NpdGlvbiwg
JlJlbmRlclN0eWxlOjppbml0aWFsUG9zaXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVBvc2l0aW9uLCBBcHBseVByb3BlcnR5RGVmYXVs
dDxFUG9zaXRpb24sICZSZW5kZXJTdHlsZTo6cG9zaXRpb24sIEVQb3NpdGlvbiwgJlJlbmRlclN0
eWxlOjpzZXRQb3NpdGlvbiwgRVBvc2l0aW9uLCAmUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZs
YWdzOjppbml0aWFsUG9zaXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVJlc2l6ZSwgQXBwbHlQcm9wZXJ0eVJlc2l6ZTo6Y3JlYXRlSGFu
ZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlSaWdodCwgQXBwbHlQ
cm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OnJpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldFJpZ2h0
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPZmZzZXQsIEF1dG9FbmFibGVkPjo6Y3JlYXRlSGFuZGxl
cigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlTaXplLCBBcHBseVByb3Bl
cnR5UGFnZVNpemU6OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5U3BlYWssIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVTcGVhaywgJlJlbmRlclN0eWxl
OjpzcGVhaywgRVNwZWFrLCAmUmVuZGVyU3R5bGU6OnNldFNwZWFrLCBFU3BlYWssICZSZW5kZXJT
dHlsZTo6aW5pdGlhbFNwZWFrPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlUYWJsZUxheW91dCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVRhYmxl
TGF5b3V0LCAmUmVuZGVyU3R5bGU6OnRhYmxlTGF5b3V0LCBFVGFibGVMYXlvdXQsICZSZW5kZXJT
dHlsZTo6c2V0VGFibGVMYXlvdXQsIEVUYWJsZUxheW91dCwgJlJlbmRlclN0eWxlOjppbml0aWFs
VGFibGVMYXlvdXQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVRhYmxlTGF5b3V0LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFVGFibGVMYXlvdXQs
ICZSZW5kZXJTdHlsZTo6dGFibGVMYXlvdXQsIEVUYWJsZUxheW91dCwgJlJlbmRlclN0eWxlOjpz
ZXRUYWJsZUxheW91dCwgRVRhYmxlTGF5b3V0LCAmUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZs
YWdzOjppbml0aWFsVGFibGVMYXlvdXQ+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVRhYlNpemUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PHVuc2ln
bmVkLCAmUmVuZGVyU3R5bGU6OnRhYlNpemUsIHVuc2lnbmVkLCAmUmVuZGVyU3R5bGU6OnNldFRh
YlNpemUsIHVuc2lnbmVkLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJTaXplPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIEFw
cGx5UHJvcGVydHlUZXh0QWxpZ246OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIEFwcGx5UHJvcGVydHlUZXh0RGVjb3Jh
dGlvbjo6Y3JlYXRlSGFuZGxlcigpKTsKQEAgLTI0NjgsNyArMjQ2OCw3IEBAIERlcHJlY2F0ZWRT
dHlsZUJ1aWxkZXI6OkRlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIoKQogICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcsIEFwcGx5UHJvcGVydHlGb250PFRleHRSZW5k
ZXJpbmdNb2RlLCAmRm9udERlc2NyaXB0aW9uOjp0ZXh0UmVuZGVyaW5nTW9kZSwgJkZvbnREZXNj
cmlwdGlvbjo6c2V0VGV4dFJlbmRlcmluZ01vZGUsIEF1dG9UZXh0UmVuZGVyaW5nPjo6Y3JlYXRl
SGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlUZXh0VHJhbnNm
b3JtLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFVGV4dFRyYW5zZm9ybSwgJlJlbmRlclN0eWxlOjp0
ZXh0VHJhbnNmb3JtLCBFVGV4dFRyYW5zZm9ybSwgJlJlbmRlclN0eWxlOjpzZXRUZXh0VHJhbnNm
b3JtLCBFVGV4dFRyYW5zZm9ybSwgJlJlbmRlclN0eWxlOjppbml0aWFsVGV4dFRyYW5zZm9ybT46
OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5VG9w
LCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6dG9wLCAmUmVuZGVyU3R5bGU6OnNl
dFRvcCwgJlJlbmRlclN0eWxlOjppbml0aWFsT2Zmc2V0LCBBdXRvRW5hYmxlZD46OmNyZWF0ZUhh
bmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5VW5pY29kZUJpZGks
IEFwcGx5UHJvcGVydHlEZWZhdWx0PEVVbmljb2RlQmlkaSwgJlJlbmRlclN0eWxlOjp1bmljb2Rl
QmlkaSwgRVVuaWNvZGVCaWRpLCAmUmVuZGVyU3R5bGU6OnNldFVuaWNvZGVCaWRpLCBFVW5pY29k
ZUJpZGksICZSZW5kZXJTdHlsZTo6aW5pdGlhbFVuaWNvZGVCaWRpPjo6Y3JlYXRlSGFuZGxlcigp
KTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQXBwbHlQ
cm9wZXJ0eURlZmF1bHQ8RVVuaWNvZGVCaWRpLCAmUmVuZGVyU3R5bGU6OnVuaWNvZGVCaWRpLCBF
VW5pY29kZUJpZGksICZSZW5kZXJTdHlsZTo6c2V0VW5pY29kZUJpZGksIEVVbmljb2RlQmlkaSwg
JlJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6aW5pdGlhbFVuaWNvZGVCaWRpPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlWZXJ0aWNh
bEFsaWduLCBBcHBseVByb3BlcnR5VmVydGljYWxBbGlnbjo6Y3JlYXRlSGFuZGxlcigpKTsKICAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBBcHBseVByb3BlcnR5
RGVmYXVsdDxFVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjp2aXNpYmlsaXR5LCBFVmlzaWJpbGl0
eSwgJlJlbmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5LCBFVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxl
Ojppbml0aWFsVmlzaWJpbGl0eT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksIEFwcGx5UHJvcGVydHlBbmlt
YXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpkZWxheSwgJkFuaW1hdGlvbjo6c2V0RGVsYXksICZB
bmltYXRpb246OmlzRGVsYXlTZXQsICZBbmltYXRpb246OmNsZWFyRGVsYXksICZBbmltYXRpb246
OmluaXRpYWxBbmltYXRpb25EZWxheSwgJkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRlbGF5
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9u
cz46OmNyZWF0ZUhhbmRsZXIoKSk7CkBAIC0yNTA3LDkgKzI1MDcsOSBAQCBEZXByZWNhdGVkU3R5
bGVCdWlsZGVyOjpEZXByZWNhdGVkU3R5bGVCdWlsZGVyKCkKICAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm94UGFj
aywgJlJlbmRlclN0eWxlOjpib3hQYWNrLCBFQm94UGFjaywgJlJlbmRlclN0eWxlOjpzZXRCb3hQ
YWNrLCBFQm94UGFjaywgJlJlbmRlclN0eWxlOjppbml0aWFsQm94UGFjaz46OmNyZWF0ZUhhbmRs
ZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3Jy
ZWN0aW9uLCBBcHBseVByb3BlcnR5RGVmYXVsdDxDb2xvclNwYWNlLCAmUmVuZGVyU3R5bGU6OmNv
bG9yU3BhY2UsIENvbG9yU3BhY2UsICZSZW5kZXJTdHlsZTo6c2V0Q29sb3JTcGFjZSwgQ29sb3JT
cGFjZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQ29sb3JTcGFjZT46OmNyZWF0ZUhhbmRsZXIoKSk7
CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQXhpcywgQXBw
bHlQcm9wZXJ0eURlZmF1bHQ8Q29sdW1uQXhpcywgJlJlbmRlclN0eWxlOjpjb2x1bW5BeGlzLCBD
b2x1bW5BeGlzLCAmUmVuZGVyU3R5bGU6OnNldENvbHVtbkF4aXMsIENvbHVtbkF4aXMsICZSZW5k
ZXJTdHlsZTo6aW5pdGlhbENvbHVtbkF4aXM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIsIEFwcGx5UHJv
cGVydHlEZWZhdWx0PEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6Y29sdW1uQnJlYWtBZnRlciwg
RVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpzZXRDb2x1bW5CcmVha0FmdGVyLCBFUGFnZUJyZWFr
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQYWdlQnJlYWs+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlLCBB
cHBseVByb3BlcnR5RGVmYXVsdDxFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OmNvbHVtbkJyZWFr
QmVmb3JlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnNldENvbHVtbkJyZWFrQmVmb3JlLCBF
UGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQYWdlQnJlYWs+OjpjcmVhdGVIYW5kbGVy
KCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFr
SW5zaWRlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OmNv
bHVtbkJyZWFrSW5zaWRlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnNldENvbHVtbkJyZWFr
SW5zaWRlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQYWdlQnJlYWs+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbkJyZWFrQWZ0ZXIsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVQYWdlQnJlYWssICZSZW5kZXJT
dHlsZTo6Y29sdW1uQnJlYWtBZnRlciwgRVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpzZXRDb2x1
bW5CcmVha0FmdGVyLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdz
Ojppbml0aWFsUGFnZUJyZWFrPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgQXBwbHlQcm9wZXJ0eURl
ZmF1bHQ8RVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpjb2x1bW5CcmVha0JlZm9yZSwgRVBhZ2VC
cmVhaywgJlJlbmRlclN0eWxlOjpzZXRDb2x1bW5CcmVha0JlZm9yZSwgRVBhZ2VCcmVhaywgJlJl
bmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6aW5pdGlhbFBhZ2VCcmVhaz46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
QnJlYWtJbnNpZGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVQYWdlQnJlYWssICZSZW5kZXJTdHls
ZTo6Y29sdW1uQnJlYWtJbnNpZGUsIEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1u
QnJlYWtJbnNpZGUsIEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6
OmluaXRpYWxQYWdlQnJlYWs+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50LCBBcHBseVByb3BlcnR5QXV0bzx1bnNp
Z25lZCBzaG9ydCwgJlJlbmRlclN0eWxlOjpjb2x1bW5Db3VudCwgJlJlbmRlclN0eWxlOjpzZXRD
b2x1bW5Db3VudCwgJlJlbmRlclN0eWxlOjpoYXNBdXRvQ29sdW1uQ291bnQsICZSZW5kZXJTdHls
ZTo6c2V0SGFzQXV0b0NvbHVtbkNvdW50Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5GaWxsLCBBcHBseVByb3BlcnR5RGVm
YXVsdDxDb2x1bW5GaWxsLCAmUmVuZGVyU3R5bGU6OmNvbHVtbkZpbGwsIENvbHVtbkZpbGwsICZS
ZW5kZXJTdHlsZTo6c2V0Q29sdW1uRmlsbCwgQ29sdW1uRmlsbCwgJlJlbmRlclN0eWxlOjppbml0
aWFsQ29sdW1uRmlsbD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2FwLCBBcHBseVByb3BlcnR5QXV0bzxmbG9hdCwgJlJl
bmRlclN0eWxlOjpjb2x1bW5HYXAsICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uR2FwLCAmUmVuZGVy
U3R5bGU6Omhhc05vcm1hbENvbHVtbkdhcCwgJlJlbmRlclN0eWxlOjpzZXRIYXNOb3JtYWxDb2x1
bW5HYXAsIENvbXB1dGVMZW5ndGgsIENTU1ZhbHVlTm9ybWFsPjo6Y3JlYXRlSGFuZGxlcigpKTsK
QEAgLTI1ODMsOSArMjU4Myw5IEBAIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXI6OkRlcHJlY2F0ZWRT
dHlsZUJ1aWxkZXIoKQogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFBl
cnNwZWN0aXZlT3JpZ2luWSwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OnBlcnNw
ZWN0aXZlT3JpZ2luWSwgJlJlbmRlclN0eWxlOjpzZXRQZXJzcGVjdGl2ZU9yaWdpblksICZSZW5k
ZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdCwg
QXBwbHlQcm9wZXJ0eURlZmF1bHQ8UHJpbnRDb2xvckFkanVzdCwgJlJlbmRlclN0eWxlOjpwcmlu
dENvbG9yQWRqdXN0LCBQcmludENvbG9yQWRqdXN0LCAmUmVuZGVyU3R5bGU6OnNldFByaW50Q29s
b3JBZGp1c3QsIFByaW50Q29sb3JBZGp1c3QsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFByaW50Q29s
b3JBZGp1c3Q+OjpjcmVhdGVIYW5kbGVyKCkpOwogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0FmdGVyLCBB
cHBseVByb3BlcnR5RGVmYXVsdDxFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnJlZ2lvbkJyZWFr
QWZ0ZXIsIEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6c2V0UmVnaW9uQnJlYWtBZnRlciwgRVBh
Z2VCcmVhaywgJlJlbmRlclN0eWxlOjppbml0aWFsUGFnZUJyZWFrPjo6Y3JlYXRlSGFuZGxlcigp
KTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0Jl
Zm9yZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpyZWdp
b25CcmVha0JlZm9yZSwgRVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpzZXRSZWdpb25CcmVha0Jl
Zm9yZSwgRVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjppbml0aWFsUGFnZUJyZWFrPjo6Y3JlYXRl
SGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRSZWdp
b25CcmVha0luc2lkZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVBhZ2VCcmVhaywgJlJlbmRlclN0
eWxlOjpyZWdpb25CcmVha0luc2lkZSwgRVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpzZXRSZWdp
b25CcmVha0luc2lkZSwgRVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjppbml0aWFsUGFnZUJyZWFr
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRSZWdpb25CcmVha0FmdGVyLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFUGFnZUJyZWFrLCAm
UmVuZGVyU3R5bGU6OnJlZ2lvbkJyZWFrQWZ0ZXIsIEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6
c2V0UmVnaW9uQnJlYWtBZnRlciwgRVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpOb25Jbmhlcml0
ZWRGbGFnczo6aW5pdGlhbFBhZ2VCcmVhaz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtCZWZvcmUsIEFwcGx5UHJv
cGVydHlEZWZhdWx0PEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6cmVnaW9uQnJlYWtCZWZvcmUs
IEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6c2V0UmVnaW9uQnJlYWtCZWZvcmUsIEVQYWdlQnJl
YWssICZSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmluaXRpYWxQYWdlQnJlYWs+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dFJlZ2lvbkJyZWFrSW5zaWRlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFUGFnZUJyZWFrLCAmUmVu
ZGVyU3R5bGU6OnJlZ2lvbkJyZWFrSW5zaWRlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnNl
dFJlZ2lvbkJyZWFrSW5zaWRlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRl
ZEZsYWdzOjppbml0aWFsUGFnZUJyZWFrPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRSZWdpb25GcmFnbWVudCwgQXBwbHlQcm9wZXJ0
eURlZmF1bHQ8UmVnaW9uRnJhZ21lbnQsICZSZW5kZXJTdHlsZTo6cmVnaW9uRnJhZ21lbnQsIFJl
Z2lvbkZyYWdtZW50LCAmUmVuZGVyU3R5bGU6OnNldFJlZ2lvbkZyYWdtZW50LCBSZWdpb25GcmFn
bWVudCwgJlJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uRnJhZ21lbnQ+OjpjcmVhdGVIYW5kbGVy
KCkpOwogI2VuZGlmCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0UnRs
T3JkZXJpbmcsIEFwcGx5UHJvcGVydHlEZWZhdWx0PE9yZGVyLCAmUmVuZGVyU3R5bGU6OnJ0bE9y
ZGVyaW5nLCBPcmRlciwgJlJlbmRlclN0eWxlOjpzZXRSVExPcmRlcmluZywgT3JkZXIsICZSZW5k
ZXJTdHlsZTo6aW5pdGlhbFJUTE9yZGVyaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA5OTNhNGU3MTkxNzViMGUxYTc0ZTE1MDNlN2M2
NTFkYjcyMGRiYzNkLi5jMjQwZTBjMzhjYzVjYzU4ZjgyNmYzODI4MDVmNDM3ZmYyODZmODRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xMzUwLDcgKzEzNTAsNyBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIHBhcgogCiAgICAgICAgIC8vIE9ubHkgdGhlIHJvb3QgPHN2Zz4g
ZWxlbWVudCBpbiBhbiBTVkcgZG9jdW1lbnQgZnJhZ21lbnQgdHJlZSBob25vcnMgY3NzIHBvc2l0
aW9uCiAgICAgICAgIGlmICghKGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2Z1RhZykgJiYgZS0+
cGFyZW50Tm9kZSgpICYmICFlLT5wYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpKSkKLSAgICAg
ICAgICAgIHN0eWxlLnNldFBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsUG9zaXRpb24oKSk7
CisgICAgICAgICAgICBzdHlsZS5zZXRQb3NpdGlvbihSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVk
RmxhZ3M6OmluaXRpYWxQb3NpdGlvbigpKTsKIAogICAgICAgICAvLyBSZW5kZXJTVkdSb290IGhh
bmRsZXMgem9vbWluZyBmb3IgdGhlIHdob2xlIFNWRyBzdWJ0cmVlLCBzbyBmb3JlaWduT2JqZWN0
IGNvbnRlbnQgc2hvdWxkCiAgICAgICAgIC8vIG5vdCBiZSBzY2FsZWQgYWdhaW4uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAxODE2ZDBi
OTA4ZjllNWNhMjc1ZmMxZGY5OTFkMzVkOTdhOGI2Yzg4Li5hYjIwNzRiYTliZDRlOTcxOTE4Nzlm
ZmQ2NWJjYzUzNDE4MzM3MjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTI2LDcgKzEyNiwyNyBAQCBBTFdBWVNfSU5M
SU5FIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShib29sKQogICAgICwgaW5oZXJpdGVkKFN0eWxl
SW5oZXJpdGVkRGF0YTo6Y3JlYXRlKCkpCiAgICAgLCBtX3N2Z1N0eWxlKFNWR1JlbmRlclN0eWxl
OjpjcmVhdGUoKSkKIHsKLSAgICBzZXRCaXREZWZhdWx0cygpOworICAgIGluaGVyaXRlZF9mbGFn
cy5fZW1wdHlfY2VsbHMgPSBpbml0aWFsRW1wdHlDZWxscygpOworICAgIGluaGVyaXRlZF9mbGFn
cy5fY2FwdGlvbl9zaWRlID0gaW5pdGlhbENhcHRpb25TaWRlKCk7CisgICAgaW5oZXJpdGVkX2Zs
YWdzLl9saXN0X3N0eWxlX3R5cGUgPSBpbml0aWFsTGlzdFN0eWxlVHlwZSgpOworICAgIGluaGVy
aXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbiA9IGluaXRpYWxMaXN0U3R5bGVQb3NpdGlv
bigpOworICAgIGluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eSA9IGluaXRpYWxWaXNpYmlsaXR5
KCk7CisgICAgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduID0gaW5pdGlhbFRleHRBbGlnbigp
OworICAgIGluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0gPSBpbml0aWFsVGV4dFRyYW5z
Zm9ybSgpOworICAgIGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyA9IGluaXRpYWxU
ZXh0RGVjb3JhdGlvbigpOworICAgIGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlID0gaW5p
dGlhbEN1cnNvcigpOworI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKKyAgICBpbmhlcml0
ZWRfZmxhZ3MubV9jdXJzb3JWaXNpYmlsaXR5ID0gaW5pdGlhbEN1cnNvclZpc2liaWxpdHkoKTsK
KyNlbmRpZgorICAgIGluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uID0gaW5pdGlhbERpcmVjdGlv
bigpOworICAgIGluaGVyaXRlZF9mbGFncy5fd2hpdGVfc3BhY2UgPSBpbml0aWFsV2hpdGVTcGFj
ZSgpOworICAgIGluaGVyaXRlZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNlID0gaW5pdGlhbEJvcmRl
ckNvbGxhcHNlKCk7CisgICAgaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcgPSBpbml0aWFs
UlRMT3JkZXJpbmcoKTsKKyAgICBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24gPSBpbml0
aWFsQm94RGlyZWN0aW9uKCk7CisgICAgaW5oZXJpdGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVz
dCA9IGluaXRpYWxQcmludENvbG9yQWRqdXN0KCk7CisgICAgaW5oZXJpdGVkX2ZsYWdzLl9wb2lu
dGVyRXZlbnRzID0gaW5pdGlhbFBvaW50ZXJFdmVudHMoKTsKKyAgICBpbmhlcml0ZWRfZmxhZ3Mu
X2luc2lkZUxpbmsgPSBOb3RJbnNpZGVMaW5rOworICAgIGluaGVyaXRlZF9mbGFncy5tX3dyaXRp
bmdNb2RlID0gaW5pdGlhbFdyaXRpbmdNb2RlKCk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KChzaXpl
b2YoSW5oZXJpdGVkRmxhZ3MpIDw9IDgpLCAiSW5oZXJpdGVkRmxhZ3MgZG9lcyBub3QgZ3JvdyIp
OwogICAgIHN0YXRpY19hc3NlcnQoKHNpemVvZihOb25Jbmhlcml0ZWRGbGFncykgPD0gOCksICJO
b25Jbmhlcml0ZWRGbGFncyBkb2VzIG5vdCBncm93Iik7CkBAIC0xNzAsMjEgKzE5MCw3IEBAIHZv
aWQgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFJlbmRlclN0eWxlKiBv
dGhlcikKICAgICBtX2JhY2tncm91bmQgPSBvdGhlci0+bV9iYWNrZ3JvdW5kOwogICAgIHN1cnJv
dW5kID0gb3RoZXItPnN1cnJvdW5kOwogICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhID0gb3RoZXIt
PnJhcmVOb25Jbmhlcml0ZWREYXRhOwotICAgIC8vIFRoZSBmbGFncyBhcmUgY29waWVkIG9uZS1i
eS1vbmUgYmVjYXVzZSBub25pbmhlcml0ZWRfZmxhZ3MgY29udGFpbnMgYSBidW5jaCBvZiBzdHVm
ZiBvdGhlciB0aGFuIHJlYWwgc3R5bGUgZGF0YS4KLSAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2Vm
ZmVjdGl2ZURpc3BsYXkgPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9lZmZlY3RpdmVEaXNw
bGF5OwotICAgIG5vbmluaGVyaXRlZF9mbGFncy5fb3JpZ2luYWxEaXNwbGF5ID0gb3RoZXItPm5v
bmluaGVyaXRlZF9mbGFncy5fb3JpZ2luYWxEaXNwbGF5OwotICAgIG5vbmluaGVyaXRlZF9mbGFn
cy5fb3ZlcmZsb3dYID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fb3ZlcmZsb3dYOwotICAg
IG5vbmluaGVyaXRlZF9mbGFncy5fb3ZlcmZsb3dZID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFn
cy5fb3ZlcmZsb3dZOwotICAgIG5vbmluaGVyaXRlZF9mbGFncy5fdmVydGljYWxfYWxpZ24gPSBv
dGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl92ZXJ0aWNhbF9hbGlnbjsKLSAgICBub25pbmhlcml0
ZWRfZmxhZ3MuX2NsZWFyID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fY2xlYXI7Ci0gICAg
bm9uaW5oZXJpdGVkX2ZsYWdzLl9wb3NpdGlvbiA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3Mu
X3Bvc2l0aW9uOwotICAgIG5vbmluaGVyaXRlZF9mbGFncy5fZmxvYXRpbmcgPSBvdGhlci0+bm9u
aW5oZXJpdGVkX2ZsYWdzLl9mbG9hdGluZzsKLSAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3RhYmxl
X2xheW91dCA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3RhYmxlX2xheW91dDsKLSAgICBu
b25pbmhlcml0ZWRfZmxhZ3MuX3VuaWNvZGVCaWRpID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFn
cy5fdW5pY29kZUJpZGk7Ci0gICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2JlZm9y
ZSA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYmVmb3JlOwotICAgIG5v
bmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19hZnRlciA9IG90aGVyLT5ub25pbmhlcml0ZWRf
ZmxhZ3MuX3BhZ2VfYnJlYWtfYWZ0ZXI7Ci0gICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2Jy
ZWFrX2luc2lkZSA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfaW5zaWRl
OwotICAgIG5vbmluaGVyaXRlZF9mbGFncy5leHBsaWNpdEluaGVyaXRhbmNlID0gb3RoZXItPm5v
bmluaGVyaXRlZF9mbGFncy5leHBsaWNpdEluaGVyaXRhbmNlOworICAgIG5vbmluaGVyaXRlZF9m
bGFncy5jb3B5Tm9uSW5oZXJpdGVkRnJvbShvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzKTsKIAog
ICAgIGlmIChtX3N2Z1N0eWxlICE9IG90aGVyLT5tX3N2Z1N0eWxlKQogICAgICAgICBtX3N2Z1N0
eWxlLmFjY2VzcygpLT5jb3B5Tm9uSW5oZXJpdGVkRnJvbShvdGhlci0+bV9zdmdTdHlsZS5nZXQo
KSk7CkBAIC0zMTAsOCArMzE2LDggQEAgdWludDMyX3QgUmVuZGVyU3R5bGU6Omhhc2hGb3JUZXh0
QXV0b3NpemluZygpIGNvbnN0CiAgICAgaGFzaCBePSBpbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRl
cl9zcGFjaW5nOwogICAgIGhhc2ggXj0gaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uOwog
ICAgIGhhc2ggXj0gaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmc7Ci0gICAgaGFzaCBePSBu
b25pbmhlcml0ZWRfZmxhZ3MuX3Bvc2l0aW9uOwotICAgIGhhc2ggXj0gbm9uaW5oZXJpdGVkX2Zs
YWdzLl9mbG9hdGluZzsKKyAgICBoYXNoIF49IG5vbmluaGVyaXRlZF9mbGFncy5wb3NpdGlvbigp
OworICAgIGhhc2ggXj0gbm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCk7CiAgICAgaGFzaCBe
PSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93OwogICAgIGhhc2ggXj0gcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRTZWN1cml0eTsKICAgICByZXR1cm4gaGFzaDsKQEAgLTMzNCw4ICsz
NDAsOCBAQCBib29sIFJlbmRlclN0eWxlOjplcXVhbEZvclRleHRBdXRvc2l6aW5nKGNvbnN0IFJl
bmRlclN0eWxlKiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgaW5oZXJpdGVkLT52ZXJ0aWNhbF9i
b3JkZXJfc3BhY2luZyA9PSBvdGhlci0+aW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2lu
ZwogICAgICAgICAmJiBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24gPT0gb3RoZXItPmlu
aGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbgogICAgICAgICAmJiBpbmhlcml0ZWRfZmxhZ3Mu
bV9ydGxPcmRlcmluZyA9PSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcKLSAg
ICAgICAgJiYgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wb3NpdGlvbiA9PSBvdGhlci0+bm9uaW5oZXJp
dGVkX2ZsYWdzLl9wb3NpdGlvbgotICAgICAgICAmJiBub25pbmhlcml0ZWRfZmxhZ3MuX2Zsb2F0
aW5nID09IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX2Zsb2F0aW5nCisgICAgICAgICYmIG5v
bmluaGVyaXRlZF9mbGFncy5wb3NpdGlvbigpID09IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3Mu
cG9zaXRpb24oKQorICAgICAgICAmJiBub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmcoKSA9PSBv
dGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLmZsb2F0aW5nKCkKICAgICAgICAgJiYgcmFyZU5vbklu
aGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdyA9PSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEt
PnRleHRPdmVyZmxvdzsKIH0KICNlbmRpZiAvLyBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykK
QEAgLTM4Niw3ICszOTIsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91
dChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZwogICAgICAgICB8fCBt
X2JveC0+bWF4SGVpZ2h0KCkgIT0gb3RoZXItPm1fYm94LT5tYXhIZWlnaHQoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9ib3gtPnZlcnRpY2FsQWxpZ24oKSAhPSBvdGhlci0+
bV9ib3gtPnZlcnRpY2FsQWxpZ24oKSB8fCBub25pbmhlcml0ZWRfZmxhZ3MuX3ZlcnRpY2FsX2Fs
aWduICE9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3ZlcnRpY2FsX2FsaWduKQorICAgIGlm
IChtX2JveC0+dmVydGljYWxBbGlnbigpICE9IG90aGVyLT5tX2JveC0+dmVydGljYWxBbGlnbigp
IHx8IG5vbmluaGVyaXRlZF9mbGFncy52ZXJ0aWNhbEFsaWduKCkgIT0gb3RoZXItPm5vbmluaGVy
aXRlZF9mbGFncy52ZXJ0aWNhbEFsaWduKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
aWYgKG1fYm94LT5ib3hTaXppbmcoKSAhPSBvdGhlci0+bV9ib3gtPmJveFNpemluZygpKQpAQCAt
NTI3LDE3ICs1MzMsMTcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQo
Y29uc3QgUmVuZGVyU3R5bGUqIG90aGVyLCB1bnNpZ25lZCYgY2hhbmcKICAgICAgICAgfHwgaW5o
ZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyAhPSBvdGhlci0+aW5oZXJpdGVkLT52ZXJ0
aWNhbF9ib3JkZXJfc3BhY2luZwogICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJl
Y3Rpb24gIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbgogICAgICAgICB8
fCBpbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZyAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdz
Lm1fcnRsT3JkZXJpbmcKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wb3NpdGlvbiAh
PSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9wb3NpdGlvbgotICAgICAgICB8fCBub25pbmhl
cml0ZWRfZmxhZ3MuX2Zsb2F0aW5nICE9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX2Zsb2F0
aW5nCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5fb3JpZ2luYWxEaXNwbGF5ICE9IG90
aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX29yaWdpbmFsRGlzcGxheSkKKyAgICAgICAgfHwgbm9u
aW5oZXJpdGVkX2ZsYWdzLnBvc2l0aW9uKCkgIT0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5w
b3NpdGlvbigpCisgICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygpICE9IG90
aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuZmxvYXRpbmcoKQorICAgICAgICB8fCBub25pbmhlcml0
ZWRfZmxhZ3Mub3JpZ2luYWxEaXNwbGF5KCkgIT0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5v
cmlnaW5hbERpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKIAotICAgIGlmICgoKGlu
dClub25pbmhlcml0ZWRfZmxhZ3MuX2VmZmVjdGl2ZURpc3BsYXkpID49IFRBQkxFKSB7CisgICAg
aWYgKChub25pbmhlcml0ZWRfZmxhZ3MuZWZmZWN0aXZlRGlzcGxheSgpKSA+PSBUQUJMRSkgewog
ICAgICAgICBpZiAoaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFwc2UgIT0gb3RoZXItPmlu
aGVyaXRlZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNlCiAgICAgICAgICAgICB8fCBpbmhlcml0ZWRf
ZmxhZ3MuX2VtcHR5X2NlbGxzICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX2VtcHR5X2NlbGxz
CiAgICAgICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZSAhPSBvdGhlci0+
aW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUKLSAgICAgICAgICAgIHx8IG5vbmluaGVyaXRl
ZF9mbGFncy5fdGFibGVfbGF5b3V0ICE9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3RhYmxl
X2xheW91dCkKKyAgICAgICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy50YWJsZUxheW91dCgp
ICE9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MudGFibGVMYXlvdXQoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgICAgIC8vIEluIHRoZSBjb2xsYXBzaW5nIGJvcmRlciBtb2Rl
bCwgJ2hpZGRlbicgc3VwcHJlc3NlcyBvdGhlciBib3JkZXJzLCB3aGlsZSAnbm9uZScKQEAgLTU1
NCw3ICs1NjAsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25z
dCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgaWYgKG5vbmluaGVyaXRlZF9mbGFncy5fZWZmZWN0aXZlRGlz
cGxheSA9PSBMSVNUX0lURU0pIHsKKyAgICBpZiAobm9uaW5oZXJpdGVkX2ZsYWdzLmVmZmVjdGl2
ZURpc3BsYXkoKSA9PSBMSVNUX0lURU0pIHsKICAgICAgICAgaWYgKGluaGVyaXRlZF9mbGFncy5f
bGlzdF9zdHlsZV90eXBlICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfdHlw
ZQogICAgICAgICAgICAgfHwgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uICE9
IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfcG9zaXRpb24pCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTU2NCw4ICs1NzAsOCBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFu
Z2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFu
ZwogICAgICAgICB8fCBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3JtICE9IG90aGVyLT5p
bmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3JtCiAgICAgICAgIHx8IGluaGVyaXRlZF9mbGFn
cy5fZGlyZWN0aW9uICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX2RpcmVjdGlvbgogICAgICAg
ICB8fCBpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlICE9IG90aGVyLT5pbmhlcml0ZWRfZmxh
Z3MuX3doaXRlX3NwYWNlCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5fY2xlYXIgIT0g
b3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fY2xlYXIKLSAgICAgICAgfHwgbm9uaW5oZXJpdGVk
X2ZsYWdzLl91bmljb2RlQmlkaSAhPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl91bmljb2Rl
QmlkaSkKKyAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLmNsZWFyKCkgIT0gb3RoZXItPm5v
bmluaGVyaXRlZF9mbGFncy5jbGVhcigpCisgICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy51
bmljb2RlQmlkaSgpICE9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDaGVjayBibG9jayBmbG93IGRpcmVjdGlv
bi4KQEAgLTU3Nyw4ICs1ODMsOCBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xh
eW91dChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE92ZXJmbG93IHJldHVybnMgYSBsYXlvdXQgaGludC4KLSAg
ICBpZiAobm9uaW5oZXJpdGVkX2ZsYWdzLl9vdmVyZmxvd1ggIT0gb3RoZXItPm5vbmluaGVyaXRl
ZF9mbGFncy5fb3ZlcmZsb3dYCi0gICAgICAgIHx8IG5vbmluaGVyaXRlZF9mbGFncy5fb3ZlcmZs
b3dZICE9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX292ZXJmbG93WSkKKyAgICBpZiAobm9u
aW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WCgpICE9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3Mu
b3ZlcmZsb3dYKCkKKyAgICAgICAgfHwgbm9uaW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93WSgpICE9
IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3Mub3ZlcmZsb3dZKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gSWYgb3VyIGJvcmRlciB3aWR0aHMgY2hhbmdlLCB0aGVuIHdlIG5lZWQg
dG8gbGF5b3V0LiAgT3RoZXIgY2hhbmdlcyB0byBib3JkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGY0NDcyMzdkNjcwOWVlMTYxNWYxNDQ5
YzJmYmNjYTZlYmZkYTVhNWIuLjg5MjNiNTRjODc3OGZjODYzYTk3N2ZmNTMyYTc5YzYyNGZiNmQx
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBA
IC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBH
cmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0x
MzQsNiArMTM0LDI2MCBAQCBjbGFzcyBSZW5kZXJTdHlsZTogcHVibGljIFJlZkNvdW50ZWQ8UmVu
ZGVyU3R5bGU+IHsKICAgICBmcmllbmQgY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2U7IC8vIEZJWE1F
OiBOZWVkcyB0byBhbHRlciB0aGUgdmlzaXRlZCBzdGF0ZSBieSBoYW5kLiBTaG91bGQgY2xlYW4g
dGhlIFNWRyBjb2RlIHVwIGFuZCBtb3ZlIGl0IGludG8gUmVuZGVyU3R5bGUgcGVyaGFwcy4KICAg
ICBmcmllbmQgY2xhc3MgUmVuZGVyVHJlZUFzVGV4dDsgLy8gRklYTUU6IE9ubHkgbmVlZGVkIHNv
IHRoZSByZW5kZXIgdHJlZSBjYW4ga2VlcCBseWluZyBhbmQgZHVtcCB0aGUgd3JvbmcgY29sb3Jz
LiAgUmViYXNlbGluaW5nIHdvdWxkIGFsbG93IHRoaXMgdG8gYmUgeWFua2VkLgogICAgIGZyaWVu
ZCBjbGFzcyBTdHlsZVJlc29sdmVyOyAvLyBTZXRzIG1lbWJlcnMgZGlyZWN0bHkuCisKK3B1Ymxp
YzoKKyAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgeworICAgICAgICBOb25Jbmhlcml0ZWRG
bGFncygpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBzaG91
bGQgYWxsIGJlIHplcm8uCisgICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1goKSk7
CisgICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxPdmVyZmxvd1koKSk7CisgICAgICAgICAgICBB
U1NFUlQoIWluaXRpYWxDbGVhcigpKTsKKyAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbERpc3Bs
YXkoKSk7CisgICAgICAgICAgICBBU1NFUlQoIWluaXRpYWxVbmljb2RlQmlkaSgpKTsKKyAgICAg
ICAgICAgIEFTU0VSVCghaW5pdGlhbFBvc2l0aW9uKCkpOworICAgICAgICAgICAgQVNTRVJUKCFp
bml0aWFsVmVydGljYWxBbGlnbigpKTsKKyAgICAgICAgICAgIEFTU0VSVCghaW5pdGlhbEZsb2F0
aW5nKCkpOworICAgICAgICAgICAgQVNTRVJUKCFpbml0aWFsVGFibGVMYXlvdXQoKSk7CisKKyAg
ICAgICAgICAgIG1fZmxhZ3MgPSAwOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFnczsKKyAgICAgICAgfQorCisg
ICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisKKyAgICAgICAgdm9pZCBjb3B5Tm9u
SW5oZXJpdGVkRnJvbShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIE9ubHkgYSBzdWJzZXQgaSBjb3BpZWQgYmVjYXVzZSBOb25Jbmhlcml0
ZWRGbGFncyBjb250YWlucyBhIGJ1bmNoIG9mIHN0dWZmIG90aGVyIHRoYW4gcmVhbCBzdHlsZSBk
YXRhLgorICAgICAgICAgICAgdWludDY0X3Qgbm9uSW5oZXJpdGVkTWFzayA9IG92ZXJmbG93TWFz
ayA8PCBvdmVyZmxvd1hPZmZzZXQKKyAgICAgICAgICAgICAgICB8IG92ZXJmbG93TWFzayA8PCBv
dmVyZmxvd1lPZmZzZXQKKyAgICAgICAgICAgICAgICB8IGNsZWFyTWFzayA8PCBjbGVhck9mZnNl
dAorICAgICAgICAgICAgICAgIHwgZGlzcGxheU1hc2sgPDwgZWZmZWN0aXZlRGlzcGxheU9mZnNl
dAorICAgICAgICAgICAgICAgIHwgcG9zaXRpb25NYXNrIDw8IHBvc2l0aW9uT2Zmc2V0CisgICAg
ICAgICAgICAgICAgfCBkaXNwbGF5TWFzayA8PCBvcmlnaW5hbERpc3BsYXlPZmZzZXQKKyAgICAg
ICAgICAgICAgICB8IHVuaWNvZGVCaWRpTWFzayA8PCB1bmljb2RlQmlkaU9mZnNldAorICAgICAg
ICAgICAgICAgIHwgdmVydGljYWxBbGlnbk1hc2sgPDwgdmVydGljYWxBbGlnbk9mZnNldAorICAg
ICAgICAgICAgICAgIHwgZmxvYXRpbmdNYXNrIDw8IGZsb2F0aW5nT2Zmc2V0CisgICAgICAgICAg
ICAgICAgfCBwYWdlQnJlYWtNYXNrIDw8IHBhZ2VCcmVha0luc2lkZU9mZnNldAorICAgICAgICAg
ICAgICAgIHwgcGFnZUJyZWFrTWFzayA8PCBwYWdlQnJlYWtCZWZvcmVPZmZzZXQKKyAgICAgICAg
ICAgICAgICB8IHBhZ2VCcmVha01hc2sgPDwgcGFnZUJyZWFrQWZ0ZXJPZmZzZXQKKyAgICAgICAg
ICAgICAgICB8IG9uZUJpdE1hc2sgPDwgZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldAorICAgICAg
ICAgICAgICAgIHwgdGFibGVMYXlvdXRCaXRNYXNrIDw8IHRhYmxlTGF5b3V0T2Zmc2V0OworCisg
ICAgICAgICAgICBtX2ZsYWdzID0gKG1fZmxhZ3MgJiB+bm9uSW5oZXJpdGVkTWFzaykgfCAob3Ro
ZXIubV9mbGFncyAmIG5vbkluaGVyaXRlZE1hc2spOworICAgICAgICB9CisKKyAgICAgICAgRU92
ZXJmbG93IG92ZXJmbG93WCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvdz4o
Z2V0VmFsdWUob3ZlcmZsb3dNYXNrLCBvdmVyZmxvd1hPZmZzZXQpKTsgfQorICAgICAgICB2b2lk
IHNldE92ZXJmbG93WChFT3ZlcmZsb3cgb3ZlcmZsb3dYKSB7IHVwZGF0ZVZhbHVlKG92ZXJmbG93
WCwgb3ZlcmZsb3dNYXNrLCBvdmVyZmxvd1hPZmZzZXQpOyB9CisKKyAgICAgICAgRU92ZXJmbG93
IG92ZXJmbG93WSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVPdmVyZmxvdz4oZ2V0VmFs
dWUob3ZlcmZsb3dNYXNrLCBvdmVyZmxvd1lPZmZzZXQpKTsgfQorICAgICAgICB2b2lkIHNldE92
ZXJmbG93WShFT3ZlcmZsb3cgb3ZlcmZsb3dZKSB7IHVwZGF0ZVZhbHVlKG92ZXJmbG93WSwgb3Zl
cmZsb3dNYXNrLCBvdmVyZmxvd1lPZmZzZXQpOyB9CisKKyAgICAgICAgRUNsZWFyIGNsZWFyKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUNsZWFyPihnZXRWYWx1ZShjbGVhck1hc2ssIGNs
ZWFyT2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRDbGVhcihFQ2xlYXIgY2xlYXIpIHsgdXBk
YXRlVmFsdWUoY2xlYXIsIGNsZWFyTWFzaywgY2xlYXJPZmZzZXQpOyB9CisKKyAgICAgICAgRURp
c3BsYXkgZWZmZWN0aXZlRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVEaXNw
bGF5PihnZXRWYWx1ZShkaXNwbGF5TWFzaywgZWZmZWN0aXZlRGlzcGxheU9mZnNldCkpOyB9Cisg
ICAgICAgIHZvaWQgc2V0RWZmZWN0aXZlRGlzcGxheShFRGlzcGxheSBlZmZlY3RpdmVEaXNwbGF5
KSB7IHVwZGF0ZVZhbHVlKGVmZmVjdGl2ZURpc3BsYXksIGRpc3BsYXlNYXNrLCBlZmZlY3RpdmVE
aXNwbGF5T2Zmc2V0KTsgfQorCisgICAgICAgIEVQb3NpdGlvbiBwb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVQb3NpdGlvbj4oZ2V0VmFsdWUocG9zaXRpb25NYXNrLCBwb3Np
dGlvbk9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9uIHBvc2l0
aW9uKSB7IHVwZGF0ZVZhbHVlKHBvc2l0aW9uLCBwb3NpdGlvbk1hc2ssIHBvc2l0aW9uT2Zmc2V0
KTsgfQorCisgICAgICAgIEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVEaXNwbGF5PihnZXRWYWx1ZShkaXNwbGF5TWFzaywgb3JpZ2luYWxEaXNw
bGF5T2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRPcmlnaW5hbERpc3BsYXkoRURpc3BsYXkg
b3JpZ2luYWxEaXNwbGF5KSB7IHVwZGF0ZVZhbHVlKG9yaWdpbmFsRGlzcGxheSwgZGlzcGxheU1h
c2ssIG9yaWdpbmFsRGlzcGxheU9mZnNldCk7IH0KKworICAgICAgICBFVW5pY29kZUJpZGkgdW5p
Y29kZUJpZGkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVW5pY29kZUJpZGk+KGdldFZh
bHVlKHVuaWNvZGVCaWRpTWFzaywgdW5pY29kZUJpZGlPZmZzZXQpKTsgfQorICAgICAgICB2b2lk
IHNldFVuaWNvZGVCaWRpKEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSkgeyB1cGRhdGVWYWx1ZSh1
bmljb2RlQmlkaSwgdW5pY29kZUJpZGlNYXNrLCB1bmljb2RlQmlkaU9mZnNldCk7IH0KKworICAg
ICAgICBFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RVZlcnRpY2FsQWxpZ24+KGdldFZhbHVlKHZlcnRpY2FsQWxpZ25NYXNrLCB2ZXJ0aWNh
bEFsaWduT2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduKEVWZXJ0aWNh
bEFsaWduIHZlcnRpY2FsQWxpZ24pIHsgdXBkYXRlVmFsdWUodmVydGljYWxBbGlnbiwgdmVydGlj
YWxBbGlnbk1hc2ssIHZlcnRpY2FsQWxpZ25PZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBoYXNF
eHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4o
ZXhwbGljaXRJbmhlcml0YW5jZU9mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRIYXNFeHBsaWNp
dGx5SW5oZXJpdGVkUHJvcGVydGllcyhib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUs
IGV4cGxpY2l0SW5oZXJpdGFuY2VPZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBpc0Zsb2F0aW5n
KCkgY29uc3QgeyByZXR1cm4gZmxvYXRpbmcoKSAhPSBOb0Zsb2F0OyB9CisgICAgICAgIEVGbG9h
dCBmbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbG9hdD4oZ2V0VmFsdWUo
ZmxvYXRpbmdNYXNrLCBmbG9hdGluZ09mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0RmxvYXRp
bmcoRUZsb2F0IGZsb2F0aW5nKSB7IHVwZGF0ZVZhbHVlKGZsb2F0aW5nLCBmbG9hdGluZ01hc2ss
IGZsb2F0aW5nT2Zmc2V0KTsgfQorCisgICAgICAgIC8vIEZvciB2YWxpZCB2YWx1ZXMgb2YgcGFn
ZS1icmVhay1pbnNpZGUgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3BhZ2UuaHRtbCNw
YWdlLWJyZWFrLXByb3BzCisgICAgICAgIEVQYWdlQnJlYWsgcGFnZUJyZWFrSW5zaWRlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBhZ2VCcmVhaz4oZ2V0VmFsdWUocGFnZUJyZWFrTWFz
aywgcGFnZUJyZWFrSW5zaWRlT2Zmc2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRQYWdlQnJlYWtJ
bnNpZGUoRVBhZ2VCcmVhayBwYWdlQnJlYWtJbnNpZGUpIHsgQVNTRVJUKHBhZ2VCcmVha0luc2lk
ZSA9PSBQQkFVVE8gfHwgcGFnZUJyZWFrSW5zaWRlID09IFBCQVZPSUQpOyB1cGRhdGVWYWx1ZShw
YWdlQnJlYWtJbnNpZGUsIHBhZ2VCcmVha01hc2ssIHBhZ2VCcmVha0luc2lkZU9mZnNldCk7IH0K
KworICAgICAgICBFUGFnZUJyZWFrIHBhZ2VCcmVha0JlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVQYWdlQnJlYWs+KGdldFZhbHVlKHBhZ2VCcmVha01hc2ssIHBhZ2VCcmVha0Jl
Zm9yZU9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0UGFnZUJyZWFrQmVmb3JlKEVQYWdlQnJl
YWsgcGFnZUJyZWFrQmVmb3JlKSB7IHVwZGF0ZVZhbHVlKHBhZ2VCcmVha0JlZm9yZSwgcGFnZUJy
ZWFrTWFzaywgcGFnZUJyZWFrQmVmb3JlT2Zmc2V0KTsgfQorCisgICAgICAgIEVQYWdlQnJlYWsg
cGFnZUJyZWFrQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUGFnZUJyZWFrPihn
ZXRWYWx1ZShwYWdlQnJlYWtNYXNrLCBwYWdlQnJlYWtBZnRlck9mZnNldCkpOyB9CisgICAgICAg
IHZvaWQgc2V0UGFnZUJyZWFrQWZ0ZXIoRVBhZ2VCcmVhayBwYWdlQnJlYWtBZnRlcikgeyB1cGRh
dGVWYWx1ZShwYWdlQnJlYWtBZnRlciwgcGFnZUJyZWFrTWFzaywgcGFnZUJyZWFrQWZ0ZXJPZmZz
ZXQpOyB9CisKKyAgICAgICAgYm9vbCBoYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSBjb25zdCB7
IHJldHVybiBQVUJMSUNfUFNFVURPSURfTUFTSyAmIGdldFZhbHVlKHBzZXVkb0JpdHNNYXNrLCBw
c2V1ZG9CaXRzT2Zmc2V0KTsgfQorICAgICAgICBib29sIGhhc1BzZXVkb1N0eWxlKFBzZXVkb0lk
IHBzZXVkbykgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHBzZXVkbyA+IE5P
UFNFVURPKTsKKyAgICAgICAgICAgIEFTU0VSVChwc2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VV
RE9JRCk7CisgICAgICAgICAgICByZXR1cm4gKG9uZUJpdE1hc2sgPDwgKHBzZXVkb0JpdHNPZmZz
ZXQgLSAxICsgcHNldWRvKSkgJiBtX2ZsYWdzOworICAgICAgICB9CisgICAgICAgIHZvaWQgc2V0
SGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKQorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQocHNldWRvID4gTk9QU0VVRE8pOworICAgICAgICAgICAgQVNTRVJUKHBzZXVkbyA8IEZJ
UlNUX0lOVEVSTkFMX1BTRVVET0lEKTsKKyAgICAgICAgICAgIG1fZmxhZ3MgfD0gb25lQml0TWFz
ayA8PCAocHNldWRvQml0c09mZnNldCAtIDEgKyBwc2V1ZG8pOworICAgICAgICB9CisKKyAgICAg
ICAgRVRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RVRhYmxlTGF5b3V0PihnZXRWYWx1ZSh0YWJsZUxheW91dEJpdE1hc2ssIHRhYmxlTGF5b3V0T2Zm
c2V0KSk7IH0KKyAgICAgICAgdm9pZCBzZXRUYWJsZUxheW91dChFVGFibGVMYXlvdXQgdGFibGVM
YXlvdXQpIHsgdXBkYXRlVmFsdWUodGFibGVMYXlvdXQsIHRhYmxlTGF5b3V0Qml0TWFzaywgdGFi
bGVMYXlvdXRPZmZzZXQpOyB9CisKKyAgICAgICAgUHNldWRvSWQgc3R5bGVUeXBlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KGdldFZhbHVlKHN0eWxlVHlwZU1hc2ssIHN0
eWxlVHlwZU9mZnNldCkpOyB9CisgICAgICAgIHZvaWQgc2V0U3R5bGVUeXBlKFBzZXVkb0lkIHN0
eWxlVHlwZSkgeyB1cGRhdGVWYWx1ZShzdHlsZVR5cGUsIHN0eWxlVHlwZU1hc2ssIHN0eWxlVHlw
ZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gZ2V0
Qm9vbGVhbihpc1VuaXF1ZU9mZnNldCk7IH0KKyAgICAgICAgdm9pZCBzZXRJc1VuaXF1ZSgpIHsg
dXBkYXRlQm9vbGVhbih0cnVlLCBpc1VuaXF1ZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGVt
cHR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFuKGVtcHR5U3RhdGVPZmZzZXQpOyAg
fQorICAgICAgICB2b2lkIHNldEVtcHR5U3RhdGUoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFu
KHZhbHVlLCBlbXB0eVN0YXRlT2Zmc2V0KTsgfQorCisgICAgICAgIGJvb2wgZmlyc3RDaGlsZFN0
YXRlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihmaXJzdENoaWxkU3RhdGVPZmZzZXQpOyAg
fQorICAgICAgICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZShib29sIHZhbHVlKSB7IHVwZGF0ZUJv
b2xlYW4odmFsdWUsIGZpcnN0Q2hpbGRTdGF0ZU9mZnNldCk7IH0KKworICAgICAgICBib29sIGxh
c3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gZ2V0Qm9vbGVhbihsYXN0Q2hpbGRTdGF0ZU9m
ZnNldCk7ICB9CisgICAgICAgIHZvaWQgc2V0TGFzdENoaWxkU3RhdGUoYm9vbCB2YWx1ZSkgeyB1
cGRhdGVCb29sZWFuKHZhbHVlLCBsYXN0Q2hpbGRTdGF0ZU9mZnNldCk7IH0KKworICAgICAgICBi
b29sIGFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJuIGdldEJvb2xlYW4oYWZmZWN0ZWRC
eUhvdmVyT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3Zlcihib29sIHZh
bHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVkQnlIb3Zlck9mZnNldCk7IH0KKwor
ICAgICAgICBib29sIGFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBnZXRCb29sZWFu
KGFmZmVjdGVkQnlBY3RpdmVPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFj
dGl2ZShib29sIHZhbHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGFmZmVjdGVkQnlBY3RpdmVP
ZmZzZXQpOyB9CisKKyAgICAgICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJu
IGdldEJvb2xlYW4oYWZmZWN0ZWRCeURyYWdPZmZzZXQpOyB9CisgICAgICAgIHZvaWQgc2V0QWZm
ZWN0ZWRCeURyYWcoYm9vbCB2YWx1ZSkgeyB1cGRhdGVCb29sZWFuKHZhbHVlLCBhZmZlY3RlZEJ5
RHJhZ09mZnNldCk7IH0KKworICAgICAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIGdl
dEJvb2xlYW4oaXNMaW5rT2Zmc2V0KTsgfQorICAgICAgICB2b2lkIHNldElzTGluayhib29sIHZh
bHVlKSB7IHVwZGF0ZUJvb2xlYW4odmFsdWUsIGlzTGlua09mZnNldCk7IH0KKworICAgICAgICBz
dGF0aWMgRU92ZXJmbG93IGluaXRpYWxPdmVyZmxvd1goKSB7IHJldHVybiBPVklTSUJMRTsgfQor
ICAgICAgICBzdGF0aWMgRU92ZXJmbG93IGluaXRpYWxPdmVyZmxvd1koKSB7IHJldHVybiBPVklT
SUJMRTsgfQorICAgICAgICBzdGF0aWMgRUNsZWFyIGluaXRpYWxDbGVhcigpIHsgcmV0dXJuIENO
T05FOyB9CisgICAgICAgIHN0YXRpYyBFRGlzcGxheSBpbml0aWFsRGlzcGxheSgpIHsgcmV0dXJu
IElOTElORTsgfQorICAgICAgICBzdGF0aWMgRVVuaWNvZGVCaWRpIGluaXRpYWxVbmljb2RlQmlk
aSgpIHsgcmV0dXJuIFVCTm9ybWFsOyB9CisgICAgICAgIHN0YXRpYyBFUG9zaXRpb24gaW5pdGlh
bFBvc2l0aW9uKCkgeyByZXR1cm4gU3RhdGljUG9zaXRpb247IH0KKyAgICAgICAgc3RhdGljIEVW
ZXJ0aWNhbEFsaWduIGluaXRpYWxWZXJ0aWNhbEFsaWduKCkgeyByZXR1cm4gQkFTRUxJTkU7IH0K
KyAgICAgICAgc3RhdGljIEVGbG9hdCBpbml0aWFsRmxvYXRpbmcoKSB7IHJldHVybiBOb0Zsb2F0
OyB9CisgICAgICAgIHN0YXRpYyBFUGFnZUJyZWFrIGluaXRpYWxQYWdlQnJlYWsoKSB7IHJldHVy
biBQQkFVVE87IH0KKyAgICAgICAgc3RhdGljIEVUYWJsZUxheW91dCBpbml0aWFsVGFibGVMYXlv
dXQoKSB7IHJldHVybiBUQVVUTzsgfQorCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgZmxhZ3NN
ZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTm9uSW5oZXJpdGVkRmxhZ3Ms
IG1fZmxhZ3MpOyB9CisgICAgICAgIHN0YXRpYyB1aW50OF90IGZsYWdJc1VuaXF1ZSgpIHsgcmV0
dXJuIGlzVW5pcXVlT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50OF90IGZsYWdFbXB0eVN0
YXRlKCkgeyByZXR1cm4gZW1wdHlTdGF0ZU9mZnNldDsgfQorICAgICAgICBzdGF0aWMgdWludDhf
dCBmbGFnRmlyc3RDaGlsZFN0YXRlKCkgeyByZXR1cm4gZmlyc3RDaGlsZFN0YXRlT2Zmc2V0OyB9
CisgICAgICAgIHN0YXRpYyB1aW50OF90IGZsYWdMYXN0Q2hpbGRTdGF0ZSgpIHsgcmV0dXJuIGxh
c3RDaGlsZFN0YXRlT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50OF90IGZsYWdBZmZlY3Rl
ZEJ5SG92ZXIoKSB7IHJldHVybiBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQ7IH0KKyAgICAgICAgc3Rh
dGljIHVpbnQ4X3QgZmxhZ0FmZmVjdGVkQnlBY3RpdmUoKSB7IHJldHVybiBhZmZlY3RlZEJ5QWN0
aXZlT2Zmc2V0OyB9CisgICAgICAgIHN0YXRpYyB1aW50OF90IGZsYWdBZmZlY3RlZEJ5RHJhZygp
IHsgcmV0dXJuIGFmZmVjdGVkQnlEcmFnT2Zmc2V0OyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAg
dm9pZCB1cGRhdGVCb29sZWFuKGJvb2wgaXNTZXQsIHVuc2lnbmVkIG9mZnNldCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGlzU2V0KQorICAgICAgICAgICAgICAgIG1fZmxhZ3MgfD0gKG9u
ZUJpdE1hc2sgPDwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBt
X2ZsYWdzICY9IH4ob25lQml0TWFzayA8PCBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAg
Ym9vbCBnZXRCb29sZWFuKHVuc2lnbmVkIG9mZnNldCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIG1fZmxhZ3MgJiAob25lQml0TWFzayA8PCBvZmZzZXQpOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCB1cGRhdGVWYWx1ZSh1aW50OF90IG5ld1ZhbHVlLCB1aW50NjRfdCBw
b3NpdGlvbkluZGVwZW5kZW50TWFzaywgdW5zaWduZWQgb2Zmc2V0KQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoIShuZXdWYWx1ZSAmIH5wb3NpdGlvbkluZGVwZW5kZW50TWFzaykpOwor
ICAgICAgICAgICAgdWludDY0X3QgcG9zaXRpb25EZXBlbmRlbnRNYXNrID0gcG9zaXRpb25JbmRl
cGVuZGVudE1hc2sgPDwgb2Zmc2V0OworICAgICAgICAgICAgbV9mbGFncyA9IChtX2ZsYWdzICYg
fnBvc2l0aW9uRGVwZW5kZW50TWFzaykgfCAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG5ld1ZhbHVl
KSA8PCBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgZ2V0VmFsdWUodWlu
dDY0X3QgcG9zaXRpb25JbmRlcGVuZGVudE1hc2ssIHVuc2lnbmVkIG9mZnNldCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIChtX2ZsYWdzID4+IG9mZnNldCkgJiBwb3NpdGlv
bkluZGVwZW5kZW50TWFzazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRvIHR5cGUgdGhlIGJp
dCBtYXNrIHByb3Blcmx5IG9uIDY0Yml0cy4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90
IG9uZUJpdE1hc2sgPSAweDE7CisKKyAgICAgICAgLy8gQnl0ZSAxLgorICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgb3ZlcmZsb3dCaXRDb3VudCA9IDM7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1aW50NjRfdCBvdmVyZmxvd01hc2sgPSAob25lQml0TWFzayA8PCBvdmVyZmxvd0JpdENvdW50
KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBvdmVyZmxvd1hPZmZzZXQgPSAw
OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmZsb3dZT2Zmc2V0ID0gb3ZlcmZs
b3dYT2Zmc2V0ICsgb3ZlcmZsb3dCaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNsZWFyQml0Q291bnQgPSAyOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgY2xl
YXJNYXNrID0gKG9uZUJpdE1hc2sgPDwgY2xlYXJCaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgY2xlYXJPZmZzZXQgPSBvdmVyZmxvd1lPZmZzZXQgKyBvdmVyZmxv
d0JpdENvdW50OworCisgICAgICAgIC8vIEJ5dGUgMi4KKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGRpc3BsYXlCaXRDb3VudCA9IDU7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50NjRf
dCBkaXNwbGF5TWFzayA9IChvbmVCaXRNYXNrIDw8IGRpc3BsYXlCaXRDb3VudCkgLSAxOworICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZWZmZWN0aXZlRGlzcGxheU9mZnNldCA9IGNsZWFy
T2Zmc2V0ICsgY2xlYXJCaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBv
c2l0aW9uQml0Q291bnQgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgcG9zaXRp
b25NYXNrID0gKG9uZUJpdE1hc2sgPDwgcG9zaXRpb25CaXRDb3VudCkgLSAxOworICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgcG9zaXRpb25PZmZzZXQgPSBlZmZlY3RpdmVEaXNwbGF5T2Zm
c2V0ICsgZGlzcGxheUJpdENvdW50OworCisgICAgICAgIC8vIEJ5dGUgMy4KKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG9yaWdpbmFsRGlzcGxheU9mZnNldCA9IHBvc2l0aW9uT2Zmc2V0
ICsgcG9zaXRpb25CaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVuaWNv
ZGVCaWRpQml0Q291bnQgPSAzOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdW5pY29k
ZUJpZGlNYXNrID0gKG9uZUJpdE1hc2sgPDwgdW5pY29kZUJpZGlCaXRDb3VudCkgLSAxOworICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdW5pY29kZUJpZGlPZmZzZXQgPSBvcmlnaW5hbERp
c3BsYXlPZmZzZXQgKyBkaXNwbGF5Qml0Q291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSA0LgorICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZmxvYXRpbmdCaXRDb3VudCA9IDI7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1aW50NjRfdCBmbG9hdGluZ01hc2sgPSAob25lQml0TWFzayA8PCBmbG9h
dGluZ0JpdENvdW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmbG9hdGlu
Z09mZnNldCA9IHVuaWNvZGVCaWRpT2Zmc2V0ICsgdW5pY29kZUJpZGlCaXRDb3VudDsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHBhZ2VCcmVha0JpdENvdW50ID0gMjsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVpbnQ2NF90IHBhZ2VCcmVha01hc2sgPSAob25lQml0TWFzayA8PCBwYWdl
QnJlYWtCaXRDb3VudCkgLSAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcGFnZUJy
ZWFrSW5zaWRlT2Zmc2V0ID0gZmxvYXRpbmdPZmZzZXQgKyBmbG9hdGluZ0JpdENvdW50OworICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcGFnZUJyZWFrQmVmb3JlT2Zmc2V0ID0gcGFnZUJy
ZWFrSW5zaWRlT2Zmc2V0ICsgcGFnZUJyZWFrQml0Q291bnQ7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBwYWdlQnJlYWtBZnRlck9mZnNldCA9IHBhZ2VCcmVha0JlZm9yZU9mZnNldCAr
IHBhZ2VCcmVha0JpdENvdW50OworCisgICAgICAgIC8vIEJ5dGUgNS4KKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGV4cGxpY2l0SW5oZXJpdGFuY2VCaXRDb3VudCA9IDE7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHBsaWNpdEluaGVyaXRhbmNlT2Zmc2V0ID0gcGFnZUJy
ZWFrQWZ0ZXJPZmZzZXQgKyBwYWdlQnJlYWtCaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHRhYmxlTGF5b3V0Qml0Q291bnQgPSAxOworICAgICAgICBzdGF0aWMgY29uc3Qg
dWludDY0X3QgdGFibGVMYXlvdXRCaXRNYXNrID0gb25lQml0TWFzazsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHRhYmxlTGF5b3V0T2Zmc2V0ID0gZXhwbGljaXRJbmhlcml0YW5jZU9m
ZnNldCArIGV4cGxpY2l0SW5oZXJpdGFuY2VCaXRDb3VudDsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHZlcnRpY2FsQWxpZ25CaXRDb3VudCA9IDQ7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduUGFkZGluZyA9IDI7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduQW5kUGFkZGluZ0JpdENvdW50ID0gdmVydGljYWxBbGln
bkJpdENvdW50ICsgdmVydGljYWxBbGlnblBhZGRpbmc7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
aW50NjRfdCB2ZXJ0aWNhbEFsaWduTWFzayA9IChvbmVCaXRNYXNrIDw8IHZlcnRpY2FsQWxpZ25C
aXRDb3VudCkgLSAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVydGljYWxBbGln
bk9mZnNldCA9IHRhYmxlTGF5b3V0T2Zmc2V0ICsgdGFibGVMYXlvdXRCaXRDb3VudDsKKworICAg
ICAgICAvLyBCeXRlIDYuCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwc2V1ZG9CaXRz
Qml0Q291bnQgPSA3OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHNldWRvQml0c1Bh
ZGRpbmcgPSAxOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHNldWRvQml0c0FuZFBh
ZGRpbmdCaXRDb3VudCA9IHBzZXVkb0JpdHNCaXRDb3VudCArIHBzZXVkb0JpdHNQYWRkaW5nOwor
ICAgICAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgcHNldWRvQml0c01hc2sgPSAob25lQml0TWFz
ayA8PCBwc2V1ZG9CaXRzQW5kUGFkZGluZ0JpdENvdW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBwc2V1ZG9CaXRzT2Zmc2V0ID0gdmVydGljYWxBbGlnbk9mZnNldCArIHZl
cnRpY2FsQWxpZ25BbmRQYWRkaW5nQml0Q291bnQ7CisKKyAgICAgICAgLy8gQnl0ZSA3LgorICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlQml0Q291bnQgPSA2OworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3R5bGVUeXBlUGFkZGluZyA9IDI7CisgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVBbmRQYWRkaW5nQml0Q291bnQgPSBzdHlsZVR5
cGVCaXRDb3VudCArIHN0eWxlVHlwZVBhZGRpbmc7CisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50
NjRfdCBzdHlsZVR5cGVNYXNrID0gKG9uZUJpdE1hc2sgPDwgc3R5bGVUeXBlQW5kUGFkZGluZ0Jp
dENvdW50KSAtIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdHlsZVR5cGVPZmZz
ZXQgPSBwc2V1ZG9CaXRzT2Zmc2V0ICsgcHNldWRvQml0c0FuZFBhZGRpbmdCaXRDb3VudDsKKwor
ICAgICAgICAvLyBCeXRlIDguCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpc1VuaXF1
ZU9mZnNldCA9IHN0eWxlVHlwZU9mZnNldCArIHN0eWxlVHlwZUFuZFBhZGRpbmdCaXRDb3VudDsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVtcHR5U3RhdGVPZmZzZXQgPSBpc1VuaXF1
ZU9mZnNldCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBmaXJzdENoaWxkU3Rh
dGVPZmZzZXQgPSBlbXB0eVN0YXRlT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGxhc3RDaGlsZFN0YXRlT2Zmc2V0ID0gZmlyc3RDaGlsZFN0YXRlT2Zmc2V0ICsgMTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFmZmVjdGVkQnlIb3Zlck9mZnNldCA9IGxh
c3RDaGlsZFN0YXRlT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFm
ZmVjdGVkQnlBY3RpdmVPZmZzZXQgPSBhZmZlY3RlZEJ5SG92ZXJPZmZzZXQgKyAxOworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgYWZmZWN0ZWRCeURyYWdPZmZzZXQgPSBhZmZlY3RlZEJ5
QWN0aXZlT2Zmc2V0ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlzTGlua09m
ZnNldCA9IGFmZmVjdGVkQnlEcmFnT2Zmc2V0ICsgMTsKKworICAgICAgICAvLyBPbmx5IDU5IGJp
dHMgYXJlIGFzc2lnbmVkLiBUaGVyZSBhcmUgNSBiaXRzIGF2YWlsYWJsZSBjdXJyZW50bHkgdXNl
ZCBhcyBwYWRkaW5nIHRvIGltcHJvdmUgY29kZSBnZW5lcmF0aW9uLgorICAgICAgICAvLyBJZiB5
b3UgYWRkIG1vcmUgc3R5bGUgYml0cyBoZXJlLCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRl
IFJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbSgpLgorICAgICAgICB1aW50NjRfdCBt
X2ZsYWdzOworICAgIH07CisKIHByb3RlY3RlZDoKIAogICAgIC8vIG5vbi1pbmhlcml0ZWQgYXR0
cmlidXRlcwpAQCAtMjE0LDEzMCArNDY4LDEwIEBAIHByb3RlY3RlZDoKICAgICB9IGluaGVyaXRl
ZF9mbGFnczsKIAogLy8gZG9uJ3QgaW5oZXJpdAotICAgIHN0cnVjdCBOb25Jbmhlcml0ZWRGbGFn
cyB7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBfZWZmZWN0aXZlRGlzcGxh
eSA9PSBvdGhlci5fZWZmZWN0aXZlRGlzcGxheQotICAgICAgICAgICAgICAgICYmIF9vcmlnaW5h
bERpc3BsYXkgPT0gb3RoZXIuX29yaWdpbmFsRGlzcGxheQotICAgICAgICAgICAgICAgICYmIF9v
dmVyZmxvd1ggPT0gb3RoZXIuX292ZXJmbG93WAotICAgICAgICAgICAgICAgICYmIF9vdmVyZmxv
d1kgPT0gb3RoZXIuX292ZXJmbG93WQotICAgICAgICAgICAgICAgICYmIF92ZXJ0aWNhbF9hbGln
biA9PSBvdGhlci5fdmVydGljYWxfYWxpZ24KLSAgICAgICAgICAgICAgICAmJiBfY2xlYXIgPT0g
b3RoZXIuX2NsZWFyCi0gICAgICAgICAgICAgICAgJiYgX3Bvc2l0aW9uID09IG90aGVyLl9wb3Np
dGlvbgotICAgICAgICAgICAgICAgICYmIF9mbG9hdGluZyA9PSBvdGhlci5fZmxvYXRpbmcKLSAg
ICAgICAgICAgICAgICAmJiBfdGFibGVfbGF5b3V0ID09IG90aGVyLl90YWJsZV9sYXlvdXQKLSAg
ICAgICAgICAgICAgICAmJiBfcGFnZV9icmVha19iZWZvcmUgPT0gb3RoZXIuX3BhZ2VfYnJlYWtf
YmVmb3JlCi0gICAgICAgICAgICAgICAgJiYgX3BhZ2VfYnJlYWtfYWZ0ZXIgPT0gb3RoZXIuX3Bh
Z2VfYnJlYWtfYWZ0ZXIKLSAgICAgICAgICAgICAgICAmJiBfcGFnZV9icmVha19pbnNpZGUgPT0g
b3RoZXIuX3BhZ2VfYnJlYWtfaW5zaWRlCi0gICAgICAgICAgICAgICAgJiYgX3N0eWxlVHlwZSA9
PSBvdGhlci5fc3R5bGVUeXBlCi0gICAgICAgICAgICAgICAgJiYgX2FmZmVjdGVkQnlIb3ZlciA9
PSBvdGhlci5fYWZmZWN0ZWRCeUhvdmVyCi0gICAgICAgICAgICAgICAgJiYgX2FmZmVjdGVkQnlB
Y3RpdmUgPT0gb3RoZXIuX2FmZmVjdGVkQnlBY3RpdmUKLSAgICAgICAgICAgICAgICAmJiBfYWZm
ZWN0ZWRCeURyYWcgPT0gb3RoZXIuX2FmZmVjdGVkQnlEcmFnCi0gICAgICAgICAgICAgICAgJiYg
X3BzZXVkb0JpdHMgPT0gb3RoZXIuX3BzZXVkb0JpdHMKLSAgICAgICAgICAgICAgICAmJiBfdW5p
Y29kZUJpZGkgPT0gb3RoZXIuX3VuaWNvZGVCaWRpCi0gICAgICAgICAgICAgICAgJiYgZXhwbGlj
aXRJbmhlcml0YW5jZSA9PSBvdGhlci5leHBsaWNpdEluaGVyaXRhbmNlCi0gICAgICAgICAgICAg
ICAgJiYgdW5pcXVlID09IG90aGVyLnVuaXF1ZQotICAgICAgICAgICAgICAgICYmIGVtcHR5U3Rh
dGUgPT0gb3RoZXIuZW1wdHlTdGF0ZQotICAgICAgICAgICAgICAgICYmIGZpcnN0Q2hpbGRTdGF0
ZSA9PSBvdGhlci5maXJzdENoaWxkU3RhdGUKLSAgICAgICAgICAgICAgICAmJiBsYXN0Q2hpbGRT
dGF0ZSA9PSBvdGhlci5sYXN0Q2hpbGRTdGF0ZQotICAgICAgICAgICAgICAgICYmIF9pc0xpbmsg
PT0gb3RoZXIuX2lzTGluazsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9Ci0KLSAgICAgICAgdW5zaWduZWQgX2VmZmVjdGl2ZURpc3BsYXkgOiA1OyAvLyBF
RGlzcGxheQotICAgICAgICB1bnNpZ25lZCBfb3JpZ2luYWxEaXNwbGF5IDogNTsgLy8gRURpc3Bs
YXkKLSAgICAgICAgdW5zaWduZWQgX292ZXJmbG93WCA6IDM7IC8vIEVPdmVyZmxvdwotICAgICAg
ICB1bnNpZ25lZCBfb3ZlcmZsb3dZIDogMzsgLy8gRU92ZXJmbG93Ci0gICAgICAgIHVuc2lnbmVk
IF92ZXJ0aWNhbF9hbGlnbiA6IDQ7IC8vIEVWZXJ0aWNhbEFsaWduCi0gICAgICAgIHVuc2lnbmVk
IF9jbGVhciA6IDI7IC8vIEVDbGVhcgotICAgICAgICB1bnNpZ25lZCBfcG9zaXRpb24gOiAzOyAv
LyBFUG9zaXRpb24KLSAgICAgICAgdW5zaWduZWQgX2Zsb2F0aW5nIDogMjsgLy8gRUZsb2F0Ci0g
ICAgICAgIHVuc2lnbmVkIF90YWJsZV9sYXlvdXQgOiAxOyAvLyBFVGFibGVMYXlvdXQKLQotICAg
ICAgICB1bnNpZ25lZCBfdW5pY29kZUJpZGkgOiAzOyAvLyBFVW5pY29kZUJpZGkKLSAgICAgICAg
Ly8gMzEgYml0cwotICAgICAgICB1bnNpZ25lZCBfcGFnZV9icmVha19iZWZvcmUgOiAyOyAvLyBF
UGFnZUJyZWFrCi0gICAgICAgIHVuc2lnbmVkIF9wYWdlX2JyZWFrX2FmdGVyIDogMjsgLy8gRVBh
Z2VCcmVhawotICAgICAgICB1bnNpZ25lZCBfcGFnZV9icmVha19pbnNpZGUgOiAyOyAvLyBFUGFn
ZUJyZWFrCi0KLSAgICAgICAgdW5zaWduZWQgX3N0eWxlVHlwZSA6IDY7IC8vIFBzZXVkb0lkCi0g
ICAgICAgIHVuc2lnbmVkIF9wc2V1ZG9CaXRzIDogNzsKLSAgICAgICAgdW5zaWduZWQgZXhwbGlj
aXRJbmhlcml0YW5jZSA6IDE7IC8vIEV4cGxpY2l0bHkgaW5oZXJpdHMgYSBub24taW5oZXJpdGVk
IHByb3BlcnR5Ci0gICAgICAgIHVuc2lnbmVkIHVuaXF1ZSA6IDE7IC8vIFN0eWxlIGNhbiBub3Qg
YmUgc2hhcmVkLgotICAgICAgICB1bnNpZ25lZCBlbXB0eVN0YXRlIDogMTsKLSAgICAgICAgdW5z
aWduZWQgZmlyc3RDaGlsZFN0YXRlIDogMTsKLSAgICAgICAgdW5zaWduZWQgbGFzdENoaWxkU3Rh
dGUgOiAxOwotCi0gICAgICAgIGJvb2wgYWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4g
X2FmZmVjdGVkQnlIb3ZlcjsgfQotICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3Zlcihib29s
IHZhbHVlKSB7IF9hZmZlY3RlZEJ5SG92ZXIgPSB2YWx1ZTsgfQotICAgICAgICBib29sIGFmZmVj
dGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBfYWZmZWN0ZWRCeUFjdGl2ZTsgfQotICAgICAg
ICB2b2lkIHNldEFmZmVjdGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyBfYWZmZWN0ZWRCeUFjdGl2
ZSA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgYWZmZWN0ZWRCeURyYWcoKSBjb25zdCB7IHJldHVy
biBfYWZmZWN0ZWRCeURyYWc7IH0KLSAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5RHJhZyhib29s
IHZhbHVlKSB7IF9hZmZlY3RlZEJ5RHJhZyA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgaXNMaW5r
KCkgY29uc3QgeyByZXR1cm4gX2lzTGluazsgfQotICAgICAgICB2b2lkIHNldElzTGluayhib29s
IHZhbHVlKSB7IF9pc0xpbmsgPSB2YWx1ZTsgfQotICAgIHByaXZhdGU6Ci0gICAgICAgIHVuc2ln
bmVkIF9hZmZlY3RlZEJ5SG92ZXIgOiAxOwotICAgICAgICB1bnNpZ25lZCBfYWZmZWN0ZWRCeUFj
dGl2ZSA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIF9hZmZlY3RlZEJ5RHJhZyA6IDE7Ci0gICAgICAg
IHVuc2lnbmVkIF9pc0xpbmsgOiAxOwotICAgICAgICAvLyBJZiB5b3UgYWRkIG1vcmUgc3R5bGUg
Yml0cyBoZXJlLCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIFJlbmRlclN0eWxlOjpjb3B5
Tm9uSW5oZXJpdGVkRnJvbSgpCi0gICAgICAgIC8vIDU5IGJpdHMKLSAgICB9IG5vbmluaGVyaXRl
ZF9mbGFnczsKKyAgICBOb25Jbmhlcml0ZWRGbGFncyBub25pbmhlcml0ZWRfZmxhZ3M7CiAKIC8v
ICFFTkQgU1lOQyEKIAotcHJvdGVjdGVkOgotICAgIHZvaWQgc2V0Qml0RGVmYXVsdHMoKQotICAg
IHsKLSAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscyA9IGluaXRpYWxFbXB0eUNl
bGxzKCk7Ci0gICAgICAgIGluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9zaWRlID0gaW5pdGlhbENh
cHRpb25TaWRlKCk7Ci0gICAgICAgIGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlID0g
aW5pdGlhbExpc3RTdHlsZVR5cGUoKTsKLSAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0
eWxlX3Bvc2l0aW9uID0gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCk7Ci0gICAgICAgIGluaGVy
aXRlZF9mbGFncy5fdmlzaWJpbGl0eSA9IGluaXRpYWxWaXNpYmlsaXR5KCk7Ci0gICAgICAgIGlu
aGVyaXRlZF9mbGFncy5fdGV4dF9hbGlnbiA9IGluaXRpYWxUZXh0QWxpZ24oKTsKLSAgICAgICAg
aW5oZXJpdGVkX2ZsYWdzLl90ZXh0X3RyYW5zZm9ybSA9IGluaXRpYWxUZXh0VHJhbnNmb3JtKCk7
Ci0gICAgICAgIGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyA9IGluaXRpYWxUZXh0
RGVjb3JhdGlvbigpOwotICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSA9IGlu
aXRpYWxDdXJzb3IoKTsKLSNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgICAgIGlu
aGVyaXRlZF9mbGFncy5tX2N1cnNvclZpc2liaWxpdHkgPSBpbml0aWFsQ3Vyc29yVmlzaWJpbGl0
eSgpOwotI2VuZGlmCi0gICAgICAgIGluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uID0gaW5pdGlh
bERpcmVjdGlvbigpOwotICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlID0gaW5p
dGlhbFdoaXRlU3BhY2UoKTsKLSAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9ib3JkZXJfY29sbGFw
c2UgPSBpbml0aWFsQm9yZGVyQ29sbGFwc2UoKTsKLSAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLm1f
cnRsT3JkZXJpbmcgPSBpbml0aWFsUlRMT3JkZXJpbmcoKTsKLSAgICAgICAgaW5oZXJpdGVkX2Zs
YWdzLl9ib3hfZGlyZWN0aW9uID0gaW5pdGlhbEJveERpcmVjdGlvbigpOwotICAgICAgICBpbmhl
cml0ZWRfZmxhZ3MubV9wcmludENvbG9yQWRqdXN0ID0gaW5pdGlhbFByaW50Q29sb3JBZGp1c3Qo
KTsKLSAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9wb2ludGVyRXZlbnRzID0gaW5pdGlhbFBvaW50
ZXJFdmVudHMoKTsKLSAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rID0gTm90SW5z
aWRlTGluazsKLSAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUgPSBpbml0aWFs
V3JpdGluZ01vZGUoKTsKLQotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2VmZmVjdGl2ZURp
c3BsYXkgPSBub25pbmhlcml0ZWRfZmxhZ3MuX29yaWdpbmFsRGlzcGxheSA9IGluaXRpYWxEaXNw
bGF5KCk7Ci0gICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fb3ZlcmZsb3dYID0gaW5pdGlhbE92
ZXJmbG93WCgpOwotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX292ZXJmbG93WSA9IGluaXRp
YWxPdmVyZmxvd1koKTsKLSAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl92ZXJ0aWNhbF9hbGln
biA9IGluaXRpYWxWZXJ0aWNhbEFsaWduKCk7Ci0gICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5f
Y2xlYXIgPSBpbml0aWFsQ2xlYXIoKTsKLSAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wb3Np
dGlvbiA9IGluaXRpYWxQb3NpdGlvbigpOwotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2Zs
b2F0aW5nID0gaW5pdGlhbEZsb2F0aW5nKCk7Ci0gICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5f
dGFibGVfbGF5b3V0ID0gaW5pdGlhbFRhYmxlTGF5b3V0KCk7Ci0gICAgICAgIG5vbmluaGVyaXRl
ZF9mbGFncy5fdW5pY29kZUJpZGkgPSBpbml0aWFsVW5pY29kZUJpZGkoKTsKLSAgICAgICAgbm9u
aW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2JlZm9yZSA9IGluaXRpYWxQYWdlQnJlYWsoKTsK
LSAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2FmdGVyID0gaW5pdGlhbFBh
Z2VCcmVhaygpOwotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfaW5zaWRl
ID0gaW5pdGlhbFBhZ2VCcmVhaygpOwotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3N0eWxl
VHlwZSA9IE5PUFNFVURPOwotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3BzZXVkb0JpdHMg
PSAwOwotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuZXhwbGljaXRJbmhlcml0YW5jZSA9IGZh
bHNlOwotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MudW5pcXVlID0gZmFsc2U7Ci0gICAgICAg
IG5vbmluaGVyaXRlZF9mbGFncy5lbXB0eVN0YXRlID0gZmFsc2U7Ci0gICAgICAgIG5vbmluaGVy
aXRlZF9mbGFncy5maXJzdENoaWxkU3RhdGUgPSBmYWxzZTsKLSAgICAgICAgbm9uaW5oZXJpdGVk
X2ZsYWdzLmxhc3RDaGlsZFN0YXRlID0gZmFsc2U7Ci0gICAgICAgIG5vbmluaGVyaXRlZF9mbGFn
cy5zZXRBZmZlY3RlZEJ5SG92ZXIoZmFsc2UpOwotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3Mu
c2V0QWZmZWN0ZWRCeUFjdGl2ZShmYWxzZSk7Ci0gICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5z
ZXRBZmZlY3RlZEJ5RHJhZyhmYWxzZSk7Ci0gICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5zZXRJ
c0xpbmsoZmFsc2UpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICAvLyB1c2VkIHRvIGNyZWF0ZSB0
aGUgZGVmYXVsdCBzdHlsZS4KICAgICBBTFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlKGJvb2wpOwpA
QCAtMzYwLDggKzQ5NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaGVyaXRGcm9tKGNvbnN0IFJl
bmRlclN0eWxlKiBpbmhlcml0UGFyZW50LCBJc0F0U2hhZG93Qm91bmRhcnkgPSBOb3RBdFNoYWRv
d0JvdW5kYXJ5KTsKICAgICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFJlbmRlclN0
eWxlKik7CiAKLSAgICBQc2V1ZG9JZCBzdHlsZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxQc2V1ZG9JZD4obm9uaW5oZXJpdGVkX2ZsYWdzLl9zdHlsZVR5cGUpOyB9Ci0gICAgdm9p
ZCBzZXRTdHlsZVR5cGUoUHNldWRvSWQgc3R5bGVUeXBlKSB7IG5vbmluaGVyaXRlZF9mbGFncy5f
c3R5bGVUeXBlID0gc3R5bGVUeXBlOyB9CisgICAgUHNldWRvSWQgc3R5bGVUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnN0eWxlVHlwZSgpOyB9CisgICAgdm9pZCBzZXRT
dHlsZVR5cGUoUHNldWRvSWQgc3R5bGVUeXBlKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRTdHls
ZVR5cGUoc3R5bGVUeXBlKTsgfQogCiAgICAgUmVuZGVyU3R5bGUqIGdldENhY2hlZFBzZXVkb1N0
eWxlKFBzZXVkb0lkKSBjb25zdDsKICAgICBSZW5kZXJTdHlsZSogYWRkQ2FjaGVkUHNldWRvU3R5
bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwpAQCAtMzgxLDcgKzUxNSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25z
dDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0
IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5fZmxvYXRpbmcgIT0gTm9GbG9hdDsgfQorICAg
IGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5pc0Zs
b2F0aW5nKCk7IH0KICAgICBib29sIGhhc01hcmdpbigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5tYXJnaW4ubm9uWmVybygpOyB9CiAgICAgYm9vbCBoYXNCb3JkZXIoKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+Ym9yZGVyLmhhc0JvcmRlcigpOyB9CiAgICAgYm9vbCBoYXNQYWRkaW5nKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcubm9uWmVybygpOyB9CkBAIC00MzYsOCAr
NTcwLDggQEAgcHVibGljOgogCiAgICAgLy8gYXR0cmlidXRlIGdldHRlciBtZXRob2RzCiAKLSAg
ICBFRGlzcGxheSBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RURpc3BsYXk+
KG5vbmluaGVyaXRlZF9mbGFncy5fZWZmZWN0aXZlRGlzcGxheSk7IH0KLSAgICBFRGlzcGxheSBv
cmlnaW5hbERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRGlzcGxheT4obm9u
aW5oZXJpdGVkX2ZsYWdzLl9vcmlnaW5hbERpc3BsYXkpOyB9CisgICAgRURpc3BsYXkgZGlzcGxh
eSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5lZmZlY3RpdmVEaXNwbGF5KCk7
IH0KKyAgICBFRGlzcGxheSBvcmlnaW5hbERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBub25pbmhl
cml0ZWRfZmxhZ3Mub3JpZ2luYWxEaXNwbGF5KCk7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgbGVm
dCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQubGVmdCgpOyB9CiAgICAgY29uc3Qg
TGVuZ3RoJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQucmlnaHQoKTsg
fQpAQCAtNDU3LDExICs1OTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU3RhdGljSW5saW5l
UG9zaXRpb24oYm9vbCBob3Jpem9udGFsKSBjb25zdCB7IHJldHVybiBob3Jpem9udGFsID8gaGFz
QXV0b0xlZnRBbmRSaWdodCgpIDogaGFzQXV0b1RvcEFuZEJvdHRvbSgpOyB9CiAgICAgYm9vbCBo
YXNTdGF0aWNCbG9ja1Bvc2l0aW9uKGJvb2wgaG9yaXpvbnRhbCkgY29uc3QgeyByZXR1cm4gaG9y
aXpvbnRhbCA/IGhhc0F1dG9Ub3BBbmRCb3R0b20oKSA6IGhhc0F1dG9MZWZ0QW5kUmlnaHQoKTsg
fQogCi0gICAgRVBvc2l0aW9uIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RVBvc2l0aW9uPihub25pbmhlcml0ZWRfZmxhZ3MuX3Bvc2l0aW9uKTsgfQorICAgIEVQb3NpdGlv
biBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5wb3NpdGlvbigp
OyB9CiAgICAgYm9vbCBoYXNPdXRPZkZsb3dQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBvc2l0
aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiB8fCBwb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb247
IH0KICAgICBib29sIGhhc0luRmxvd1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcG9zaXRpb24o
KSA9PSBSZWxhdGl2ZVBvc2l0aW9uIHx8IHBvc2l0aW9uKCkgPT0gU3RpY2t5UG9zaXRpb247IH0K
ICAgICBib29sIGhhc1ZpZXdwb3J0Q29uc3RyYWluZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiB8fCBwb3NpdGlvbigpID09IFN0aWNreVBvc2l0
aW9uOyB9Ci0gICAgRUZsb2F0IGZsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUZsb2F0Pihub25pbmhlcml0ZWRfZmxhZ3MuX2Zsb2F0aW5nKTsgfQorICAgIEVGbG9hdCBmbG9h
dGluZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5mbG9hdGluZygpOyB9CiAK
ICAgICBjb25zdCBMZW5ndGgmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPndpZHRoKCk7
IH0KICAgICBjb25zdCBMZW5ndGgmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5oZWln
aHQoKTsgfQpAQCAtNTI5LDExICs2NjMsMTEgQEAgcHVibGljOgogICAgIEVCb3JkZXJTdHlsZSBv
dXRsaW5lU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmQtPm91dGxpbmUoKS5zdHls
ZSgpOyB9CiAgICAgT3V0bGluZUlzQXV0byBvdXRsaW5lU3R5bGVJc0F1dG8oKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxPdXRsaW5lSXNBdXRvPihtX2JhY2tncm91bmQtPm91dGxpbmUoKS5p
c0F1dG8oKSk7IH0KICAgICAKLSAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dYKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RU92ZXJmbG93Pihub25pbmhlcml0ZWRfZmxhZ3MuX292ZXJmbG93WCk7
IH0KLSAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RU92ZXJmbG93Pihub25pbmhlcml0ZWRfZmxhZ3MuX292ZXJmbG93WSk7IH0KKyAgICBFT3ZlcmZs
b3cgb3ZlcmZsb3dYKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLm92ZXJmbG93
WCgpOyB9CisgICAgRU92ZXJmbG93IG92ZXJmbG93WSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVy
aXRlZF9mbGFncy5vdmVyZmxvd1koKTsgfQogCiAgICAgRVZpc2liaWxpdHkgdmlzaWJpbGl0eSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVWaXNpYmlsaXR5Pihpbmhlcml0ZWRfZmxhZ3Mu
X3Zpc2liaWxpdHkpOyB9Ci0gICAgRVZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVWZXJ0aWNhbEFsaWduPihub25pbmhlcml0ZWRfZmxhZ3Mu
X3ZlcnRpY2FsX2FsaWduKTsgfQorICAgIEVWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24oKSBj
b25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MudmVydGljYWxBbGlnbigpOyB9CiAgICAg
Y29uc3QgTGVuZ3RoJiB2ZXJ0aWNhbEFsaWduTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ib3gt
PnZlcnRpY2FsQWxpZ24oKTsgfQogCiAgICAgY29uc3QgTGVuZ3RoJiBjbGlwTGVmdCgpIGNvbnN0
IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcC5sZWZ0KCk7IH0KQEAgLTU0MywxMCArNjc3LDEwIEBAIHB1
YmxpYzoKICAgICBjb25zdCBMZW5ndGhCb3gmIGNsaXAoKSBjb25zdCB7IHJldHVybiB2aXN1YWwt
PmNsaXA7IH0KICAgICBib29sIGhhc0NsaXAoKSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmhhc0Ns
aXA7IH0KIAotICAgIEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVVbmljb2RlQmlkaT4obm9uaW5oZXJpdGVkX2ZsYWdzLl91bmljb2RlQmlkaSk7
IH0KKyAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkoKSBjb25zdCB7IHJldHVybiBub25pbmhl
cml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKTsgfQogCi0gICAgRUNsZWFyIGNsZWFyKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RUNsZWFyPihub25pbmhlcml0ZWRfZmxhZ3MuX2NsZWFyKTsg
fQotICAgIEVUYWJsZUxheW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVUYWJsZUxheW91dD4obm9uaW5oZXJpdGVkX2ZsYWdzLl90YWJsZV9sYXlvdXQpOyB9Cisg
ICAgRUNsZWFyIGNsZWFyKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmNsZWFy
KCk7IH0KKyAgICBFVGFibGVMYXlvdXQgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBub25p
bmhlcml0ZWRfZmxhZ3MudGFibGVMYXlvdXQoKTsgfQogCiAgICAgY29uc3QgRm9udCYgZm9udCgp
IGNvbnN0OwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0OwpAQCAt
NzIxLDkgKzg1NSw5IEBAIHB1YmxpYzoKICAgICBzaG9ydCBvcnBoYW5zKCkgY29uc3QgeyByZXR1
cm4gcmFyZUluaGVyaXRlZERhdGEtPm9ycGhhbnM7IH0KICAgICBib29sIGhhc0F1dG9XaWRvd3Mo
KSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9oYXNBdXRvV2lkb3dzOyB9CiAg
ICAgYm9vbCBoYXNBdXRvT3JwaGFucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRh
LT5tX2hhc0F1dG9PcnBoYW5zOyB9Ci0gICAgRVBhZ2VCcmVhayBwYWdlQnJlYWtJbnNpZGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUGFnZUJyZWFrPihub25pbmhlcml0ZWRfZmxhZ3Mu
X3BhZ2VfYnJlYWtfaW5zaWRlKTsgfQotICAgIEVQYWdlQnJlYWsgcGFnZUJyZWFrQmVmb3JlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBhZ2VCcmVhaz4obm9uaW5oZXJpdGVkX2ZsYWdz
Ll9wYWdlX2JyZWFrX2JlZm9yZSk7IH0KLSAgICBFUGFnZUJyZWFrIHBhZ2VCcmVha0FmdGVyKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBhZ2VCcmVhaz4obm9uaW5oZXJpdGVkX2ZsYWdz
Ll9wYWdlX2JyZWFrX2FmdGVyKTsgfQorICAgIEVQYWdlQnJlYWsgcGFnZUJyZWFrSW5zaWRlKCkg
Y29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnBhZ2VCcmVha0luc2lkZSgpOyB9Cisg
ICAgRVBhZ2VCcmVhayBwYWdlQnJlYWtCZWZvcmUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0
ZWRfZmxhZ3MucGFnZUJyZWFrQmVmb3JlKCk7IH0KKyAgICBFUGFnZUJyZWFrIHBhZ2VCcmVha0Fm
dGVyKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnBhZ2VCcmVha0FmdGVyKCk7
IH0KIAogICAgIC8vIENTUzMgR2V0dGVyIE1ldGhvZHMKIApAQCAtOTk0LDEwICsxMTI4LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgCiAvLyBhdHRyaWJ1dGUgc2V0dGVyIG1ldGhvZHMKIAotICAgIHZv
aWQgc2V0RGlzcGxheShFRGlzcGxheSB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5fZWZmZWN0aXZl
RGlzcGxheSA9IHY7IH0KLSAgICB2b2lkIHNldE9yaWdpbmFsRGlzcGxheShFRGlzcGxheSB2KSB7
IG5vbmluaGVyaXRlZF9mbGFncy5fb3JpZ2luYWxEaXNwbGF5ID0gdjsgfQotICAgIHZvaWQgc2V0
UG9zaXRpb24oRVBvc2l0aW9uIHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wb3NpdGlvbiA9IHY7
IH0KLSAgICB2b2lkIHNldEZsb2F0aW5nKEVGbG9hdCB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5f
ZmxvYXRpbmcgPSB2OyB9CisgICAgdm9pZCBzZXREaXNwbGF5KEVEaXNwbGF5IHYpIHsgbm9uaW5o
ZXJpdGVkX2ZsYWdzLnNldEVmZmVjdGl2ZURpc3BsYXkodik7IH0KKyAgICB2b2lkIHNldE9yaWdp
bmFsRGlzcGxheShFRGlzcGxheSB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRPcmlnaW5hbERp
c3BsYXkodik7IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uKEVQb3NpdGlvbiB2KSB7IG5vbmluaGVy
aXRlZF9mbGFncy5zZXRQb3NpdGlvbih2KTsgfQorICAgIHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0
IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEZsb2F0aW5nKHYpOyB9CiAKICAgICB2b2lkIHNl
dExlZnQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1fbGVmdCwgc3RkOjpt
b3ZlKHYpKTsgfQogICAgIHZvaWQgc2V0UmlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgb2Zmc2V0Lm1fcmlnaHQsIHN0ZDo6bW92ZSh2KSk7IH0KQEAgLTExMTUsMTAgKzEyNDksMTAg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0T3V0bGluZVN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNF
VF9WQVIobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUubV9zdHlsZSwgdik7IH0KICAgICB2b2lkIHNl
dE91dGxpbmVDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IobV9i
YWNrZ3JvdW5kLCBtX291dGxpbmUsIHYpOyB9CiAKLSAgICB2b2lkIHNldE92ZXJmbG93WChFT3Zl
cmZsb3cgdikgeyBub25pbmhlcml0ZWRfZmxhZ3MuX292ZXJmbG93WCA9IHY7IH0KLSAgICB2b2lk
IHNldE92ZXJmbG93WShFT3ZlcmZsb3cgdikgeyBub25pbmhlcml0ZWRfZmxhZ3MuX292ZXJmbG93
WSA9IHY7IH0KKyAgICB2b2lkIHNldE92ZXJmbG93WChFT3ZlcmZsb3cgdikgeyBub25pbmhlcml0
ZWRfZmxhZ3Muc2V0T3ZlcmZsb3dYKHYpOyB9CisgICAgdm9pZCBzZXRPdmVyZmxvd1koRU92ZXJm
bG93IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldE92ZXJmbG93WSh2KTsgfQogICAgIHZvaWQg
c2V0VmlzaWJpbGl0eShFVmlzaWJpbGl0eSB2KSB7IGluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0
eSA9IHY7IH0KLSAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ24oRVZlcnRpY2FsQWxpZ24gdikgeyBu
b25pbmhlcml0ZWRfZmxhZ3MuX3ZlcnRpY2FsX2FsaWduID0gdjsgfQorICAgIHZvaWQgc2V0VmVy
dGljYWxBbGlnbihFVmVydGljYWxBbGlnbiB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRWZXJ0
aWNhbEFsaWduKHYpOyB9CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKExlbmd0aCBs
ZW5ndGgpIHsgc2V0VmVydGljYWxBbGlnbihMRU5HVEgpOyBTRVRfVkFSKG1fYm94LCBtX3ZlcnRp
Y2FsQWxpZ24sIHN0ZDo6bW92ZShsZW5ndGgpKTsgfQogCiAgICAgdm9pZCBzZXRIYXNDbGlwKGJv
b2wgYiA9IHRydWUpIHsgU0VUX1ZBUih2aXN1YWwsIGhhc0NsaXAsIGIpOyB9CkBAIC0xMTI5LDEw
ICsxMjYzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENsaXAoTGVuZ3RoIHRvcCwgTGVuZ3Ro
IHJpZ2h0LCBMZW5ndGggYm90dG9tLCBMZW5ndGggbGVmdCk7CiAgICAgdm9pZCBzZXRDbGlwKExl
bmd0aEJveCBib3gpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAsIHN0ZDo6bW92ZShib3gpKTsgfQog
Ci0gICAgdm9pZCBzZXRVbmljb2RlQmlkaShFVW5pY29kZUJpZGkgYikgeyBub25pbmhlcml0ZWRf
ZmxhZ3MuX3VuaWNvZGVCaWRpID0gYjsgfQorICAgIHZvaWQgc2V0VW5pY29kZUJpZGkoRVVuaWNv
ZGVCaWRpIGIpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFVuaWNvZGVCaWRpKGIpOyB9CiAKLSAg
ICB2b2lkIHNldENsZWFyKEVDbGVhciB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5fY2xlYXIgPSB2
OyB9Ci0gICAgdm9pZCBzZXRUYWJsZUxheW91dChFVGFibGVMYXlvdXQgdikgeyBub25pbmhlcml0
ZWRfZmxhZ3MuX3RhYmxlX2xheW91dCA9IHY7IH0KKyAgICB2b2lkIHNldENsZWFyKEVDbGVhciB2
KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRDbGVhcih2KTsgfQorICAgIHZvaWQgc2V0VGFibGVM
YXlvdXQoRVRhYmxlTGF5b3V0IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFRhYmxlTGF5b3V0
KHYpOyB9CiAKICAgICBib29sIHNldEZvbnREZXNjcmlwdGlvbihjb25zdCBGb250RGVzY3JpcHRp
b24mKTsKICAgICAvLyBPbmx5IHVzZWQgZm9yIGJsZW5kaW5nIGZvbnQgc2l6ZXMgd2hlbiBhbmlt
YXRpbmcsIGZvciBNYXRoTUwgYW5vbnltb3VzIGJsb2NrcywgYW5kIGZvciB0ZXh0IGF1dG9zaXpp
bmcuCkBAIC0xMjc2LDkgKzE0MTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcnBoYW5zKHNo
b3J0IG8pIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRvT3JwaGFucywgZmFs
c2UpOyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBvcnBoYW5zLCBvKTsgfQogCiAgICAgLy8g
Rm9yIHZhbGlkIHZhbHVlcyBvZiBwYWdlLWJyZWFrLWluc2lkZSBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvQ1NTMjEvcGFnZS5odG1sI3BhZ2UtYnJlYWstcHJvcHMKLSAgICB2b2lkIHNldFBhZ2VC
cmVha0luc2lkZShFUGFnZUJyZWFrIGIpIHsgQVNTRVJUKGIgPT0gUEJBVVRPIHx8IGIgPT0gUEJB
Vk9JRCk7IG5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19pbnNpZGUgPSBiOyB9Ci0gICAg
dm9pZCBzZXRQYWdlQnJlYWtCZWZvcmUoRVBhZ2VCcmVhayBiKSB7IG5vbmluaGVyaXRlZF9mbGFn
cy5fcGFnZV9icmVha19iZWZvcmUgPSBiOyB9Ci0gICAgdm9pZCBzZXRQYWdlQnJlYWtBZnRlcihF
UGFnZUJyZWFrIGIpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2FmdGVyID0gYjsg
fQorICAgIHZvaWQgc2V0UGFnZUJyZWFrSW5zaWRlKEVQYWdlQnJlYWsgYikgeyBub25pbmhlcml0
ZWRfZmxhZ3Muc2V0UGFnZUJyZWFrSW5zaWRlKGIpOyB9CisgICAgdm9pZCBzZXRQYWdlQnJlYWtC
ZWZvcmUoRVBhZ2VCcmVhayBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRQYWdlQnJlYWtCZWZv
cmUoYik7IH0KKyAgICB2b2lkIHNldFBhZ2VCcmVha0FmdGVyKEVQYWdlQnJlYWsgYikgeyBub25p
bmhlcml0ZWRfZmxhZ3Muc2V0UGFnZUJyZWFrQWZ0ZXIoYik7IH0KIAogICAgIC8vIENTUzMgU2V0
dGVycwogICAgIHZvaWQgc2V0T3V0bGluZU9mZnNldChpbnQgdikgeyBTRVRfVkFSKG1fYmFja2dy
b3VuZCwgbV9vdXRsaW5lLm1fb2Zmc2V0LCB2KTsgfQpAQCAtMTU4MiwyMCArMTcxNiwyMCBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgLy8gQSB1bmlxdWUgc3R5bGUgaXMgb25lIHRoYXQgaGFzIG1h
dGNoZXMgc29tZXRoaW5nIHRoYXQgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBzaGFyZS4KLSAgICBi
b29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy51bmlxdWU7IH0K
LSAgICB2b2lkIHNldFVuaXF1ZSgpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnVuaXF1ZSA9IHRydWU7
IH0KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5p
c1VuaXF1ZSgpOyB9CisgICAgdm9pZCBzZXRVbmlxdWUoKSB7IG5vbmluaGVyaXRlZF9mbGFncy5z
ZXRJc1VuaXF1ZSgpOyB9CiAKLSAgICBib29sIGVtcHR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBu
b25pbmhlcml0ZWRfZmxhZ3MuZW1wdHlTdGF0ZTsgfQotICAgIHZvaWQgc2V0RW1wdHlTdGF0ZShi
b29sIGIpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9mbGFncy5lbXB0eVN0YXRlID0gYjsg
fQotICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVk
X2ZsYWdzLmZpcnN0Q2hpbGRTdGF0ZTsgfQotICAgIHZvaWQgc2V0Rmlyc3RDaGlsZFN0YXRlKCkg
eyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLmZpcnN0Q2hpbGRTdGF0ZSA9IHRydWU7
IH0KLSAgICBib29sIGxhc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVk
X2ZsYWdzLmxhc3RDaGlsZFN0YXRlOyB9Ci0gICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0ZSgpIHsg
c2V0VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9mbGFncy5sYXN0Q2hpbGRTdGF0ZSA9IHRydWU7IH0K
KyAgICBib29sIGVtcHR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3Mu
ZW1wdHlTdGF0ZSgpOyB9CisgICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgYikgeyBzZXRVbmlx
dWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEVtcHR5U3RhdGUoYik7IH0KKyAgICBib29sIGZp
cnN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5maXJzdENo
aWxkU3RhdGUoKTsgfQorICAgIHZvaWQgc2V0Rmlyc3RDaGlsZFN0YXRlKCkgeyBzZXRVbmlxdWUo
KTsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEZpcnN0Q2hpbGRTdGF0ZSh0cnVlKTsgfQorICAgIGJv
b2wgbGFzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MubGFz
dENoaWxkU3RhdGUoKTsgfQorICAgIHZvaWQgc2V0TGFzdENoaWxkU3RhdGUoKSB7IHNldFVuaXF1
ZSgpOyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0TGFzdENoaWxkU3RhdGUodHJ1ZSk7IH0KIAogICAg
IENvbG9yIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3Q7CiAK
LSAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgeyBub25pbmhl
cml0ZWRfZmxhZ3MuZXhwbGljaXRJbmhlcml0YW5jZSA9IHRydWU7IH0KLSAgICBib29sIGhhc0V4
cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVk
X2ZsYWdzLmV4cGxpY2l0SW5oZXJpdGFuY2U7IH0KKyAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlJ
bmhlcml0ZWRQcm9wZXJ0aWVzKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFzRXhwbGljaXRs
eUluaGVyaXRlZFByb3BlcnRpZXModHJ1ZSk7IH0KKyAgICBib29sIGhhc0V4cGxpY2l0bHlJbmhl
cml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc0V4
cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7IH0KICAgICAKICAgICAvLyBJbml0aWFsIHZh
bHVlcyBmb3IgYWxsIHRoZSBwcm9wZXJ0aWVzCiAgICAgc3RhdGljIEVCb3JkZXJDb2xsYXBzZSBp
bml0aWFsQm9yZGVyQ29sbGFwc2UoKSB7IHJldHVybiBCU0VQQVJBVEU7IH0KQEAgLTE2MDQsNyAr
MTczOCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgaW5pdGlhbE5pbmVQ
aWVjZUltYWdlKCkgeyByZXR1cm4gTmluZVBpZWNlSW1hZ2UoKTsgfQogICAgIHN0YXRpYyBMZW5n
dGhTaXplIGluaXRpYWxCb3JkZXJSYWRpdXMoKSB7IHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgw
LCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpOyB9CiAgICAgc3RhdGljIEVDYXB0aW9uU2lkZSBp
bml0aWFsQ2FwdGlvblNpZGUoKSB7IHJldHVybiBDQVBUT1A7IH0KLSAgICBzdGF0aWMgRUNsZWFy
IGluaXRpYWxDbGVhcigpIHsgcmV0dXJuIENOT05FOyB9CiAgICAgc3RhdGljIENvbG9yU3BhY2Ug
aW5pdGlhbENvbG9yU3BhY2UoKSB7IHJldHVybiBDb2xvclNwYWNlRGV2aWNlUkdCOyB9CiAgICAg
c3RhdGljIENvbHVtbkF4aXMgaW5pdGlhbENvbHVtbkF4aXMoKSB7IHJldHVybiBBdXRvQ29sdW1u
QXhpczsgfQogICAgIHN0YXRpYyBDb2x1bW5Qcm9ncmVzc2lvbiBpbml0aWFsQ29sdW1uUHJvZ3Jl
c3Npb24oKSB7IHJldHVybiBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbjsgfQpAQCAtMTYxMywxNyAr
MTc0Niw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dENvbWJpbmUgaW5pdGlhbFRleHRDb21i
aW5lKCkgeyByZXR1cm4gVGV4dENvbWJpbmVOb25lOyB9CiAgICAgc3RhdGljIFRleHRPcmllbnRh
dGlvbiBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVudGF0aW9uVmVy
dGljYWxSaWdodDsgfQogICAgIHN0YXRpYyBPYmplY3RGaXQgaW5pdGlhbE9iamVjdEZpdCgpIHsg
cmV0dXJuIE9iamVjdEZpdEZpbGw7IH0KLSAgICBzdGF0aWMgRURpc3BsYXkgaW5pdGlhbERpc3Bs
YXkoKSB7IHJldHVybiBJTkxJTkU7IH0KICAgICBzdGF0aWMgRUVtcHR5Q2VsbCBpbml0aWFsRW1w
dHlDZWxscygpIHsgcmV0dXJuIFNIT1c7IH0KLSAgICBzdGF0aWMgRUZsb2F0IGluaXRpYWxGbG9h
dGluZygpIHsgcmV0dXJuIE5vRmxvYXQ7IH0KICAgICBzdGF0aWMgRUxpc3RTdHlsZVBvc2l0aW9u
IGluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpIHsgcmV0dXJuIE9VVFNJREU7IH0KICAgICBzdGF0
aWMgRUxpc3RTdHlsZVR5cGUgaW5pdGlhbExpc3RTdHlsZVR5cGUoKSB7IHJldHVybiBEaXNjOyB9
Ci0gICAgc3RhdGljIEVPdmVyZmxvdyBpbml0aWFsT3ZlcmZsb3dYKCkgeyByZXR1cm4gT1ZJU0lC
TEU7IH0KLSAgICBzdGF0aWMgRU92ZXJmbG93IGluaXRpYWxPdmVyZmxvd1koKSB7IHJldHVybiBP
VklTSUJMRTsgfQotICAgIHN0YXRpYyBFUGFnZUJyZWFrIGluaXRpYWxQYWdlQnJlYWsoKSB7IHJl
dHVybiBQQkFVVE87IH0KLSAgICBzdGF0aWMgRVBvc2l0aW9uIGluaXRpYWxQb3NpdGlvbigpIHsg
cmV0dXJuIFN0YXRpY1Bvc2l0aW9uOyB9Ci0gICAgc3RhdGljIEVUYWJsZUxheW91dCBpbml0aWFs
VGFibGVMYXlvdXQoKSB7IHJldHVybiBUQVVUTzsgfQotICAgIHN0YXRpYyBFVW5pY29kZUJpZGkg
aW5pdGlhbFVuaWNvZGVCaWRpKCkgeyByZXR1cm4gVUJOb3JtYWw7IH0KICAgICBzdGF0aWMgRVRl
eHRUcmFuc2Zvcm0gaW5pdGlhbFRleHRUcmFuc2Zvcm0oKSB7IHJldHVybiBUVE5PTkU7IH0KICAg
ICBzdGF0aWMgRVZpc2liaWxpdHkgaW5pdGlhbFZpc2liaWxpdHkoKSB7IHJldHVybiBWSVNJQkxF
OyB9CiAgICAgc3RhdGljIEVXaGl0ZVNwYWNlIGluaXRpYWxXaGl0ZVNwYWNlKCkgeyByZXR1cm4g
Tk9STUFMOyB9CkBAIC0xNjUxLDcgKzE3NzYsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRleHRJ
bmRlbnRMaW5lIGluaXRpYWxUZXh0SW5kZW50TGluZSgpIHsgcmV0dXJuIFRleHRJbmRlbnRGaXJz
dExpbmU7IH0KICAgICBzdGF0aWMgVGV4dEluZGVudFR5cGUgaW5pdGlhbFRleHRJbmRlbnRUeXBl
KCkgeyByZXR1cm4gVGV4dEluZGVudE5vcm1hbDsgfQogI2VuZGlmCi0gICAgc3RhdGljIEVWZXJ0
aWNhbEFsaWduIGluaXRpYWxWZXJ0aWNhbEFsaWduKCkgeyByZXR1cm4gQkFTRUxJTkU7IH0KICAg
ICBzdGF0aWMgc2hvcnQgaW5pdGlhbFdpZG93cygpIHsgcmV0dXJuIDI7IH0KICAgICBzdGF0aWMg
c2hvcnQgaW5pdGlhbE9ycGhhbnMoKSB7IHJldHVybiAyOyB9CiAgICAgc3RhdGljIExlbmd0aCBp
bml0aWFsTGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0aCgtMTAwLjAsIFBlcmNlbnQpOyB9CkBA
IC0xODM5LDcgKzE5NjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0
RmlsbENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHZp
c2l0ZWRMaW5rVGV4dEZpbGxDb2xvciwgdik7IH0KICAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4
dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yLCB2KTsgfQogCi0gICAgdm9pZCBpbmhlcml0VW5p
Y29kZUJpZGlGcm9tKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnQpIHsgbm9uaW5oZXJpdGVkX2Zs
YWdzLl91bmljb2RlQmlkaSA9IHBhcmVudC0+bm9uaW5oZXJpdGVkX2ZsYWdzLl91bmljb2RlQmlk
aTsgfQorICAgIHZvaWQgaW5oZXJpdFVuaWNvZGVCaWRpRnJvbShjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRVbmljb2RlQmlkaShwYXJlbnQtPm5vbmlu
aGVyaXRlZF9mbGFncy51bmljb2RlQmlkaSgpKTsgfQogICAgIHZvaWQgZ2V0U2hhZG93RXh0ZW50
KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0LCBM
YXlvdXRVbml0JiBib3R0b20sIExheW91dFVuaXQmIGxlZnQpIGNvbnN0OwogICAgIExheW91dEJv
eEV4dGVudCBnZXRTaGFkb3dJbnNldEV4dGVudChjb25zdCBTaGFkb3dEYXRhKikgY29uc3Q7CiAg
ICAgdm9pZCBnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlv
dXRVbml0JiBsZWZ0LCBMYXlvdXRVbml0JiByaWdodCkgY29uc3Q7CkBAIC0xOTAxLDYgKzIwMjUs
OCBAQCBwcml2YXRlOgogICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBz
dmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsgfQogCiAgICAgdm9pZCBhcHBlbmRDb250ZW50KHN0
ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4pOworCisgICAgc3RhdGljIHB0cmRpZmZfdCBub25p
bmhlcml0ZWRGbGFnc01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZW5k
ZXJTdHlsZSwgbm9uaW5oZXJpdGVkX2ZsYWdzKTsgfQogfTsKIAogaW5saW5lIGludCBhZGp1c3RG
b3JBYnNvbHV0ZVpvb20oaW50IHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCkBAIC0x
OTU5LDIxICsyMDg1LDE3IEBAIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpzZXRUZXh0T3JpZW50
YXRpb24oVGV4dE9yaWVudGF0aW9uIHRleHRPcmllbnRhdGlvbikKIAogaW5saW5lIGJvb2wgUmVu
ZGVyU3R5bGU6Omhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFBVQkxJQ19QU0VVRE9JRF9NQVNLICYgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wc2V1ZG9CaXRzOwor
ICAgIHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaGFzQW55UHVibGljUHNldWRvU3R5bGVzKCk7
CiB9CiAKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCBw
c2V1ZG8pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHBzZXVkbyA+IE5PUFNFVURPKTsKLSAgICBBU1NF
UlQocHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpOwotICAgIHJldHVybiAoMSA8PCAo
cHNldWRvIC0gMSkpICYgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wc2V1ZG9CaXRzOworICAgIHJldHVy
biBub25pbmhlcml0ZWRfZmxhZ3MuaGFzUHNldWRvU3R5bGUocHNldWRvKTsKIH0KIAogaW5saW5l
IHZvaWQgUmVuZGVyU3R5bGU6OnNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykKIHsK
LSAgICBBU1NFUlQocHNldWRvID4gTk9QU0VVRE8pOwotICAgIEFTU0VSVChwc2V1ZG8gPCBGSVJT
VF9JTlRFUk5BTF9QU0VVRE9JRCk7Ci0gICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wc2V1ZG9CaXRz
IHw9IDEgPDwgKHBzZXVkbyAtIDEpOworICAgIG5vbmluaGVyaXRlZF9mbGFncy5zZXRIYXNQc2V1
ZG9TdHlsZShwc2V1ZG8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcAppbmRl
eCA2OGI2MTc4ZWQzNGY3YzczMTUwNmM2ZmE4YzM0MjNkYTZjZmZmZTJjLi40NzVkMWJkZTlhMWYx
MGYxYWQwMjY4Y2E1NTFkYjY3ZmI0NzQ2NjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAKQEAgLTM1LDkgKzM1LDkgQEAg
U3R5bGVNdWx0aUNvbERhdGE6OlN0eWxlTXVsdGlDb2xEYXRhKCkKICAgICAsIG1fbm9ybWFsR2Fw
KHRydWUpCiAgICAgLCBtX2ZpbGwoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5GaWxsKCkpCiAg
ICAgLCBtX2NvbHVtblNwYW4oZmFsc2UpCi0gICAgLCBtX2JyZWFrQmVmb3JlKFJlbmRlclN0eWxl
Ojppbml0aWFsUGFnZUJyZWFrKCkpCi0gICAgLCBtX2JyZWFrQWZ0ZXIoUmVuZGVyU3R5bGU6Omlu
aXRpYWxQYWdlQnJlYWsoKSkKLSAgICAsIG1fYnJlYWtJbnNpZGUoUmVuZGVyU3R5bGU6OmluaXRp
YWxQYWdlQnJlYWsoKSkKKyAgICAsIG1fYnJlYWtCZWZvcmUoUmVuZGVyU3R5bGU6Ok5vbkluaGVy
aXRlZEZsYWdzOjppbml0aWFsUGFnZUJyZWFrKCkpCisgICAgLCBtX2JyZWFrQWZ0ZXIoUmVuZGVy
U3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjppbml0aWFsUGFnZUJyZWFrKCkpCisgICAgLCBtX2Jy
ZWFrSW5zaWRlKFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6aW5pdGlhbFBhZ2VCcmVh
aygpKQogICAgICwgbV9heGlzKFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQXhpcygpKQogICAg
ICwgbV9wcm9ncmVzc2lvbihSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtblByb2dyZXNzaW9uKCkp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggNjdjMmQ1NWEwYTZhZTg4ZTcwYWRjMDE2
ZmE1ZjcyM2FlZThkM2I0OS4uZDMwMThkYzZiOTgyYzMzMjYxZWI0YzQ0N2NkMzVjMDUwZjQyYjFh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtNjYsOSArNjYsOSBAQCBTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCkKICAgICAsIG1fZmxv
d1RocmVhZChSZW5kZXJTdHlsZTo6aW5pdGlhbEZsb3dUaHJlYWQoKSkKICAgICAsIG1fcmVnaW9u
VGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uVGhyZWFkKCkpCiAgICAgLCBtX3JlZ2lv
bkZyYWdtZW50KFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uRnJhZ21lbnQoKSkKLSAgICAsIG1f
cmVnaW9uQnJlYWtBZnRlcihSZW5kZXJTdHlsZTo6aW5pdGlhbFBhZ2VCcmVhaygpKQotICAgICwg
bV9yZWdpb25CcmVha0JlZm9yZShSZW5kZXJTdHlsZTo6aW5pdGlhbFBhZ2VCcmVhaygpKQotICAg
ICwgbV9yZWdpb25CcmVha0luc2lkZShSZW5kZXJTdHlsZTo6aW5pdGlhbFBhZ2VCcmVhaygpKQor
ICAgICwgbV9yZWdpb25CcmVha0FmdGVyKFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6
aW5pdGlhbFBhZ2VCcmVhaygpKQorICAgICwgbV9yZWdpb25CcmVha0JlZm9yZShSZW5kZXJTdHls
ZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmluaXRpYWxQYWdlQnJlYWsoKSkKKyAgICAsIG1fcmVnaW9u
QnJlYWtJbnNpZGUoUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjppbml0aWFsUGFnZUJy
ZWFrKCkpCiAgICAgLCBtX3BhZ2VTaXplVHlwZShQQUdFX1NJWkVfQVVUTykKICAgICAsIG1fdHJh
bnNmb3JtU3R5bGUzRChSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybVN0eWxlM0QoKSkKICAg
ICAsIG1fYmFja2ZhY2VWaXNpYmlsaXR5KFJlbmRlclN0eWxlOjppbml0aWFsQmFja2ZhY2VWaXNp
YmlsaXR5KCkpCg==
</data>
<flag name="review"
          id="252391"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>