<?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>117785</bug_id>
          
          <creation_ts>2013-06-19 01:00:16 -0700</creation_ts>
          <short_desc>Implement WebIDL implements</short_desc>
          <delta_ts>2013-07-03 04:35:32 -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>Bindings</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>http://www.w3.org/TR/WebIDL/#dfn-implements-statement</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BlinkMergeCandidate</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>117820</dependson>
          <blocked>118353</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>901687</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-19 01:00:16 -0700</bug_when>
    <thetext>Implement basic support for Web IDL implements statements in the
bindings generator:
http://www.w3.org/TR/WebIDL/#dfn-implements-statement

I added this recently to Blink already:
https://src.chromium.org/viewvc/blink?revision=152655&amp;view=revision</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901751</commentid>
    <comment_count>1</comment_count>
      <attachid>204994</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-19 05:30:18 -0700</bug_when>
    <thetext>Created attachment 204994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901752</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-19 05:33:10 -0700</bug_when>
    <thetext>Attachment 204994 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/DerivedSources.pri&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/bindings/scripts/generate-bindings.pl&apos;, u&apos;Source/WebCore/bindings/scripts/preprocess-idls.pl&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestImplements.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestImplements.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestImplements.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestImplements.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestImplements.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestImplements.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestImplements.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestImplements.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestImplements.idl&apos;, u&apos;Source/WebCore/dom/CharacterData.idl&apos;, u&apos;Source/WebCore/dom/ChildNode.idl&apos;, u&apos;Source/WebCore/dom/DocumentType.idl&apos;, u&apos;Source/WebCore/dom/Element.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:260:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:262:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:263:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:264:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:267:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:269:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:270:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:271:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:272:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:274:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:276:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:277:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:278:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:279:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.h:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.h:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.h:37:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/bindings/scripts/test/ObjC/DOMTestInterface.h:40:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 19 in 25 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>901774</commentid>
    <comment_count>3</comment_count>
      <attachid>204994</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-06-19 06:38:48 -0700</bug_when>
    <thetext>Comment on attachment 204994
Patch

LGTM.

I&apos;m secretly hoping you get rid of multiple inheritance from SVG IDL files by using the &apos;implements&apos; :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901783</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-19 07:02:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 204994 [details])
&gt; LGTM.
&gt; 
&gt; I&apos;m secretly hoping you get rid of multiple inheritance from SVG IDL files by using the &apos;implements&apos; :)

Yes, it is on my TODO list :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901846</commentid>
    <comment_count>5</comment_count>
      <attachid>204994</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-19 10:40:48 -0700</bug_when>
    <thetext>Comment on attachment 204994
Patch

Clearing flags on attachment: 204994

Committed r151740: &lt;http://trac.webkit.org/changeset/151740&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901847</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-19 10:40:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901956</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-06-19 17:13:17 -0700</bug_when>
    <thetext>We get binding test failures on the bots. Can you please check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902003</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-19 21:43:55 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; We get binding test failures on the bots. Can you please check?

Looks like all the generated content is there but at a different place. The tests are passing for me locally. I need to investigate but it looks like on mac the supplemental (partial interface) code is added *before* the implements code instead of after. I will take a look at this today but I have a long meeting in the morning :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902017</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-19 22:20:59 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; We get binding test failures on the bots. Can you please check?

Addressing this issue via Bug 117820, thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204994</attachid>
            <date>2013-06-19 05:30:18 -0700</date>
            <delta_ts>2013-06-19 10:40:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>117785_idl_implements.patch</filename>
            <type>text/plain</type>
            <size>69509</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzg1YTZhNy4uNGZjOTE0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTMzMiw2ICszMzIsNyBAQCBzZXQoV2ViQ29yZV9JRExfRklMRVMKICAgICBkb20v
QmVmb3JlTG9hZEV2ZW50LmlkbAogICAgIGRvbS9DREFUQVNlY3Rpb24uaWRsCiAgICAgZG9tL0No
YXJhY3RlckRhdGEuaWRsCisgICAgZG9tL0NoaWxkTm9kZS5pZGwKICAgICBkb20vQ2xpZW50UmVj
dC5pZGwKICAgICBkb20vQ2xpZW50UmVjdExpc3QuaWRsCiAgICAgZG9tL0NsaXBib2FyZC5pZGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNWY4MTQzLi44YTc5YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcg
QEAKKzIwMTMtMDYtMTkgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBXZWJJREwgaW1wbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3Nzg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdlYiBJ
REwgJ2ltcGxlbWVudHMnIHN0YXRlbWVudHMgdG8gdGhlIGJpbmRpbmdzIGdlbmVyYXRvcjoKKyAg
ICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvV2ViSURMLyNkZm4taW1wbGVtZW50cy1zdGF0ZW1l
bnQKKworICAgICAgICBJbnRyb2R1Y2UgQ2hpbGROb2RlIElETCBpbnRlcmZhY2UgYW5kIGhhdmUg
RWxlbWVudCwgRG9jdW1lbnRUeXBlIGFuZAorICAgICAgICBDaGFyYWN0ZXJEYXRhIGltcGxlbWVu
dCBpdCwgdG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHA6Ly9kb20uc3Bl
Yy53aGF0d2cub3JnLyNjaGlsZG5vZGUKKworICAgICAgICBUaGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IsIG1lcmVseSByZWZhY3RvcmluZyB0byBtYXRjaCB0aGUKKyAgICAgICAgc3BlY2lm
aWNhdGlvbiBieSBsZXZlcmFnaW5nIHN1cHBvcnQgZm9yIFdlYiBJREwgaW1wbGVtZW50cyBzdGF0
ZW1lbnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsOgorICAgICAgICAo
R2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlKToKKyAgICAgICAgKGdldEltcGxlbWVudGVyc0Zyb21J
REwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEltcGxl
bWVudHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RJbXBsZW1lbnRzLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJET01UZXN0SW50
ZXJmYWNlOjppbXBsZW1lbnRzU3RyMSk6CisgICAgICAgIChXZWJET01UZXN0SW50ZXJmYWNlOjpp
bXBsZW1lbnRzU3RyMik6CisgICAgICAgIChXZWJET01UZXN0SW50ZXJmYWNlOjpzZXRJbXBsZW1l
bnRzU3RyMik6CisgICAgICAgIChXZWJET01UZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRzTm9kZSk6
CisgICAgICAgIChXZWJET01UZXN0SW50ZXJmYWNlOjpzZXRJbXBsZW1lbnRzTm9kZSk6CisgICAg
ICAgIChXZWJET01UZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRzTWV0aG9kMSk6CisgICAgICAgIChX
ZWJET01UZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRzTWV0aG9kNCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmg6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEltcGxlbWVudHMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0SW1wbGVtZW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21f
dGVzdF9pbnRlcmZhY2Vfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9p
bnRlcmZhY2VfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZh
Y2VfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxl
bWVudHNfbWV0aG9kMSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxl
bWVudHNfbWV0aG9kMik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxl
bWVudHNfbWV0aG9kNCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9p
bXBsZW1lbnRzX3N0cjEpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRf
aW1wbGVtZW50c19zdHIyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0
X2ltcGxlbWVudHNfc3RyMik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dl
dF9pbXBsZW1lbnRzX25vZGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9z
ZXRfaW1wbGVtZW50c19ub2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEltcGxlbWVudHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW1wbGVtZW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY1JlYWRPbmx5
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxl
bWVudHNTdGF0aWNBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUltcGxl
bWVudHNTdHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUltcGxlbWVudHNT
dHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRp
Y0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0
cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1l
bnRzTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbkltcGxlbWVudHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUlNUExFTUVOVFNDT05TVEFOVDEpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlSU1QTEVNRU5UU0NPTlNUQU5UMik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbXBsZW1lbnRzLmNwcDog
QWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEltcGxl
bWVudHMuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RJbnRlcmZhY2UubW06CisgICAgICAgICgtW0RPTVRlc3RJbnRlcmZhY2UgaW1wbGVtZW50
c1N0cjFdKToKKyAgICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBpbXBsZW1lbnRzU3RyMl0pOgor
ICAgICAgICAoLVtET01UZXN0SW50ZXJmYWNlIHNldEltcGxlbWVudHNTdHIyOl0pOgorICAgICAg
ICAoLVtET01UZXN0SW50ZXJmYWNlIGltcGxlbWVudHNTdHIzXSk6CisgICAgICAgICgtW0RPTVRl
c3RJbnRlcmZhY2Ugc2V0SW1wbGVtZW50c1N0cjM6XSk6CisgICAgICAgICgtW0RPTVRlc3RJbnRl
cmZhY2UgaW1wbGVtZW50c05vZGVdKToKKyAgICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBzZXRJ
bXBsZW1lbnRzTm9kZTpdKToKKyAgICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBpbXBsZW1lbnRz
TWV0aG9kMV0pOgorICAgICAgICAoLVtET01UZXN0SW50ZXJmYWNlIGltcGxlbWVudHNNZXRob2Qy
Om9iakFyZzpdKToKKyAgICAgICAgKC1bRE9NVGVzdEludGVyZmFjZSBpbXBsZW1lbnRzTWV0aG9k
M10pOgorICAgICAgICAoLVtET01UZXN0SW50ZXJmYWNlIGltcGxlbWVudHNNZXRob2Q0XSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbXBsZW1lbnRzLmlkbDogQWRkZWQu
CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuaWRsOgorICAgICAgICAqIGRvbS9DaGlsZE5v
ZGUuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmlkbC4K
KyAgICAgICAgKiBkb20vRG9jdW1lbnRUeXBlLmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5p
ZGw6CisKIDIwMTMtMDYtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgSW5wdXQgdHlwZSByYW5nZSBzbGlkZXIgaXMgbm90IHVwZGF0ZWQgd2hlbiBtaW4gb3Ig
bWF4IGFyZSBjaGFuZ2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5ODI5OGE2
Li44MTRmYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIxNiw2ICsyMTYs
NyBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vQmVmb3JlTG9hZEV2ZW50
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vQ0RBVEFTZWN0aW9uLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwgXAorICAgICQoV2ViQ29yZSkvZG9tL0NoaWxkTm9k
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0NsaWVudFJlY3QuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2RvbS9DbGllbnRSZWN0TGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL0NsaXBib2Fy
ZC5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCmluZGV4IDUyZGFjNDkuLmQ0NjU4NTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTIyNiw2ICsyMjYsNyBAQCBJRExfQklO
RElOR1MgKz0gXAogICAgICQkUFdEL2RvbS9BdHRyLmlkbCBcCiAgICAgJCRQV0QvZG9tL0JlZm9y
ZUxvYWRFdmVudC5pZGwgXAogICAgICQkUFdEL2RvbS9DaGFyYWN0ZXJEYXRhLmlkbCBcCisgICAg
JCRQV0QvZG9tL0NoaWxkTm9kZS5pZGwgXAogICAgICQkUFdEL2RvbS9DbGllbnRSZWN0LmlkbCBc
CiAgICAgJCRQV0QvZG9tL0NsaWVudFJlY3RMaXN0LmlkbCBcCiAgICAgJCRQV0QvZG9tL0NsaXBi
b2FyZC5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNDBmNGJmOS4uNjc0
ZjAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xMzg3LDYgKzEzODcsNyBA
QCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL2RvbS9CZWZvcmVMb2FkRXZlbnQu
aWRsIFwKIAkkKFdlYkNvcmUpL2RvbS9DREFUQVNlY3Rpb24uaWRsIFwKIAkkKFdlYkNvcmUpL2Rv
bS9DaGFyYWN0ZXJEYXRhLmlkbCBcCisJJChXZWJDb3JlKS9kb20vQ2hpbGROb2RlLmlkbCBcCiAJ
JChXZWJDb3JlKS9kb20vQ2xpZW50UmVjdC5pZGwgXAogCSQoV2ViQ29yZSkvZG9tL0NsaWVudFJl
Y3RMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9kb20vQ2xpcGJvYXJkLmlkbCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAppbmRl
eCA1NzI4MDU1Li4wZDQ4MWU1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKQEAgLTEzOSw3ICsxMzksNyBAQCBmb3JlYWNo
IG15ICRpZGxGaWxlIChAc3VwcGxlbWVudGVkSWRsRmlsZXMpIHsKICAgICBteSAkZG9jdW1lbnQg
PSAkcGFyc2VyLT5QYXJzZSgkaWRsRmlsZSwgJGRlZmluZXMsICRwcmVwcm9jZXNzb3IpOwogCiAg
ICAgZm9yZWFjaCBteSAkaW50ZXJmYWNlIChAeyRkb2N1bWVudC0+aW50ZXJmYWNlc30pIHsKLSAg
ICAgICAgaWYgKCRpbnRlcmZhY2UtPmlzUGFydGlhbCBhbmQgJGludGVyZmFjZS0+bmFtZSBlcSAk
dGFyZ2V0SW50ZXJmYWNlTmFtZSkgeworICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmlzUGFydGlh
bCB8fCAkaW50ZXJmYWNlLT5uYW1lIGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7CiAgICAgICAg
ICAgICBteSAkdGFyZ2V0RGF0YU5vZGU7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRpbnRlcmZh
Y2UgKEB7JHRhcmdldERvY3VtZW50LT5pbnRlcmZhY2VzfSkgewogICAgICAgICAgICAgICAgIGlm
ICgkaW50ZXJmYWNlLT5uYW1lIGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7CkBAIC0xNTIsNyAr
MTUyLDcgQEAgZm9yZWFjaCBteSAkaWRsRmlsZSAoQHN1cHBsZW1lbnRlZElkbEZpbGVzKSB7CiAg
ICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGF0dHJpYnV0ZXMgb2YgcGFydGlhbCBpbnRlcmZhY2Vz
LgogICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJp
YnV0ZXN9KSB7CiAgICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlzIGF0dHJpYnV0ZSBp
cyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFtZS4KLSAgICAgICAgICAgICAgICAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAk
aW50ZXJmYWNlTmFtZTsKKyAgICAgICAgICAgICAgICAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAk
aW50ZXJmYWNlLT5pc1BhcnRpYWw7CiAKICAgICAgICAgICAgICAgICAjIEFkZCBpbnRlcmZhY2Ut
d2lkZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2ggYXR0cmlidXRlLgogICAgICAgICAgICAg
ICAgIGZvcmVhY2ggbXkgJGV4dGVuZGVkQXR0cmlidXRlTmFtZSAoa2V5cyAleyRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlc30pIHsKQEAgLTE2NCw3ICsxNjQsNyBAQCBmb3JlYWNoIG15ICRp
ZGxGaWxlIChAc3VwcGxlbWVudGVkSWRsRmlsZXMpIHsKICAgICAgICAgICAgICMgU3VwcG9ydCBm
b3IgbWV0aG9kcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCiAgICAgICAgICAgICBmb3JlYWNoIG15
ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICAgICAgICAg
IyBSZWNvcmQgdGhhdCB0aGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFt
ZS4KLSAgICAgICAgICAgICAgICAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lOworICAgICAgICAgICAgICAg
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRC
eSJ9ID0gJGludGVyZmFjZU5hbWUgaWYgJGludGVyZmFjZS0+aXNQYXJ0aWFsOwogCiAgICAgICAg
ICAgICAgICAgIyBBZGQgaW50ZXJmYWNlLXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNo
IG1ldGhvZC4KICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5h
bWUgKGtleXMgJXskaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXN9KSB7CkBAIC0xNzYsNyAr
MTc2LDcgQEAgZm9yZWFjaCBteSAkaWRsRmlsZSAoQHN1cHBsZW1lbnRlZElkbEZpbGVzKSB7CiAg
ICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGNvbnN0YW50cyBvZiBwYXJ0aWFsIGludGVyZmFjZXMu
CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdGFudCAoQHskaW50ZXJmYWNlLT5jb25zdGFu
dHN9KSB7CiAgICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlzIGNvbnN0YW50IGlzIGlt
cGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgotICAgICAgICAgICAgICAgICRjb25zdGFudC0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lOwor
ICAgICAgICAgICAgICAgICRjb25zdGFudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVu
dGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKIAogICAg
ICAgICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8g
ZWFjaCBjb25zdGFudC4KICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJp
YnV0ZU5hbWUgKGtleXMgJXskaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXN9KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5w
bCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmlu
ZGV4IDg0Y2RlNzcuLmU3NmM0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCkBAIC02MywxMiArNjMsMjMgQEAgbXkgJWlkbEZp
bGVIYXNoID0gbWFwIHsgJF8sIDEgfSBAaWRsRmlsZXM7CiBmb3JlYWNoIG15ICRpZGxGaWxlIChz
b3J0IGtleXMgJWlkbEZpbGVIYXNoKSB7CiAgICAgbXkgJGZ1bGxQYXRoID0gQ3dkOjpyZWFscGF0
aCgkaWRsRmlsZSk7CiAgICAgbXkgJGlkbEZpbGVDb250ZW50cyA9IGdldEZpbGVDb250ZW50cygk
ZnVsbFBhdGgpOworICAgICMgSGFuZGxlIHBhcnRpYWwgaW50ZXJmYWNlcy4KICAgICBteSAkcGFy
dGlhbEludGVyZmFjZU5hbWUgPSBnZXRQYXJ0aWFsSW50ZXJmYWNlTmFtZUZyb21JREwoJGlkbEZp
bGVDb250ZW50cyk7CiAgICAgaWYgKCRwYXJ0aWFsSW50ZXJmYWNlTmFtZSkgewotICAgICAgICAk
c3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzeyRmdWxsUGF0aH0gPSAkcGFydGlhbEludGVyZmFjZU5h
bWU7CisgICAgICAgICRzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXN7JGZ1bGxQYXRofSA9IFskcGFy
dGlhbEludGVyZmFjZU5hbWVdOwogICAgICAgICBuZXh0OwogICAgIH0KICAgICBteSAkaW50ZXJm
YWNlTmFtZSA9IGZpbGVwYXJzZShiYXNlbmFtZSgkaWRsRmlsZSksICIuaWRsIik7CisgICAgIyBI
YW5kbGUgaW1wbGVtZW50cyBzdGF0ZW1lbnRzLgorICAgIG15ICRpbXBsZW1lbnRlcnMgPSBnZXRJ
bXBsZW1lbnRlcnNGcm9tSURMKCRpZGxGaWxlQ29udGVudHMsICRpbnRlcmZhY2VOYW1lKTsKKyAg
ICBmb3JlYWNoIG15ICRpbXBsZW1lbnRlciAoQHskaW1wbGVtZW50ZXJzfSkgeworICAgICAgICBp
ZiAoJHN1cHBsZW1lbnRhbERlcGVuZGVuY2llc3skZnVsbFBhdGh9KSB7CisgICAgICAgICAgICBw
dXNoKEB7JHN1cHBsZW1lbnRhbERlcGVuZGVuY2llc3skZnVsbFBhdGh9fSwgJGltcGxlbWVudGVy
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRzdXBwbGVtZW50YWxEZXBlbmRlbmNp
ZXN7JGZ1bGxQYXRofSA9IFskaW1wbGVtZW50ZXJdOworICAgICAgICB9CisgICAgfQorICAgICMg
SGFuZGxlIFtOb0ludGVyZmFjZU9iamVjdF0uCiAgICAgdW5sZXNzIChpc0NhbGxiYWNrSW50ZXJm
YWNlRnJvbUlETCgkaWRsRmlsZUNvbnRlbnRzKSkgewogICAgICAgICBteSAkZXh0ZW5kZWRBdHRy
aWJ1dGVzID0gZ2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbUlETCgkaWRsRmlsZUNv
bnRlbnRzKTsKICAgICAgICAgdW5sZXNzICgkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJm
YWNlT2JqZWN0In0pIHsKQEAgLTg5LDExICsxMDAsMTMgQEAgR2VuZXJhdGVQYXJ0aWFsSW50ZXJm
YWNlKCJET01XaW5kb3ciLCAkd2luZG93Q29uc3RydWN0b3JzQ29kZSwgJHdpbmRvd0NvbnN0cnVj
dG8KICMgR2VuZXJhdGUgV29ya2VyQ29udGV4dCBDb25zdHJ1Y3RvcnMgcGFydGlhbCBpbnRlcmZh
Y2UuCiBHZW5lcmF0ZVBhcnRpYWxJbnRlcmZhY2UoIldvcmtlckNvbnRleHQiLCAkd29ya2VyQ29u
dGV4dENvbnN0cnVjdG9yc0NvZGUsICR3b3JrZXJDb250ZXh0Q29uc3RydWN0b3JzRmlsZSk7CiAK
LSMgUmVzb2x2ZXMgcGFydGlhbCBpbnRlcmZhY2VzIGRlcGVuZGVuY2llcy4KKyMgUmVzb2x2ZXMg
cGFydGlhbCBpbnRlcmZhY2VzIGFuZCBpbXBsZW1lbnRzIGRlcGVuZGVuY2llcy4KIGZvcmVhY2gg
bXkgJGlkbEZpbGUgKGtleXMgJXN1cHBsZW1lbnRhbERlcGVuZGVuY2llcykgewotICAgIG15ICRi
YXNlRmlsZSA9ICRzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXN7JGlkbEZpbGV9OwotICAgIG15ICR0
YXJnZXRJZGxGaWxlID0gJGludGVyZmFjZU5hbWVUb0lkbEZpbGV7JGJhc2VGaWxlfTsKLSAgICBw
dXNoKEB7JHN1cHBsZW1lbnRhbHN7JHRhcmdldElkbEZpbGV9fSwgJGlkbEZpbGUpOworICAgIG15
ICRiYXNlRmlsZXMgPSAkc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzeyRpZGxGaWxlfTsKKyAgICBm
b3JlYWNoIG15ICRiYXNlRmlsZSAoQHskYmFzZUZpbGVzfSkgeworICAgICAgICBteSAkdGFyZ2V0
SWRsRmlsZSA9ICRpbnRlcmZhY2VOYW1lVG9JZGxGaWxleyRiYXNlRmlsZX07CisgICAgICAgIHB1
c2goQHskc3VwcGxlbWVudGFsc3skdGFyZ2V0SWRsRmlsZX19LCAkaWRsRmlsZSk7CisgICAgfQog
ICAgIGRlbGV0ZSAkc3VwcGxlbWVudGFsc3skaWRsRmlsZX07CiB9CiAKQEAgLTE1OSw3ICsxNzIs
NyBAQCBzdWIgR2VuZXJhdGVQYXJ0aWFsSW50ZXJmYWNlCiAgICAgV3JpdGVGaWxlSWZDaGFuZ2Vk
KCRkZXN0aW5hdGlvbkZpbGUsICRjb250ZW50cyk7CiAKICAgICBteSAkZnVsbFBhdGggPSBDd2Q6
OnJlYWxwYXRoKCRkZXN0aW5hdGlvbkZpbGUpOwotICAgICRzdXBwbGVtZW50YWxEZXBlbmRlbmNp
ZXN7JGZ1bGxQYXRofSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2VOYW1lVG9JZGxGaWxl
eyRpbnRlcmZhY2VOYW1lfTsKKyAgICAkc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzeyRmdWxsUGF0
aH0gPSBbJGludGVyZmFjZU5hbWVdIGlmICRpbnRlcmZhY2VOYW1lVG9JZGxGaWxleyRpbnRlcmZh
Y2VOYW1lfTsKIH0KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JBdHRyaWJ1dGUKQEAgLTIxNiw2
ICsyMjksMjEgQEAgc3ViIGdldFBhcnRpYWxJbnRlcmZhY2VOYW1lRnJvbUlETAogICAgIH0KIH0K
IAorIyBpZGVudGlmaWVyLUEgaW1wbGVtZW50cyBpZGVudGlmaWVyLUI7CisjIGh0dHA6Ly93d3cu
dzMub3JnL1RSL1dlYklETC8jaWRsLWltcGxlbWVudHMtc3RhdGVtZW50cworc3ViIGdldEltcGxl
bWVudGVyc0Zyb21JREwKK3sKKyAgICBteSAkZmlsZUNvbnRlbnRzID0gc2hpZnQ7CisgICAgbXkg
JGludGVyZmFjZU5hbWUgPSBzaGlmdDsKKworICAgIG15IEBpbXBsZW1lbnRlcnMgPSAoKTsKKyAg
ICB3aGlsZSAoJGZpbGVDb250ZW50cyA9fiAvKFx3KylccytpbXBsZW1lbnRzXHMrKFx3Kylccyo7
L2dzKSB7CisgICAgICAgIGRpZSAiVGhlIGlkZW50aWZpZXIgb24gdGhlIHJpZ2h0IHNpZGUgb2Yg
dGhlIGltcGxlbWVudHMgc3RhdGVtZW50IG11c3QgYmUgdGhlIGN1cnJlbnQgaW50ZXJmYWNlIiBp
ZiAkMiBuZSAkaW50ZXJmYWNlTmFtZTsKKyAgICAgICAgcHVzaChAaW1wbGVtZW50ZXJzLCAkMSk7
CisgICAgfQorICAgIHJldHVybiBcQGltcGxlbWVudGVycworfQorCiBzdWIgaXNDYWxsYmFja0lu
dGVyZmFjZUZyb21JREwKIHsKICAgICBteSAkZmlsZUNvbnRlbnRzID0gc2hpZnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJ
bXBsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdEltcGxlbWVudHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjFlNzkxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbXBsZW1lbnRzLmNwcApAQCAtMCwwICsxLDYgQEAK
Ky8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0
cyB0aGF0IFdlYkRPTVRlc3RJbXBsZW1lbnRzLmggYW5kCisgICAgV2ViRE9NVGVzdEltcGxlbWVu
dHMuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0SW1wbGVtZW50cy5pZGwsIGFuZCB0aHVzCisgICAg
cHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBXZWJET01U
ZXN0SW1wbGVtZW50cy5oIGFuZAorICAgIFdlYkRPTVRlc3RJbXBsZW1lbnRzLmNwcCBhdCBldmVy
eSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0SW1wbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0SW1wbGVtZW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjFlNzkxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbXBsZW1lbnRzLmgKQEAgLTAsMCArMSw2IEBACisv
KgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMg
dGhhdCBXZWJET01UZXN0SW1wbGVtZW50cy5oIGFuZAorICAgIFdlYkRPTVRlc3RJbXBsZW1lbnRz
LmNwcCBhcmUgY3JlYXRlZCBmb3IgVGVzdEltcGxlbWVudHMuaWRsLCBhbmQgdGh1cworICAgIHBy
ZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgV2ViRE9NVGVz
dEltcGxlbWVudHMuaCBhbmQKKyAgICBXZWJET01UZXN0SW1wbGVtZW50cy5jcHAgYXQgZXZlcnkg
YnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVz
dEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDdhODA1ZTIuLjA5YWQzMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdElu
dGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0SW50ZXJmYWNlLmNwcApAQCAtODAsNiArODAsNTIgQEAgV2ViRE9NVGVzdElu
dGVyZmFjZTo6fldlYkRPTVRlc3RJbnRlcmZhY2UoKQogICAgIG1faW1wbCA9IDA7CiB9CiAKKyNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK1dlYkRPTVN0cmlu
ZyBXZWJET01UZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRzU3RyMSgpIGNvbnN0Cit7CisgICAgaWYg
KCFpbXBsKCkpCisgICAgICAgIHJldHVybiBXZWJET01TdHJpbmcoKTsKKworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBXVEY6OlN0cmluZyY+KGltcGwoKS0+aW1wbGVtZW50c1N0cjEoKSk7
Cit9CisKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQorV2ViRE9NU3RyaW5nIFdlYkRPTVRlc3RJbnRlcmZhY2U6OmltcGxlbWVudHNTdHIyKCkg
Y29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZygp
OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdURjo6U3RyaW5nJj4oaW1wbCgpLT5p
bXBsZW1lbnRzU3RyMigpKTsKK30KKwordm9pZCBXZWJET01UZXN0SW50ZXJmYWNlOjpzZXRJbXBs
ZW1lbnRzU3RyMihjb25zdCBXZWJET01TdHJpbmcmIG5ld0ltcGxlbWVudHNTdHIyKQoreworICAg
IGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPnNldEltcGxlbWVu
dHNTdHIyKG5ld0ltcGxlbWVudHNTdHIyKTsKK30KKworI2VuZGlmCisjaWYgRU5BQkxFKENvbmRp
dGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitXZWJET01Ob2RlIFdlYkRPTVRlc3RJbnRl
cmZhY2U6OmltcGxlbWVudHNOb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAg
ICAgcmV0dXJuIFdlYkRPTU5vZGUoKTsKKworICAgIHJldHVybiB0b1dlYktpdChXVEY6OmdldFB0
cihpbXBsKCktPmltcGxlbWVudHNOb2RlKCkpKTsKK30KKwordm9pZCBXZWJET01UZXN0SW50ZXJm
YWNlOjpzZXRJbXBsZW1lbnRzTm9kZShjb25zdCBXZWJET01Ob2RlJiBuZXdJbXBsZW1lbnRzTm9k
ZSkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT5z
ZXRJbXBsZW1lbnRzTm9kZSh0b1dlYkNvcmUobmV3SW1wbGVtZW50c05vZGUpKTsKK30KKworI2Vu
ZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBXZWJE
T01TdHJpbmcgV2ViRE9NVGVzdEludGVyZmFjZTo6c3VwcGxlbWVudGFsU3RyMSgpIGNvbnN0CiB7
CkBAIC0xMjcsNiArMTczLDMwIEBAIHZvaWQgV2ViRE9NVGVzdEludGVyZmFjZTo6c2V0U3VwcGxl
bWVudGFsTm9kZShjb25zdCBXZWJET01Ob2RlJiBuZXdTdXBwbGVtZW50YWxOCiAKICNlbmRpZgog
CisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCit2b2lkIFdl
YkRPTVRlc3RJbnRlcmZhY2U6OmltcGxlbWVudHNNZXRob2QxKCkKK3sKKyAgICBpZiAoIWltcGwo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT5pbXBsZW1lbnRzTWV0aG9kMSgpOwor
fQorCisjZW5kaWYKKworCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCit2b2lkIFdlYkRPTVRlc3RJbnRlcmZhY2U6OmltcGxlbWVudHNNZXRob2Q0KCkKK3sK
KyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT5pbXBsZW1l
bnRzTWV0aG9kNCgpOworfQorCisjZW5kaWYKKworCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiB2b2lkIFdlYkRPTVRlc3RJbnRlcmZhY2U6OnN1cHBsZW1l
bnRhbE1ldGhvZDEoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaAppbmRleCBjYTU1ODg0
Li5iNGZlODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuaApAQCAtNDMsNiArNDMsMTIg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkRPTVRlc3RJbnRlcmZhY2UoKTsKIAogICAgIGVu
dW0geworI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAg
ICAgICBXRUJET01fSU1QTEVNRU5UU0NPTlNUQU5UMSA9IDEsCisjZW5kaWYKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICAgICAgV0VCRE9NX0lNUExF
TUVOVFNDT05TVEFOVDIgPSAyLAorI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgICAgIFdFQkRPTV9TVVBQTEVNRU5UQUxDT05TVEFOVDEg
PSAxLAogI2VuZGlmCkBAIC01Miw2ICs1OCwxNyBAQCBwdWJsaWM6CiAKICAgICB9OwogCisjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgV2ViRE9NU3Ry
aW5nIGltcGxlbWVudHNTdHIxKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICBXZWJET01TdHJpbmcgaW1wbGVtZW50c1N0
cjIoKSBjb25zdDsKKyAgICB2b2lkIHNldEltcGxlbWVudHNTdHIyKGNvbnN0IFdlYkRPTVN0cmlu
ZyYpOworI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCisgICAgV2ViRE9NTm9kZSBpbXBsZW1lbnRzTm9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0
SW1wbGVtZW50c05vZGUoY29uc3QgV2ViRE9NTm9kZSYpOworI2VuZGlmCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgV2ViRE9NU3RyaW5nIHN1cHBs
ZW1lbnRhbFN0cjEoKSBjb25zdDsKICNlbmRpZgpAQCAtNjQsNiArODEsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U3VwcGxlbWVudGFsTm9kZShjb25zdCBXZWJET01Ob2RlJik7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHZv
aWQgaW1wbGVtZW50c01ldGhvZDEoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHZvaWQgaW1wbGVtZW50c01ldGhvZDQoKTsKKyNl
bmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAg
IHZvaWQgc3VwcGxlbWVudGFsTWV0aG9kMSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW1wbGVt
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0SW1wbGVtZW50cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZWZhZTU1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbXBsZW1lbnRzLmNwcApAQCAtMCww
ICsxLDYgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVp
bGQgc2NyaXB0cyB0aGF0IFdlYktpdERPTVRlc3RJbXBsZW1lbnRzLmggYW5kCisgICAgV2ViS2l0
RE9NVGVzdEltcGxlbWVudHMuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0SW1wbGVtZW50cy5pZGws
IGFuZCB0aHVzCisgICAgcHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBn
ZW5lcmF0ZSBXZWJLaXRET01UZXN0SW1wbGVtZW50cy5oIGFuZAorICAgIFdlYktpdERPTVRlc3RJ
bXBsZW1lbnRzLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVk
IHRvIGNvbXBpbGUuCisqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEltcGxlbWVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbXBsZW1lbnRz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhZTU1MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RJbXBsZW1lbnRzLmgKQEAgLTAsMCArMSw2IEBACisvKgorICAgIFRoaXMgZmls
ZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBXZWJLaXRET01U
ZXN0SW1wbGVtZW50cy5oIGFuZAorICAgIFdlYktpdERPTVRlc3RJbXBsZW1lbnRzLmNwcCBhcmUg
Y3JlYXRlZCBmb3IgVGVzdEltcGxlbWVudHMuaWRsLCBhbmQgdGh1cworICAgIHByZXZlbnQgdGhl
IGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJhdGUgV2ViS2l0RE9NVGVzdEltcGxl
bWVudHMuaCBhbmQKKyAgICBXZWJLaXRET01UZXN0SW1wbGVtZW50cy5jcHAgYXQgZXZlcnkgYnVp
bGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxlLgorKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKaW5kZXggMjBiNTI2NC4uMjY3ZTRl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTc2
LDYgKzc2LDkgQEAgR19ERUZJTkVfVFlQRShXZWJLaXRET01UZXN0SW50ZXJmYWNlLCB3ZWJraXRf
ZG9tX3Rlc3RfaW50ZXJmYWNlLCBXRUJLSVRfVFlQRV9ET00KIAogZW51bSB7CiAgICAgUFJPUF8w
LAorICAgIFBST1BfSU1QTEVNRU5UU19TVFIxLAorICAgIFBST1BfSU1QTEVNRU5UU19TVFIyLAor
ICAgIFBST1BfSU1QTEVNRU5UU19OT0RFLAogICAgIFBST1BfU1VQUExFTUVOVEFMX1NUUjEsCiAg
ICAgUFJPUF9TVVBQTEVNRU5UQUxfU1RSMiwKICAgICBQUk9QX1NVUFBMRU1FTlRBTF9OT0RFLApA
QCAtOTksNiArMTAyLDIwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vf
c2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVyCiAgICAgV2ViQ29yZTo6
VGVzdEludGVyZmFjZSogY29yZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAjZW5kaWYgLy8g
RU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogICAgIHN3aXRjaCAocHJv
cGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9JTVBMRU1FTlRTX1NUUjI6IHsKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgICAgIGNvcmVTZWxmLT5zZXRJbXBsZW1lbnRz
U3RyMihXVEY6OlN0cmluZzo6ZnJvbVVURjgoZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSkpOwor
I2Vsc2UKKyAgICAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9u
MjIiKQorICAgICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24y
MyIpCisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
ICovCisjZWxzZQorICAgICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25k
aXRpb24xIikKKyAgICAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0
aW9uMiIpCisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24y
KSAqLworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQUk9QX1NVUFBMRU1FTlRBTF9T
VFIyOiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQpAQCAtMTI3LDYgKzE0
NCw0OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcgogICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZh
Y2UqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogI2VuZGlmIC8vIEVOQUJMRShDb25k
aXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKICAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsK
KyAgICBjYXNlIFBST1BfSU1QTEVNRU5UU19TVFIxOiB7CisjaWYgRU5BQkxFKENvbmRpdGlvbjEp
IHx8IEVOQUJMRShDb25kaXRpb24yKQorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQorICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0
VG9VVEY4U3RyaW5nKGNvcmVTZWxmLT5pbXBsZW1lbnRzU3RyMSgpKSk7CisjZWxzZQorICAgICAg
ICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yMiIpCisgICAgICAg
IFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIzIikKKyNlbmRpZiAv
KiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykgKi8KKyNlbHNlCisg
ICAgICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQorICAg
ICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yIikKKyNlbmRp
ZiAvKiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpICovCisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfSU1QTEVNRU5UU19TVFIyOiB7CisjaWYgRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorI2lmIEVOQUJMRShDb25kaXRp
b24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5n
KHZhbHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKGNvcmVTZWxmLT5pbXBsZW1lbnRzU3RyMigpKSk7
CisjZWxzZQorICAgICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRp
b24yMiIpCisgICAgICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlv
bjIzIikKKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykgKi8KKyNlbHNlCisgICAgICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNv
bmRpdGlvbjEiKQorICAgICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25k
aXRpb24yIikKKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjIpICovCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfSU1QTEVNRU5UU19O
T0RFOiB7CisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgICAgICBSZWZQ
dHI8V2ViQ29yZTo6Tm9kZT4gcHRyID0gY29yZVNlbGYtPmltcGxlbWVudHNOb2RlKCk7CisgICAg
ICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7Cisj
ZWxzZQorICAgICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24y
MiIpCisgICAgICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIz
IikKKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykg
Ki8KKyNlbHNlCisgICAgICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRp
dGlvbjEiKQorICAgICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRp
b24yIikKKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIp
ICovCisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFBST1BfU1VQUExFTUVOVEFMX1NU
UjE6IHsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCkBAIC0xOTcsNiArMjU3
LDI3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfY2xhc3NfaW5pdChX
ZWJLaXRET01UZXN0SW50ZXJmYWNlQ2xhc3MqIHJlCiAgICAgZ29iamVjdENsYXNzLT5nZXRfcHJv
cGVydHkgPSB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9wcm9wZXJ0eTsKIAogICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9JTVBMRU1FTlRTX1NUUjEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJpbXBsZW1lbnRz
LXN0cjEiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRzLXN0cjEiLCAv
KiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC1vbmx5ICBnY2hhciogVGVzdEludGVyZmFj
ZS5pbXBsZW1lbnRzLXN0cjEiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEg
ZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiIsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURBQkxFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xh
c3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0lNUExFTUVOVFNf
U1RSMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19z
dHJpbmcoImltcGxlbWVudHMtc3RyMiIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RfaW50ZXJmYWNlX2lt
cGxlbWVudHMtc3RyMiIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBn
Y2hhciogVGVzdEludGVyZmFjZS5pbXBsZW1lbnRzLXN0cjIiLCAvKiBsb25nZXIgLSBjb3VsZCBk
byB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsIC8qIGRlZmF1bHQgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9JTVBMRU1FTlRTX05PREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJpbXBsZW1lbnRzLW5vZGUiLCAvKiBuYW1lICovCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ0ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRzLW5vZGUiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAq
LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAicmVhZC13cml0ZSAgV2ViS2l0RE9NTm9kZSogVGVzdEludGVyZmFjZS5pbXBsZW1lbnRz
LW5vZGUiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhl
cmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfRE9NX05PREUsIC8qIGdvYmplY3QgdHlwZSAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnb2JqZWN0Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9Q
X1NVUFBMRU1FTlRBTF9TVFIxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX3N0cmluZygic3VwcGxlbWVudGFsLXN0cjEiLCAvKiBuYW1lICovCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0
ZXN0X2ludGVyZmFjZV9zdXBwbGVtZW50YWwtc3RyMSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICov
CkBAIC0yMjYsNiArMzA3LDc2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZh
Y2VfaW5pdChXZWJLaXRET01UZXN0SW50ZXJmYWNlKiByZXF1ZXN0KQogfQogCiB2b2lkCit3ZWJr
aXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudHNfbWV0aG9kMShXZWJLaXRET01UZXN0SW50
ZXJmYWNlKiBzZWxmKQoreworI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMikKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfSU5URVJGQUNFKHNlbGYpKTsKKyAgICBXZWJDb3JlOjpU
ZXN0SW50ZXJmYWNlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPmltcGxl
bWVudHNNZXRob2QxKCk7CisjZWxzZQorICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNF
TlQoIkNvbmRpdGlvbjIyIikKKyAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJD
b25kaXRpb24yMyIpCisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpICovCisjZWxzZQorICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IkNvbmRpdGlvbjEiKQorICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRp
dGlvbjIiKQorI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MikgKi8KK30KKworV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vf
aW1wbGVtZW50c19tZXRob2QyKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYsIGNvbnN0IGdj
aGFyKiBzdHJBcmcsIFdlYktpdERPTVRlc3RPYmoqIG9iakFyZywgR0Vycm9yKiogZXJyb3IpCit7
CisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
RE9NX0lTX1RFU1RfSU5URVJGQUNFKHNlbGYpLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChzdHJBcmcsIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9PQkoob2JqQXJnKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICEq
ZXJyb3IsIDApOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpTdHJpbmc6
OmZyb21VVEY4KHN0ckFyZyk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkT2JqQXJn
ID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6Omdl
dFB0cihpdGVtLT5pbXBsZW1lbnRzTWV0aG9kMihjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9i
akFyZywgZWMpKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJy
b3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVz
Yy5uYW1lKTsKKyAgICB9CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0
KCkpOworI2Vsc2UKKyAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRp
b24yMiIpCisgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMjMi
KQorICAgIHJldHVybiAwOworI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKSAqLworI2Vsc2UKKyAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJDb25kaXRpb24xIikKKyAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJD
b25kaXRpb24yIikKKyAgICByZXR1cm4gMDsKKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIpICovCit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9pbnRl
cmZhY2VfaW1wbGVtZW50c19tZXRob2Q0KFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpCit7
CisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9JTlRFUkZBQ0Uoc2VsZikpOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+aW1wbGVtZW50c01ldGhvZDQoKTsK
KyNlbHNlCisgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMjIi
KQorICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIzIikKKyNl
bmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykgKi8KKyNl
bHNlCisgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCisg
ICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCisjZW5kaWYg
LyogRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKSAqLworfQorCit2b2lk
CiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3N1cHBsZW1lbnRhbF9tZXRob2QxKFdlYktpdERP
TVRlc3RJbnRlcmZhY2UqIHNlbGYpCiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJM
RShDb25kaXRpb24yKQpAQCAtMjk2LDYgKzQ0NywxMTQgQEAgd2Via2l0X2RvbV90ZXN0X2ludGVy
ZmFjZV9zdXBwbGVtZW50YWxfbWV0aG9kNChXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmKQog
fQogCiBnY2hhcioKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X2ltcGxlbWVudHNfc3Ry
MShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmKQoreworI2lmIEVOQUJMRShDb25kaXRpb24x
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0lOVEVSRkFDRShz
ZWxmKSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKKyAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5p
bXBsZW1lbnRzU3RyMSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICBXRUJLSVRf
V0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yMiIpCisgICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMjMiKQorICAgIHJldHVybiAwOworI2VuZGlm
IC8qIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKSAqLworI2Vsc2UK
KyAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikKKyAgICBX
RUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yIikKKyAgICByZXR1cm4g
MDsKKyNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpICov
Cit9CisKK2djaGFyKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfaW1wbGVtZW50c19z
dHIyKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpCit7CisjaWYgRU5BQkxFKENvbmRpdGlv
bjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQorICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfSU5URVJGQUNF
KHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOworICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0t
PmltcGxlbWVudHNTdHIyKCkpOworICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgIFdFQktJ
VF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIyIikKKyAgICBXRUJLSVRfV0FS
Tl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yMyIpCisgICAgcmV0dXJuIDA7CisjZW5k
aWYgLyogRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpICovCisjZWxz
ZQorICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQorICAg
IFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIiKQorICAgIHJldHVy
biAwOworI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikg
Ki8KK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfaW1wbGVtZW50c19z
dHIyKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKK3sK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX0lOVEVSRkFDRShzZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Cisg
ICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAg
ICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1
ZSk7CisgICAgaXRlbS0+c2V0SW1wbGVtZW50c1N0cjIoY29udmVydGVkVmFsdWUpOworI2Vsc2UK
KyAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yMiIpCisgICAg
V0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMjMiKQorI2VuZGlmIC8q
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKSAqLworI2Vsc2UKKyAg
ICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikKKyAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yIikKKyNlbmRpZiAvKiBFTkFC
TEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpICovCit9CisKK1dlYktpdERPTU5v
ZGUqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9pbXBsZW1lbnRzX25vZGUoV2ViS2l0
RE9NVGVzdEludGVyZmFjZSogc2VsZikKK3sKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIpCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9JTlRFUkZBQ0Uoc2VsZiksIDAp
OworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihp
dGVtLT5pbXBsZW1lbnRzTm9kZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJl
c3VsdC5nZXQoKSk7CisjZWxzZQorICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IkNvbmRpdGlvbjIyIikKKyAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25k
aXRpb24yMyIpCisgICAgcmV0dXJuIDA7CisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpICovCisjZWxzZQorICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVf
Tk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQorICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BS
RVNFTlQoIkNvbmRpdGlvbjIiKQorICAgIHJldHVybiAwOworI2VuZGlmIC8qIEVOQUJMRShDb25k
aXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikgKi8KK30KKwordm9pZAord2Via2l0X2RvbV90
ZXN0X2ludGVyZmFjZV9zZXRfaW1wbGVtZW50c19ub2RlKFdlYktpdERPTVRlc3RJbnRlcmZhY2Uq
IHNlbGYsIFdlYktpdERPTU5vZGUqIHZhbHVlKQoreworI2lmIEVOQUJMRShDb25kaXRpb24xKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMikKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfSU5URVJGQUNFKHNlbGYpKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTk9ERSh2YWx1ZSkpOworICAgIFdl
YkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2Vi
Q29yZTo6Tm9kZSogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOworICAgIGl0
ZW0tPnNldEltcGxlbWVudHNOb2RlKGNvbnZlcnRlZFZhbHVlKTsKKyNlbHNlCisgICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMjIiKQorICAgIFdFQktJVF9XQVJO
X0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIzIikKKyNlbmRpZiAvKiBFTkFCTEUoQ29u
ZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykgKi8KKyNlbHNlCisgICAgV0VCS0lUX1dB
Uk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCisgICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCisjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlv
bjEpIHx8IEVOQUJMRShDb25kaXRpb24yKSAqLworfQorCitnY2hhcioKIHdlYmtpdF9kb21fdGVz
dF9pbnRlcmZhY2VfZ2V0X3N1cHBsZW1lbnRhbF9zdHIxKFdlYktpdERPTVRlc3RJbnRlcmZhY2Uq
IHNlbGYpCiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5oCmluZGV4IDc4ZGQ0YzQuLjBi
OWViNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmgKQEAgLTUw
LDYgKzUwLDM5IEBAIFdFQktJVF9BUEkgR1R5cGUKIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vf
Z2V0X3R5cGUgKHZvaWQpOwogCiAvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1w
bGVtZW50c19tZXRob2QxOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RJbnRlcmZhY2UKKyAq
CisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rf
aW50ZXJmYWNlX2ltcGxlbWVudHNfbWV0aG9kMShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxm
KTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ltcGxlbWVudHNfbWV0aG9k
MjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0SW50ZXJmYWNlCisgKiBAc3RyQXJnOiBBICNn
Y2hhcgorICogQG9iakFyZzogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGVycm9yOiAjR0Vycm9y
CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgorICoKKyoqLworV0VCS0lUX0FQSSBX
ZWJLaXRET01UZXN0T2JqKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRzX21l
dGhvZDIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiwgY29uc3QgZ2NoYXIqIHN0ckFyZywg
V2ViS2l0RE9NVGVzdE9iaiogb2JqQXJnLCBHRXJyb3IqKiBlcnJvcik7CisKKy8qKgorICogd2Vi
a2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbXBsZW1lbnRzX21ldGhvZDQ6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdEludGVyZmFjZQorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50c19tZXRob2Q0KFdl
YktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpOworCisvKioKICAqIHdlYmtpdF9kb21fdGVzdF9p
bnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhvZDE6CiAgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVz
dEludGVyZmFjZQogICoKQEAgLTgzLDYgKzExNiw1OCBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhvZDQoV2ViS2l0RE9NVGVzdElu
dGVyZmFjZSogc2VsZik7CiAKIC8qKgorICogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRf
aW1wbGVtZW50c19zdHIxOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RJbnRlcmZhY2UKKyAq
CisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9kb21fdGVz
dF9pbnRlcmZhY2VfZ2V0X2ltcGxlbWVudHNfc3RyMShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBz
ZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9pbXBsZW1lbnRz
X3N0cjI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdEludGVyZmFjZQorICoKKyAqIFJldHVy
bnM6CisgKgorKiovCitXRUJLSVRfQVBJIGdjaGFyKgord2Via2l0X2RvbV90ZXN0X2ludGVyZmFj
ZV9nZXRfaW1wbGVtZW50c19zdHIyKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpOworCisv
KioKKyAqIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X2ltcGxlbWVudHNfc3RyMjoKKyAq
IEBzZWxmOiBBICNXZWJLaXRET01UZXN0SW50ZXJmYWNlCisgKiBAdmFsdWU6IEEgI2djaGFyCisg
KgorICogUmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0
X2ludGVyZmFjZV9zZXRfaW1wbGVtZW50c19zdHIyKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNl
bGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2ludGVy
ZmFjZV9nZXRfaW1wbGVtZW50c19ub2RlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RJbnRl
cmZhY2UKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiovCitXRUJLSVRf
QVBJIFdlYktpdERPTU5vZGUqCit3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9pbXBsZW1l
bnRzX25vZGUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZik7CisKKy8qKgorICogd2Via2l0
X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfaW1wbGVtZW50c19ub2RlOgorICogQHNlbGY6IEEgI1dl
YktpdERPTVRlc3RJbnRlcmZhY2UKKyAqIEB2YWx1ZTogQSAjV2ViS2l0RE9NTm9kZQorICoKKyAq
IFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfaW1wbGVtZW50c19ub2RlKFdlYktpdERPTVRlc3RJ
bnRlcmZhY2UqIHNlbGYsIFdlYktpdERPTU5vZGUqIHZhbHVlKTsKKworLyoqCiAgKiB3ZWJraXRf
ZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdXBwbGVtZW50YWxfc3RyMToKICAqIEBzZWxmOiBBICNX
ZWJLaXRET01UZXN0SW50ZXJmYWNlCiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEltcGxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEltcGxlbWVudHMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NmY4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW1wbGVtZW50cy5j
cHAKQEAgLTAsMCArMSw2IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0
byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RJbXBsZW1lbnRzLmggYW5kCisgICAgSlNU
ZXN0SW1wbGVtZW50cy5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RJbXBsZW1lbnRzLmlkbCwgYW5k
IHRodXMKKyAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVy
YXRlIEpTVGVzdEltcGxlbWVudHMuaCBhbmQKKyAgICBKU1Rlc3RJbXBsZW1lbnRzLmNwcCBhdCBl
dmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEltcGxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbXBsZW1lbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg2
ZjhjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbXBsZW1lbnRzLmgKQEAgLTAsMCArMSw2IEBACisvKgorICAgIFRoaXMg
ZmlsZSBpcyBnZW5lcmF0ZWQganVzdCB0byB0ZWxsIGJ1aWxkIHNjcmlwdHMgdGhhdCBKU1Rlc3RJ
bXBsZW1lbnRzLmggYW5kCisgICAgSlNUZXN0SW1wbGVtZW50cy5jcHAgYXJlIGNyZWF0ZWQgZm9y
IFRlc3RJbXBsZW1lbnRzLmlkbCwgYW5kIHRodXMKKyAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3Jp
cHRzIGZyb20gdHJ5aW5nIHRvIGdlbmVyYXRlIEpTVGVzdEltcGxlbWVudHMuaCBhbmQKKyAgICBK
U1Rlc3RJbXBsZW1lbnRzLmNwcCBhdCBldmVyeSBidWlsZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJl
IHRyaWVkIHRvIGNvbXBpbGUuCisqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA1ODlkNzk4
Li4yMWYxYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiAj
aW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAotI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgfHwgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCiAjaW5jbHVkZSAiTm9kZS5oIgogI2VuZGlmCiAKQEAgLTUyLDYg
KzUyLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdEludGVyZmFjZVRhYmxlVmFsdWVzW10gPQogeworI2lmIEVOQUJMRShDb25kaXRp
b24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsgImltcGxlbWVudHNTdHIxIiwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKSwgKGludHB0cl90KTAs
IE5vSW50cmluc2ljIH0sCisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKKyAgICB7ICJpbXBsZW1lbnRzU3RyMiIsIERvbnREZWxldGUsIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50c1N0cjIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c1N0cjIsIE5vSW50cmluc2ljIH0sCisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKKyAgICB7ICJpbXBsZW1lbnRzU3RyMyIsIERvbnREZWxldGUs
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMpLCAoaW50cHRyX3Qpc2V0SlNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50c1N0cjMsIE5vSW50cmluc2ljIH0sCisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICB7ICJpbXBsZW1lbnRzTm9kZSIsIERvbnRE
ZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUpLCAoaW50cHRyX3Qpc2V0SlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50c05vZGUsIE5vSW50cmluc2ljIH0sCisjZW5kaWYKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICB7ICJzdXBwbGVtZW50YWxTdHIx
IiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEpLCAoaW50
cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICNlbmRpZgpAQCAtNjgsMzEgKzgwLDUyIEBAIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VUYWJsZVZhbHVlc1tdID0KICAg
ICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNUZXN0SW50ZXJmYWNlVGFibGUgPSB7IDE2LCAxNSwgSlNUZXN0SW50ZXJmYWNlVGFibGVW
YWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlVGFibGUg
PSB7IDMzLCAzMSwgSlNUZXN0SW50ZXJmYWNlVGFibGVWYWx1ZXMsIDAgfTsKIC8qIEhhc2ggdGFi
bGUgZm9yIGNvbnN0cnVjdG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogeworI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIHsgIklNUExFTUVOVFNDT05TVEFO
VDEiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlSU1QTEVNRU5UU0NPTlNUQU5UMSks
IChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlv
bjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgeyAiSU1QTEVNRU5UU0NPTlNUQU5UMiIs
IERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJTVBMRU1FTlRTQ09OU1RBTlQyKSwgKGlu
dHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICB7ICJTVVBQTEVNRU5UQUxDT05TVEFOVDEiLCBE
b250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlU1VQUExFTUVOVEFMQ09OU1RBTlQxKSwgKGlu
dHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICB7ICJTVVBQTEVNRU5UQUxDT05TVEFOVDIiLCBE
b250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0SW50ZXJmYWNlU1VQUExFTUVOVEFMQ09OU1RBTlQyKSwgKGlu
dHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKKyAgICB7ICJpbXBsZW1lbnRzU3RhdGljUmVhZE9ubHlB
dHRyIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50
c1N0YXRpY1JlYWRPbmx5QXR0ciksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorI2VuZGlm
CisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCisgICAgeyAi
aW1wbGVtZW50c1N0YXRpY0F0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1w
bGVtZW50c1N0YXRpY0F0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JJbXBsZW1lbnRzU3RhdGljQXR0ciwgTm9JbnRyaW5zaWMgfSwKKyNlbmRpZgogI2lmIEVOQUJM
RShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIHsgInN1cHBsZW1lbnRh
bFN0YXRpY1JlYWRPbmx5QXR0ciIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ciksIChpbnRwdHJfdCkwLCBOb0lu
dHJpbnNpYyB9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCiAgICAgeyAic3VwcGxlbWVudGFsU3RhdGljQXR0ciIsIERvbnREZWxldGUsIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKSwgKGludHB0cl90KXNldEpT
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0ciwgTm9JbnRyaW5z
aWMgfSwKICNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQorICAgIHsgImltcGxlbWVudHNNZXRob2Q0IiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rp
b24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0KSwgKGludHB0cl90KTAsIE5vSW50
cmluc2ljIH0sCisjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25k
aXRpb24xMikKICAgICB7ICJzdXBwbGVtZW50YWxNZXRob2Q0IiwgRG9udERlbGV0ZSB8IEpTQzo6
RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDQpLCAoaW50cHRyX3Qp
MCwgTm9JbnRyaW5zaWMgfSwKICNlbmRpZgogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMg
fQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
clRhYmxlID0geyA1LCAzLCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAw
IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFi
bGUgPSB7IDExLCA3LCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07
CiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK0NPTVBJ
TEVfQVNTRVJUKDEgPT0gVGVzdEludGVyZmFjZTo6SU1QTEVNRU5UU0NPTlNUQU5UMSwgVGVzdElu
dGVyZmFjZUVudW1JTVBMRU1FTlRTQ09OU1RBTlQxSXNXcm9uZ1VzZURvTm90Q2hlY2tDb25zdGFu
dHMpOworI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCitDT01QSUxFX0FTU0VSVCgyID09IFRlc3RJbnRlcmZhY2U6OkNPTlNUX0lNUEwsIFRlc3RJ
bnRlcmZhY2VFbnVtQ09OU1RfSU1QTElzV3JvbmdVc2VEb05vdENoZWNrQ29uc3RhbnRzKTsKKyNl
bmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogQ09N
UElMRV9BU1NFUlQoMSA9PSBUZXN0U3VwcGxlbWVudGFsOjpTVVBQTEVNRU5UQUxDT05TVEFOVDEs
IFRlc3RJbnRlcmZhY2VFbnVtU1VQUExFTUVOVEFMQ09OU1RBTlQxSXNXcm9uZ1VzZURvTm90Q2hl
Y2tDb25zdGFudHMpOwogI2VuZGlmCkBAIC0xNjAsMTIgKzE5MywyNyBAQCBDb25zdHJ1Y3RUeXBl
IEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENv
bnN0cnVjdERhdAogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCisgICAgeyAiSU1QTEVNRU5UU0NPTlNUQU5UMSIsIERvbnREZWxl
dGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RJbnRlcmZhY2VJTVBMRU1FTlRTQ09OU1RBTlQxKSwgKGludHB0cl90KTAs
IE5vSW50cmluc2ljIH0sCisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKKyAgICB7ICJJTVBMRU1FTlRTQ09OU1RBTlQyIiwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEludGVyZmFjZUlNUExFTUVOVFNDT05TVEFOVDIpLCAoaW50cHRyX3QpMCwgTm9J
bnRyaW5zaWMgfSwKKyNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQogICAgIHsgIlNVUFBMRU1FTlRBTENPTlNUQU5UMSIsIERvbnREZWxldGUgfCBS
ZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RJbnRlcmZhY2VTVVBQTEVNRU5UQUxDT05TVEFOVDEpLCAoaW50cHRyX3QpMCwgTm9J
bnRyaW5zaWMgfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQogICAgIHsgIlNVUFBMRU1FTlRBTENPTlNUQU5UMiIsIERvbnREZWxldGUgfCBS
ZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RJbnRlcmZhY2VTVVBQTEVNRU5UQUxDT05TVEFOVDIpLCAoaW50cHRyX3QpMCwgTm9J
bnRyaW5zaWMgfSwKICNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQorICAgIHsgImltcGxlbWVudHNNZXRob2QxIiwgRG9udERlbGV0ZSB8IEpTQzo6
RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMSksIChpbnRwdHJfdCkwLCBO
b0ludHJpbnNpYyB9LAorI2VuZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCisgICAgeyAiaW1wbGVtZW50c01ldGhvZDIiLCBEb250RGVsZXRlIHwgSlND
OjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKSwgKGludHB0cl90KTIs
IE5vSW50cmluc2ljIH0sCisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKKyAgICB7ICJpbXBsZW1lbnRzTWV0aG9kMyIsIERvbnREZWxldGUgfCBK
U0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMpLCAoaW50cHRyX3Qp
MCwgTm9JbnRyaW5zaWMgfSwKKyNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQogICAgIHsgInN1cHBsZW1lbnRhbE1ldGhvZDEiLCBEb250RGVsZXRl
IHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEpLCAoaW50
cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICNlbmRpZgpAQCAtMTc4LDcgKzIyNiw3IEBAIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZVZhbHVl
c1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25z
dCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGUgPSB7IDE3LCAxNSwgSlNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNo
VGFibGUgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGUgPSB7IDM0LCAzMSwgSlNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VQcm90b3R5cGUiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKSB9OwogCiBKU09iamVjdCogSlNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKQEAgLTI0Miw2ICsyOTAsNzMgQEAgYm9vbCBKU1Rlc3RJbnRlcmZh
Y2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdEludGVyZmFj
ZSwgQmFzZT4oZXhlYywgJkpTVGVzdEludGVyZmFjZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCitKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVt
ZW50c1N0YXRpY1JlYWRPbmx5QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOworICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKFRlc3RJbnRlcmZh
Y2U6OmltcGxlbWVudHNTdGF0aWNSZWFkT25seUF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKK0pTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGlj
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIFRlc3RJbnRlcmZhY2U6
OmltcGxlbWVudHNTdGF0aWNBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihhc09iamVjdChzbG90QmFzZSkpOworICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBUZXN0SW50ZXJmYWNlKiBpbXBsID0gc3RhdGljX2Nh
c3Q8VGVzdEludGVyZmFjZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5pbXBsZW1lbnRzU3RyMSgpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQorSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRz
U3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNl
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVGVz
dEludGVyZmFjZSogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RJbnRlcmZhY2UqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
aW1wbC0+aW1wbGVtZW50c1N0cjIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlm
CisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK0pTVmFs
dWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAg
cmV0dXJuIGNhc3RlZFRoaXMtPmltcGxlbWVudHNTdHIzKGV4ZWMpOworfQorCisjZW5kaWYKKwor
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CisgICAgVGVzdEludGVyZmFjZSogaW1wbCA9IHN0YXRpY19jYXN0PFRl
c3RJbnRlcmZhY2UqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC0+
aW1wbGVtZW50c05vZGUoKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBKU1ZhbHVlIGpz
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewpAQCAtMzM1
LDYgKzQ1MCw1NSBAQCB2b2lkIEpTVGVzdEludGVyZmFjZTo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsCiAgICAgQmFzZTo6cHV0QnlJbmRl
eChjZWxsLCBleGVjLCBpbmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAorI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQordm9pZCBzZXRKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBj
b25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBUZXN0SW50ZXJmYWNlOjpzZXRJbXBsZW1lbnRz
U3RhdGljQXR0cihuYXRpdmVWYWx1ZSk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRp
dGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCit2b2lkIHNldEpTVGVzdEludGVyZmFjZUlt
cGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIEpTVGVzdEludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzT2JqZWN0KTsKKyAg
ICBUZXN0SW50ZXJmYWNlKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdEludGVyZmFjZSo+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0Vt
cHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaW1wbC0+
c2V0SW1wbGVtZW50c1N0cjIobmF0aXZlVmFsdWUpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQordm9pZCBzZXRKU1Rlc3RJbnRl
cmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBqc0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4odGhpc09iamVjdCktPnNldEltcGxlbWVudHNTdHIzKGV4ZWMsIHZh
bHVlKTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKK3ZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CisgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNPYmplY3QpOworICAgIFRlc3RJbnRlcmZhY2UqIGlt
cGwgPSBzdGF0aWNfY2FzdDxUZXN0SW50ZXJmYWNlKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAg
ICBOb2RlKiBuYXRpdmVWYWx1ZSh0b05vZGUodmFsdWUpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbXBsLT5zZXRJbXBsZW1lbnRzTm9kZShu
YXRpdmVWYWx1ZSk7Cit9CisKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCiB2b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3Vw
cGxlbWVudGFsU3RhdGljQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB2
YWx1ZSkKIHsKQEAgLTM4OSw2ICs1NTMsNzIgQEAgSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2U6Omdl
dENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I+KGV4
ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCisjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50
c01ldGhvZDEoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RJ
bnRlcmZhY2U6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsICZKU1Rlc3RJbnRlcmZhY2U6OnNfaW5mbyk7CisgICAgVGVzdEludGVyZmFj
ZSogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RJbnRlcmZhY2UqPihjYXN0ZWRUaGlzLT5pbXBsKCkp
OworICAgIGltcGwtPmltcGxlbWVudHNNZXRob2QxKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMihFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdEludGVyZmFjZTo6c19pbmZv
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0SW50
ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHRo
aXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpT
VGVzdEludGVyZmFjZTo6c19pbmZvKTsKKyAgICBUZXN0SW50ZXJmYWNlKiBpbXBsID0gc3RhdGlj
X2Nhc3Q8VGVzdEludGVyZmFjZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGNvbnN0IFN0cmluZyYg
c3RyQXJnKGV4ZWMtPmFyZ3VtZW50KDApLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9iaihleGVjLT5hcmd1bWVudCgxKSkpOwor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4
ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLT5pbXBsZW1l
bnRzTWV0aG9kMihzY3JpcHRDb250ZXh0LCBzdHJBcmcsIG9iakFyZywgZWMpKSk7CisgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhp
c1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RJbnRlcmZhY2U6OnNfaW5mbykpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RJbnRlcmZhY2U6OnNf
aW5mbyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pbXBsZW1lbnRz
TWV0aG9kMyhleGVjKSk7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kNChFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c01ldGhvZDQoKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCisjZW5kaWYKKwogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1l
bnRhbE1ldGhvZDEoRXhlY1N0YXRlKiBleGVjKQogewpAQCAtNDU3LDYgKzY4NywyMiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rp
b25TdXBwbGVtZW50YWxNZXRobwogCiAvLyBDb25zdGFudCBnZXR0ZXJzCiAKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK0pTVmFsdWUganNUZXN0SW50ZXJm
YWNlSU1QTEVNRU5UU0NPTlNUQU5UMShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5
TmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludD4oMSkpOworfQorCisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKK0pTVmFsdWUganNUZXN0SW50ZXJmYWNlSU1QTEVNRU5U
U0NPTlNUQU5UMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dD4oMikpOworfQorCisjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU1VQUExFTUVOVEFMQ09OU1RBTlQx
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5oCmluZGV4IDZhZmI1NTUuLmUxNDA3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKQEAgLTU5LDYg
KzU5LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogCiAgICAgLy8gQ3VzdG9t
IGF0dHJpYnV0ZXMKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24y
MykKKyAgICBKU0M6OkpTVmFsdWUgaW1wbGVtZW50c1N0cjMoSlNDOjpFeGVjU3RhdGUqKSBjb25z
dDsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQorICAgIHZvaWQgc2V0SW1wbGVtZW50c1N0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUpOworI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCiAgICAgSlNDOjpKU1ZhbHVlIHN1cHBsZW1lbnRhbFN0cjMoSlNDOjpFeGVjU3RhdGUqKSBj
b25zdDsKICNlbmRpZgpAQCAtNjcsNiArNzMsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8v
IEN1c3RvbSBmdW5jdGlvbnMKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKKyAgICBKU0M6OkpTVmFsdWUgaW1wbGVtZW50c01ldGhvZDMoSlNDOjpFeGVjU3Rh
dGUqKTsKKyNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQogICAgIEpTQzo6SlNWYWx1ZSBzdXBwbGVtZW50YWxNZXRob2QzKEpTQzo6RXhlY1N0YXRl
Kik7CiAjZW5kaWYKQEAgLTE2NSw2ICsxNzQsMTggQEAgcHJvdGVjdGVkOgogCiAvLyBGdW5jdGlv
bnMKIAorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uSW1wbGVtZW50c01ldGhvZDEoSlNDOjpFeGVjU3RhdGUqKTsKKyNlbmRpZgorI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVt
ZW50c01ldGhvZDIoSlNDOjpFeGVjU3RhdGUqKTsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRp
b24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMo
SlNDOjpFeGVjU3RhdGUqKTsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kNChKU0M6OkV4ZWNT
dGF0ZSopOworI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKEpTQzo6RXhlY1N0YXRlKik7CiAj
ZW5kaWYKQEAgLTE3OSw2ICsyMDAsMjggQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWwKICNlbmRp
ZgogLy8gQXR0cmlidXRlcwogCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMjMpCitKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1l
bnRzU3RhdGljUmVhZE9ubHlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcklt
cGxlbWVudHNTdGF0aWNBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Cit2b2lkIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50
c1N0YXRpY0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVl
KTsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQorSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisjZW5kaWYKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKK0pTQzo6SlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwordm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3Ry
MihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOworI2VuZGlm
CisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitKU0M6OkpT
VmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK3ZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50c1N0cjMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVl
KTsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQorSlNDOjpKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Cit2b2lkIHNldEpTVGVzdElu
dGVyZmFjZUltcGxlbWVudHNOb2RlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNWYWx1ZSk7CisjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBs
ZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwogI2VuZGlmCkBAIC0yMDQsNiArMjQ3LDEyIEBAIHZvaWQgc2V0
SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTCiBKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIC8vIENv
bnN0YW50cwogCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
CitKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNlSU1QTEVNRU5UU0NPTlNUQU5UMShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworI2VuZGlmCisjaWYg
RU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCitKU0M6OkpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlSU1QTEVNRU5UU0NPTlNUQU5UMihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBKU0M6OkpTVmFsdWUganNUZXN0SW50ZXJmYWNl
U1VQUExFTUVOVEFMQ09OU1RBTlQxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbXBsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbXBsZW1lbnRzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmExZWE2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEltcGxl
bWVudHMuY3BwCkBAIC0wLDAgKzEsNiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVk
IGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgRE9NVGVzdEltcGxlbWVudHMuaCBhbmQK
KyAgICBET01UZXN0SW1wbGVtZW50cy5jcHAgYXJlIGNyZWF0ZWQgZm9yIFRlc3RJbXBsZW1lbnRz
LmlkbCwgYW5kIHRodXMKKyAgICBwcmV2ZW50IHRoZSBidWlsZCBzY3JpcHRzIGZyb20gdHJ5aW5n
IHRvIGdlbmVyYXRlIERPTVRlc3RJbXBsZW1lbnRzLmggYW5kCisgICAgRE9NVGVzdEltcGxlbWVu
dHMuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUgdHJpZWQgdG8gY29t
cGlsZS4KKyovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0SW1wbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdEltcGxlbWVudHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41YmExZWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEltcGxlbWVudHMuaApAQCAtMCwwICsx
LDYgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQg
c2NyaXB0cyB0aGF0IERPTVRlc3RJbXBsZW1lbnRzLmggYW5kCisgICAgRE9NVGVzdEltcGxlbWVu
dHMuY3BwIGFyZSBjcmVhdGVkIGZvciBUZXN0SW1wbGVtZW50cy5pZGwsIGFuZCB0aHVzCisgICAg
cHJldmVudCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBET01UZXN0
SW1wbGVtZW50cy5oIGFuZAorICAgIERPTVRlc3RJbXBsZW1lbnRzLmNwcCBhdCBldmVyeSBidWls
ZC4gVGhpcyBmaWxlIG11c3Qgbm90IGJlIHRyaWVkIHRvIGNvbXBpbGUuCisqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVy
ZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEludGVyZmFjZS5oCmluZGV4IGE3NDBjMjMuLmUyZGFkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJm
YWNlLmgKQEAgLTMzLDYgKzMzLDEyIEBACiBAY2xhc3MgTlNTdHJpbmc7CiAKIGVudW0geworI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorICAgIERPTV9JTVBM
RU1FTlRTQ09OU1RBTlQxID0gMSwKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQorICAgIERPTV9JTVBMRU1FTlRTQ09OU1RBTlQyID0gMiwKKyNl
bmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAg
IERPTV9TVVBQTEVNRU5UQUxDT05TVEFOVDEgPSAxLAogI2VuZGlmCkBAIC00MywxMSArNDksMjcg
QEAgZW51bSB7CiB9OwogCiBAaW50ZXJmYWNlIERPTVRlc3RJbnRlcmZhY2UgOiBET01PYmplY3QK
K0Bwcm9wZXJ0eShyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmltcGxlbWVudHNTdHIxOworQHBy
b3BlcnR5KGNvcHkpIE5TU3RyaW5nICppbXBsZW1lbnRzU3RyMjsKK0Bwcm9wZXJ0eShjb3B5KSBO
U1N0cmluZyAqaW1wbGVtZW50c1N0cjM7CitAcHJvcGVydHkocmV0YWluKSBET01Ob2RlICppbXBs
ZW1lbnRzTm9kZTsKIEBwcm9wZXJ0eShyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnN1cHBsZW1l
bnRhbFN0cjE7CiBAcHJvcGVydHkoY29weSkgTlNTdHJpbmcgKnN1cHBsZW1lbnRhbFN0cjI7CiBA
cHJvcGVydHkoY29weSkgTlNTdHJpbmcgKnN1cHBsZW1lbnRhbFN0cjM7CiBAcHJvcGVydHkocmV0
YWluKSBET01Ob2RlICpzdXBwbGVtZW50YWxOb2RlOwogCisjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCistICh2b2lkKWltcGxlbWVudHNNZXRob2QxOworI2Vu
ZGlmCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCistIChE
T01UZXN0T2JqICopaW1wbGVtZW50c01ldGhvZDI6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzoo
RE9NVGVzdE9iaiAqKW9iakFyZzsKKyNlbmRpZgorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQorLSAodm9pZClpbXBsZW1lbnRzTWV0aG9kMzsKKyNlbmRpZgor
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorLSAodm9pZClp
bXBsZW1lbnRzTWV0aG9kNDsKKyNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQogLSAodm9pZClzdXBwbGVtZW50YWxNZXRob2QxOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdEludGVyZmFjZS5tbQppbmRleCAzODFlNGMyLi42MDg0ODMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJm
YWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RJbnRlcmZhY2UubW0KQEAgLTczLDYgKzczLDU4IEBACiAgICAgW3N1cGVyIGZpbmFsaXpl
XTsKIH0KIAorI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQor
LSAoTlNTdHJpbmcgKilpbXBsZW1lbnRzU3RyMQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+aW1wbGVtZW50c1N0cjEoKTsKK30K
KyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
CistIChOU1N0cmluZyAqKWltcGxlbWVudHNTdHIyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5pbXBsZW1lbnRzU3RyMigpOwor
fQorCistICh2b2lkKXNldEltcGxlbWVudHNTdHIyOihOU1N0cmluZyAqKW5ld0ltcGxlbWVudHNT
dHIyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElN
UEwtPnNldEltcGxlbWVudHNTdHIyKG5ld0ltcGxlbWVudHNTdHIyKTsKK30KKyNlbmRpZgorCisj
aWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCistIChOU1N0cmlu
ZyAqKWltcGxlbWVudHNTdHIzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIHJldHVybiBJTVBMLT5pbXBsZW1lbnRzU3RyMygpOworfQorCistICh2b2lk
KXNldEltcGxlbWVudHNTdHIzOihOU1N0cmluZyAqKW5ld0ltcGxlbWVudHNTdHIzCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnNldEltcGxl
bWVudHNTdHIzKG5ld0ltcGxlbWVudHNTdHIzKTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCistIChET01Ob2RlICopaW1wbGVtZW50
c05vZGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
cmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5pbXBsZW1lbnRzTm9kZSgpKSk7Cit9CisKKy0g
KHZvaWQpc2V0SW1wbGVtZW50c05vZGU6KERPTU5vZGUgKiluZXdJbXBsZW1lbnRzTm9kZQorewor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBBU1NFUlQobmV3
SW1wbGVtZW50c05vZGUpOworCisgICAgSU1QTC0+c2V0SW1wbGVtZW50c05vZGUoY29yZShuZXdJ
bXBsZW1lbnRzTm9kZSkpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKIC0gKE5TU3RyaW5nICopc3VwcGxlbWVudGFsU3RyMQogewpA
QCAtMTI2LDYgKzE3OCw0OSBAQAogI2VuZGlmCiAKIAorI2lmIEVOQUJMRShDb25kaXRpb24yMikg
fHwgRU5BQkxFKENvbmRpdGlvbjIzKQorLSAodm9pZClpbXBsZW1lbnRzTWV0aG9kMQoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5pbXBsZW1l
bnRzTWV0aG9kMSgpOworfQorCisjZW5kaWYKKworCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCistIChET01UZXN0T2JqICopaW1wbGVtZW50c01ldGhvZDI6
KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZworeworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBET01UZXN0T2JqICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIo
SU1QTC0+aW1wbGVtZW50c01ldGhvZDIoc3RyQXJnLCBjb3JlKG9iakFyZyksIGVjKSkpOworICAg
IFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
I2VuZGlmCisKKworI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQorLSAodm9pZClpbXBsZW1lbnRzTWV0aG9kMworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5pbXBsZW1lbnRzTWV0aG9kMygpOworfQorCisj
ZW5kaWYKKworCisjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
CistICh2b2lkKWltcGxlbWVudHNNZXRob2Q0Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPmltcGxlbWVudHNNZXRob2Q0KCk7Cit9CisKKyNl
bmRpZgorCisKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
IC0gKHZvaWQpc3VwcGxlbWVudGFsTWV0aG9kMQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbXBsZW1lbnRzLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW1wbGVtZW50cy5pZGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdiYWE5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW1wbGVtZW50cy5pZGwKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtc3RyQXJnLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRXN0ckFyZywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgSURMIGZpbGUgaXMgZm9yIHRl
c3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIGFuZCBmb3IgdHJhY2tpbmcKKy8vIGNo
YW5nZXMgaW4gaXRzIG91cHV0LgorWworICAgIENvbmRpdGlvbmFsPUNvbmRpdGlvbjIyfENvbmRp
dGlvbjIzLAorICAgIE5vSW50ZXJmYWNlT2JqZWN0CitdIGludGVyZmFjZSBUZXN0SW1wbGVtZW50
cyB7CisgICAgc3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGltcGxlbWVudHNTdGF0aWNS
ZWFkT25seUF0dHI7CisgICAgc3RhdGljIGF0dHJpYnV0ZSBET01TdHJpbmcgaW1wbGVtZW50c1N0
YXRpY0F0dHI7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpbXBsZW1lbnRzU3Ry
MTsKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGltcGxlbWVudHNTdHIyOworICAgIFtDdXN0b21H
ZXR0ZXIsIEN1c3RvbVNldHRlcl0gYXR0cmlidXRlIERPTVN0cmluZyBpbXBsZW1lbnRzU3RyMzsK
KyAgICBhdHRyaWJ1dGUgTm9kZSBpbXBsZW1lbnRzTm9kZTsKKworICAgIHZvaWQgaW1wbGVtZW50
c01ldGhvZDEoKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2Vz
RXhjZXB0aW9uXSBUZXN0T2JqIGltcGxlbWVudHNNZXRob2QyKERPTVN0cmluZyBzdHJBcmcsIFRl
c3RPYmogb2JqQXJnKTsKKyAgICBbQ3VzdG9tXSB2b2lkIGltcGxlbWVudHNNZXRob2QzKCk7Cisg
ICAgc3RhdGljIHZvaWQgaW1wbGVtZW50c01ldGhvZDQoKTsKKworICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IElNUExFTUVOVFNDT05TVEFOVDEgPSAxOworICAgIFtSZWZsZWN0PUNPTlNUX0lNUExd
IGNvbnN0IHVuc2lnbmVkIHNob3J0IElNUExFTUVOVFNDT05TVEFOVDIgPSAyOworfTsKKworVGVz
dEludGVyZmFjZSBpbXBsZW1lbnRzIFRlc3RJbXBsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaWRsCmluZGV4IGE3ZDY2NDNiLi4wNWJiM2VkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuaWRsCkBAIC0zNyw4ICszNyw1IEBAIGludGVyZmFjZSBDaGFyYWN0ZXJEYXRh
IDogTm9kZSB7CiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgUmFpc2VzRXhjZXB0
aW9uXSB2b2lkIHJlcGxhY2VEYXRhKFtJc0luZGV4LCBEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW0lzSW5kZXgsIERlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCB1bnNpZ25lZCBsb25n
IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVu
ZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIGRhdGEpOwotCi0gICAgLy8gRE9NIDQKLSAgICBb
UmFpc2VzRXhjZXB0aW9uXSB2b2lkIHJlbW92ZSgpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2Rl
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjVlMGI0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZS5pZGwKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworLy8gRE9NIDQKK1sKKyAgICBOb0ludGVyZmFjZU9iamVjdAor
XSBpbnRlcmZhY2UgQ2hpbGROb2RlIHsKKyAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVu
dD8gcHJldmlvdXNFbGVtZW50U2libGluZzsKKyAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgRWxl
bWVudD8gbmV4dEVsZW1lbnRTaWJsaW5nOworCisgICAgLy8gdm9pZCBiZWZvcmUoKE5vZGUgb3Ig
RE9NU3RyaW5nKS4uLiBub2Rlcyk7CisgICAgLy8gdm9pZCBhZnRlcigoTm9kZSBvciBET01TdHJp
bmcpLi4uIG5vZGVzKTsKKyAgICAvLyB2b2lkIHJlcGxhY2UoKE5vZGUgb3IgRE9NU3RyaW5nKS4u
LiBub2Rlcyk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoKTsKK307CisKK0Rv
Y3VtZW50VHlwZSBpbXBsZW1lbnRzIENoaWxkTm9kZTsKK0VsZW1lbnQgaW1wbGVtZW50cyBDaGls
ZE5vZGU7CitDaGFyYWN0ZXJEYXRhIGltcGxlbWVudHMgQ2hpbGROb2RlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRUeXBlLmlkbAppbmRleCBkMGFlMjlhLi44ZTI5YWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRUeXBlLmlkbApAQCAtMzIsOCArMzIsNSBAQAogICAgIFtUcmVhdFJldHVybmVkTnVs
bFN0cmluZ0FzPU51bGxdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcHVibGljSWQ7CiAg
ICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBzeXN0ZW1JZDsKICAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGludGVybmFsU3Vic2V0OyAgICAgICAgCi0KLSAg
ICAvLyBET00gNAotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgcmVtb3ZlKCk7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5pZGwKaW5kZXggMGE3YmY0Ni4uNWYzYmZkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbApAQCAtMTIwLDkgKzEyMCw2IEBACiAgICAgW0ltcGxlbWVudGVkQXM9aW5zZXJ0aW9u
UGFyZW50Rm9yQmluZGluZ10gcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgd2Via2l0SW5zZXJ0aW9u
UGFyZW50OwogI2VuZGlmCiAKLSAgICAvLyBET00gNAotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZv
aWQgcmVtb3ZlKCk7Ci0KICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdV
QUdFX0pBVkFTQ1JJUFQKICAgICAvLyBDU1NPTSBWaWV3IE1vZHVsZSBBUEkKICAgICBDbGllbnRS
ZWN0TGlzdCBnZXRDbGllbnRSZWN0cygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>