<?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>27383</bug_id>
          
          <creation_ts>2009-07-17 11:52:42 -0700</creation_ts>
          <short_desc>[Chromium] Hook up V8 bindings for DataGrid elements</short_desc>
          <delta_ts>2009-07-22 14:47:56 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>26684</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jens Alfke">jens</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>fishd</cc>
    
    <cc>jorlow</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>132652</commentid>
    <comment_count>0</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-17 11:52:42 -0700</bug_when>
    <thetext>The V8 JavaScript bindings for the HTML5 DataGrid elements are not hooked up. This causes the DataGrid layout tests to all fail. What needs to be done:

1. Make the JS objects inherit from the V8HTMLDataGrid etc. classes
2. Add indexed property handler for DataGridColumnList
3. Add named property handler for DataGridColumnList
4. Implement V8DataGridDataSource (as equivalent of JSC&apos;s JSDataGridDataSource)
5. Implement the custom getter/setter for HTMLDataGridElement.dataSource to use V8DataGridDataSource
6. Properly conditionalize everything so it builds when ENABLE(DATAGRID) is turned off (because Chromium wants this off in dev channel releases until DataGrid is more fully implemented.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132671</commentid>
    <comment_count>1</comment_count>
      <attachid>32965</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-17 13:02:22 -0700</bug_when>
    <thetext>Created attachment 32965
Patch to hook up the V8 bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132711</commentid>
    <comment_count>2</comment_count>
      <attachid>32965</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-07-17 14:30:30 -0700</bug_when>
    <thetext>Comment on attachment 32965
Patch to hook up the V8 bindings

Looks great except for needing to modify CodeGeneratorV8.pm to correctly handle the [Conditional] attr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132744</commentid>
    <comment_count>3</comment_count>
      <attachid>32985</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-17 15:53:28 -0700</bug_when>
    <thetext>Created attachment 32985
2nd patch

Changes in this patch:
At Dimitri&apos;s request I took out the #ifdef I added to DOMWindow.idl, and instead fixed the V8 code generator to add #ifs around conditionally-enabled attributes (in GenerateBatchedAttributeData).
This Perl function had really messed up indentation that obscured the flow of control, so I fixed it; but that introduces a bunch of spurious diffs that are just whitespace changes. Sorry about that (but I felt this needed fixing, as it confused me on first reading.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132747</commentid>
    <comment_count>4</comment_count>
      <attachid>32985</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-07-17 15:58:32 -0700</bug_when>
    <thetext>Comment on attachment 32985
2nd patch

Great! Just one nit:

&gt; Index: WebCore/bindings/v8/custom/V8HTMLDataGridElementCustom.cpp
&gt; ===================================================================
&gt; --- WebCore/bindings/v8/custom/V8HTMLDataGridElementCustom.cpp	(revision 46037)
&gt; +++ WebCore/bindings/v8/custom/V8HTMLDataGridElementCustom.cpp	(working copy)
&gt; @@ -29,7 +29,9 @@
&gt;   */
&gt;  
&gt;  #include &quot;config.h&quot;
&gt; +#include &quot;Document.h&quot;
&gt;  #include &quot;HTMLDataGridElement.h&quot;
&gt; +#include &quot;V8DataGridDataSource.h&quot;
&gt;  
&gt;  #include &quot;NotImplemented.h&quot;

We don&apos;t need this one anymore, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132755</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-07-17 16:02:43 -0700</bug_when>
    <thetext>Assigned for landing.

Jens, can you roll another patch with the changes Dimitri suggested?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132766</commentid>
    <comment_count>6</comment_count>
      <attachid>32988</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-17 16:26:45 -0700</bug_when>
    <thetext>Created attachment 32988
3rd patch

OK, this patch simply gets rid of the #include &quot;NotImplemented.h&quot; that Dimitri correctly pointed out is no longer needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132817</commentid>
    <comment_count>7</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-07-17 18:44:17 -0700</bug_when>
    <thetext>Landed in r46077</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132872</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-07-18 00:57:37 -0700</bug_when>
    <thetext>I believe you forgot a file in your patch (bindings/v8/custom/V8DataGridColumnListCustom.cpp) so we had to back it out in https://bugs.webkit.org/show_bug.cgi?id=27383</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132873</commentid>
    <comment_count>9</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-07-18 01:01:27 -0700</bug_when>
    <thetext>Oops...wrong link: https://bugs.webkit.org/show_bug.cgi?id=27407</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133528</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-21 11:18:00 -0700</bug_when>
    <thetext>Assign to levin for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133536</commentid>
    <comment_count>11</comment_count>
      <attachid>32988</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-21 11:38:29 -0700</bug_when>
    <thetext>Comment on attachment 32988
3rd patch

Clearing r+ b/c this broke the build and marking as obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133537</commentid>
    <comment_count>12</comment_count>
      <attachid>32985</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-21 11:38:57 -0700</bug_when>
    <thetext>Comment on attachment 32985
2nd patch

Clearing r+ to make this not show up in the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133538</commentid>
    <comment_count>13</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-21 11:41:27 -0700</bug_when>
    <thetext>Assigning back to Jens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133540</commentid>
    <comment_count>14</comment_count>
      <attachid>33194</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-21 11:44:40 -0700</bug_when>
    <thetext>Created attachment 33194
Patch, with missing file added

This is the patch that I mistakenly added to 27407 yesterday; sorry about that.
I&apos;ve also added the &apos;//&apos; after &apos;#endif&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133645</commentid>
    <comment_count>15</comment_count>
      <attachid>33194</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-07-21 16:07:25 -0700</bug_when>
    <thetext>Comment on attachment 33194
Patch, with missing file added

Looks great overall, but there are some stylistic nits that should be fixed
before this is committed.  See below:


&gt; Index: WebCore/bindings/v8/V8DOMWrapper.cpp
...
&gt; +#if ENABLE(DATAGRID)
&gt; +    case V8ClassIndex::DATAGRIDCOLUMNLIST:
&gt; +        descriptor-&gt;InstanceTemplate()-&gt;SetIndexedPropertyHandler(USE_INDEXED_PROPERTY_GETTER(DataGridColumnList));
&gt; +        descriptor-&gt;InstanceTemplate()-&gt;SetNamedPropertyHandler(USE_NAMED_PROPERTY_GETTER(DataGridColumnList));
&gt; +        break;
&gt; +#endif
&gt; +      default:
&gt;          break;

nit: 4 space indent


&gt; +#if ENABLE(DATAGRID)
&gt; +#define FOR_EACH_DATAGRID_TAG(macro)               \
&gt; +  macro(datagrid, DATAGRID)                        \
&gt; +  macro(dcell, DATAGRIDCELL)                       \
&gt; +  macro(dcol, DATAGRIDCOL)                         \
&gt; +  macro(drow, DATAGRIDROW)

nit: 4 space indent


&gt; Index: WebCore/bindings/v8/custom/V8DataGridColumnListCustom.cpp
...
&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;Document.h&quot;
&gt; +#include &quot;DataGridColumnList.h&quot;

^^^ See my comment below about the misplaced Document.h include.


&gt; Index: WebCore/bindings/v8/custom/V8HTMLDataGridElementCustom.cpp
...
&gt;  #include &quot;config.h&quot;
&gt; +#include &quot;Document.h&quot;
&gt;  #include &quot;HTMLDataGridElement.h&quot;

^^^ This doesn&apos;t match convention (I believe).  Ordinarily, you should
include config.h and then the header corresponding to the .cpp file.
Then there should be a newline, and the rest of the includes.
V8NodeCustom.cpp is a good example to follow.


&gt;  ACCESSOR_SETTER(HTMLDataGridElementDataSource)
...
&gt; +    PassRefPtr&lt;DataGridDataSource&gt; dataSource;

nit: I think this should be a RefPtr.  PassRefPtr should only be
used in argument lists and as a return value.


&gt;  } // namespace WebCore
&gt; +
&gt; +#endif ENABLE(DATAGRID)

^^^ I think you meant to comment out the ENABLE(DATAGRID) text.  It is quite
common in WebKit to not comment the #endif by the way.


&gt; Index: LayoutTests/fast/dom/HTMLDataGridElement/DataGridColumns-basic.html
...
&gt; +        try {
&gt; +
&gt;          function log(msg)

nit: I think it is good style to indent the body of a try block.


&gt; Index: LayoutTests/fast/dom/HTMLDataGridElement/DataGridColumns-dom-attributes.html
...
&gt; +        try{
&gt; +
&gt;          function log(msg)

nit: I think it is good style to indent the body of a try block.

nit: Add a space after &quot;try&quot;


&gt; Index: LayoutTests/fast/dom/HTMLDataGridElement/DataGridColumns-dom.html
...
&gt; +        
&gt; +        try {
&gt;  
&gt;          function log(msg)

nit: I think it is good style to indent the body of a try block.


&gt; Index: LayoutTests/fast/dom/HTMLDataGridElement/DataGridDataSource-basic.html
...
&gt; +        try {
&gt; +            
&gt;          function log(msg)

nit: I think it is good style to indent the body of a try block.

I think it would be good to provide a justification for the
&quot;==&quot; -&gt; &quot;===&quot; change in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133794</commentid>
    <comment_count>16</comment_count>
      <attachid>33266</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-22 10:10:41 -0700</bug_when>
    <thetext>Created attachment 33266
5th patch

Addresses Darin&apos;s review comments above.
Note that the diffs of the layout tests are a lot messier because I&apos;ve now indented most of the contents (since I wrapped them in &apos;try&apos; blocks.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133895</commentid>
    <comment_count>17</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-07-22 14:21:19 -0700</bug_when>
    <thetext>Will land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133902</commentid>
    <comment_count>18</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-07-22 14:24:06 -0700</bug_when>
    <thetext>*** Bug 26684 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133914</commentid>
    <comment_count>19</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-07-22 14:47:56 -0700</bug_when>
    <thetext>Landed in 46239</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32965</attachid>
            <date>2009-07-17 13:02:22 -0700</date>
            <delta_ts>2009-07-17 15:53:28 -0700</delta_ts>
            <desc>Patch to hook up the V8 bindings</desc>
            <filename>dataGridV8.patch</filename>
            <type>text/plain</type>
            <size>31543</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjA0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDktMDctMTcgIEplbnMgQWxma2UgIDxzbmVqQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1
cCBWOCBiaW5kaW5ncyBmb3IgRGF0YUdyaWQgZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzM4MworICAgICAgICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xNjczMAorCisgICAgICAgIFRl
c3RzOiBFbmhhbmNlZCBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50LyoK
KyAgICAgICAgdG8gaGFuZGxlIGV4Y2VwdGlvbnMsIGNoZWNrIGFwcHJvcHJpYXRlIEpTIHByb3Rv
dHlwZXMsIGFuZAorICAgICAgICB0ZXN0IGNvbHVtbi1saXN0J3MgaXRlbSgpIG1ldGhvZCBhcyB3
ZWxsIGFzIGFycmF5LWluZGV4aW5nLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBu
ZXcgc291cmNlIGZpbGVzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRl
Lmg6ICNpbmNsdWRlIERhdGFHcmlkIGhlYWRlcnMKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwOiBBZGQgYmluZGluZ3MgZnJvbSBIVE1MIHRhZ3MgdG8gZGF0YWdyaWQgdGVt
cGxhdGVzCisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmdldFRlbXBsYXRlKTogQ3Vz
dG9taXplIGRhdGFncmlkIHRlbXBsYXRlCisgICAgICAgICogYmluZGluZ3MvdjgvVjhEYXRhR3Jp
ZERhdGFTb3VyY2UuY3BwOiBBZGRlZC4gKEJhc2VkIG9uIEpTRGF0YUdyaWREYXRhU291cmNlKQor
ICAgICAgICAoV2ViQ29yZTo6VjhEYXRhR3JpZERhdGFTb3VyY2U6OlY4RGF0YUdyaWREYXRhU291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjp+VjhEYXRhR3Jp
ZERhdGFTb3VyY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNl
Lmg6IEFkZGVkLiAoQmFzZWQgb24gSlNEYXRhR3JpZERhdGFTb3VyY2UpCisgICAgICAgIChXZWJD
b3JlOjpWOERhdGFHcmlkRGF0YVNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RGF0YUdyaWREYXRhU291cmNlOjppc0pTRGF0YUdyaWREYXRhU291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjpqc0RhdGFTb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6YXNWOERhdGFHcmlkRGF0YVNvdXJjZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhH
Q0NvbnRyb2xsZXIuaDogQWRkZWQgbmV3IGhhbmRsZSB0eXBlICJEQVRBU09VUkNFIi4KKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6IENvbmRpdGlvbmFsaXplIGRhdGFncmlkIHN0dWZm
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oOiBEZWNsYXJl
IG1vcmUgYWNjZXNzb3JzLiBDb25kaXRpb25hbGl6ZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRGF0YUdyaWRFbGVtZW50Q3VzdG9tLmNwcDogRmlsbCBpbiBkYXRhU291cmNl
IGFjY2Vzc29ycy4KKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX0dFVFRFUik6CisgICAgICAg
IChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRURVIpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmlk
bDogQ29uZGl0aW9uYWxpemUgZGF0YWdyaWQgZWxlbWVudHMgKG90aGVyd2lzZSBidWlsZCBicmVh
a3MgaWYgdW4tZW5hYmxlZCkKKwogMjAwOS0wNy0xNyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZp
c2lvbiA0NjAzNykKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC02
MDMsNiArNjAzLDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Y
UGF0aE5TUmVzb2x2ZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21YUGF0aE5TUmVzb2x2ZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RGF0YWJhc2VDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NUGFyc2VyQ29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwJywKQEAgLTY5Myw2ICs2
OTQsOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9WOENvbGxlY3Rpb24uaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhEYXRhR3Jp
ZERhdGFTb3VyY2UuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERhdGFHcmlkRGF0
YVNvdXJjZS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTU1hcC5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAnLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmpl
Y3RzSW5jbHVkZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0
c0luY2x1ZGUuaAkocmV2aXNpb24gNDYwMzcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9i
amVjdHNJbmNsdWRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsMTEgQEAKICNpbmNs
dWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJYUGF0aFJlc3VsdC5oIgogCisjaWYg
RU5BQkxFKERBVEFHUklEKQorI2luY2x1ZGUgIkRhdGFHcmlkQ29sdW1uLmgiCisjaW5jbHVkZSAi
RGF0YUdyaWRDb2x1bW5MaXN0LmgiCisjZW5kaWYgLy8gREFUQUdSSUQKKwogI2lmIEVOQUJMRShE
T01fU1RPUkFHRSkKICNpbmNsdWRlICJTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50
LmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCShyZXZpc2lvbiA0NjAz
NykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQ1LDcgKzQ0NSwxMyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhECiAgICAgY2FzZSBWOENsYXNzSW5kZXg6OkNMSUVOVFJFQ1RMSVNUOgogICAgICAgICBk
ZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldEluZGV4ZWRQcm9wZXJ0eUhhbmRsZXIo
VVNFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKENsaWVudFJlY3RMaXN0KSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6CisjaWYgRU5BQkxFKERBVEFHUklEKQorICAgIGNhc2UgVjhDbGFz
c0luZGV4OjpEQVRBR1JJRENPTFVNTkxJU1Q6CisgICAgICAgIGRlc2NyaXB0b3ItPkluc3RhbmNl
VGVtcGxhdGUoKS0+U2V0SW5kZXhlZFByb3BlcnR5SGFuZGxlcihVU0VfSU5ERVhFRF9QUk9QRVJU
WV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KSk7CisgICAgICAgIGRlc2NyaXB0b3ItPkluc3Rh
bmNlVGVtcGxhdGUoKS0+U2V0TmFtZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX05BTUVEX1BST1BFUlRZ
X0dFVFRFUihEYXRhR3JpZENvbHVtbkxpc3QpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNzgwLDcgKzc4NiwxOCBA
QCBib29sIFY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHY4OjpICiAjZGVmaW5lIEZPUl9F
QUNIX1ZJREVPX1RBRyhtYWNybykKICNlbmRpZgogCisjaWYgRU5BQkxFKERBVEFHUklEKQorI2Rl
ZmluZSBGT1JfRUFDSF9EQVRBR1JJRF9UQUcobWFjcm8pICAgICAgICAgICAgICAgXAorICBtYWNy
byhkYXRhZ3JpZCwgREFUQUdSSUQpICAgICAgICAgICAgICAgICAgICAgICAgXAorICBtYWNybyhk
Y2VsbCwgREFUQUdSSURDRUxMKSAgICAgICAgICAgICAgICAgICAgICAgXAorICBtYWNybyhkY29s
LCBEQVRBR1JJRENPTCkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBtYWNybyhkcm93LCBE
QVRBR1JJRFJPVykKKyNlbHNlCisjZGVmaW5lIEZPUl9FQUNIX0RBVEFHUklEX1RBRyhtYWNybykK
KyNlbmRpZgorCiAjZGVmaW5lIEZPUl9FQUNIX1RBRyhtYWNybykgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgRk9SX0VBQ0hfREFUQUdSSURfVEFHKG1hY3JvKSAgICAgICAgICAgICAgICAg
ICBcCiAgICAgbWFjcm8oYSwgQU5DSE9SKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgbWFjcm8oYXBwbGV0LCBBUFBMRVQpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgbWFjcm8oYXJlYSwgQVJFQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKERBVEFHUklEKQorCisjaW5jbHVkZSAiVjhEYXRhR3JpZERhdGFTb3VyY2UuaCIKKworI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MRGF0
YUdyaWRFbGVtZW50LmgiCisjaW5jbHVkZSAiVjhIVE1MRGF0YUdyaWRFbGVtZW50LmgiCisKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitWOERhdGFHcmlkRGF0YVNvdXJjZTo6VjhEYXRhR3JpZERh
dGFTb3VyY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGFTb3VyY2UsIEZyYW1lKiBmcmFtZSkK
KyAgICA6IG1fZGF0YVNvdXJjZSh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+OjpOZXcoZGF0YVNv
dXJjZSkpCisgICAgLCBtX2ZyYW1lKGZyYW1lKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBWOEdD
Q29udHJvbGxlcjo6cmVnaXN0ZXJHbG9iYWxIYW5kbGUoREFUQVNPVVJDRSwgdGhpcywgbV9kYXRh
U291cmNlKTsKKyNlbmRpZgorfQorCitWOERhdGFHcmlkRGF0YVNvdXJjZTo6flY4RGF0YUdyaWRE
YXRhU291cmNlKCkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgVjhHQ0NvbnRyb2xsZXI6OnVucmVn
aXN0ZXJHbG9iYWxIYW5kbGUodGhpcywgbV9kYXRhU291cmNlKTsKKyNlbmRpZgorICAgIG1fZGF0
YVNvdXJjZS5EaXNwb3NlKCk7CisgICAgbV9kYXRhU291cmNlLkNsZWFyKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShEQVRBR1JJRCkKClByb3BlcnR5
IGNoYW5nZXMgb246IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3Bw
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKworI2lmbmRlZiBWOERhdGFHcmlkRGF0YVNvdXJjZV9oCisjZGVmaW5lIFY4RGF0
YUdyaWREYXRhU291cmNlX2gKKworI2lmIEVOQUJMRShEQVRBR1JJRCkKKworI2luY2x1ZGUgIkRh
dGFHcmlkRGF0YVNvdXJjZS5oIgorI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MRGF0YUdyaWRFbGVtZW50OworCitjbGFzcyBWOERh
dGFHcmlkRGF0YVNvdXJjZSA6IHB1YmxpYyBEYXRhR3JpZERhdGFTb3VyY2UgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4RGF0YUdyaWREYXRhU291cmNlPiBjcmVhdGUodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGRhdGFTb3VyY2UsIEZyYW1lKiBmcmFtZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVjhEYXRhR3JpZERhdGFTb3VyY2UoZGF0YVNvdXJjZSwgZnJh
bWUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5WOERhdGFHcmlkRGF0YVNvdXJjZSgpOworCisg
ICAgdmlydHVhbCBib29sIGlzSlNEYXRhR3JpZERhdGFTb3VyY2UoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRGF0YVNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YVNvdXJjZTsgfQorCitwcml2YXRlOgorICAgIFY4RGF0YUdyaWREYXRhU291
cmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgRnJhbWUqKTsKKworICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpWYWx1ZT4gbV9kYXRhU291cmNlOworICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKK307
CisKK2lubGluZSBWOERhdGFHcmlkRGF0YVNvdXJjZSogYXNWOERhdGFHcmlkRGF0YVNvdXJjZShE
YXRhR3JpZERhdGFTb3VyY2UqIGRhdGFTb3VyY2UpCit7CisgICAgQVNTRVJUKGRhdGFTb3VyY2Ut
PmlzSlNEYXRhR3JpZERhdGFTb3VyY2UoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFY4RGF0
YUdyaWREYXRhU291cmNlKj4oZGF0YVNvdXJjZSk7Cit9CisKK2lubGluZSBjb25zdCBWOERhdGFH
cmlkRGF0YVNvdXJjZSogYXNWOERhdGFHcmlkRGF0YVNvdXJjZShjb25zdCBEYXRhR3JpZERhdGFT
b3VyY2UqIGRhdGFTb3VyY2UpCit7CisgICAgQVNTRVJUKGRhdGFTb3VyY2UtPmlzSlNEYXRhR3Jp
ZERhdGFTb3VyY2UoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFY4RGF0YUdyaWRE
YXRhU291cmNlKj4oZGF0YVNvdXJjZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShEQVRBR1JJRCkKKyNlbmRpZiAvLyBWOERhdGFHcmlkRGF0YVNvdXJj
ZV9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWRE
YXRhU291cmNlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oCShyZXZpc2lvbiA0NjAzNykKKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgVihFVkVOVF9MSVNURU5FUikgICAg
ICAgICAgICAgXAogICAgIFYoTk9ERV9GSUxURVIpICAgICAgICAgICAgICAgIFwKICAgICBWKFND
UklQVElOU1RBTkNFKSAgICAgICAgICAgICBcCi0gICAgVihTQ1JJUFRWQUxVRSkKKyAgICBWKFND
UklQVFZBTFVFKSAgICAgICAgICAgICAgICBcCisgICAgVihEQVRBU09VUkNFKQogCiAKICAgICAv
LyBIb3N0IGluZm9ybWF0aW9uIG9mIHBlcnNpc3RlbnQgaGFuZGxlcy4KSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvVjhJbmRleC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhJbmRleC5oCShyZXZpc2lvbiA0NjAzNykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRl
eC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICgqRnVuY3Rp
b25UZW1wbGF0ZUZhY3RvcnkpKCk7CiAKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisjZGVmaW5lIERB
VEFHUklEX0hUTUxFTEVNRU5UX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgVihIVE1MREFUQUdSSURDRUxMRUxFTUVOVCwgSFRNTERhdGFHcmlkQ2VsbEVs
ZW1lbnQpICAgICAgICAgICAgICAgICBcCisgICAgVihIVE1MREFUQUdSSURDT0xFTEVNRU5ULCBI
VE1MRGF0YUdyaWRDb2xFbGVtZW50KSAgICAgICAgICAgICAgICAgICBcCisgICAgVihIVE1MREFU
QUdSSURFTEVNRU5ULCBIVE1MRGF0YUdyaWRFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgVihIVE1MREFUQUdSSURST1dFTEVNRU5ULCBIVE1MRGF0YUdyaWRSb3dFbGVtZW50
KQorI2RlZmluZSBEQVRBR1JJRF9OT05OT0RFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIFYoREFUQUdSSURDT0xVTU4sIERhdGFHcmlkQ29sdW1u
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoREFUQUdSSURDT0xV
TU5MSVNULCBEYXRhR3JpZENvbHVtbkxpc3QpCisjZWxzZQorI2RlZmluZSBEQVRBR1JJRF9IVE1M
RUxFTUVOVF9UWVBFUyhWKQorI2RlZmluZSBEQVRBR1JJRF9OT05OT0RFX1RZUEVTKFYpCisjZW5k
aWYKKwogI2lmIEVOQUJMRShWSURFTykKICNkZWZpbmUgVklERU9fSFRNTEVMRU1FTlRfVFlQRVMo
VikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEhUTUxBVURJ
T0VMRU1FTlQsIEhUTUxBdWRpb0VsZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKQEAgLTgwLDkgKzk0LDcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbAogICAgIFYoQVRUUiwgQXR0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoQ0hBUkFDVEVSREFUQSwgQ2hhcmFjdGVyRGF0
YSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoQ0RBVEFTRUNU
SU9OLCBDREFUQVNlY3Rpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIFYoQ09NTUVOVCwgQ29tbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXA0KLSAgICBWKERBVEFHUklEQ09MVU1OLCBEYXRhR3JpZENvbHVt
bikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCi0gICAgVihEQVRBR1JJRENP
TFVNTkxJU1QsIERhdGFHcmlkQ29sdW1uTGlzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgVihDT01NRU5ULCBDb21tZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgVihET0NVTUVOVCwgRG9jdW1lbnQpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihET0NVTUVOVEZSQUdN
RU5ULCBEb2N1bWVudEZyYWdtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgVihET0NVTUVOVFRZUEUsIERvY3VtZW50VHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCkBAIC0xMDQsMTAgKzExNiw2IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGwKICAgICBWKEhUTUxCUkVMRU1FTlQsIEhUTUxCUkVsZW1lbnQp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEhUTUxCVVRUT05F
TEVNRU5ULCBIVE1MQnV0dG9uRWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICBWKEhUTUxDQU5WQVNFTEVNRU5ULCBIVE1MQ2FudmFzRWxlbWVudCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBWKEhUTUxEQVRBR1JJRENFTExFTEVNRU5ULCBIVE1MRGF0
YUdyaWRDZWxsRWxlbWVudCkgICAgICAgICAgICAgICAgIFwKLSAgICBWKEhUTUxEQVRBR1JJRENP
TEVMRU1FTlQsIEhUTUxEYXRhR3JpZENvbEVsZW1lbnQpICAgICAgICAgICAgICAgICAgIFwKLSAg
ICBWKEhUTUxEQVRBR1JJREVMRU1FTlQsIEhUTUxEYXRhR3JpZEVsZW1lbnQpICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICBWKEhUTUxEQVRBR1JJRFJPV0VMRU1FTlQsIEhUTUxEYXRhR3Jp
ZFJvd0VsZW1lbnQpICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEhUTUxESVJFQ1RPUllFTEVN
RU5ULCBIVE1MRGlyZWN0b3J5RWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBW
KEhUTUxESVZFTEVNRU5ULCBIVE1MRGl2RWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBWKEhUTUxETElTVEVMRU1FTlQsIEhUTUxETGlzdEVsZW1lbnQpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE1NSw2ICsxNjMsNyBAQCB0eXBlZGVm
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihIVE1MVElUTEVFTEVNRU5U
LCBIVE1MVGl0bGVFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
VihIVE1MVUxJU1RFTEVNRU5ULCBIVE1MVUxpc3RFbGVtZW50KSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgVihIVE1MRUxFTUVOVCwgSFRNTEVsZW1lbnQpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgREFUQUdSSURfSFRNTEVMRU1FTlRf
VFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVklE
RU9fSFRNTEVMRU1FTlRfVFlQRVMoVikKIAogI2lmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQpAQCAt
Mzc3LDYgKzM4Niw3IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGwK
ICAgICBWKFhQQVRIUkVTVUxULCBYUGF0aFJlc3VsdCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICBWKFhTTFRQUk9DRVNTT1IsIFhTTFRQcm9jZXNzb3IpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBBQ1RJVkVfRE9NX09CSkVD
VF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBEQVRBR1JJRF9OT05OT0RFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBWSURFT19OT05OT0RFX1RZUEVTKFYpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBTSEFSRURfV09SS0VSX05PTk5P
REVfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBX
T1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpCkBAIC0zOTAsMTQgKzQwMCwxNCBAQCB0eXBl
ZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihTUUxUUkFOU0FDVElP
TiwgU1FMVHJhbnNhY3Rpb24pCiAjZWxzZQogI2RlZmluZSBET01fT0JKRUNUX0RBVEFCQVNFX1RZ
UEVTKFYpCi0jZW5kaWYNCi0NCi0jaWYgRU5BQkxFKERPTV9TVE9SQUdFKQ0KLSNkZWZpbmUgRE9N
X09CSkVDVF9TVE9SQUdFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwNCi0gICAgVihTVE9SQUdFLCBTdG9yYWdlKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgIFYoU1RPUkFHRUVWRU5ULCBTdG9yYWdlRXZl
bnQpDQotI2Vsc2UNCi0jZGVmaW5lIERPTV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKQ0KKyNlbmRp
ZgorCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorI2RlZmluZSBET01fT0JKRUNUX1NUT1JBR0Vf
VFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoU1RP
UkFHRSwgU3RvcmFnZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIFYoU1RPUkFHRUVWRU5ULCBTdG9yYWdlRXZlbnQpCisjZWxzZQorI2RlZmlu
ZSBET01fT0JKRUNUX1NUT1JBR0VfVFlQRVMoVikKICNlbmRpZgogCiAjZGVmaW5lIERPTV9PQkpF
Q1RfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAko
cmV2aXNpb24gNDYwMzcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJp
bmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNDA4LDggKzQwOCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vZGVGaWx0ZXJBY2NlcHROb2RlKTsK
IAotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxEYXRhR3JpZEVsZW1lbnRE
YXRhU291cmNlKTsKLQogICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxGb3JtRWxlbWVudFN1
Ym1pdCk7CiAKICAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoRE9NV2luZG93
KTsKQEAgLTQ1NCw2ICs0NTIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBERUNM
QVJFX0NBTExCQUNLKFNRTFJlc3VsdFNldFJvd0xpc3RJdGVtKTsKIAogICAgICAgICBERUNMQVJF
X0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKENsaWVudFJlY3RMaXN0KTsKKyAgCisjaWYgRU5BQkxF
KERBVEFHUklEKQorICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxEYXRhR3Jp
ZEVsZW1lbnREYXRhU291cmNlKTsKKyAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dF
VFRFUihEYXRhR3JpZENvbHVtbkxpc3QpOworICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZ
X0dFVFRFUihEYXRhR3JpZENvbHVtbkxpc3QpOworI2VuZGlmICAgICAgCiAKICNpZiBFTkFCTEUo
RE9NX1NUT1JBR0UpCiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoU3Rv
cmFnZSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEYXRhR3JpZEVs
ZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTERhdGFHcmlkRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDQ2MDM3KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRGF0YUdyaWRFbGVtZW50Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxEYXRhR3JpZEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJWOERhdGFHcmlkRGF0YVNvdXJjZS5oIgogCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKIApAQCAtMzcsMTkgKzM5LDM0IEBACiAjaW5jbHVkZSAiVjhDdXN0b21CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCisjaWYgRU5BQkxFKERBVEFHUklEKQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFDQ0VTU09SX0dFVFRFUihIVE1MRGF0YUdyaWRFbGVtZW50
RGF0YVNvdXJjZSkKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRGF0YUdyaWRFbGVtZW50LmRh
dGFTb3VyY2UuX2dldCIpOwotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOworICAgIEhUTUxEYXRhR3JpZEVsZW1l
bnQqIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRNTERhdGFH
cmlkRWxlbWVudD4oaG9sZGVyKTsKKyAgICBEYXRhR3JpZERhdGFTb3VyY2UqIGRhdGFTb3VyY2Ug
PSBpbXAtPmRhdGFTb3VyY2UoKTsKKyAgICBpZiAoZGF0YVNvdXJjZSAmJiBkYXRhU291cmNlLT5p
c0pTRGF0YUdyaWREYXRhU291cmNlKCkpCisgICAgICAgIHJldHVybiBhc1Y4RGF0YUdyaWREYXRh
U291cmNlKGRhdGFTb3VyY2UpLT5qc0RhdGFTb3VyY2UoKTsKICAgICByZXR1cm4gdjg6Ok51bGwo
KTsKIH0KIAogQUNDRVNTT1JfU0VUVEVSKEhUTUxEYXRhR3JpZEVsZW1lbnREYXRhU291cmNlKQog
ewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxEYXRhR3JpZEVsZW1lbnQuZGF0YVNvdXJjZS5fc2V0
Iik7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhv
bGRlciA9IGluZm8uSG9sZGVyKCk7CisgICAgSFRNTERhdGFHcmlkRWxlbWVudCogaW1wID0gVjhE
T01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxIVE1MRGF0YUdyaWRFbGVtZW50Piho
b2xkZXIpOworICAgIFBhc3NSZWZQdHI8RGF0YUdyaWREYXRhU291cmNlPiBkYXRhU291cmNlOwor
ICAgIGlmICghdmFsdWUuSXNFbXB0eSgpKSB7CisgICAgICAgIEZyYW1lICpmcmFtZSA9IGltcC0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICAgICAgZGF0YVNvdXJjZSA9IFY4RGF0YUdyaWREYXRh
U291cmNlOjpjcmVhdGUodmFsdWUsIGZyYW1lKTsKKyAgICB9CisgICAgaW1wLT5zZXREYXRhU291
cmNlKGRhdGFTb3VyY2UuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiBFTkFCTEUoREFUQUdSSUQpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gNDYwMzcp
CisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDkg
KzM0OSwxMSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIEhUTUxCb2R5RWxl
bWVudENvbnN0cnVjdG9yIEhUTUxCb2R5RWxlbWVudDsKICAgICAgICAgYXR0cmlidXRlIEhUTUxC
dXR0b25FbGVtZW50Q29uc3RydWN0b3IgSFRNTEJ1dHRvbkVsZW1lbnQ7CiAgICAgICAgIGF0dHJp
YnV0ZSBIVE1MQ2FudmFzRWxlbWVudENvbnN0cnVjdG9yIEhUTUxDYW52YXNFbGVtZW50OworI2lm
IGRlZmluZWQoRU5BQkxFX0RBVEFHUklEKSAmJiBFTkFCTEVfREFUQUdSSUQKICAgICAgICAgYXR0
cmlidXRlIFtDb25kaXRpb25hbD1EQVRBR1JJRF0gSFRNTERhdGFHcmlkRWxlbWVudENvbnN0cnVj
dG9yIEhUTUxEYXRhR3JpZEVsZW1lbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9
REFUQUdSSURdIEhUTUxEYXRhR3JpZENlbGxFbGVtZW50Q29uc3RydWN0b3IgSFRNTERhdGFHcmlk
Q2VsbEVsZW1lbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9REFUQUdSSURdIEhU
TUxEYXRhR3JpZENvbEVsZW1lbnRDb25zdHJ1Y3RvciBIVE1MRGF0YUdyaWRDb2xFbGVtZW50Owor
I2VuZGlmCiAgICAgICAgIGF0dHJpYnV0ZSBIVE1MRExpc3RFbGVtZW50Q29uc3RydWN0b3IgSFRN
TERMaXN0RWxlbWVudDsKICAgICAgICAgYXR0cmlidXRlIEhUTUxEaXJlY3RvcnlFbGVtZW50Q29u
c3RydWN0b3IgSFRNTERpcmVjdG9yeUVsZW1lbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBIVE1MRGl2
RWxlbWVudENvbnN0cnVjdG9yIEhUTUxEaXZFbGVtZW50OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDYw
NTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MiBAQAorMjAwOS0wNy0xNyAgSmVucyBBbGZrZSAgPHNuZWpAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIFY4IGJpbmRp
bmdzIGZvciBEYXRhR3JpZCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI3MzgzCisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE2NzMwCisKKyAgICAgICAgVGVzdHM6IEVuaGFu
Y2VkIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvKgorICAgICAgICB0
byBoYW5kbGUgZXhjZXB0aW9ucywgY2hlY2sgYXBwcm9wcmlhdGUgSlMgcHJvdG90eXBlcywgYW5k
CisgICAgICAgIHRlc3QgY29sdW1uLWxpc3QncyBpdGVtKCkgbWV0aG9kIGFzIHdlbGwgYXMgYXJy
YXktaW5kZXhpbmcuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0Rh
dGFHcmlkQ29sdW1ucy1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRN
TERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tYXR0cmlidXRl
cy5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRD
b2x1bW5zLWRvbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTERhdGFHcmlk
RWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vSFRN
TERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZERhdGFTb3VyY2UtYmFzaWMuaHRtbDoKKwogMjAwOS0w
Ny0xNyAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhdmlkIExldmluLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFH
cmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1
bW5zLWJhc2ljLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDYwMzcpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBAIFBBU1M6IEluaXRpYWwgdmFsdWUg
b2YgZGF0YWdyaWQuY29sdW1ucyAKIFBBU1M6IEluaXRpYWwgbGVuZ3RoIG9mIGRhdGFncmlkLmNv
bHVtbnMgaXMgMC4KIFBBU1M6IENvbHVtbiByZXR1cm5lZCBmcm9tIGFkZC4KIFBBU1M6IFdlIGhh
dmUgb25lIGNvbHVtbiBpbiB0aGUgbGlzdC4KK1BBU1M6IFRoZSBjb2x1bW4gYXQgaXRlbSgwKSBp
cyB0aGUgY29sdW1uIHdlIGdvdCBiYWNrIGZyb20gYWRkLgogUEFTUzogVGhlIGNvbHVtbiBhdCBp
bmRleCAwIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQuCiBQQVNTOiBUaGUgY29s
dW1uIHdoZW4gcmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUgd2UgZ290IGJhY2sgZnJvbSBh
ZGQuCiBQQVNTOiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJvbWNvbCBhcyBleHBlY3RlZC4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5z
LWJhc2ljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFH
cmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMuaHRtbAkocmV2aXNpb24gNDYwMzcpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1u
cy1iYXNpYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsOCBAQAogICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKKyAgICAg
ICAgdHJ5IHsKKwogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKQEAgLTQ2LDE3ICs0OCwyNyBAQAogICAg
ICAgICAgICAgbG9nKCJGQUlMOiBFeHBlY3RlZCBvbmUgY29sdW1uIGluIHRoZSBsaXN0IGJ1dCBo
YXZlICIgKyBkYXRhZ3JpZC5jb2x1bW5zLmxlbmd0aCArICIgY29sdW1ucyBpbnN0ZWFkLiIpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbHVtbiB3ZSBn
b3QgYmFjayBmcm9tIGFkZCBpcyB0aGUgb25lIGluIHRoZSBsaXN0LgotICAgICAgICBpZiAoZGF0
YWdyaWQuY29sdW1uc1swXSA9PSBjb2x1bW4pIHsKKyAgICAgICAgLy8gVXNlIGl0ZW0oMCkgdG8g
bWFrZSBzdXJlIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQgaXMgdGhlIG9uZSBpbiB0
aGUgbGlzdC4KKyAgICAgICAgdmFyIGdvdENvbHVtbiA9IGRhdGFncmlkLmNvbHVtbnMuaXRlbSgw
KTsKKyAgICAgICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKKyAgICAgICAgICAgIGxvZygi
UEFTUzogVGhlIGNvbHVtbiBhdCBpdGVtKDApIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJv
bSBhZGQuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBj
b2x1bW4gYXQgaXRlbSgwKSAoIiArIGdvdENvbHVtbiArICIpIGlzIG5vdCB0aGUgb25lIHdlIGV4
cGVjdGVkICgiICsgY29sdW1uICsgIikuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IC8vIFVzZSBbMF0gdG8gbWFrZSBzdXJlIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQg
aXMgdGhlIG9uZSBpbiB0aGUgbGlzdC4KKyAgICAgICAgZ290Q29sdW1uID0gZGF0YWdyaWQuY29s
dW1uc1swXTsKKyAgICAgICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKICAgICAgICAgICAg
IGxvZygiUEFTUzogVGhlIGNvbHVtbiBhdCBpbmRleCAwIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJh
Y2sgZnJvbSBhZGQuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6
IFRoZSBjb2x1bW4gYXQgaW5kZXggMCBpcyBub3QgdGhlIG9uZSB3ZSBleHBlY3RlZC4iKTsKKyAg
ICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbiBhdCBpbmRleCAwICgiICsgZ290Q29sdW1u
ICsgIikgaXMgbm90IHRoZSBvbmUgd2UgZXhwZWN0ZWQgKCIgKyBjb2x1bW4gKyAiKS4iKTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnNbImZyb21jb2wi
XSA9PSBjb2x1bW4pIHsKKyAgICAgICAgZ290Q29sdW1uID0gZGF0YWdyaWQuY29sdW1uc1siZnJv
bWNvbCJdOworICAgICAgICBpZiAoZ290Q29sdW1uID09IGNvbHVtbikgewogICAgICAgICAgICAg
bG9nKCJQQVNTOiBUaGUgY29sdW1uIHdoZW4gcmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUg
d2UgZ290IGJhY2sgZnJvbSBhZGQuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBs
b2coIkZBSUw6IFRoZSBjb2x1bW4gd2hlbiByZWZlcmVuY2VkIGJ5IG5hbWUgaXMgbm90IHRoZSBv
bmUgd2UgZXhwZWN0ZWQuIik7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gd2hl
biByZWZlcmVuY2VkIGJ5IG5hbWUgKCIgKyBnb3RDb2x1bW4gKyAiKSBpcyBub3QgdGhlIG9uZSB3
ZSBleHBlY3RlZCAoIiArIGNvbHVtbiArICIpLiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
RXhhbWluZSB0aGUgY29sdW1uJ3MgcHJvcGVydGllcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgd2hh
dCB3ZSBleHBlY3RlZC4KQEAgLTk3LDYgKzEwOSwxMCBAQAogICAgICAgICAgICAgbG9nKCJGQUlM
OiBUaGUgY29sdW1uIGlzIG5vdCB0aGUgcHJpbWFyeSBjb2x1bW4gYXMgZXhwZWN0ZWQuIik7CiAg
ICAgICAgIH0KIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxv
ZygiRkFJTDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICAgICAgICB9CisKICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1h
dHRyaWJ1dGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERh
dGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWF0dHJpYnV0ZXMuaHRtbAkocmV2aXNp
b24gNDYwMzcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0Rh
dGFHcmlkQ29sdW1ucy1kb20tYXR0cmlidXRlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYg
KzgsOCBAQAogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwogICAgICAgICB9CiAKKyAgICAgICAgdHJ5eworCiAgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
JykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgIlxuIikpOwpAQCAt
NzQsNiArNzYsMTAgQEAKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGZpcnN0IGNvbHVtbiBp
cyBub3QgdGhlIHByaW1hcnkgY29sdW1uIGFzIGV4cGVjdGVkLiIpOwogICAgICAgICB9CiAKKyAg
ICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRocmV3
IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0
YUdyaWRDb2x1bW5zLWRvbS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ2MDM3KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDggQEAKK1BBU1M6IGRhdGFncmlk
IEpTIGJpbmRpbmcgaXMgW29iamVjdCBIVE1MRGF0YUdyaWRFbGVtZW50XQogUEFTUzogSW5pdGlh
bCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIGRlZmluZWQuCitQQVNTOiBkYXRhZ3JpZC5j
b2x1bW5zIEpTIGJpbmRpbmcgaXMgW29iamVjdCBEYXRhR3JpZENvbHVtbkxpc3RdCiBQQVNTOiBJ
bml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuCitQQVNTOiBuZXdDb2wgSlMg
YmluZGluZyBpcyBbb2JqZWN0IEhUTUxEYXRhR3JpZENvbEVsZW1lbnRdCiBQQVNTOiBXZSBoYXZl
IHRocmVlIGNvbHVtbnMgaW4gdGhlIGxpc3QuCiBQQVNTOiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJv
bSBhcyBleHBlY3RlZC4KIFBBU1M6IFRoZSBjb2x1bW4ncyBsYWJlbCBpcyBGcm9tIGFzIGV4cGVj
dGVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRh
R3JpZENvbHVtbnMtZG9tLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLmh0bWwJKHJldmlzaW9uIDQ2
MDM3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3Jp
ZENvbHVtbnMtZG9tLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsMTQgKzcsMjkgQEAKICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgdHJ5IHsKIAogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKICAgICAgICAgfQotCisgICAg
ICAgIAorICAgICAgICBmdW5jdGlvbiBleHBlY3RCaW5kaW5nKHdoYXQsIG9iaiwgY2xhc3NuYW1l
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZGVzYyA9IFN0cmluZyhvYmopOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkRGVzYyA9ICJbb2JqZWN0ICIgKyBjbGFzc25hbWUgKyAiXSI7Cisg
ICAgICAgICAgICBpZiAoZGVzYyA9PSBleHBlY3RlZERlc2MpIHsKKyAgICAgICAgICAgICAgICBs
b2coIlBBU1M6ICIgKyB3aGF0ICsgIiBKUyBiaW5kaW5nIGlzICIgKyBkZXNjKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiAiICsgd2hhdCArICIgSlMg
YmluZGluZyBpcyAiICsgZGVzYyArICIoZXhwZWN0ZWQgIiArIGV4cGVjdGVkRGVzYyArICIpIik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRlc3QgYmlu
ZGluZyBvZiA8ZGF0YWdyaWQ+IHRvIEpTIEhUTUxEYXRhR3JpZEVsZW1lbnQ6CiAgICAgICAgIHZh
ciBkYXRhZ3JpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Ci0KKyAgICAgICAg
ZXhwZWN0QmluZGluZygiZGF0YWdyaWQiLCBkYXRhZ3JpZCwgIkhUTUxEYXRhR3JpZEVsZW1lbnQi
KTsKKyAgICAgICAgCiAgICAgICAgIC8vIFRlc3QgaW5pdGlhbCB2YWx1ZS4KICAgICAgICAgaWYg
KGRhdGFncmlkLmNvbHVtbnMgIT0gbnVsbCkgewogICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0
aWFsIHZhbHVlIG9mIGRhdGFncmlkLmNvbHVtbnMgaXMgZGVmaW5lZC4iKTsKQEAgLTIyLDYgKzM3
LDkgQEAKICAgICAgICAgICAgIGxvZygiRkFJTDogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5j
b2x1bW5zIHdhcyBudWxsLiIpOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gVGVzdCBiaW5kaW5n
IG9mIDxkY29sPiB0byBKUyBEYXRhR3JpZENvbHVtbkxpc3Q6CisgICAgICAgIGV4cGVjdEJpbmRp
bmcoImRhdGFncmlkLmNvbHVtbnMiLCBkYXRhZ3JpZC5jb2x1bW5zLCAiRGF0YUdyaWRDb2x1bW5M
aXN0Iik7CisgICAgICAgIAogICAgICAgICAvLyBUZXN0IGluaXRpYWwgbGVuZ3RoLgogICAgICAg
ICBpZiAoZGF0YWdyaWQuY29sdW1ucy5sZW5ndGggPT0gMikgewogICAgICAgICAgICAgbG9nKCJQ
QVNTOiBJbml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuIik7CkBAIC0zMSw2
ICs0OSw3IEBACiAgICAgICAgIAogICAgICAgICAvLyBUZXN0IGFkZGluZyBhIGNvbHVtbi4KICAg
ICAgICAgdmFyIG5ld0NvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRjb2wiKTsKKyAgICAg
ICAgZXhwZWN0QmluZGluZygibmV3Q29sIiwgbmV3Q29sLCAiSFRNTERhdGFHcmlkQ29sRWxlbWVu
dCIpOwogICAgICAgICBuZXdDb2wuc2V0QXR0cmlidXRlKCJpZCIsICJkYXRlIik7CiAgICAgICAg
IG5ld0NvbC5zZXRBdHRyaWJ1dGUoImxhYmVsIiwgIkRhdGUgUmVjZWl2ZWQiKTsKICAgICAgICAg
bmV3Q29sLnNldEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0Iik7CkBAIC05OCw3ICsxMTcsMTEgQEAK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlcmUgaXMgYSBwcmlt
YXJ5IGNvbHVtbiwgYnV0IHRoZXJlIHNob3VsZCBub3QgYmUuIik7CiAgICAgICAgIH0KLSAgICAK
KyAgICAgICAgICAgIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAg
IGxvZygiRkFJTDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICAgICAgICB9Cisg
ICAgICAgIAogICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIDwvc2NyaXB0PgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZERh
dGFTb3VyY2UtYmFzaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkRGF0YVNvdXJjZS1iYXNpYy5odG1sCShyZXZpc2lv
biA0NjAzNykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0
YUdyaWREYXRhU291cmNlLWJhc2ljLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw4IEBA
CiAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIAogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKQEAgLTE0LDcgKzE2LDcgQEAKICAgICAgICAg
dmFyIGRhdGFncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKIAogICAgICAg
ICAvLyBUZXN0IGluaXRpYWwgdmFsdWUuCi0gICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNl
ID09IG51bGwpIHsKKyAgICAgICAgaWYgKGRhdGFncmlkLmRhdGFTb3VyY2UgPT09IG51bGwpIHsK
ICAgICAgICAgICAgIGxvZygiUEFTUzogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5kYXRhU291
cmNlIGlzIG51bGwuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsb2coIkZBSUw6
IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQuZGF0YVNvdXJjZSB3YXMgbm90IG51bGwuIFdhcyAi
ICsgZGF0YWdyaWQuZGF0YVNvdXJjZSArICIuIik7CkBAIC0yMiwxOCArMjQsMTggQEAKIAogICAg
ICAgICAvLyBUZXN0IHNldHRpbmcgdG8gYSBKUyBudW1iZXIKICAgICAgICAgZGF0YWdyaWQuZGF0
YVNvdXJjZSA9IDEwOwotICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSAxMCkgewor
ICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PT0gMTApIHsKICAgICAgICAgICAgIGxv
ZygiUEFTUzogQWxsb3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIu
Iik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxs
b3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIuIik7CisgICAgICAg
ICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNl
IHRvIGEgbnVtYmVyLiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCBzZXR0aW5nIHRv
IGEgSlMgbnVtYmVyCiAgICAgICAgIGRhdGFncmlkLmRhdGFTb3VyY2UgPSAiVGVzdCBTdHJpbmci
OwotICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSAiVGVzdCBTdHJpbmciKSB7Cisg
ICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09PSAiVGVzdCBTdHJpbmciKSB7CiAgICAg
ICAgICAgICBsb2coIlBBU1M6IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRv
IGEgc3RyaW5nLiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBE
aWQgbm90IGFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgc3RyaW5nLiIp
OworICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFsbG93IHNldHRpbmcgZGF0YWdyaWQu
ZGF0YVNvdXJjZSB0byBhIHN0cmluZy4iKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3Qg
c2V0dGluZyBkYXRhU291cmNlIHRvIGFuIG9iamVjdC4KQEAgLTQyLDE1ICs0NCwxOSBAQAogICAg
ICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSBkYXRhU291cmNlKSB7CiAgICAgICAgICAg
ICBsb2coIlBBU1M6IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGFuIG9i
amVjdC4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5v
dCBhbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhbiBvYmplY3QuIik7Cisg
ICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRh
U291cmNlIHRvIGFuIG9iamVjdC4iKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFRlc3Qgc2V0
dGluZyBkYXRhU291cmNlIHRvIGFuIG9iamVjdC4KKyAgICAgICAgLy8gVGVzdCBzZXR0aW5nIGRh
dGFTb3VyY2UgdG8gbnVsbC4KICAgICAgICAgZGF0YWdyaWQuZGF0YVNvdXJjZSA9IG51bGw7Ci0g
ICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09IG51bGwpIHsKKyAgICAgICAgaWYgKGRh
dGFncmlkLmRhdGFTb3VyY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgIGxvZygiUEFTUzogQWxs
b3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gbnVsbC4iKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0
YWdyaWQuZGF0YVNvdXJjZSB0byBudWxsLiIpOworICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQg
bm90IGFsbG93IHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBudWxsLiIpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAg
IGxvZygiRkFJTDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwogICAgICAgICB9CiAg
ICAgPC9zY3JpcHQ+CiA8L2JvZHk+Cg==
</data>
<flag name="review"
          id="17307"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32985</attachid>
            <date>2009-07-17 15:53:28 -0700</date>
            <delta_ts>2009-07-21 11:38:57 -0700</delta_ts>
            <desc>2nd patch</desc>
            <filename>dataGridV8_take2.patch</filename>
            <type>text/plain</type>
            <size>44815</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjA0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDktMDctMTcgIEplbnMgQWxma2UgIDxzbmVqQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1
cCBWOCBiaW5kaW5ncyBmb3IgRGF0YUdyaWQgZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzM4MworICAgICAgICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xNjczMAorCisgICAgICAgIFRl
c3RzOiBFbmhhbmNlZCBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50LyoK
KyAgICAgICAgdG8gaGFuZGxlIGV4Y2VwdGlvbnMsIGNoZWNrIGFwcHJvcHJpYXRlIEpTIHByb3Rv
dHlwZXMsIGFuZAorICAgICAgICB0ZXN0IGNvbHVtbi1saXN0J3MgaXRlbSgpIG1ldGhvZCBhcyB3
ZWxsIGFzIGFycmF5LWluZGV4aW5nLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBu
ZXcgc291cmNlIGZpbGVzLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOiBNYWRlIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEgcHV0ICNpZidzIGFyb3Vu
ZCBjb25kaXRpb25hbCBhdHRyaWJ1dGVzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTU9iamVj
dHNJbmNsdWRlLmg6ICNpbmNsdWRlIERhdGFHcmlkIGhlYWRlcnMuCisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcDogQWRkIGJpbmRpbmdzIGZyb20gSFRNTCB0YWdzIHRvIGRh
dGFncmlkIHRlbXBsYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0VGVt
cGxhdGUpOiBDdXN0b21pemUgZGF0YWdyaWQgdGVtcGxhdGUuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3BwOiBBZGRlZC4gKEJhc2VkIG9uIEpTRGF0YUdyaWRE
YXRhU291cmNlKQorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhR3JpZERhdGFTb3VyY2U6OlY4RGF0
YUdyaWREYXRhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNl
Ojp+VjhEYXRhR3JpZERhdGFTb3VyY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RGF0YUdy
aWREYXRhU291cmNlLmg6IEFkZGVkLiAoQmFzZWQgb24gSlNEYXRhR3JpZERhdGFTb3VyY2UpCisg
ICAgICAgIChXZWJDb3JlOjpWOERhdGFHcmlkRGF0YVNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjppc0pTRGF0YUdyaWREYXRhU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjpqc0RhdGFTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6YXNWOERhdGFHcmlkRGF0YVNvdXJjZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaDogQWRkZWQgbmV3IGhhbmRsZSB0eXBlICJEQVRBU09V
UkNFIi4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6IENvbmRpdGlvbmFsaXplIGRh
dGFncmlkIHN0dWZmLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuaDogRGVjbGFyZSBtb3JlIGFjY2Vzc29ycy4gQ29uZGl0aW9uYWxpemUuCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERhdGFHcmlkRWxlbWVudEN1c3RvbS5jcHA6IEZpbGwg
aW4gZGF0YVNvdXJjZSBhY2Nlc3NvcnMuCisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9HRVRU
RVIpOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfU0VUVEVSKToKKwogMjAwOS0wNy0xNyAg
RGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFu
IEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA0NjAzNykKKysrIFdlYkNvcmUvV2ViQ29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC02MDMsNiArNjAzLDcgQEAKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwJywKKyAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NUGFyc2VyQ29uc3Ry
dWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwJywKQEAgLTY5Myw2ICs2OTQsOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaCcsCisgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3BwJywKKyAgICAgICAgICAgICdi
aW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9WOERPTU1hcC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAnLApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiA0NjAz
NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtp
bmcgY29weSkKQEAgLTI0Myw2ICsyNDMsMTggQEAgc3ViIEdldEltcGxlbWVudGF0aW9uRmlsZU5h
bWUKICAgICByZXR1cm4gIiR7aWZhY2V9LmgiOwogfQogCisjIElmIHRoZSBub2RlIGhhcyBhIFtD
b25kaXRpb25hbD1YWFhdIGF0dHJpYnV0ZSwgcmV0dXJucyBhbiAiRU5BQkxFKFhYWCkiIHN0cmlu
ZyBmb3IgdXNlIGluIGFuICNpZi4KK3N1YiBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nCit7Cisg
ICAgbXkgJG5vZGUgPSBzaGlmdDsKKyAgICBteSAkY29uZGl0aW9uYWwgPSAkbm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn07CisgICAgaWYgKCRjb25kaXRpb25hbCkgewor
ICAgICAgICByZXR1cm4gIkVOQUJMRSgiIC4gam9pbigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYv
LCAkY29uZGl0aW9uYWwpKSAuICIpIjsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gIiI7
CisgICAgfQorfQorCiBzdWIgR2VuZXJhdGVIZWFkZXIKIHsKICAgICBteSAkb2JqZWN0ID0gc2hp
ZnQ7CkBAIC0yNTcsMTcgKzI2OSwxMiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAkY29kZUdl
bmVyYXRvci0+QWRkTWV0aG9kc0NvbnN0YW50c0FuZEF0dHJpYnV0ZXNGcm9tUGFyZW50Q2xhc3Nl
cygkZGF0YU5vZGUpOwogCiAgICAgbXkgJGhhc0xlZ2FjeVBhcmVudCA9ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeVBhcmVudCJ9OwotICAgIG15ICRjb25kaXRpb25hbCA9
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn07CisgICAgbXkg
JGNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZGF0YU5vZGUp
OwogCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZQogICAgIEBoZWFkZXJDb250
ZW50ID0gc3BsaXQoIlxyIiwgJGhlYWRlclRlbXBsYXRlKTsKIAotICAgIG15ICRjb25kaXRpb25h
bFN0cmluZzsKLSAgICBpZiAoJGNvbmRpdGlvbmFsKSB7Ci0gICAgICAgICRjb25kaXRpb25hbFN0
cmluZyA9ICJFTkFCTEUoIiAuIGpvaW4oIikgJiYgRU5BQkxFKCIsIHNwbGl0KC8mLywgJGNvbmRp
dGlvbmFsKSkgLiAiKSI7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiNpZiAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuXG4iKTsKLSAgICB9Ci0KKyAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiNpZm5kZWYgJGNsYXNzTmFtZSIgLiAiX0gi
KTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4jZGVmaW5lICRjbGFzc05hbWUiIC4gIl9I
XG5cbiIpOwogCkBAIC0zMTAsNyArMzE3LDcgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIn1cblxuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZiAvLyAkY2xhc3NO
YW1lIiAuICJfSFxuIik7CiAKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmIC8vICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbDsKKyAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKIH0KIAogCkBAIC05MDMsMTM0ICs5MTAsMTM4IEBAIHN1YiBHZW5lcmF0
ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhCiAgICAgICAgICAgICAkYWNjZXNzQ29udHJvbCA9ICJ2ODo6
QUxMX0NBTl9XUklURSI7CiAgICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tE
b21haW5TZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAkYWNjZXNzQ29udHJvbCA9ICJ2ODo6QUxM
X0NBTl9SRUFEIjsKLSAgICAgICAgaWYgKCEoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5
LykgJiYgISgkYXR0ckV4dC0+eyJWOFJlYWRPbmx5In0pKSB7Ci0gICAgICAgICAgICAkYWNjZXNz
Q29udHJvbCAuPSAifHY4OjpBTExfQ0FOX1dSSVRFIjsKKyAgICAgICAgICAgIGlmICghKCRhdHRy
aWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pICYmICEoJGF0dHJFeHQtPnsiVjhSZWFkT25seSJ9
KSkgeworICAgICAgICAgICAgICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OkFMTF9DQU5fV1JJ
VEUiOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQotICAgIGlmICgkYXR0ckV4dC0+
eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKLSAgICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2
ODo6UFJPSElCSVRTX09WRVJXUklUSU5HIjsKLSAgICB9Ci0gICAgJGFjY2Vzc0NvbnRyb2wgPSAi
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KCIgLiAkYWNjZXNzQ29udHJvbCAuICIpIjsK
KyAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RGlzYWxsb3dTaGFkb3dpbmcifSkgeworICAgICAg
ICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6UFJPSElCSVRTX09WRVJXUklUSU5HIjsKKyAg
ICAgICAgfQorICAgICAgICAkYWNjZXNzQ29udHJvbCA9ICJzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4oIiAuICRhY2Nlc3NDb250cm9sIC4gIikiOwogCi0gICAgbXkgJGN1c3RvbUFjY2Vz
c29yID0KLSAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwKLSAgICAgICAgJGF0dHJFeHQt
PnsiQ3VzdG9tU2V0dGVyIn0gfHwKLSAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0g
fHwKLSAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSB8fAotICAgICAgICAkYXR0ckV4dC0+
eyJWOEN1c3RvbVNldHRlciJ9IHx8Ci0gICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVy
In0gfHwKLSAgICAgICAgIiI7Ci0gICAgaWYgKCRjdXN0b21BY2Nlc3NvciBlcSAxKSB7Ci0gICAg
ICAgICMgdXNlIHRoZSBuYW1pbmcgY29udmVuc2lvbiwgaW50ZXJmYWNlICsgKGNhcGl0YWxpemUp
IGF0dHIgbmFtZQotICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAuIFdL
X3VjZmlyc3QoJGF0dHJOYW1lKTsKLSAgICB9Ci0KLSAgICBteSAkZ2V0dGVyOwotICAgIG15ICRz
ZXR0ZXI7Ci0gICAgbXkgJHByb3BBdHRyID0gInY4OjpOb25lIjsKLSAgICBteSAkaGFzQ3VzdG9t
U2V0dGVyID0gMDsKLQotICAgICMgQ2hlY2sgYXR0cmlidXRlcy4KLSAgICBpZiAoJGF0dHJFeHQt
PnsiRG9udEVudW0ifSkgewotICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6RG9udEVudW0iOwot
ICAgIH0KLSAgICBpZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7Ci0gICAg
ICAgICRwcm9wQXR0ciAuPSAifHY4OjpEb250RGVsZXRlIjsKLSAgICB9Ci0KLSAgICBteSAkb25f
cHJvdG8gPSAiMCAvKiBvbiBpbnN0YW5jZSAqLyI7Ci0gICAgbXkgJGRhdGEgPSAiVjhDbGFzc0lu
ZGV4OjpJTlZBTElEX0NMQVNTX0lOREVYIC8qIG5vIGRhdGEgKi8iOwotCi0gICAgIyBDb25zdHJ1
Y3RvcgotICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9y
JC8pIHsKLSAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJp
cE1vZHVsZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOwotICAgICAgICAkY29uc3RydWN0
b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87Ci0gICAgICAgIG15ICRjb25zdHJ1Y3RvckluZGV4
ID0gdWMoJGNvbnN0cnVjdG9yVHlwZSk7Ci0gICAgICAgICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6
JHtjb25zdHJ1Y3RvckluZGV4fSI7Ci0gICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1l
fUludGVybmFsOjoke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JHZXR0ZXIiOwotICAgICAgICAk
c2V0dGVyID0gIjAiOwotICAgICAgICAkcHJvcEF0dHIgPSAidjg6OlJlYWRPbmx5IjsKLQotICAg
ICMgRXZlbnRMaXN0ZW5lcnMKLSAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5
cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7Ci0gICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NV2luZG93IikgewotICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djhET01XaW5k
b3dFdmVudEhhbmRsZXJBY2Nlc3NvckdldHRlciI7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIlY4
Q3VzdG9tOjp2OERPTVdpbmRvd0V2ZW50SGFuZGxlckFjY2Vzc29yU2V0dGVyIjsKLSAgICAgICAg
fSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIkVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVx
ICJEb2N1bWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxCb2R5RWxlbWVudCIgfHwgJGlu
dGVyZmFjZU5hbWUgZXEgIlNWR0VsZW1lbnRJbnN0YW5jZSIgfHwgJGludGVyZmFjZU5hbWUgZXEg
IkhUTUxGcmFtZVNldEVsZW1lbnQiKSB7Ci0gICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9t
Ojp2OEVsZW1lbnRFdmVudEhhbmRsZXJBY2Nlc3NvckdldHRlciI7Ci0gICAgICAgICAgICAkc2V0
dGVyID0gIlY4Q3VzdG9tOjp2OEVsZW1lbnRFdmVudEhhbmRsZXJBY2Nlc3NvclNldHRlciI7Ci0g
ICAgICAgIH0gZWxzZSB7CisgICAgICAgIG15ICRjdXN0b21BY2Nlc3NvciA9CisgICAgICAgICAg
ICAkYXR0ckV4dC0+eyJDdXN0b20ifSB8fAorICAgICAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9t
U2V0dGVyIn0gfHwKKyAgICAgICAgICAgICRhdHRyRXh0LT57IkN1c3RvbUdldHRlciJ9IHx8Cisg
ICAgICAgICAgICAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9IHx8CisgICAgICAgICAgICAkYXR0ckV4
dC0+eyJWOEN1c3RvbVNldHRlciJ9IHx8CisgICAgICAgICAgICAkYXR0ckV4dC0+eyJWOEN1c3Rv
bUdldHRlciJ9IHx8CisgICAgICAgICAgICAiIjsKKyAgICAgICAgaWYgKCRjdXN0b21BY2Nlc3Nv
ciBlcSAxKSB7CisgICAgICAgICAgICAjIHVzZSB0aGUgbmFtaW5nIGNvbnZlbnNpb24sIGludGVy
ZmFjZSArIChjYXBpdGFsaXplKSBhdHRyIG5hbWUKKyAgICAgICAgICAgICRjdXN0b21BY2Nlc3Nv
ciA9ICRpbnRlcmZhY2VOYW1lIC4gV0tfdWNmaXJzdCgkYXR0ck5hbWUpOworICAgICAgICB9CisK
KyAgICAgICAgbXkgJGdldHRlcjsKKyAgICAgICAgbXkgJHNldHRlcjsKKyAgICAgICAgbXkgJHBy
b3BBdHRyID0gInY4OjpOb25lIjsKKyAgICAgICAgbXkgJGhhc0N1c3RvbVNldHRlciA9IDA7CisK
KyAgICAgICAgIyBDaGVjayBhdHRyaWJ1dGVzLgorICAgICAgICBpZiAoJGF0dHJFeHQtPnsiRG9u
dEVudW0ifSkgeworICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OkRvbnRFbnVtIjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7
CisgICAgICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6RG9udERlbGV0ZSI7CisgICAgICAgIH0K
KworICAgICAgICBteSAkb25fcHJvdG8gPSAiMCAvKiBvbiBpbnN0YW5jZSAqLyI7CisgICAgICAg
IG15ICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6SU5WQUxJRF9DTEFTU19JTkRFWCAvKiBubyBkYXRh
ICovIjsKKworICAgICAgICAjIENvbnN0cnVjdG9yCisgICAgICAgIGlmICgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKKyAgICAgICAgICAgIG15ICRjb25z
dHJ1Y3RvclR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1
Y3RvciQvLzsKKyAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvckluZGV4ID0gdWMoJGNvbnN0cnVj
dG9yVHlwZSk7CisgICAgICAgICAgICAkZGF0YSA9ICJWOENsYXNzSW5kZXg6OiR7Y29uc3RydWN0
b3JJbmRleH0iOworICAgICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJu
YWw6OiR7aW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3RvckdldHRlciI7CisgICAgICAgICAgICAkc2V0
dGVyID0gIjAiOworICAgICAgICAgICAgJHByb3BBdHRyID0gInY4OjpSZWFkT25seSI7CisKKyAg
ICAgICAgIyBFdmVudExpc3RlbmVycworICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7CisgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4
Q3VzdG9tOjp2OERPTVdpbmRvd0V2ZW50SGFuZGxlckFjY2Vzc29yR2V0dGVyIjsKKyAgICAgICAg
ICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OERPTVdpbmRvd0V2ZW50SGFuZGxlckFjY2Vz
c29yU2V0dGVyIjsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJFbGVt
ZW50IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVx
ICJIVE1MQm9keUVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJTVkdFbGVtZW50SW5zdGFu
Y2UiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRnJhbWVTZXRFbGVtZW50IikgeworICAgICAg
ICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4RWxlbWVudEV2ZW50SGFuZGxlckFjY2Vz
c29yR2V0dGVyIjsKKyAgICAgICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OEVsZW1l
bnRFdmVudEhhbmRsZXJBY2Nlc3NvclNldHRlciI7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nl
c3NvckdldHRlciI7CisgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJXb3Jr
ZXJDb250ZXh0IiBhbmQgJGF0dHJOYW1lIGVxICJzZWxmIikgeworICAgICAgICAgICAgICAgICAg
ICAkc2V0dGVyID0gIjAiOworICAgICAgICAgICAgICAgICAgICAkcHJvcEF0dHIgPSAidjg6OlJl
YWRPbmx5IjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAk
c2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAjIEN1c3RvbSBHZXR0
ZXIgYW5kIFNldHRlcgorICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b20ifSB8fCAk
YXR0ckV4dC0+eyJWOEN1c3RvbSJ9KSB7CiAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9t
Ojp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwogICAgICAgICAgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJXb3JrZXJDb250ZXh0IiBhbmQgJGF0dHJOYW1lIGVxICJzZWxmIikg
ewogICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7CiAgICAgICAgICAgICAgICAgJHByb3BB
dHRyID0gInY4OjpSZWFkT25seSI7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOwogICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhD
dXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7CiAgICAgICAgICAgICB9
Ci0gICAgICAgIH0KIAotICAgICMgQ3VzdG9tIEdldHRlciBhbmQgU2V0dGVyCi0gICAgfSBlbHNp
ZiAoJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgewotICAg
ICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0
ZXIiOwotICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckNvbnRleHQiIGFuZCAk
YXR0ck5hbWUgZXEgInNlbGYiKSB7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIjAiOwotICAgICAg
ICAgICAgJHByb3BBdHRyID0gInY4OjpSZWFkT25seSI7Ci0gICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICMgQ3VzdG9tIFNldHRlcgorICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b21T
ZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3RvbVNldHRlciJ9KSB7CiAgICAgICAgICAgICAk
aGFzQ3VzdG9tU2V0dGVyID0gMTsKKyAgICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VO
YW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwogICAgICAgICAgICAgJHNldHRl
ciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yU2V0dGVyIjsKKworICAg
ICAgICAjIEN1c3RvbSBHZXR0ZXIKKyAgICAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9t
R2V0dGVyIn0pIHsKKyAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21B
Y2Nlc3Nvcn1BY2Nlc3NvckdldHRlciI7CisgICAgICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJm
YWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKKworICAgICAgICAjIFJl
cGxhY2VhYmxlCisgICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0pIHsK
KyAgICAgICAgICAgICMgUmVwbGFjZWFibGUgYWNjZXNzb3IgaXMgcHV0IG9uIGluc3RhbmNlIHRl
bXBsYXRlIHdpdGggUmVhZE9ubHkgYXR0cmlidXRlLgorICAgICAgICAgICAgJGdldHRlciA9ICIk
e2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciI7CisgICAgICAg
ICAgICAkc2V0dGVyID0gIjAiOworCisgICAgICAgICAgICAjIE1hcmsgdG8gYXZvaWQgZHVwbGlj
YXRlIHY4OjpSZWFkT25seSBmbGFncyBpbiBvdXRwdXQuCisgICAgICAgICAgICAkaGFzQ3VzdG9t
U2V0dGVyID0gMTsKKworICAgICAgICAgICAgIyBIYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSBvZiB3
aW5kb3cudG9wIGJlaW5nIG1hcmtlZCB1cHN0cmVhbSBhcyBSZXBsYWNlYWJsZS4KKyAgICAgICAg
ICAgICMgRklYTUU6IEludmVzdGlnYXRlIHdoeSBbUmVwbGFjZWFibGVdIGlzIG5vdCBtYXJrZWQg
YXMgUmVhZE9ubHkKKyAgICAgICAgICAgICMgdXBzdHJlYW0gYW5kIHJlYWNoIHBhcml0eS4KKyAg
ICAgICAgICAgIGlmICghKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIGFuZCAkYXR0ck5h
bWUgZXEgInRvcCIpKSB7CisgICAgICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OlJlYWRP
bmx5IjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAjIE5vcm1hbAorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0
ck5hbWV9QXR0ckdldHRlciI7CisgICAgICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJmYWNlTmFt
ZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKICAgICAgICAgfQogCi0gICAgIyBD
dXN0b20gU2V0dGVyCi0gICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwg
JGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSkgewotICAgICAgICAkaGFzQ3VzdG9tU2V0dGVy
ID0gMTsKLSAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0
ck5hbWV9QXR0ckdldHRlciI7Ci0gICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0
b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7Ci0KLSAgICAjIEN1c3RvbSBHZXR0ZXIKLSAgICB9
IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSkgewotICAgICAgICAkZ2V0dGVyID0g
IlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwotICAgICAgICAk
c2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVy
IjsKLQotICAgICMgUmVwbGFjZWFibGUKLSAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJSZXBsYWNl
YWJsZSJ9KSB7Ci0gICAgICAgICMgUmVwbGFjZWFibGUgYWNjZXNzb3IgaXMgcHV0IG9uIGluc3Rh
bmNlIHRlbXBsYXRlIHdpdGggUmVhZE9ubHkgYXR0cmlidXRlLgotICAgICAgICAkZ2V0dGVyID0g
IiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKLSAgICAg
ICAgJHNldHRlciA9ICIwIjsKLQotICAgICAgICAjIE1hcmsgdG8gYXZvaWQgZHVwbGljYXRlIHY4
OjpSZWFkT25seSBmbGFncyBpbiBvdXRwdXQuCi0gICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAx
OwotCi0gICAgICAgICMgSGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ugb2Ygd2luZG93LnRvcCBiZWlu
ZyBtYXJrZWQgdXBzdHJlYW0gYXMgUmVwbGFjZWFibGUuCi0gICAgICAgICMgRklYTUU6IEludmVz
dGlnYXRlIHdoeSBbUmVwbGFjZWFibGVdIGlzIG5vdCBtYXJrZWQgYXMgUmVhZE9ubHkKLSAgICAg
ICAgIyB1cHN0cmVhbSBhbmQgcmVhY2ggcGFyaXR5LgotICAgICAgICBpZiAoISgkaW50ZXJmYWNl
TmFtZSBlcSAiRE9NV2luZG93IiBhbmQgJGF0dHJOYW1lIGVxICJ0b3AiKSkgeworICAgICAgICBp
ZiAoJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSAmJiAhJGhhc0N1c3RvbVNldHRlcikgeworICAg
ICAgICAgICAgJHNldHRlciA9ICIwIjsKICAgICAgICAgICAgICRwcm9wQXR0ciAuPSAifHY4OjpS
ZWFkT25seSI7CiAgICAgICAgIH0KIAotICAgICMgTm9ybWFsCi0gICAgfSBlbHNlIHsKLSAgICAg
ICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdl
dHRlciI7Ci0gICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0
dHJOYW1lfUF0dHJTZXR0ZXIiOwotICAgIH0KLQotICAgIGlmICgkYXR0ckV4dC0+eyJSZXBsYWNl
YWJsZSJ9ICYmICEkaGFzQ3VzdG9tU2V0dGVyKSB7Ci0gICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0g
ICAgICAgICRwcm9wQXR0ciAuPSAifHY4OjpSZWFkT25seSI7Ci0gICAgfQorICAgICAgICAjIFJl
YWQgb25seSBhdHRyaWJ1dGVzCisgICAgICAgIGlmICgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVh
ZG9ubHkvIHx8ICRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkgeworICAgICAgICAgICAgJHNldHRl
ciA9ICIwIjsKKyAgICAgICAgfQogCi0gICAgIyBSZWFkIG9ubHkgYXR0cmlidXRlcwotICAgIGlm
ICgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvIHx8ICRhdHRyRXh0LT57IlY4UmVhZE9u
bHkifSkgewotICAgICAgICAkc2V0dGVyID0gIjAiOwotICAgIH0KKyAgICAgICAgIyBBbiBhY2Nl
c3NvciBjYW4gYmUgaW5zdGFsbGVkIG9uIHRoZSBwcm90bworICAgICAgICBpZiAoJGF0dHJFeHQt
PnsidjhPblByb3RvIn0pIHsKKyAgICAgICAgICAgICRvbl9wcm90byA9ICIxIC8qIG9uIHByb3Rv
ICovIjsKKyAgICAgICAgfQogCi0gICAgIyBBbiBhY2Nlc3NvciBjYW4gYmUgaW5zdGFsbGVkIG9u
IHRoZSBwcm90bwotICAgIGlmICgkYXR0ckV4dC0+eyJ2OE9uUHJvdG8ifSkgewotICAgICAgICAk
b25fcHJvdG8gPSAiMSAvKiBvbiBwcm90byAqLyI7Ci0gICAgfQorICAgICAgICBteSAkY29tbWVu
dEluZm8gPSAiQXR0cmlidXRlICckYXR0ck5hbWUnIChUeXBlOiAnIiAuICRhdHRyaWJ1dGUtPnR5
cGUgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAiJyBFeHRBdHRyOiAnIiAuIGpvaW4oJyAn
LCBrZXlzKCV7JGF0dHJFeHR9KSkgLiAiJykiOworICAgICAgICAKKyAgICAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWdu
YXR1cmUpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAKLSAgICBteSAkY29tbWVudEluZm8g
PSAiQXR0cmlidXRlICckYXR0ck5hbWUnIChUeXBlOiAnIiAuICRhdHRyaWJ1dGUtPnR5cGUgLgot
ICAgICAgICAgICAgICAgICAgICAgICInIEV4dEF0dHI6ICciIC4gam9pbignICcsIGtleXMoJXsk
YXR0ckV4dH0pKSAuICInKSI7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKICAgLy8gJGNvbW1lbnRJbmZvCiAgIHsgIiRh
dHRyTmFtZSIsCiAgICAgJGdldHRlciwKQEAgLTEwNDAsNiArMTA1MSw3IEBAIHN1YiBHZW5lcmF0
ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhCiAgICAgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPigkcHJvcEF0dHIpLAogICAgICRvbl9wcm90byB9LAogRU5ECisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKICAgICB9CiB9CiAKQEAgLTEwNTQsNyArMTA2Niw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgbXkgJGNsYXNzSW5kZXggPSB1YygkY29kZUdlbmVyYXRv
ci0+U3RyaXBNb2R1bGUoJGludGVyZmFjZU5hbWUpKTsKIAogICAgIG15ICRoYXNMZWdhY3lQYXJl
bnQgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZWdhY3lQYXJlbnQifTsKLSAg
ICBteSAkY29uZGl0aW9uYWwgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25k
aXRpb25hbCJ9OworICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGRhdGFOb2RlKTsKIAogICAgIEBhbGxQYXJlbnRzID0gJGNvZGVHZW5lcmF0b3It
PkZpbmRQYXJlbnRzUmVjdXJzaXZlbHkoJGRhdGFOb2RlKTsKIApAQCAtMTA2NywxMSArMTA3OSw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAiI2luY2x1ZGUgXCJWOEJp
bmRpbmcuaFwiXG5cbiIgLgogICAgICAgICAgIiN1bmRlZiBMT0dcblxuIik7CiAKLSAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgaWYgKCRjb25kaXRpb25hbCkgewotICAgICAgICAkY29u
ZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBzcGxpdCgv
Ji8sICRjb25kaXRpb25hbCkpIC4gIikiOwotICAgICAgICBwdXNoKEBpbXBsRml4ZWRIZWFkZXIs
ICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKTsKLSAgICB9CisgICAgcHVzaChAaW1w
bEZpeGVkSGVhZGVyLCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwogCiAgICAgaWYgKCRjbGFzc05hbWUgPX4gL15WOFNWR0FuaW1hdGVkLykg
ewogICAgICAgICBBZGRJbmNsdWRlc0ZvclNWR0FuaW1hdGVkVHlwZSgkaW50ZXJmYWNlTmFtZSk7
CkBAIC0xMzg3LDcgKzEzOTUsNyBAQCBFTkQKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIEVORAog
Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsOworICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYg
Ly8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIH0KIAog
CkBAIC0yMDQwLDggKzIwNDgsOCBAQCBzdWIgUmV0dXJuTmF0aXZlVG9KU1ZhbHVlCiAgICAgfQog
CiAgICAgaWYgKCR0eXBlIGVxICJSR0JDb2xvciIpIHsKLSAgICAgICAgbXkgJGNvbnN0cnVjdCA9
ICJSZWZQdHI8UkdCQ29sb3I+IHJnYmNvbG9yID0gUkdCQ29sb3I6OmNyZWF0ZSgkdmFsdWUpO1xu
IjsNCi0gICAgICAgIG15ICRjb252ZXJ0ID0gIlY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmpl
Y3QoVjhDbGFzc0luZGV4OjpSR0JDT0xPUiwgV1RGOjpnZXRQdHIocmdiY29sb3IpKSI7DQorICAg
ICAgICBteSAkY29uc3RydWN0ID0gIlJlZlB0cjxSR0JDb2xvcj4gcmdiY29sb3IgPSBSR0JDb2xv
cjo6Y3JlYXRlKCR2YWx1ZSk7XG4iOworICAgICAgICBteSAkY29udmVydCA9ICJWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6UkdCQ09MT1IsIFdURjo6Z2V0UHRy
KHJnYmNvbG9yKSkiOwogICAgICAgICByZXR1cm4gJGNvbnN0cnVjdCAuICRpbmRlbnQgLiAicmV0
dXJuICIgLiAkY29udmVydDsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvRE9N
T2JqZWN0c0luY2x1ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9i
amVjdHNJbmNsdWRlLmgJKHJldmlzaW9uIDQ2MDM3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01PYmplY3RzSW5jbHVkZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDExIEBACiAj
aW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVkZSAiWFBhdGhSZXN1bHQuaCIKIAor
I2lmIEVOQUJMRShEQVRBR1JJRCkKKyNpbmNsdWRlICJEYXRhR3JpZENvbHVtbi5oIgorI2luY2x1
ZGUgIkRhdGFHcmlkQ29sdW1uTGlzdC5oIgorI2VuZGlmIC8vIERBVEFHUklECisKICNpZiBFTkFC
TEUoRE9NX1NUT1JBR0UpCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VF
dmVudC5oIgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkocmV2aXNpb24g
NDYwMzcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0NSw3ICs0NDUsMTMgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4RAogICAgIGNhc2UgVjhDbGFzc0luZGV4OjpDTElFTlRSRUNUTElTVDoKICAgICAg
ICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRJbmRleGVkUHJvcGVydHlIYW5k
bGVyKFVTRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihDbGllbnRSZWN0TGlzdCkpOwogICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgorI2lmIEVOQUJMRShEQVRBR1JJRCkKKyAgICBjYXNlIFY4
Q2xhc3NJbmRleDo6REFUQUdSSURDT0xVTU5MSVNUOgorICAgICAgICBkZXNjcmlwdG9yLT5JbnN0
YW5jZVRlbXBsYXRlKCktPlNldEluZGV4ZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX0lOREVYRURfUFJP
UEVSVFlfR0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCkpOworICAgICAgICBkZXNjcmlwdG9yLT5J
bnN0YW5jZVRlbXBsYXRlKCktPlNldE5hbWVkUHJvcGVydHlIYW5kbGVyKFVTRV9OQU1FRF9QUk9Q
RVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KSk7CisgICAgICAgIGJyZWFrOworI2VuZGlm
CisgICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTc4MCw3ICs3ODYs
MTggQEAgYm9vbCBWOERPTVdyYXBwZXI6OmlzV3JhcHBlck9mVHlwZSh2ODo6SAogI2RlZmluZSBG
T1JfRUFDSF9WSURFT19UQUcobWFjcm8pCiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVRBR1JJRCkK
KyNkZWZpbmUgRk9SX0VBQ0hfREFUQUdSSURfVEFHKG1hY3JvKSAgICAgICAgICAgICAgIFwKKyAg
bWFjcm8oZGF0YWdyaWQsIERBVEFHUklEKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbWFj
cm8oZGNlbGwsIERBVEFHUklEQ0VMTCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbWFjcm8o
ZGNvbCwgREFUQUdSSURDT0wpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbWFjcm8oZHJv
dywgREFUQUdSSURST1cpCisjZWxzZQorI2RlZmluZSBGT1JfRUFDSF9EQVRBR1JJRF9UQUcobWFj
cm8pCisjZW5kaWYKKwogI2RlZmluZSBGT1JfRUFDSF9UQUcobWFjcm8pICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIEZPUl9FQUNIX0RBVEFHUklEX1RBRyhtYWNybykgICAgICAgICAgICAg
ICAgICAgXAogICAgIG1hY3JvKGEsIEFOQ0hPUikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIG1hY3JvKGFwcGxldCwgQVBQTEVUKSAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIG1hY3JvKGFyZWEsIEFSRUEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShEQVRBR1JJRCkKKworI2luY2x1ZGUgIlY4RGF0YUdyaWREYXRhU291cmNlLmgiCisK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRN
TERhdGFHcmlkRWxlbWVudC5oIgorI2luY2x1ZGUgIlY4SFRNTERhdGFHcmlkRWxlbWVudC5oIgor
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVjhEYXRhR3JpZERhdGFTb3VyY2U6OlY4RGF0YUdy
aWREYXRhU291cmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhU291cmNlLCBGcmFtZSogZnJh
bWUpCisgICAgOiBtX2RhdGFTb3VyY2Uodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPjo6TmV3KGRh
dGFTb3VyY2UpKQorICAgICwgbV9mcmFtZShmcmFtZSkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAg
VjhHQ0NvbnRyb2xsZXI6OnJlZ2lzdGVyR2xvYmFsSGFuZGxlKERBVEFTT1VSQ0UsIHRoaXMsIG1f
ZGF0YVNvdXJjZSk7CisjZW5kaWYKK30KKworVjhEYXRhR3JpZERhdGFTb3VyY2U6On5WOERhdGFH
cmlkRGF0YVNvdXJjZSgpCit7CisjaWZuZGVmIE5ERUJVRworICAgIFY4R0NDb250cm9sbGVyOjp1
bnJlZ2lzdGVyR2xvYmFsSGFuZGxlKHRoaXMsIG1fZGF0YVNvdXJjZSk7CisjZW5kaWYKKyAgICBt
X2RhdGFTb3VyY2UuRGlzcG9zZSgpOworICAgIG1fZGF0YVNvdXJjZS5DbGVhcigpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUdSSUQpCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNl
LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisKKyNpZm5kZWYgVjhEYXRhR3JpZERhdGFTb3VyY2VfaAorI2RlZmluZSBW
OERhdGFHcmlkRGF0YVNvdXJjZV9oCisKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisKKyNpbmNsdWRl
ICJEYXRhR3JpZERhdGFTb3VyY2UuaCIKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgSFRNTERhdGFHcmlkRWxlbWVudDsKKworY2xhc3Mg
VjhEYXRhR3JpZERhdGFTb3VyY2UgOiBwdWJsaWMgRGF0YUdyaWREYXRhU291cmNlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWOERhdGFHcmlkRGF0YVNvdXJjZT4gY3JlYXRlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhU291cmNlLCBGcmFtZSogZnJhbWUpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFY4RGF0YUdyaWREYXRhU291cmNlKGRhdGFTb3VyY2Us
IGZyYW1lKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+VjhEYXRhR3JpZERhdGFTb3VyY2UoKTsK
KworICAgIHZpcnR1YWwgYm9vbCBpc0pTRGF0YUdyaWREYXRhU291cmNlKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqc0RhdGFTb3VyY2UoKSBjb25z
dCB7IHJldHVybiBtX2RhdGFTb3VyY2U7IH0KKworcHJpdmF0ZToKKyAgICBWOERhdGFHcmlkRGF0
YVNvdXJjZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIEZyYW1lKik7CisKKyAgICB2ODo6UGVyc2lz
dGVudDx2ODo6VmFsdWU+IG1fZGF0YVNvdXJjZTsKKyAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7
Cit9OworCitpbmxpbmUgVjhEYXRhR3JpZERhdGFTb3VyY2UqIGFzVjhEYXRhR3JpZERhdGFTb3Vy
Y2UoRGF0YUdyaWREYXRhU291cmNlKiBkYXRhU291cmNlKQoreworICAgIEFTU0VSVChkYXRhU291
cmNlLT5pc0pTRGF0YUdyaWREYXRhU291cmNlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxW
OERhdGFHcmlkRGF0YVNvdXJjZSo+KGRhdGFTb3VyY2UpOworfQorCitpbmxpbmUgY29uc3QgVjhE
YXRhR3JpZERhdGFTb3VyY2UqIGFzVjhEYXRhR3JpZERhdGFTb3VyY2UoY29uc3QgRGF0YUdyaWRE
YXRhU291cmNlKiBkYXRhU291cmNlKQoreworICAgIEFTU0VSVChkYXRhU291cmNlLT5pc0pTRGF0
YUdyaWREYXRhU291cmNlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBWOERhdGFH
cmlkRGF0YVNvdXJjZSo+KGRhdGFTb3VyY2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUdSSUQpCisjZW5kaWYgLy8gVjhEYXRhR3JpZERhdGFT
b3VyY2VfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERhdGFH
cmlkRGF0YVNvdXJjZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gNDYwMzcpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDcgKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYoRVZFTlRfTElTVEVORVIp
ICAgICAgICAgICAgIFwKICAgICBWKE5PREVfRklMVEVSKSAgICAgICAgICAgICAgICBcCiAgICAg
VihTQ1JJUFRJTlNUQU5DRSkgICAgICAgICAgICAgXAotICAgIFYoU0NSSVBUVkFMVUUpCisgICAg
VihTQ1JJUFRWQUxVRSkgICAgICAgICAgICAgICAgXAorICAgIFYoREFUQVNPVVJDRSkKIAogCiAg
ICAgLy8gSG9zdCBpbmZvcm1hdGlvbiBvZiBwZXJzaXN0ZW50IGhhbmRsZXMuCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SW5kZXguaAkocmV2aXNpb24gNDYwMzcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SW5kZXguaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMjAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1
bmN0aW9uVGVtcGxhdGVGYWN0b3J5KSgpOwogCisjaWYgRU5BQkxFKERBVEFHUklEKQorI2RlZmlu
ZSBEQVRBR1JJRF9IVE1MRUxFTUVOVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIFYoSFRNTERBVEFHUklEQ0VMTEVMRU1FTlQsIEhUTUxEYXRhR3JpZENl
bGxFbGVtZW50KSAgICAgICAgICAgICAgICAgXAorICAgIFYoSFRNTERBVEFHUklEQ09MRUxFTUVO
VCwgSFRNTERhdGFHcmlkQ29sRWxlbWVudCkgICAgICAgICAgICAgICAgICAgXAorICAgIFYoSFRN
TERBVEFHUklERUxFTUVOVCwgSFRNTERhdGFHcmlkRWxlbWVudCkgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIFYoSFRNTERBVEFHUklEUk9XRUxFTUVOVCwgSFRNTERhdGFHcmlkUm93RWxl
bWVudCkKKyNkZWZpbmUgREFUQUdSSURfTk9OTk9ERV9UWVBFUyhWKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKERBVEFHUklEQ09MVU1OLCBEYXRhR3JpZENv
bHVtbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKERBVEFHUklE
Q09MVU1OTElTVCwgRGF0YUdyaWRDb2x1bW5MaXN0KQorI2Vsc2UKKyNkZWZpbmUgREFUQUdSSURf
SFRNTEVMRU1FTlRfVFlQRVMoVikKKyNkZWZpbmUgREFUQUdSSURfTk9OTk9ERV9UWVBFUyhWKQor
I2VuZGlmCisKICNpZiBFTkFCTEUoVklERU8pCiAjZGVmaW5lIFZJREVPX0hUTUxFTEVNRU5UX1RZ
UEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihIVE1M
QVVESU9FTEVNRU5ULCBIVE1MQXVkaW9FbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCkBAIC04MCw5ICs5NCw3IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGwKICAgICBWKEFUVFIsIEF0dHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKENIQVJBQ1RFUkRBVEEsIENoYXJhY3Rl
ckRhdGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKENEQVRB
U0VDVElPTiwgQ0RBVEFTZWN0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBWKENPTU1FTlQsIENvbW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwNCi0gICAgVihEQVRBR1JJRENPTFVNTiwgRGF0YUdyaWRD
b2x1bW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgIFYoREFUQUdS
SURDT0xVTU5MSVNULCBEYXRhR3JpZENvbHVtbkxpc3QpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIFYoQ09NTUVOVCwgQ29tbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoRE9DVU1FTlQsIERvY3VtZW50KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoRE9DVU1FTlRG
UkFHTUVOVCwgRG9jdW1lbnRGcmFnbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIFYoRE9DVU1FTlRUWVBFLCBEb2N1bWVudFR5cGUpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXApAQCAtMTA0LDEwICsxMTYsNiBAQCB0eXBlZGVmIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihIVE1MQlJFTEVNRU5ULCBIVE1MQlJFbGVt
ZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihIVE1MQlVU
VE9ORUxFTUVOVCwgSFRNTEJ1dHRvbkVsZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgVihIVE1MQ0FOVkFTRUxFTUVOVCwgSFRNTENhbnZhc0VsZW1lbnQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgVihIVE1MREFUQUdSSURDRUxMRUxFTUVOVCwgSFRN
TERhdGFHcmlkQ2VsbEVsZW1lbnQpICAgICAgICAgICAgICAgICBcCi0gICAgVihIVE1MREFUQUdS
SURDT0xFTEVNRU5ULCBIVE1MRGF0YUdyaWRDb2xFbGVtZW50KSAgICAgICAgICAgICAgICAgICBc
Ci0gICAgVihIVE1MREFUQUdSSURFTEVNRU5ULCBIVE1MRGF0YUdyaWRFbGVtZW50KSAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgVihIVE1MREFUQUdSSURST1dFTEVNRU5ULCBIVE1MRGF0
YUdyaWRSb3dFbGVtZW50KSAgICAgICAgICAgICAgICAgICBcCiAgICAgVihIVE1MRElSRUNUT1JZ
RUxFTUVOVCwgSFRNTERpcmVjdG9yeUVsZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgVihIVE1MRElWRUxFTUVOVCwgSFRNTERpdkVsZW1lbnQpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgVihIVE1MRExJU1RFTEVNRU5ULCBIVE1MRExpc3RFbGVtZW50
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNTUsNiArMTYzLDcgQEAgdHlw
ZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAogICAgIFYoSFRNTFRJVExFRUxF
TUVOVCwgSFRNTFRpdGxlRWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIFYoSFRNTFVMSVNURUxFTUVOVCwgSFRNTFVMaXN0RWxlbWVudCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIFYoSFRNTEVMRU1FTlQsIEhUTUxFbGVtZW50KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIERBVEFHUklEX0hUTUxFTEVN
RU5UX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IFZJREVPX0hUTUxFTEVNRU5UX1RZUEVTKFYpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikK
QEAgLTM3Nyw2ICszODYsNyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsCiAgICAgVihYUEFUSFJFU1VMVCwgWFBhdGhSZXN1bHQpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihYU0xUUFJPQ0VTU09SLCBYU0xUUHJvY2Vzc29y
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgQUNUSVZFX0RPTV9P
QkpFQ1RfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgREFUQUdSSURfTk9OTk9ERV9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgVklERU9fTk9OTk9ERV9UWVBFUyhWKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgU0hBUkVEX1dPUktFUl9O
T05OT0RFX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKQpAQCAtMzkwLDE0ICs0MDAsMTQgQEAg
dHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAogICAgIFYoU1FMVFJBTlNB
Q1RJT04sIFNRTFRyYW5zYWN0aW9uKQogI2Vsc2UKICNkZWZpbmUgRE9NX09CSkVDVF9EQVRBQkFT
RV9UWVBFUyhWKQotI2VuZGlmDQotDQotI2lmIEVOQUJMRShET01fU1RPUkFHRSkNCi0jZGVmaW5l
IERPTV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcDQotICAgIFYoU1RPUkFHRSwgU3RvcmFnZSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KLSAgICBWKFNUT1JBR0VFVkVOVCwgU3RvcmFn
ZUV2ZW50KQ0KLSNlbHNlDQotI2RlZmluZSBET01fT0JKRUNUX1NUT1JBR0VfVFlQRVMoVikNCisj
ZW5kaWYKKworI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKyNkZWZpbmUgRE9NX09CSkVDVF9TVE9S
QUdFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBW
KFNUT1JBR0UsIFN0b3JhZ2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBWKFNUT1JBR0VFVkVOVCwgU3RvcmFnZUV2ZW50KQorI2Vsc2UKKyNk
ZWZpbmUgRE9NX09CSkVDVF9TVE9SQUdFX1RZUEVTKFYpCiAjZW5kaWYKIAogI2RlZmluZSBET01f
T0JKRUNUX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5n
LmgJKHJldmlzaW9uIDQ2MDM3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw4ICs0MDgsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlRmlsdGVyQWNjZXB0Tm9k
ZSk7CiAKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihIVE1MRGF0YUdyaWRFbGVt
ZW50RGF0YVNvdXJjZSk7Ci0KICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MRm9ybUVsZW1l
bnRTdWJtaXQpOwogCiAgICAgICAgIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKERPTVdp
bmRvdyk7CkBAIC00NTQsNiArNDUyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhTUUxSZXN1bHRTZXRSb3dMaXN0SXRlbSk7CiAKICAgICAgICAgREVD
TEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihDbGllbnRSZWN0TGlzdCk7CisgIAorI2lmIEVO
QUJMRShEQVRBR1JJRCkKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihIVE1MRGF0
YUdyaWRFbGVtZW50RGF0YVNvdXJjZSk7CisgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJU
WV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KTsKKyAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9Q
RVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KTsKKyNlbmRpZiAgICAgIAogCiAjaWYgRU5B
QkxFKERPTV9TVE9SQUdFKQogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVS
KFN0b3JhZ2UpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRGF0YUdy
aWRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxEYXRhR3JpZEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA0NjAzNykKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERhdGFHcmlkRWxlbWVudEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRGF0YUdyaWRFbGVt
ZW50LmgiCisjaW5jbHVkZSAiVjhEYXRhR3JpZERhdGFTb3VyY2UuaCIKIAogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAKQEAgLTM3LDE5ICszOSwzNCBAQAogI2luY2x1ZGUgIlY4Q3VzdG9t
QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAorI2lmIEVOQUJMRShEQVRBR1JJRCkK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBQ0NFU1NPUl9HRVRURVIoSFRNTERhdGFHcmlkRWxl
bWVudERhdGFTb3VyY2UpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTERhdGFHcmlkRWxlbWVu
dC5kYXRhU291cmNlLl9nZXQiKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKKyAgICBIVE1MRGF0YUdyaWRF
bGVtZW50KiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPEhUTUxE
YXRhR3JpZEVsZW1lbnQ+KGhvbGRlcik7CisgICAgRGF0YUdyaWREYXRhU291cmNlKiBkYXRhU291
cmNlID0gaW1wLT5kYXRhU291cmNlKCk7CisgICAgaWYgKGRhdGFTb3VyY2UgJiYgZGF0YVNvdXJj
ZS0+aXNKU0RhdGFHcmlkRGF0YVNvdXJjZSgpKQorICAgICAgICByZXR1cm4gYXNWOERhdGFHcmlk
RGF0YVNvdXJjZShkYXRhU291cmNlKS0+anNEYXRhU291cmNlKCk7CiAgICAgcmV0dXJuIHY4OjpO
dWxsKCk7CiB9CiAKIEFDQ0VTU09SX1NFVFRFUihIVE1MRGF0YUdyaWRFbGVtZW50RGF0YVNvdXJj
ZSkKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRGF0YUdyaWRFbGVtZW50LmRhdGFTb3VyY2Uu
X3NldCIpOwotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOworICAgIEhUTUxEYXRhR3JpZEVsZW1lbnQqIGltcCA9
IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRNTERhdGFHcmlkRWxlbWVu
dD4oaG9sZGVyKTsKKyAgICBQYXNzUmVmUHRyPERhdGFHcmlkRGF0YVNvdXJjZT4gZGF0YVNvdXJj
ZTsKKyAgICBpZiAoIXZhbHVlLklzRW1wdHkoKSkgeworICAgICAgICBGcmFtZSAqZnJhbWUgPSBp
bXAtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgICAgIGRhdGFTb3VyY2UgPSBWOERhdGFHcmlk
RGF0YVNvdXJjZTo6Y3JlYXRlKHZhbHVlLCBmcmFtZSk7CisgICAgfQorICAgIGltcC0+c2V0RGF0
YVNvdXJjZShkYXRhU291cmNlLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgRU5BQkxFKERBVEFHUklEKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDYwNTApCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAw
OS0wNy0xNyAgSmVucyBBbGZrZSAgPHNuZWpAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIFY4IGJpbmRpbmdzIGZvciBE
YXRhR3JpZCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI3MzgzCisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1
bS9pc3N1ZXMvZGV0YWlsP2lkPTE2NzMwCisKKyAgICAgICAgVGVzdHM6IEVuaGFuY2VkIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvKgorICAgICAgICB0byBoYW5kbGUg
ZXhjZXB0aW9ucywgY2hlY2sgYXBwcm9wcmlhdGUgSlMgcHJvdG90eXBlcywgYW5kCisgICAgICAg
IHRlc3QgY29sdW1uLWxpc3QncyBpdGVtKCkgbWV0aG9kIGFzIHdlbGwgYXMgYXJyYXktaW5kZXhp
bmcuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29s
dW1ucy1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTERhdGFHcmlk
RWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9I
VE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tYXR0cmlidXRlcy5odG1sOgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRv
bS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9E
YXRhR3JpZENvbHVtbnMtZG9tLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vSFRNTERhdGFHcmlk
RWxlbWVudC9EYXRhR3JpZERhdGFTb3VyY2UtYmFzaWMuaHRtbDoKKwogMjAwOS0wNy0xNyAgRHJl
dyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
dmlkIExldmluLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVu
dC9EYXRhR3JpZENvbHVtbnMtYmFzaWMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJhc2lj
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDYwMzcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBAIFBBU1M6IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdy
aWQuY29sdW1ucyAKIFBBU1M6IEluaXRpYWwgbGVuZ3RoIG9mIGRhdGFncmlkLmNvbHVtbnMgaXMg
MC4KIFBBU1M6IENvbHVtbiByZXR1cm5lZCBmcm9tIGFkZC4KIFBBU1M6IFdlIGhhdmUgb25lIGNv
bHVtbiBpbiB0aGUgbGlzdC4KK1BBU1M6IFRoZSBjb2x1bW4gYXQgaXRlbSgwKSBpcyB0aGUgY29s
dW1uIHdlIGdvdCBiYWNrIGZyb20gYWRkLgogUEFTUzogVGhlIGNvbHVtbiBhdCBpbmRleCAwIGlz
IHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQuCiBQQVNTOiBUaGUgY29sdW1uIHdoZW4g
cmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUgd2UgZ290IGJhY2sgZnJvbSBhZGQuCiBQQVNT
OiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJvbWNvbCBhcyBleHBlY3RlZC4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJhc2ljLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVu
dC9EYXRhR3JpZENvbHVtbnMtYmFzaWMuaHRtbAkocmV2aXNpb24gNDYwMzcpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsOCBAQAogICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKKyAgICAgICAgdHJ5IHsK
KwogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKG1zZyArICJcbiIpKTsKQEAgLTQ2LDE3ICs0OCwyNyBAQAogICAgICAgICAgICAg
bG9nKCJGQUlMOiBFeHBlY3RlZCBvbmUgY29sdW1uIGluIHRoZSBsaXN0IGJ1dCBoYXZlICIgKyBk
YXRhZ3JpZC5jb2x1bW5zLmxlbmd0aCArICIgY29sdW1ucyBpbnN0ZWFkLiIpOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbHVtbiB3ZSBnb3QgYmFjayBm
cm9tIGFkZCBpcyB0aGUgb25lIGluIHRoZSBsaXN0LgotICAgICAgICBpZiAoZGF0YWdyaWQuY29s
dW1uc1swXSA9PSBjb2x1bW4pIHsKKyAgICAgICAgLy8gVXNlIGl0ZW0oMCkgdG8gbWFrZSBzdXJl
IHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQgaXMgdGhlIG9uZSBpbiB0aGUgbGlzdC4K
KyAgICAgICAgdmFyIGdvdENvbHVtbiA9IGRhdGFncmlkLmNvbHVtbnMuaXRlbSgwKTsKKyAgICAg
ICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKKyAgICAgICAgICAgIGxvZygiUEFTUzogVGhl
IGNvbHVtbiBhdCBpdGVtKDApIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQuIik7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gYXQg
aXRlbSgwKSAoIiArIGdvdENvbHVtbiArICIpIGlzIG5vdCB0aGUgb25lIHdlIGV4cGVjdGVkICgi
ICsgY29sdW1uICsgIikuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFVzZSBb
MF0gdG8gbWFrZSBzdXJlIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQgaXMgdGhlIG9u
ZSBpbiB0aGUgbGlzdC4KKyAgICAgICAgZ290Q29sdW1uID0gZGF0YWdyaWQuY29sdW1uc1swXTsK
KyAgICAgICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKICAgICAgICAgICAgIGxvZygiUEFT
UzogVGhlIGNvbHVtbiBhdCBpbmRleCAwIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBh
ZGQuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1
bW4gYXQgaW5kZXggMCBpcyBub3QgdGhlIG9uZSB3ZSBleHBlY3RlZC4iKTsKKyAgICAgICAgICAg
IGxvZygiRkFJTDogVGhlIGNvbHVtbiBhdCBpbmRleCAwICgiICsgZ290Q29sdW1uICsgIikgaXMg
bm90IHRoZSBvbmUgd2UgZXhwZWN0ZWQgKCIgKyBjb2x1bW4gKyAiKS4iKTsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnNbImZyb21jb2wiXSA9PSBjb2x1
bW4pIHsKKyAgICAgICAgZ290Q29sdW1uID0gZGF0YWdyaWQuY29sdW1uc1siZnJvbWNvbCJdOwor
ICAgICAgICBpZiAoZ290Q29sdW1uID09IGNvbHVtbikgewogICAgICAgICAgICAgbG9nKCJQQVNT
OiBUaGUgY29sdW1uIHdoZW4gcmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUgd2UgZ290IGJh
Y2sgZnJvbSBhZGQuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6
IFRoZSBjb2x1bW4gd2hlbiByZWZlcmVuY2VkIGJ5IG5hbWUgaXMgbm90IHRoZSBvbmUgd2UgZXhw
ZWN0ZWQuIik7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gd2hlbiByZWZlcmVu
Y2VkIGJ5IG5hbWUgKCIgKyBnb3RDb2x1bW4gKyAiKSBpcyBub3QgdGhlIG9uZSB3ZSBleHBlY3Rl
ZCAoIiArIGNvbHVtbiArICIpLiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRXhhbWluZSB0
aGUgY29sdW1uJ3MgcHJvcGVydGllcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgd2hhdCB3ZSBleHBl
Y3RlZC4KQEAgLTk3LDYgKzEwOSwxMCBAQAogICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUgY29s
dW1uIGlzIG5vdCB0aGUgcHJpbWFyeSBjb2x1bW4gYXMgZXhwZWN0ZWQuIik7CiAgICAgICAgIH0K
IAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxvZygiRkFJTDog
VGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICAgICAgICB9CisKICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1hdHRyaWJ1dGVz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxl
bWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWF0dHJpYnV0ZXMuaHRtbAkocmV2aXNpb24gNDYwMzcp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29s
dW1ucy1kb20tYXR0cmlidXRlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsOCBAQAog
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAg
ICB9CiAKKyAgICAgICAgdHJ5eworCiAgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgIlxuIikpOwpAQCAtNzQsNiArNzYs
MTAgQEAKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGZpcnN0IGNvbHVtbiBpcyBub3QgdGhl
IHByaW1hcnkgY29sdW1uIGFzIGV4cGVjdGVkLiIpOwogICAgICAgICB9CiAKKyAgICAgICAgfSBj
YXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRocmV3IGV4Y2VwdGlv
biAiICsgZXhjZXB0aW9uKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0
YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1
bW5zLWRvbS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ2MDM3KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDggQEAKK1BBU1M6IGRhdGFncmlkIEpTIGJpbmRp
bmcgaXMgW29iamVjdCBIVE1MRGF0YUdyaWRFbGVtZW50XQogUEFTUzogSW5pdGlhbCB2YWx1ZSBv
ZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIGRlZmluZWQuCitQQVNTOiBkYXRhZ3JpZC5jb2x1bW5zIEpT
IGJpbmRpbmcgaXMgW29iamVjdCBEYXRhR3JpZENvbHVtbkxpc3RdCiBQQVNTOiBJbml0aWFsIGxl
bmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuCitQQVNTOiBuZXdDb2wgSlMgYmluZGluZyBp
cyBbb2JqZWN0IEhUTUxEYXRhR3JpZENvbEVsZW1lbnRdCiBQQVNTOiBXZSBoYXZlIHRocmVlIGNv
bHVtbnMgaW4gdGhlIGxpc3QuCiBQQVNTOiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJvbSBhcyBleHBl
Y3RlZC4KIFBBU1M6IFRoZSBjb2x1bW4ncyBsYWJlbCBpcyBGcm9tIGFzIGV4cGVjdGVkLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVt
bnMtZG9tLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFH
cmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLmh0bWwJKHJldmlzaW9uIDQ2MDM3KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMt
ZG9tLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsMTQgKzcsMjkgQEAKICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dHJ5IHsKIAogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKICAgICAgICAgfQotCisgICAgICAgIAorICAg
ICAgICBmdW5jdGlvbiBleHBlY3RCaW5kaW5nKHdoYXQsIG9iaiwgY2xhc3NuYW1lKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgZGVzYyA9IFN0cmluZyhvYmopOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkRGVzYyA9ICJbb2JqZWN0ICIgKyBjbGFzc25hbWUgKyAiXSI7CisgICAgICAgICAg
ICBpZiAoZGVzYyA9PSBleHBlY3RlZERlc2MpIHsKKyAgICAgICAgICAgICAgICBsb2coIlBBU1M6
ICIgKyB3aGF0ICsgIiBKUyBiaW5kaW5nIGlzICIgKyBkZXNjKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiAiICsgd2hhdCArICIgSlMgYmluZGluZyBp
cyAiICsgZGVzYyArICIoZXhwZWN0ZWQgIiArIGV4cGVjdGVkRGVzYyArICIpIik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRlc3QgYmluZGluZyBvZiA8
ZGF0YWdyaWQ+IHRvIEpTIEhUTUxEYXRhR3JpZEVsZW1lbnQ6CiAgICAgICAgIHZhciBkYXRhZ3Jp
ZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Ci0KKyAgICAgICAgZXhwZWN0Qmlu
ZGluZygiZGF0YWdyaWQiLCBkYXRhZ3JpZCwgIkhUTUxEYXRhR3JpZEVsZW1lbnQiKTsKKyAgICAg
ICAgCiAgICAgICAgIC8vIFRlc3QgaW5pdGlhbCB2YWx1ZS4KICAgICAgICAgaWYgKGRhdGFncmlk
LmNvbHVtbnMgIT0gbnVsbCkgewogICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0aWFsIHZhbHVl
IG9mIGRhdGFncmlkLmNvbHVtbnMgaXMgZGVmaW5lZC4iKTsKQEAgLTIyLDYgKzM3LDkgQEAKICAg
ICAgICAgICAgIGxvZygiRkFJTDogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIHdh
cyBudWxsLiIpOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gVGVzdCBiaW5kaW5nIG9mIDxkY29s
PiB0byBKUyBEYXRhR3JpZENvbHVtbkxpc3Q6CisgICAgICAgIGV4cGVjdEJpbmRpbmcoImRhdGFn
cmlkLmNvbHVtbnMiLCBkYXRhZ3JpZC5jb2x1bW5zLCAiRGF0YUdyaWRDb2x1bW5MaXN0Iik7Cisg
ICAgICAgIAogICAgICAgICAvLyBUZXN0IGluaXRpYWwgbGVuZ3RoLgogICAgICAgICBpZiAoZGF0
YWdyaWQuY29sdW1ucy5sZW5ndGggPT0gMikgewogICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0
aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuIik7CkBAIC0zMSw2ICs0OSw3IEBA
CiAgICAgICAgIAogICAgICAgICAvLyBUZXN0IGFkZGluZyBhIGNvbHVtbi4KICAgICAgICAgdmFy
IG5ld0NvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRjb2wiKTsKKyAgICAgICAgZXhwZWN0
QmluZGluZygibmV3Q29sIiwgbmV3Q29sLCAiSFRNTERhdGFHcmlkQ29sRWxlbWVudCIpOwogICAg
ICAgICBuZXdDb2wuc2V0QXR0cmlidXRlKCJpZCIsICJkYXRlIik7CiAgICAgICAgIG5ld0NvbC5z
ZXRBdHRyaWJ1dGUoImxhYmVsIiwgIkRhdGUgUmVjZWl2ZWQiKTsKICAgICAgICAgbmV3Q29sLnNl
dEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0Iik7CkBAIC05OCw3ICsxMTcsMTEgQEAKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlcmUgaXMgYSBwcmltYXJ5IGNvbHVt
biwgYnV0IHRoZXJlIHNob3VsZCBub3QgYmUuIik7CiAgICAgICAgIH0KLSAgICAKKyAgICAgICAg
ICAgIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxvZygiRkFJ
TDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICAgICAgICB9CisgICAgICAgIAog
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZERhdGFTb3VyY2Ut
YmFzaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdy
aWRFbGVtZW50L0RhdGFHcmlkRGF0YVNvdXJjZS1iYXNpYy5odG1sCShyZXZpc2lvbiA0NjAzNykK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWREYXRh
U291cmNlLWJhc2ljLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw4IEBACiAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIAog
ICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1zZyArICJcbiIpKTsKQEAgLTE0LDcgKzE2LDcgQEAKICAgICAgICAgdmFyIGRhdGFn
cmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKIAogICAgICAgICAvLyBUZXN0
IGluaXRpYWwgdmFsdWUuCi0gICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09IG51bGwp
IHsKKyAgICAgICAgaWYgKGRhdGFncmlkLmRhdGFTb3VyY2UgPT09IG51bGwpIHsKICAgICAgICAg
ICAgIGxvZygiUEFTUzogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5kYXRhU291cmNlIGlzIG51
bGwuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsb2coIkZBSUw6IEluaXRpYWwg
dmFsdWUgb2YgZGF0YWdyaWQuZGF0YVNvdXJjZSB3YXMgbm90IG51bGwuIFdhcyAiICsgZGF0YWdy
aWQuZGF0YVNvdXJjZSArICIuIik7CkBAIC0yMiwxOCArMjQsMTggQEAKIAogICAgICAgICAvLyBU
ZXN0IHNldHRpbmcgdG8gYSBKUyBudW1iZXIKICAgICAgICAgZGF0YWdyaWQuZGF0YVNvdXJjZSA9
IDEwOwotICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSAxMCkgeworICAgICAgICBp
ZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PT0gMTApIHsKICAgICAgICAgICAgIGxvZygiUEFTUzog
QWxsb3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIuIik7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3dlZCBzZXR0
aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIuIik7CisgICAgICAgICAgICBsb2co
IkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgbnVt
YmVyLiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCBzZXR0aW5nIHRvIGEgSlMgbnVt
YmVyCiAgICAgICAgIGRhdGFncmlkLmRhdGFTb3VyY2UgPSAiVGVzdCBTdHJpbmciOwotICAgICAg
ICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSAiVGVzdCBTdHJpbmciKSB7CisgICAgICAgIGlm
IChkYXRhZ3JpZC5kYXRhU291cmNlID09PSAiVGVzdCBTdHJpbmciKSB7CiAgICAgICAgICAgICBs
b2coIlBBU1M6IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgc3RyaW5n
LiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFs
bG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgc3RyaW5nLiIpOworICAgICAg
ICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFsbG93IHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJj
ZSB0byBhIHN0cmluZy4iKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3Qgc2V0dGluZyBk
YXRhU291cmNlIHRvIGFuIG9iamVjdC4KQEAgLTQyLDE1ICs0NCwxOSBAQAogICAgICAgICBpZiAo
ZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSBkYXRhU291cmNlKSB7CiAgICAgICAgICAgICBsb2coIlBB
U1M6IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGFuIG9iamVjdC4iKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBhbGxvd2Vk
IHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhbiBvYmplY3QuIik7CisgICAgICAgICAg
ICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRv
IGFuIG9iamVjdC4iKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFRlc3Qgc2V0dGluZyBkYXRh
U291cmNlIHRvIGFuIG9iamVjdC4KKyAgICAgICAgLy8gVGVzdCBzZXR0aW5nIGRhdGFTb3VyY2Ug
dG8gbnVsbC4KICAgICAgICAgZGF0YWdyaWQuZGF0YVNvdXJjZSA9IG51bGw7Ci0gICAgICAgIGlm
IChkYXRhZ3JpZC5kYXRhU291cmNlID09IG51bGwpIHsKKyAgICAgICAgaWYgKGRhdGFncmlkLmRh
dGFTb3VyY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgIGxvZygiUEFTUzogQWxsb3dlZCBzZXR0
aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gbnVsbC4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0
YVNvdXJjZSB0byBudWxsLiIpOworICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFsbG93
IHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBudWxsLiIpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxvZygiRkFJ
TDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwogICAgICAgICB9CiAgICAgPC9zY3Jp
cHQ+CiA8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32988</attachid>
            <date>2009-07-17 16:26:45 -0700</date>
            <delta_ts>2009-07-21 11:38:29 -0700</delta_ts>
            <desc>3rd patch</desc>
            <filename>dataGridV8_take3.patch</filename>
            <type>text/plain</type>
            <size>44821</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjA0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDktMDctMTcgIEplbnMgQWxma2UgIDxzbmVqQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1
cCBWOCBiaW5kaW5ncyBmb3IgRGF0YUdyaWQgZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzM4MworICAgICAgICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xNjczMAorCisgICAgICAgIFRl
c3RzOiBFbmhhbmNlZCBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50LyoK
KyAgICAgICAgdG8gaGFuZGxlIGV4Y2VwdGlvbnMsIGNoZWNrIGFwcHJvcHJpYXRlIEpTIHByb3Rv
dHlwZXMsIGFuZAorICAgICAgICB0ZXN0IGNvbHVtbi1saXN0J3MgaXRlbSgpIG1ldGhvZCBhcyB3
ZWxsIGFzIGFycmF5LWluZGV4aW5nLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBu
ZXcgc291cmNlIGZpbGVzLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOiBNYWRlIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEgcHV0ICNpZidzIGFyb3Vu
ZCBjb25kaXRpb25hbCBhdHRyaWJ1dGVzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTU9iamVj
dHNJbmNsdWRlLmg6ICNpbmNsdWRlIERhdGFHcmlkIGhlYWRlcnMuCisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcDogQWRkIGJpbmRpbmdzIGZyb20gSFRNTCB0YWdzIHRvIGRh
dGFncmlkIHRlbXBsYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0VGVt
cGxhdGUpOiBDdXN0b21pemUgZGF0YWdyaWQgdGVtcGxhdGUuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3BwOiBBZGRlZC4gKEJhc2VkIG9uIEpTRGF0YUdyaWRE
YXRhU291cmNlKQorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhR3JpZERhdGFTb3VyY2U6OlY4RGF0
YUdyaWREYXRhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNl
Ojp+VjhEYXRhR3JpZERhdGFTb3VyY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RGF0YUdy
aWREYXRhU291cmNlLmg6IEFkZGVkLiAoQmFzZWQgb24gSlNEYXRhR3JpZERhdGFTb3VyY2UpCisg
ICAgICAgIChXZWJDb3JlOjpWOERhdGFHcmlkRGF0YVNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjppc0pTRGF0YUdyaWREYXRhU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjpqc0RhdGFTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6YXNWOERhdGFHcmlkRGF0YVNvdXJjZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaDogQWRkZWQgbmV3IGhhbmRsZSB0eXBlICJEQVRBU09V
UkNFIi4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6IENvbmRpdGlvbmFsaXplIGRh
dGFncmlkIHN0dWZmLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuaDogRGVjbGFyZSBtb3JlIGFjY2Vzc29ycy4gQ29uZGl0aW9uYWxpemUuCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERhdGFHcmlkRWxlbWVudEN1c3RvbS5jcHA6IEZpbGwg
aW4gZGF0YVNvdXJjZSBhY2Nlc3NvcnMuCisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9HRVRU
RVIpOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfU0VUVEVSKToKKwogMjAwOS0wNy0xNyAg
RGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFu
IEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA0NjAzNykKKysrIFdlYkNvcmUvV2ViQ29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC02MDMsNiArNjAzLDcgQEAKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwJywKKyAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NUGFyc2VyQ29uc3Ry
dWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwJywKQEAgLTY5Myw2ICs2OTQsOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaCcsCisgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3BwJywKKyAgICAgICAgICAgICdi
aW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9WOERPTU1hcC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAnLApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiA0NjAz
NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtp
bmcgY29weSkKQEAgLTI0Myw2ICsyNDMsMTggQEAgc3ViIEdldEltcGxlbWVudGF0aW9uRmlsZU5h
bWUKICAgICByZXR1cm4gIiR7aWZhY2V9LmgiOwogfQogCisjIElmIHRoZSBub2RlIGhhcyBhIFtD
b25kaXRpb25hbD1YWFhdIGF0dHJpYnV0ZSwgcmV0dXJucyBhbiAiRU5BQkxFKFhYWCkiIHN0cmlu
ZyBmb3IgdXNlIGluIGFuICNpZi4KK3N1YiBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nCit7Cisg
ICAgbXkgJG5vZGUgPSBzaGlmdDsKKyAgICBteSAkY29uZGl0aW9uYWwgPSAkbm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn07CisgICAgaWYgKCRjb25kaXRpb25hbCkgewor
ICAgICAgICByZXR1cm4gIkVOQUJMRSgiIC4gam9pbigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYv
LCAkY29uZGl0aW9uYWwpKSAuICIpIjsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gIiI7
CisgICAgfQorfQorCiBzdWIgR2VuZXJhdGVIZWFkZXIKIHsKICAgICBteSAkb2JqZWN0ID0gc2hp
ZnQ7CkBAIC0yNTcsMTcgKzI2OSwxMiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAkY29kZUdl
bmVyYXRvci0+QWRkTWV0aG9kc0NvbnN0YW50c0FuZEF0dHJpYnV0ZXNGcm9tUGFyZW50Q2xhc3Nl
cygkZGF0YU5vZGUpOwogCiAgICAgbXkgJGhhc0xlZ2FjeVBhcmVudCA9ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeVBhcmVudCJ9OwotICAgIG15ICRjb25kaXRpb25hbCA9
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn07CisgICAgbXkg
JGNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZGF0YU5vZGUp
OwogCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZQogICAgIEBoZWFkZXJDb250
ZW50ID0gc3BsaXQoIlxyIiwgJGhlYWRlclRlbXBsYXRlKTsKIAotICAgIG15ICRjb25kaXRpb25h
bFN0cmluZzsKLSAgICBpZiAoJGNvbmRpdGlvbmFsKSB7Ci0gICAgICAgICRjb25kaXRpb25hbFN0
cmluZyA9ICJFTkFCTEUoIiAuIGpvaW4oIikgJiYgRU5BQkxFKCIsIHNwbGl0KC8mLywgJGNvbmRp
dGlvbmFsKSkgLiAiKSI7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiNpZiAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuXG4iKTsKLSAgICB9Ci0KKyAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiNpZm5kZWYgJGNsYXNzTmFtZSIgLiAiX0gi
KTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4jZGVmaW5lICRjbGFzc05hbWUiIC4gIl9I
XG5cbiIpOwogCkBAIC0zMTAsNyArMzE3LDcgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIn1cblxuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZiAvLyAkY2xhc3NO
YW1lIiAuICJfSFxuIik7CiAKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmIC8vICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbDsKKyAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKIH0KIAogCkBAIC05MDMsMTM0ICs5MTAsMTM4IEBAIHN1YiBHZW5lcmF0
ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhCiAgICAgICAgICAgICAkYWNjZXNzQ29udHJvbCA9ICJ2ODo6
QUxMX0NBTl9XUklURSI7CiAgICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkRvTm90Q2hlY2tE
b21haW5TZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAkYWNjZXNzQ29udHJvbCA9ICJ2ODo6QUxM
X0NBTl9SRUFEIjsKLSAgICAgICAgaWYgKCEoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5
LykgJiYgISgkYXR0ckV4dC0+eyJWOFJlYWRPbmx5In0pKSB7Ci0gICAgICAgICAgICAkYWNjZXNz
Q29udHJvbCAuPSAifHY4OjpBTExfQ0FOX1dSSVRFIjsKKyAgICAgICAgICAgIGlmICghKCRhdHRy
aWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pICYmICEoJGF0dHJFeHQtPnsiVjhSZWFkT25seSJ9
KSkgeworICAgICAgICAgICAgICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OkFMTF9DQU5fV1JJ
VEUiOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQotICAgIGlmICgkYXR0ckV4dC0+
eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKLSAgICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2
ODo6UFJPSElCSVRTX09WRVJXUklUSU5HIjsKLSAgICB9Ci0gICAgJGFjY2Vzc0NvbnRyb2wgPSAi
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KCIgLiAkYWNjZXNzQ29udHJvbCAuICIpIjsK
KyAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RGlzYWxsb3dTaGFkb3dpbmcifSkgeworICAgICAg
ICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6UFJPSElCSVRTX09WRVJXUklUSU5HIjsKKyAg
ICAgICAgfQorICAgICAgICAkYWNjZXNzQ29udHJvbCA9ICJzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4oIiAuICRhY2Nlc3NDb250cm9sIC4gIikiOwogCi0gICAgbXkgJGN1c3RvbUFjY2Vz
c29yID0KLSAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwKLSAgICAgICAgJGF0dHJFeHQt
PnsiQ3VzdG9tU2V0dGVyIn0gfHwKLSAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0g
fHwKLSAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSB8fAotICAgICAgICAkYXR0ckV4dC0+
eyJWOEN1c3RvbVNldHRlciJ9IHx8Ci0gICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVy
In0gfHwKLSAgICAgICAgIiI7Ci0gICAgaWYgKCRjdXN0b21BY2Nlc3NvciBlcSAxKSB7Ci0gICAg
ICAgICMgdXNlIHRoZSBuYW1pbmcgY29udmVuc2lvbiwgaW50ZXJmYWNlICsgKGNhcGl0YWxpemUp
IGF0dHIgbmFtZQotICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAuIFdL
X3VjZmlyc3QoJGF0dHJOYW1lKTsKLSAgICB9Ci0KLSAgICBteSAkZ2V0dGVyOwotICAgIG15ICRz
ZXR0ZXI7Ci0gICAgbXkgJHByb3BBdHRyID0gInY4OjpOb25lIjsKLSAgICBteSAkaGFzQ3VzdG9t
U2V0dGVyID0gMDsKLQotICAgICMgQ2hlY2sgYXR0cmlidXRlcy4KLSAgICBpZiAoJGF0dHJFeHQt
PnsiRG9udEVudW0ifSkgewotICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6RG9udEVudW0iOwot
ICAgIH0KLSAgICBpZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7Ci0gICAg
ICAgICRwcm9wQXR0ciAuPSAifHY4OjpEb250RGVsZXRlIjsKLSAgICB9Ci0KLSAgICBteSAkb25f
cHJvdG8gPSAiMCAvKiBvbiBpbnN0YW5jZSAqLyI7Ci0gICAgbXkgJGRhdGEgPSAiVjhDbGFzc0lu
ZGV4OjpJTlZBTElEX0NMQVNTX0lOREVYIC8qIG5vIGRhdGEgKi8iOwotCi0gICAgIyBDb25zdHJ1
Y3RvcgotICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9y
JC8pIHsKLSAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJp
cE1vZHVsZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOwotICAgICAgICAkY29uc3RydWN0
b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87Ci0gICAgICAgIG15ICRjb25zdHJ1Y3RvckluZGV4
ID0gdWMoJGNvbnN0cnVjdG9yVHlwZSk7Ci0gICAgICAgICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6
JHtjb25zdHJ1Y3RvckluZGV4fSI7Ci0gICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1l
fUludGVybmFsOjoke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JHZXR0ZXIiOwotICAgICAgICAk
c2V0dGVyID0gIjAiOwotICAgICAgICAkcHJvcEF0dHIgPSAidjg6OlJlYWRPbmx5IjsKLQotICAg
ICMgRXZlbnRMaXN0ZW5lcnMKLSAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5
cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7Ci0gICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NV2luZG93IikgewotICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djhET01XaW5k
b3dFdmVudEhhbmRsZXJBY2Nlc3NvckdldHRlciI7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIlY4
Q3VzdG9tOjp2OERPTVdpbmRvd0V2ZW50SGFuZGxlckFjY2Vzc29yU2V0dGVyIjsKLSAgICAgICAg
fSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIkVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVx
ICJEb2N1bWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxCb2R5RWxlbWVudCIgfHwgJGlu
dGVyZmFjZU5hbWUgZXEgIlNWR0VsZW1lbnRJbnN0YW5jZSIgfHwgJGludGVyZmFjZU5hbWUgZXEg
IkhUTUxGcmFtZVNldEVsZW1lbnQiKSB7Ci0gICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9t
Ojp2OEVsZW1lbnRFdmVudEhhbmRsZXJBY2Nlc3NvckdldHRlciI7Ci0gICAgICAgICAgICAkc2V0
dGVyID0gIlY4Q3VzdG9tOjp2OEVsZW1lbnRFdmVudEhhbmRsZXJBY2Nlc3NvclNldHRlciI7Ci0g
ICAgICAgIH0gZWxzZSB7CisgICAgICAgIG15ICRjdXN0b21BY2Nlc3NvciA9CisgICAgICAgICAg
ICAkYXR0ckV4dC0+eyJDdXN0b20ifSB8fAorICAgICAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9t
U2V0dGVyIn0gfHwKKyAgICAgICAgICAgICRhdHRyRXh0LT57IkN1c3RvbUdldHRlciJ9IHx8Cisg
ICAgICAgICAgICAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9IHx8CisgICAgICAgICAgICAkYXR0ckV4
dC0+eyJWOEN1c3RvbVNldHRlciJ9IHx8CisgICAgICAgICAgICAkYXR0ckV4dC0+eyJWOEN1c3Rv
bUdldHRlciJ9IHx8CisgICAgICAgICAgICAiIjsKKyAgICAgICAgaWYgKCRjdXN0b21BY2Nlc3Nv
ciBlcSAxKSB7CisgICAgICAgICAgICAjIHVzZSB0aGUgbmFtaW5nIGNvbnZlbnNpb24sIGludGVy
ZmFjZSArIChjYXBpdGFsaXplKSBhdHRyIG5hbWUKKyAgICAgICAgICAgICRjdXN0b21BY2Nlc3Nv
ciA9ICRpbnRlcmZhY2VOYW1lIC4gV0tfdWNmaXJzdCgkYXR0ck5hbWUpOworICAgICAgICB9CisK
KyAgICAgICAgbXkgJGdldHRlcjsKKyAgICAgICAgbXkgJHNldHRlcjsKKyAgICAgICAgbXkgJHBy
b3BBdHRyID0gInY4OjpOb25lIjsKKyAgICAgICAgbXkgJGhhc0N1c3RvbVNldHRlciA9IDA7CisK
KyAgICAgICAgIyBDaGVjayBhdHRyaWJ1dGVzLgorICAgICAgICBpZiAoJGF0dHJFeHQtPnsiRG9u
dEVudW0ifSkgeworICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OkRvbnRFbnVtIjsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7
CisgICAgICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6RG9udERlbGV0ZSI7CisgICAgICAgIH0K
KworICAgICAgICBteSAkb25fcHJvdG8gPSAiMCAvKiBvbiBpbnN0YW5jZSAqLyI7CisgICAgICAg
IG15ICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6SU5WQUxJRF9DTEFTU19JTkRFWCAvKiBubyBkYXRh
ICovIjsKKworICAgICAgICAjIENvbnN0cnVjdG9yCisgICAgICAgIGlmICgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKKyAgICAgICAgICAgIG15ICRjb25z
dHJ1Y3RvclR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlKTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1
Y3RvciQvLzsKKyAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvckluZGV4ID0gdWMoJGNvbnN0cnVj
dG9yVHlwZSk7CisgICAgICAgICAgICAkZGF0YSA9ICJWOENsYXNzSW5kZXg6OiR7Y29uc3RydWN0
b3JJbmRleH0iOworICAgICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJu
YWw6OiR7aW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3RvckdldHRlciI7CisgICAgICAgICAgICAkc2V0
dGVyID0gIjAiOworICAgICAgICAgICAgJHByb3BBdHRyID0gInY4OjpSZWFkT25seSI7CisKKyAg
ICAgICAgIyBFdmVudExpc3RlbmVycworICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7CisgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4
Q3VzdG9tOjp2OERPTVdpbmRvd0V2ZW50SGFuZGxlckFjY2Vzc29yR2V0dGVyIjsKKyAgICAgICAg
ICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OERPTVdpbmRvd0V2ZW50SGFuZGxlckFjY2Vz
c29yU2V0dGVyIjsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJFbGVt
ZW50IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVx
ICJIVE1MQm9keUVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJTVkdFbGVtZW50SW5zdGFu
Y2UiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRnJhbWVTZXRFbGVtZW50IikgeworICAgICAg
ICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4RWxlbWVudEV2ZW50SGFuZGxlckFjY2Vz
c29yR2V0dGVyIjsKKyAgICAgICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OEVsZW1l
bnRFdmVudEhhbmRsZXJBY2Nlc3NvclNldHRlciI7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nl
c3NvckdldHRlciI7CisgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJXb3Jr
ZXJDb250ZXh0IiBhbmQgJGF0dHJOYW1lIGVxICJzZWxmIikgeworICAgICAgICAgICAgICAgICAg
ICAkc2V0dGVyID0gIjAiOworICAgICAgICAgICAgICAgICAgICAkcHJvcEF0dHIgPSAidjg6OlJl
YWRPbmx5IjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAk
c2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAjIEN1c3RvbSBHZXR0
ZXIgYW5kIFNldHRlcgorICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b20ifSB8fCAk
YXR0ckV4dC0+eyJWOEN1c3RvbSJ9KSB7CiAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9t
Ojp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwogICAgICAgICAgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJXb3JrZXJDb250ZXh0IiBhbmQgJGF0dHJOYW1lIGVxICJzZWxmIikg
ewogICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7CiAgICAgICAgICAgICAgICAgJHByb3BB
dHRyID0gInY4OjpSZWFkT25seSI7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOwogICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhD
dXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7CiAgICAgICAgICAgICB9
Ci0gICAgICAgIH0KIAotICAgICMgQ3VzdG9tIEdldHRlciBhbmQgU2V0dGVyCi0gICAgfSBlbHNp
ZiAoJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgewotICAg
ICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0
ZXIiOwotICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckNvbnRleHQiIGFuZCAk
YXR0ck5hbWUgZXEgInNlbGYiKSB7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIjAiOwotICAgICAg
ICAgICAgJHByb3BBdHRyID0gInY4OjpSZWFkT25seSI7Ci0gICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICMgQ3VzdG9tIFNldHRlcgorICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b21T
ZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3RvbVNldHRlciJ9KSB7CiAgICAgICAgICAgICAk
aGFzQ3VzdG9tU2V0dGVyID0gMTsKKyAgICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VO
YW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwogICAgICAgICAgICAgJHNldHRl
ciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yU2V0dGVyIjsKKworICAg
ICAgICAjIEN1c3RvbSBHZXR0ZXIKKyAgICAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9t
R2V0dGVyIn0pIHsKKyAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21B
Y2Nlc3Nvcn1BY2Nlc3NvckdldHRlciI7CisgICAgICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJm
YWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKKworICAgICAgICAjIFJl
cGxhY2VhYmxlCisgICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0pIHsK
KyAgICAgICAgICAgICMgUmVwbGFjZWFibGUgYWNjZXNzb3IgaXMgcHV0IG9uIGluc3RhbmNlIHRl
bXBsYXRlIHdpdGggUmVhZE9ubHkgYXR0cmlidXRlLgorICAgICAgICAgICAgJGdldHRlciA9ICIk
e2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciI7CisgICAgICAg
ICAgICAkc2V0dGVyID0gIjAiOworCisgICAgICAgICAgICAjIE1hcmsgdG8gYXZvaWQgZHVwbGlj
YXRlIHY4OjpSZWFkT25seSBmbGFncyBpbiBvdXRwdXQuCisgICAgICAgICAgICAkaGFzQ3VzdG9t
U2V0dGVyID0gMTsKKworICAgICAgICAgICAgIyBIYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSBvZiB3
aW5kb3cudG9wIGJlaW5nIG1hcmtlZCB1cHN0cmVhbSBhcyBSZXBsYWNlYWJsZS4KKyAgICAgICAg
ICAgICMgRklYTUU6IEludmVzdGlnYXRlIHdoeSBbUmVwbGFjZWFibGVdIGlzIG5vdCBtYXJrZWQg
YXMgUmVhZE9ubHkKKyAgICAgICAgICAgICMgdXBzdHJlYW0gYW5kIHJlYWNoIHBhcml0eS4KKyAg
ICAgICAgICAgIGlmICghKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIGFuZCAkYXR0ck5h
bWUgZXEgInRvcCIpKSB7CisgICAgICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OlJlYWRP
bmx5IjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAjIE5vcm1hbAorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0
ck5hbWV9QXR0ckdldHRlciI7CisgICAgICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJmYWNlTmFt
ZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKICAgICAgICAgfQogCi0gICAgIyBD
dXN0b20gU2V0dGVyCi0gICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwg
JGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSkgewotICAgICAgICAkaGFzQ3VzdG9tU2V0dGVy
ID0gMTsKLSAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0
ck5hbWV9QXR0ckdldHRlciI7Ci0gICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0
b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7Ci0KLSAgICAjIEN1c3RvbSBHZXR0ZXIKLSAgICB9
IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSkgewotICAgICAgICAkZ2V0dGVyID0g
IlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwotICAgICAgICAk
c2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVy
IjsKLQotICAgICMgUmVwbGFjZWFibGUKLSAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJSZXBsYWNl
YWJsZSJ9KSB7Ci0gICAgICAgICMgUmVwbGFjZWFibGUgYWNjZXNzb3IgaXMgcHV0IG9uIGluc3Rh
bmNlIHRlbXBsYXRlIHdpdGggUmVhZE9ubHkgYXR0cmlidXRlLgotICAgICAgICAkZ2V0dGVyID0g
IiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKLSAgICAg
ICAgJHNldHRlciA9ICIwIjsKLQotICAgICAgICAjIE1hcmsgdG8gYXZvaWQgZHVwbGljYXRlIHY4
OjpSZWFkT25seSBmbGFncyBpbiBvdXRwdXQuCi0gICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAx
OwotCi0gICAgICAgICMgSGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ugb2Ygd2luZG93LnRvcCBiZWlu
ZyBtYXJrZWQgdXBzdHJlYW0gYXMgUmVwbGFjZWFibGUuCi0gICAgICAgICMgRklYTUU6IEludmVz
dGlnYXRlIHdoeSBbUmVwbGFjZWFibGVdIGlzIG5vdCBtYXJrZWQgYXMgUmVhZE9ubHkKLSAgICAg
ICAgIyB1cHN0cmVhbSBhbmQgcmVhY2ggcGFyaXR5LgotICAgICAgICBpZiAoISgkaW50ZXJmYWNl
TmFtZSBlcSAiRE9NV2luZG93IiBhbmQgJGF0dHJOYW1lIGVxICJ0b3AiKSkgeworICAgICAgICBp
ZiAoJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSAmJiAhJGhhc0N1c3RvbVNldHRlcikgeworICAg
ICAgICAgICAgJHNldHRlciA9ICIwIjsKICAgICAgICAgICAgICRwcm9wQXR0ciAuPSAifHY4OjpS
ZWFkT25seSI7CiAgICAgICAgIH0KIAotICAgICMgTm9ybWFsCi0gICAgfSBlbHNlIHsKLSAgICAg
ICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdl
dHRlciI7Ci0gICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0
dHJOYW1lfUF0dHJTZXR0ZXIiOwotICAgIH0KLQotICAgIGlmICgkYXR0ckV4dC0+eyJSZXBsYWNl
YWJsZSJ9ICYmICEkaGFzQ3VzdG9tU2V0dGVyKSB7Ci0gICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0g
ICAgICAgICRwcm9wQXR0ciAuPSAifHY4OjpSZWFkT25seSI7Ci0gICAgfQorICAgICAgICAjIFJl
YWQgb25seSBhdHRyaWJ1dGVzCisgICAgICAgIGlmICgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVh
ZG9ubHkvIHx8ICRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkgeworICAgICAgICAgICAgJHNldHRl
ciA9ICIwIjsKKyAgICAgICAgfQogCi0gICAgIyBSZWFkIG9ubHkgYXR0cmlidXRlcwotICAgIGlm
ICgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvIHx8ICRhdHRyRXh0LT57IlY4UmVhZE9u
bHkifSkgewotICAgICAgICAkc2V0dGVyID0gIjAiOwotICAgIH0KKyAgICAgICAgIyBBbiBhY2Nl
c3NvciBjYW4gYmUgaW5zdGFsbGVkIG9uIHRoZSBwcm90bworICAgICAgICBpZiAoJGF0dHJFeHQt
PnsidjhPblByb3RvIn0pIHsKKyAgICAgICAgICAgICRvbl9wcm90byA9ICIxIC8qIG9uIHByb3Rv
ICovIjsKKyAgICAgICAgfQogCi0gICAgIyBBbiBhY2Nlc3NvciBjYW4gYmUgaW5zdGFsbGVkIG9u
IHRoZSBwcm90bwotICAgIGlmICgkYXR0ckV4dC0+eyJ2OE9uUHJvdG8ifSkgewotICAgICAgICAk
b25fcHJvdG8gPSAiMSAvKiBvbiBwcm90byAqLyI7Ci0gICAgfQorICAgICAgICBteSAkY29tbWVu
dEluZm8gPSAiQXR0cmlidXRlICckYXR0ck5hbWUnIChUeXBlOiAnIiAuICRhdHRyaWJ1dGUtPnR5
cGUgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAiJyBFeHRBdHRyOiAnIiAuIGpvaW4oJyAn
LCBrZXlzKCV7JGF0dHJFeHR9KSkgLiAiJykiOworICAgICAgICAKKyAgICAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWdu
YXR1cmUpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAKLSAgICBteSAkY29tbWVudEluZm8g
PSAiQXR0cmlidXRlICckYXR0ck5hbWUnIChUeXBlOiAnIiAuICRhdHRyaWJ1dGUtPnR5cGUgLgot
ICAgICAgICAgICAgICAgICAgICAgICInIEV4dEF0dHI6ICciIC4gam9pbignICcsIGtleXMoJXsk
YXR0ckV4dH0pKSAuICInKSI7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKICAgLy8gJGNvbW1lbnRJbmZvCiAgIHsgIiRh
dHRyTmFtZSIsCiAgICAgJGdldHRlciwKQEAgLTEwNDAsNiArMTA1MSw3IEBAIHN1YiBHZW5lcmF0
ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhCiAgICAgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPigkcHJvcEF0dHIpLAogICAgICRvbl9wcm90byB9LAogRU5ECisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKICAgICB9CiB9CiAKQEAgLTEwNTQsNyArMTA2Niw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgbXkgJGNsYXNzSW5kZXggPSB1YygkY29kZUdlbmVyYXRv
ci0+U3RyaXBNb2R1bGUoJGludGVyZmFjZU5hbWUpKTsKIAogICAgIG15ICRoYXNMZWdhY3lQYXJl
bnQgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZWdhY3lQYXJlbnQifTsKLSAg
ICBteSAkY29uZGl0aW9uYWwgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25k
aXRpb25hbCJ9OworICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGRhdGFOb2RlKTsKIAogICAgIEBhbGxQYXJlbnRzID0gJGNvZGVHZW5lcmF0b3It
PkZpbmRQYXJlbnRzUmVjdXJzaXZlbHkoJGRhdGFOb2RlKTsKIApAQCAtMTA2NywxMSArMTA3OSw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAiI2luY2x1ZGUgXCJWOEJp
bmRpbmcuaFwiXG5cbiIgLgogICAgICAgICAgIiN1bmRlZiBMT0dcblxuIik7CiAKLSAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgaWYgKCRjb25kaXRpb25hbCkgewotICAgICAgICAkY29u
ZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBzcGxpdCgv
Ji8sICRjb25kaXRpb25hbCkpIC4gIikiOwotICAgICAgICBwdXNoKEBpbXBsRml4ZWRIZWFkZXIs
ICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKTsKLSAgICB9CisgICAgcHVzaChAaW1w
bEZpeGVkSGVhZGVyLCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwogCiAgICAgaWYgKCRjbGFzc05hbWUgPX4gL15WOFNWR0FuaW1hdGVkLykg
ewogICAgICAgICBBZGRJbmNsdWRlc0ZvclNWR0FuaW1hdGVkVHlwZSgkaW50ZXJmYWNlTmFtZSk7
CkBAIC0xMzg3LDcgKzEzOTUsNyBAQCBFTkQKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIEVORAog
Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsOworICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYg
Ly8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIH0KIAog
CkBAIC0yMDQwLDggKzIwNDgsOCBAQCBzdWIgUmV0dXJuTmF0aXZlVG9KU1ZhbHVlCiAgICAgfQog
CiAgICAgaWYgKCR0eXBlIGVxICJSR0JDb2xvciIpIHsKLSAgICAgICAgbXkgJGNvbnN0cnVjdCA9
ICJSZWZQdHI8UkdCQ29sb3I+IHJnYmNvbG9yID0gUkdCQ29sb3I6OmNyZWF0ZSgkdmFsdWUpO1xu
IjsNCi0gICAgICAgIG15ICRjb252ZXJ0ID0gIlY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmpl
Y3QoVjhDbGFzc0luZGV4OjpSR0JDT0xPUiwgV1RGOjpnZXRQdHIocmdiY29sb3IpKSI7DQorICAg
ICAgICBteSAkY29uc3RydWN0ID0gIlJlZlB0cjxSR0JDb2xvcj4gcmdiY29sb3IgPSBSR0JDb2xv
cjo6Y3JlYXRlKCR2YWx1ZSk7XG4iOworICAgICAgICBteSAkY29udmVydCA9ICJWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6UkdCQ09MT1IsIFdURjo6Z2V0UHRy
KHJnYmNvbG9yKSkiOwogICAgICAgICByZXR1cm4gJGNvbnN0cnVjdCAuICRpbmRlbnQgLiAicmV0
dXJuICIgLiAkY29udmVydDsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvRE9N
T2JqZWN0c0luY2x1ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9i
amVjdHNJbmNsdWRlLmgJKHJldmlzaW9uIDQ2MDM3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01PYmplY3RzSW5jbHVkZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDExIEBACiAj
aW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVkZSAiWFBhdGhSZXN1bHQuaCIKIAor
I2lmIEVOQUJMRShEQVRBR1JJRCkKKyNpbmNsdWRlICJEYXRhR3JpZENvbHVtbi5oIgorI2luY2x1
ZGUgIkRhdGFHcmlkQ29sdW1uTGlzdC5oIgorI2VuZGlmIC8vIERBVEFHUklECisKICNpZiBFTkFC
TEUoRE9NX1NUT1JBR0UpCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VF
dmVudC5oIgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkocmV2aXNpb24g
NDYwMzcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0NSw3ICs0NDUsMTMgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4RAogICAgIGNhc2UgVjhDbGFzc0luZGV4OjpDTElFTlRSRUNUTElTVDoKICAgICAg
ICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRJbmRleGVkUHJvcGVydHlIYW5k
bGVyKFVTRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihDbGllbnRSZWN0TGlzdCkpOwogICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgorI2lmIEVOQUJMRShEQVRBR1JJRCkKKyAgICBjYXNlIFY4
Q2xhc3NJbmRleDo6REFUQUdSSURDT0xVTU5MSVNUOgorICAgICAgICBkZXNjcmlwdG9yLT5JbnN0
YW5jZVRlbXBsYXRlKCktPlNldEluZGV4ZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX0lOREVYRURfUFJP
UEVSVFlfR0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCkpOworICAgICAgICBkZXNjcmlwdG9yLT5J
bnN0YW5jZVRlbXBsYXRlKCktPlNldE5hbWVkUHJvcGVydHlIYW5kbGVyKFVTRV9OQU1FRF9QUk9Q
RVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KSk7CisgICAgICAgIGJyZWFrOworI2VuZGlm
CisgICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTc4MCw3ICs3ODYs
MTggQEAgYm9vbCBWOERPTVdyYXBwZXI6OmlzV3JhcHBlck9mVHlwZSh2ODo6SAogI2RlZmluZSBG
T1JfRUFDSF9WSURFT19UQUcobWFjcm8pCiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVRBR1JJRCkK
KyNkZWZpbmUgRk9SX0VBQ0hfREFUQUdSSURfVEFHKG1hY3JvKSAgICAgICAgICAgICAgIFwKKyAg
bWFjcm8oZGF0YWdyaWQsIERBVEFHUklEKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbWFj
cm8oZGNlbGwsIERBVEFHUklEQ0VMTCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbWFjcm8o
ZGNvbCwgREFUQUdSSURDT0wpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbWFjcm8oZHJv
dywgREFUQUdSSURST1cpCisjZWxzZQorI2RlZmluZSBGT1JfRUFDSF9EQVRBR1JJRF9UQUcobWFj
cm8pCisjZW5kaWYKKwogI2RlZmluZSBGT1JfRUFDSF9UQUcobWFjcm8pICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIEZPUl9FQUNIX0RBVEFHUklEX1RBRyhtYWNybykgICAgICAgICAgICAg
ICAgICAgXAogICAgIG1hY3JvKGEsIEFOQ0hPUikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIG1hY3JvKGFwcGxldCwgQVBQTEVUKSAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIG1hY3JvKGFyZWEsIEFSRUEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShEQVRBR1JJRCkKKworI2luY2x1ZGUgIlY4RGF0YUdyaWREYXRhU291cmNlLmgiCisK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRN
TERhdGFHcmlkRWxlbWVudC5oIgorI2luY2x1ZGUgIlY4SFRNTERhdGFHcmlkRWxlbWVudC5oIgor
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVjhEYXRhR3JpZERhdGFTb3VyY2U6OlY4RGF0YUdy
aWREYXRhU291cmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhU291cmNlLCBGcmFtZSogZnJh
bWUpCisgICAgOiBtX2RhdGFTb3VyY2Uodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPjo6TmV3KGRh
dGFTb3VyY2UpKQorICAgICwgbV9mcmFtZShmcmFtZSkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAg
VjhHQ0NvbnRyb2xsZXI6OnJlZ2lzdGVyR2xvYmFsSGFuZGxlKERBVEFTT1VSQ0UsIHRoaXMsIG1f
ZGF0YVNvdXJjZSk7CisjZW5kaWYKK30KKworVjhEYXRhR3JpZERhdGFTb3VyY2U6On5WOERhdGFH
cmlkRGF0YVNvdXJjZSgpCit7CisjaWZuZGVmIE5ERUJVRworICAgIFY4R0NDb250cm9sbGVyOjp1
bnJlZ2lzdGVyR2xvYmFsSGFuZGxlKHRoaXMsIG1fZGF0YVNvdXJjZSk7CisjZW5kaWYKKyAgICBt
X2RhdGFTb3VyY2UuRGlzcG9zZSgpOworICAgIG1fZGF0YVNvdXJjZS5DbGVhcigpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUdSSUQpCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNl
LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisKKyNpZm5kZWYgVjhEYXRhR3JpZERhdGFTb3VyY2VfaAorI2RlZmluZSBW
OERhdGFHcmlkRGF0YVNvdXJjZV9oCisKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisKKyNpbmNsdWRl
ICJEYXRhR3JpZERhdGFTb3VyY2UuaCIKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgSFRNTERhdGFHcmlkRWxlbWVudDsKKworY2xhc3Mg
VjhEYXRhR3JpZERhdGFTb3VyY2UgOiBwdWJsaWMgRGF0YUdyaWREYXRhU291cmNlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWOERhdGFHcmlkRGF0YVNvdXJjZT4gY3JlYXRlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhU291cmNlLCBGcmFtZSogZnJhbWUpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFY4RGF0YUdyaWREYXRhU291cmNlKGRhdGFTb3VyY2Us
IGZyYW1lKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+VjhEYXRhR3JpZERhdGFTb3VyY2UoKTsK
KworICAgIHZpcnR1YWwgYm9vbCBpc0pTRGF0YUdyaWREYXRhU291cmNlKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqc0RhdGFTb3VyY2UoKSBjb25z
dCB7IHJldHVybiBtX2RhdGFTb3VyY2U7IH0KKworcHJpdmF0ZToKKyAgICBWOERhdGFHcmlkRGF0
YVNvdXJjZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIEZyYW1lKik7CisKKyAgICB2ODo6UGVyc2lz
dGVudDx2ODo6VmFsdWU+IG1fZGF0YVNvdXJjZTsKKyAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7
Cit9OworCitpbmxpbmUgVjhEYXRhR3JpZERhdGFTb3VyY2UqIGFzVjhEYXRhR3JpZERhdGFTb3Vy
Y2UoRGF0YUdyaWREYXRhU291cmNlKiBkYXRhU291cmNlKQoreworICAgIEFTU0VSVChkYXRhU291
cmNlLT5pc0pTRGF0YUdyaWREYXRhU291cmNlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxW
OERhdGFHcmlkRGF0YVNvdXJjZSo+KGRhdGFTb3VyY2UpOworfQorCitpbmxpbmUgY29uc3QgVjhE
YXRhR3JpZERhdGFTb3VyY2UqIGFzVjhEYXRhR3JpZERhdGFTb3VyY2UoY29uc3QgRGF0YUdyaWRE
YXRhU291cmNlKiBkYXRhU291cmNlKQoreworICAgIEFTU0VSVChkYXRhU291cmNlLT5pc0pTRGF0
YUdyaWREYXRhU291cmNlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBWOERhdGFH
cmlkRGF0YVNvdXJjZSo+KGRhdGFTb3VyY2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUdSSUQpCisjZW5kaWYgLy8gVjhEYXRhR3JpZERhdGFT
b3VyY2VfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERhdGFH
cmlkRGF0YVNvdXJjZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gNDYwMzcpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDcgKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYoRVZFTlRfTElTVEVORVIp
ICAgICAgICAgICAgIFwKICAgICBWKE5PREVfRklMVEVSKSAgICAgICAgICAgICAgICBcCiAgICAg
VihTQ1JJUFRJTlNUQU5DRSkgICAgICAgICAgICAgXAotICAgIFYoU0NSSVBUVkFMVUUpCisgICAg
VihTQ1JJUFRWQUxVRSkgICAgICAgICAgICAgICAgXAorICAgIFYoREFUQVNPVVJDRSkKIAogCiAg
ICAgLy8gSG9zdCBpbmZvcm1hdGlvbiBvZiBwZXJzaXN0ZW50IGhhbmRsZXMuCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SW5kZXguaAkocmV2aXNpb24gNDYwMzcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SW5kZXguaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMjAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1
bmN0aW9uVGVtcGxhdGVGYWN0b3J5KSgpOwogCisjaWYgRU5BQkxFKERBVEFHUklEKQorI2RlZmlu
ZSBEQVRBR1JJRF9IVE1MRUxFTUVOVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIFYoSFRNTERBVEFHUklEQ0VMTEVMRU1FTlQsIEhUTUxEYXRhR3JpZENl
bGxFbGVtZW50KSAgICAgICAgICAgICAgICAgXAorICAgIFYoSFRNTERBVEFHUklEQ09MRUxFTUVO
VCwgSFRNTERhdGFHcmlkQ29sRWxlbWVudCkgICAgICAgICAgICAgICAgICAgXAorICAgIFYoSFRN
TERBVEFHUklERUxFTUVOVCwgSFRNTERhdGFHcmlkRWxlbWVudCkgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIFYoSFRNTERBVEFHUklEUk9XRUxFTUVOVCwgSFRNTERhdGFHcmlkUm93RWxl
bWVudCkKKyNkZWZpbmUgREFUQUdSSURfTk9OTk9ERV9UWVBFUyhWKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKERBVEFHUklEQ09MVU1OLCBEYXRhR3JpZENv
bHVtbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKERBVEFHUklE
Q09MVU1OTElTVCwgRGF0YUdyaWRDb2x1bW5MaXN0KQorI2Vsc2UKKyNkZWZpbmUgREFUQUdSSURf
SFRNTEVMRU1FTlRfVFlQRVMoVikKKyNkZWZpbmUgREFUQUdSSURfTk9OTk9ERV9UWVBFUyhWKQor
I2VuZGlmCisKICNpZiBFTkFCTEUoVklERU8pCiAjZGVmaW5lIFZJREVPX0hUTUxFTEVNRU5UX1RZ
UEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihIVE1M
QVVESU9FTEVNRU5ULCBIVE1MQXVkaW9FbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCkBAIC04MCw5ICs5NCw3IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGwKICAgICBWKEFUVFIsIEF0dHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKENIQVJBQ1RFUkRBVEEsIENoYXJhY3Rl
ckRhdGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKENEQVRB
U0VDVElPTiwgQ0RBVEFTZWN0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBWKENPTU1FTlQsIENvbW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwNCi0gICAgVihEQVRBR1JJRENPTFVNTiwgRGF0YUdyaWRD
b2x1bW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgIFYoREFUQUdS
SURDT0xVTU5MSVNULCBEYXRhR3JpZENvbHVtbkxpc3QpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIFYoQ09NTUVOVCwgQ29tbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoRE9DVU1FTlQsIERvY3VtZW50KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoRE9DVU1FTlRG
UkFHTUVOVCwgRG9jdW1lbnRGcmFnbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIFYoRE9DVU1FTlRUWVBFLCBEb2N1bWVudFR5cGUpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXApAQCAtMTA0LDEwICsxMTYsNiBAQCB0eXBlZGVmIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihIVE1MQlJFTEVNRU5ULCBIVE1MQlJFbGVt
ZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihIVE1MQlVU
VE9ORUxFTUVOVCwgSFRNTEJ1dHRvbkVsZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgVihIVE1MQ0FOVkFTRUxFTUVOVCwgSFRNTENhbnZhc0VsZW1lbnQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgVihIVE1MREFUQUdSSURDRUxMRUxFTUVOVCwgSFRN
TERhdGFHcmlkQ2VsbEVsZW1lbnQpICAgICAgICAgICAgICAgICBcCi0gICAgVihIVE1MREFUQUdS
SURDT0xFTEVNRU5ULCBIVE1MRGF0YUdyaWRDb2xFbGVtZW50KSAgICAgICAgICAgICAgICAgICBc
Ci0gICAgVihIVE1MREFUQUdSSURFTEVNRU5ULCBIVE1MRGF0YUdyaWRFbGVtZW50KSAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgVihIVE1MREFUQUdSSURST1dFTEVNRU5ULCBIVE1MRGF0
YUdyaWRSb3dFbGVtZW50KSAgICAgICAgICAgICAgICAgICBcCiAgICAgVihIVE1MRElSRUNUT1JZ
RUxFTUVOVCwgSFRNTERpcmVjdG9yeUVsZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgVihIVE1MRElWRUxFTUVOVCwgSFRNTERpdkVsZW1lbnQpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgVihIVE1MRExJU1RFTEVNRU5ULCBIVE1MRExpc3RFbGVtZW50
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNTUsNiArMTYzLDcgQEAgdHlw
ZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAogICAgIFYoSFRNTFRJVExFRUxF
TUVOVCwgSFRNTFRpdGxlRWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIFYoSFRNTFVMSVNURUxFTUVOVCwgSFRNTFVMaXN0RWxlbWVudCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIFYoSFRNTEVMRU1FTlQsIEhUTUxFbGVtZW50KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIERBVEFHUklEX0hUTUxFTEVN
RU5UX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IFZJREVPX0hUTUxFTEVNRU5UX1RZUEVTKFYpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikK
QEAgLTM3Nyw2ICszODYsNyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsCiAgICAgVihYUEFUSFJFU1VMVCwgWFBhdGhSZXN1bHQpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihYU0xUUFJPQ0VTU09SLCBYU0xUUHJvY2Vzc29y
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgQUNUSVZFX0RPTV9P
QkpFQ1RfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgREFUQUdSSURfTk9OTk9ERV9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgVklERU9fTk9OTk9ERV9UWVBFUyhWKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgU0hBUkVEX1dPUktFUl9O
T05OT0RFX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKQpAQCAtMzkwLDE0ICs0MDAsMTQgQEAg
dHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAogICAgIFYoU1FMVFJBTlNB
Q1RJT04sIFNRTFRyYW5zYWN0aW9uKQogI2Vsc2UKICNkZWZpbmUgRE9NX09CSkVDVF9EQVRBQkFT
RV9UWVBFUyhWKQotI2VuZGlmDQotDQotI2lmIEVOQUJMRShET01fU1RPUkFHRSkNCi0jZGVmaW5l
IERPTV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcDQotICAgIFYoU1RPUkFHRSwgU3RvcmFnZSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KLSAgICBWKFNUT1JBR0VFVkVOVCwgU3RvcmFn
ZUV2ZW50KQ0KLSNlbHNlDQotI2RlZmluZSBET01fT0JKRUNUX1NUT1JBR0VfVFlQRVMoVikNCisj
ZW5kaWYKKworI2lmIEVOQUJMRShET01fU1RPUkFHRSkKKyNkZWZpbmUgRE9NX09CSkVDVF9TVE9S
QUdFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBW
KFNUT1JBR0UsIFN0b3JhZ2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBWKFNUT1JBR0VFVkVOVCwgU3RvcmFnZUV2ZW50KQorI2Vsc2UKKyNk
ZWZpbmUgRE9NX09CSkVDVF9TVE9SQUdFX1RZUEVTKFYpCiAjZW5kaWYKIAogI2RlZmluZSBET01f
T0JKRUNUX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5n
LmgJKHJldmlzaW9uIDQ2MDM3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw4ICs0MDgsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlRmlsdGVyQWNjZXB0Tm9k
ZSk7CiAKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihIVE1MRGF0YUdyaWRFbGVt
ZW50RGF0YVNvdXJjZSk7Ci0KICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MRm9ybUVsZW1l
bnRTdWJtaXQpOwogCiAgICAgICAgIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKERPTVdp
bmRvdyk7CkBAIC00NTQsNiArNDUyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhTUUxSZXN1bHRTZXRSb3dMaXN0SXRlbSk7CiAKICAgICAgICAgREVD
TEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihDbGllbnRSZWN0TGlzdCk7CisgIAorI2lmIEVO
QUJMRShEQVRBR1JJRCkKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihIVE1MRGF0
YUdyaWRFbGVtZW50RGF0YVNvdXJjZSk7CisgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJU
WV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KTsKKyAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9Q
RVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KTsKKyNlbmRpZiAgICAgIAogCiAjaWYgRU5B
QkxFKERPTV9TVE9SQUdFKQogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVS
KFN0b3JhZ2UpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRGF0YUdy
aWRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxEYXRhR3JpZEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA0NjAzNykKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERhdGFHcmlkRWxlbWVudEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDI3ICsyOSw0MiBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxEYXRhR3JpZEVs
ZW1lbnQuaCIKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiVjhEYXRh
R3JpZERhdGFTb3VyY2UuaCIKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4
Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAorI2lmIEVOQUJMRShEQVRB
R1JJRCkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBQ0NFU1NPUl9HRVRURVIoSFRNTERhdGFH
cmlkRWxlbWVudERhdGFTb3VyY2UpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTERhdGFHcmlk
RWxlbWVudC5kYXRhU291cmNlLl9nZXQiKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKKyAgICBIVE1MRGF0
YUdyaWRFbGVtZW50KiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2Rl
PEhUTUxEYXRhR3JpZEVsZW1lbnQ+KGhvbGRlcik7CisgICAgRGF0YUdyaWREYXRhU291cmNlKiBk
YXRhU291cmNlID0gaW1wLT5kYXRhU291cmNlKCk7CisgICAgaWYgKGRhdGFTb3VyY2UgJiYgZGF0
YVNvdXJjZS0+aXNKU0RhdGFHcmlkRGF0YVNvdXJjZSgpKQorICAgICAgICByZXR1cm4gYXNWOERh
dGFHcmlkRGF0YVNvdXJjZShkYXRhU291cmNlKS0+anNEYXRhU291cmNlKCk7CiAgICAgcmV0dXJu
IHY4OjpOdWxsKCk7CiB9CiAKIEFDQ0VTU09SX1NFVFRFUihIVE1MRGF0YUdyaWRFbGVtZW50RGF0
YVNvdXJjZSkKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRGF0YUdyaWRFbGVtZW50LmRhdGFT
b3VyY2UuX3NldCIpOwotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOworICAgIEhUTUxEYXRhR3JpZEVsZW1lbnQq
IGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRNTERhdGFHcmlk
RWxlbWVudD4oaG9sZGVyKTsKKyAgICBQYXNzUmVmUHRyPERhdGFHcmlkRGF0YVNvdXJjZT4gZGF0
YVNvdXJjZTsKKyAgICBpZiAoIXZhbHVlLklzRW1wdHkoKSkgeworICAgICAgICBGcmFtZSAqZnJh
bWUgPSBpbXAtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgICAgIGRhdGFTb3VyY2UgPSBWOERh
dGFHcmlkRGF0YVNvdXJjZTo6Y3JlYXRlKHZhbHVlLCBmcmFtZSk7CisgICAgfQorICAgIGltcC0+
c2V0RGF0YVNvdXJjZShkYXRhU291cmNlLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgRU5BQkxFKERBVEFHUklEKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDYwNTAp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBA
QAorMjAwOS0wNy0xNyAgSmVucyBBbGZrZSAgPHNuZWpAZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIFY4IGJpbmRpbmdz
IGZvciBEYXRhR3JpZCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI3MzgzCisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9j
aHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE2NzMwCisKKyAgICAgICAgVGVzdHM6IEVuaGFuY2Vk
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvKgorICAgICAgICB0byBo
YW5kbGUgZXhjZXB0aW9ucywgY2hlY2sgYXBwcm9wcmlhdGUgSlMgcHJvdG90eXBlcywgYW5kCisg
ICAgICAgIHRlc3QgY29sdW1uLWxpc3QncyBpdGVtKCkgbWV0aG9kIGFzIHdlbGwgYXMgYXJyYXkt
aW5kZXhpbmcuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFH
cmlkQ29sdW1ucy1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTERh
dGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tYXR0cmlidXRlcy5o
dG1sOgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1
bW5zLWRvbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTERhdGFHcmlkRWxl
bWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vSFRNTERh
dGFHcmlkRWxlbWVudC9EYXRhR3JpZERhdGFTb3VyY2UtYmFzaWMuaHRtbDoKKwogMjAwOS0wNy0x
NyAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmlkIExldmluLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlk
RWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5z
LWJhc2ljLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDYwMzcpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBAIFBBU1M6IEluaXRpYWwgdmFsdWUgb2Yg
ZGF0YWdyaWQuY29sdW1ucyAKIFBBU1M6IEluaXRpYWwgbGVuZ3RoIG9mIGRhdGFncmlkLmNvbHVt
bnMgaXMgMC4KIFBBU1M6IENvbHVtbiByZXR1cm5lZCBmcm9tIGFkZC4KIFBBU1M6IFdlIGhhdmUg
b25lIGNvbHVtbiBpbiB0aGUgbGlzdC4KK1BBU1M6IFRoZSBjb2x1bW4gYXQgaXRlbSgwKSBpcyB0
aGUgY29sdW1uIHdlIGdvdCBiYWNrIGZyb20gYWRkLgogUEFTUzogVGhlIGNvbHVtbiBhdCBpbmRl
eCAwIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQuCiBQQVNTOiBUaGUgY29sdW1u
IHdoZW4gcmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUgd2UgZ290IGJhY2sgZnJvbSBhZGQu
CiBQQVNTOiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJvbWNvbCBhcyBleHBlY3RlZC4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJh
c2ljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlk
RWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMuaHRtbAkocmV2aXNpb24gNDYwMzcpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1i
YXNpYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsOCBAQAogICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKKyAgICAgICAg
dHJ5IHsKKwogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKQEAgLTQ2LDE3ICs0OCwyNyBAQAogICAgICAg
ICAgICAgbG9nKCJGQUlMOiBFeHBlY3RlZCBvbmUgY29sdW1uIGluIHRoZSBsaXN0IGJ1dCBoYXZl
ICIgKyBkYXRhZ3JpZC5jb2x1bW5zLmxlbmd0aCArICIgY29sdW1ucyBpbnN0ZWFkLiIpOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbHVtbiB3ZSBnb3Qg
YmFjayBmcm9tIGFkZCBpcyB0aGUgb25lIGluIHRoZSBsaXN0LgotICAgICAgICBpZiAoZGF0YWdy
aWQuY29sdW1uc1swXSA9PSBjb2x1bW4pIHsKKyAgICAgICAgLy8gVXNlIGl0ZW0oMCkgdG8gbWFr
ZSBzdXJlIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQgaXMgdGhlIG9uZSBpbiB0aGUg
bGlzdC4KKyAgICAgICAgdmFyIGdvdENvbHVtbiA9IGRhdGFncmlkLmNvbHVtbnMuaXRlbSgwKTsK
KyAgICAgICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKKyAgICAgICAgICAgIGxvZygiUEFT
UzogVGhlIGNvbHVtbiBhdCBpdGVtKDApIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBh
ZGQuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1
bW4gYXQgaXRlbSgwKSAoIiArIGdvdENvbHVtbiArICIpIGlzIG5vdCB0aGUgb25lIHdlIGV4cGVj
dGVkICgiICsgY29sdW1uICsgIikuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8v
IFVzZSBbMF0gdG8gbWFrZSBzdXJlIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQgaXMg
dGhlIG9uZSBpbiB0aGUgbGlzdC4KKyAgICAgICAgZ290Q29sdW1uID0gZGF0YWdyaWQuY29sdW1u
c1swXTsKKyAgICAgICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKICAgICAgICAgICAgIGxv
ZygiUEFTUzogVGhlIGNvbHVtbiBhdCBpbmRleCAwIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sg
ZnJvbSBhZGQuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRo
ZSBjb2x1bW4gYXQgaW5kZXggMCBpcyBub3QgdGhlIG9uZSB3ZSBleHBlY3RlZC4iKTsKKyAgICAg
ICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbiBhdCBpbmRleCAwICgiICsgZ290Q29sdW1uICsg
IikgaXMgbm90IHRoZSBvbmUgd2UgZXhwZWN0ZWQgKCIgKyBjb2x1bW4gKyAiKS4iKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnNbImZyb21jb2wiXSA9
PSBjb2x1bW4pIHsKKyAgICAgICAgZ290Q29sdW1uID0gZGF0YWdyaWQuY29sdW1uc1siZnJvbWNv
bCJdOworICAgICAgICBpZiAoZ290Q29sdW1uID09IGNvbHVtbikgewogICAgICAgICAgICAgbG9n
KCJQQVNTOiBUaGUgY29sdW1uIHdoZW4gcmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUgd2Ug
Z290IGJhY2sgZnJvbSBhZGQuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2co
IkZBSUw6IFRoZSBjb2x1bW4gd2hlbiByZWZlcmVuY2VkIGJ5IG5hbWUgaXMgbm90IHRoZSBvbmUg
d2UgZXhwZWN0ZWQuIik7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gd2hlbiBy
ZWZlcmVuY2VkIGJ5IG5hbWUgKCIgKyBnb3RDb2x1bW4gKyAiKSBpcyBub3QgdGhlIG9uZSB3ZSBl
eHBlY3RlZCAoIiArIGNvbHVtbiArICIpLiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRXhh
bWluZSB0aGUgY29sdW1uJ3MgcHJvcGVydGllcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgd2hhdCB3
ZSBleHBlY3RlZC4KQEAgLTk3LDYgKzEwOSwxMCBAQAogICAgICAgICAgICAgbG9nKCJGQUlMOiBU
aGUgY29sdW1uIGlzIG5vdCB0aGUgcHJpbWFyeSBjb2x1bW4gYXMgZXhwZWN0ZWQuIik7CiAgICAg
ICAgIH0KIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxvZygi
RkFJTDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICAgICAgICB9CisKICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1hdHRy
aWJ1dGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFH
cmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWF0dHJpYnV0ZXMuaHRtbAkocmV2aXNpb24g
NDYwMzcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFH
cmlkQ29sdW1ucy1kb20tYXR0cmlidXRlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgs
OCBAQAogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwog
ICAgICAgICB9CiAKKyAgICAgICAgdHJ5eworCiAgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgIlxuIikpOwpAQCAtNzQs
NiArNzYsMTAgQEAKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGZpcnN0IGNvbHVtbiBpcyBu
b3QgdGhlIHByaW1hcnkgY29sdW1uIGFzIGV4cGVjdGVkLiIpOwogICAgICAgICB9CiAKKyAgICAg
ICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRocmV3IGV4
Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdy
aWRDb2x1bW5zLWRvbS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ2MDM3KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDggQEAKK1BBU1M6IGRhdGFncmlkIEpT
IGJpbmRpbmcgaXMgW29iamVjdCBIVE1MRGF0YUdyaWRFbGVtZW50XQogUEFTUzogSW5pdGlhbCB2
YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIGRlZmluZWQuCitQQVNTOiBkYXRhZ3JpZC5jb2x1
bW5zIEpTIGJpbmRpbmcgaXMgW29iamVjdCBEYXRhR3JpZENvbHVtbkxpc3RdCiBQQVNTOiBJbml0
aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuCitQQVNTOiBuZXdDb2wgSlMgYmlu
ZGluZyBpcyBbb2JqZWN0IEhUTUxEYXRhR3JpZENvbEVsZW1lbnRdCiBQQVNTOiBXZSBoYXZlIHRo
cmVlIGNvbHVtbnMgaW4gdGhlIGxpc3QuCiBQQVNTOiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJvbSBh
cyBleHBlY3RlZC4KIFBBU1M6IFRoZSBjb2x1bW4ncyBsYWJlbCBpcyBGcm9tIGFzIGV4cGVjdGVk
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3Jp
ZENvbHVtbnMtZG9tLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLmh0bWwJKHJldmlzaW9uIDQ2MDM3
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENv
bHVtbnMtZG9tLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsMTQgKzcsMjkgQEAKICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgdHJ5IHsKIAogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKICAgICAgICAgfQotCisgICAgICAg
IAorICAgICAgICBmdW5jdGlvbiBleHBlY3RCaW5kaW5nKHdoYXQsIG9iaiwgY2xhc3NuYW1lKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgZGVzYyA9IFN0cmluZyhvYmopOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkRGVzYyA9ICJbb2JqZWN0ICIgKyBjbGFzc25hbWUgKyAiXSI7CisgICAg
ICAgICAgICBpZiAoZGVzYyA9PSBleHBlY3RlZERlc2MpIHsKKyAgICAgICAgICAgICAgICBsb2co
IlBBU1M6ICIgKyB3aGF0ICsgIiBKUyBiaW5kaW5nIGlzICIgKyBkZXNjKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiAiICsgd2hhdCArICIgSlMgYmlu
ZGluZyBpcyAiICsgZGVzYyArICIoZXhwZWN0ZWQgIiArIGV4cGVjdGVkRGVzYyArICIpIik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRlc3QgYmluZGlu
ZyBvZiA8ZGF0YWdyaWQ+IHRvIEpTIEhUTUxEYXRhR3JpZEVsZW1lbnQ6CiAgICAgICAgIHZhciBk
YXRhZ3JpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Ci0KKyAgICAgICAgZXhw
ZWN0QmluZGluZygiZGF0YWdyaWQiLCBkYXRhZ3JpZCwgIkhUTUxEYXRhR3JpZEVsZW1lbnQiKTsK
KyAgICAgICAgCiAgICAgICAgIC8vIFRlc3QgaW5pdGlhbCB2YWx1ZS4KICAgICAgICAgaWYgKGRh
dGFncmlkLmNvbHVtbnMgIT0gbnVsbCkgewogICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0aWFs
IHZhbHVlIG9mIGRhdGFncmlkLmNvbHVtbnMgaXMgZGVmaW5lZC4iKTsKQEAgLTIyLDYgKzM3LDkg
QEAKICAgICAgICAgICAgIGxvZygiRkFJTDogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1
bW5zIHdhcyBudWxsLiIpOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gVGVzdCBiaW5kaW5nIG9m
IDxkY29sPiB0byBKUyBEYXRhR3JpZENvbHVtbkxpc3Q6CisgICAgICAgIGV4cGVjdEJpbmRpbmco
ImRhdGFncmlkLmNvbHVtbnMiLCBkYXRhZ3JpZC5jb2x1bW5zLCAiRGF0YUdyaWRDb2x1bW5MaXN0
Iik7CisgICAgICAgIAogICAgICAgICAvLyBUZXN0IGluaXRpYWwgbGVuZ3RoLgogICAgICAgICBp
ZiAoZGF0YWdyaWQuY29sdW1ucy5sZW5ndGggPT0gMikgewogICAgICAgICAgICAgbG9nKCJQQVNT
OiBJbml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuIik7CkBAIC0zMSw2ICs0
OSw3IEBACiAgICAgICAgIAogICAgICAgICAvLyBUZXN0IGFkZGluZyBhIGNvbHVtbi4KICAgICAg
ICAgdmFyIG5ld0NvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRjb2wiKTsKKyAgICAgICAg
ZXhwZWN0QmluZGluZygibmV3Q29sIiwgbmV3Q29sLCAiSFRNTERhdGFHcmlkQ29sRWxlbWVudCIp
OwogICAgICAgICBuZXdDb2wuc2V0QXR0cmlidXRlKCJpZCIsICJkYXRlIik7CiAgICAgICAgIG5l
d0NvbC5zZXRBdHRyaWJ1dGUoImxhYmVsIiwgIkRhdGUgUmVjZWl2ZWQiKTsKICAgICAgICAgbmV3
Q29sLnNldEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0Iik7CkBAIC05OCw3ICsxMTcsMTEgQEAKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlcmUgaXMgYSBwcmltYXJ5
IGNvbHVtbiwgYnV0IHRoZXJlIHNob3VsZCBub3QgYmUuIik7CiAgICAgICAgIH0KLSAgICAKKyAg
ICAgICAgICAgIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxv
ZygiRkFJTDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZERhdGFT
b3VyY2UtYmFzaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkRGF0YVNvdXJjZS1iYXNpYy5odG1sCShyZXZpc2lvbiA0
NjAzNykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdy
aWREYXRhU291cmNlLWJhc2ljLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw4IEBACiAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIAogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKQEAgLTE0LDcgKzE2LDcgQEAKICAgICAgICAgdmFy
IGRhdGFncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKIAogICAgICAgICAv
LyBUZXN0IGluaXRpYWwgdmFsdWUuCi0gICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09
IG51bGwpIHsKKyAgICAgICAgaWYgKGRhdGFncmlkLmRhdGFTb3VyY2UgPT09IG51bGwpIHsKICAg
ICAgICAgICAgIGxvZygiUEFTUzogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5kYXRhU291cmNl
IGlzIG51bGwuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsb2coIkZBSUw6IElu
aXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQuZGF0YVNvdXJjZSB3YXMgbm90IG51bGwuIFdhcyAiICsg
ZGF0YWdyaWQuZGF0YVNvdXJjZSArICIuIik7CkBAIC0yMiwxOCArMjQsMTggQEAKIAogICAgICAg
ICAvLyBUZXN0IHNldHRpbmcgdG8gYSBKUyBudW1iZXIKICAgICAgICAgZGF0YWdyaWQuZGF0YVNv
dXJjZSA9IDEwOwotICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSAxMCkgeworICAg
ICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PT0gMTApIHsKICAgICAgICAgICAgIGxvZygi
UEFTUzogQWxsb3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIuIik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3dl
ZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIuIik7CisgICAgICAgICAg
ICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRv
IGEgbnVtYmVyLiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCBzZXR0aW5nIHRvIGEg
SlMgbnVtYmVyCiAgICAgICAgIGRhdGFncmlkLmRhdGFTb3VyY2UgPSAiVGVzdCBTdHJpbmciOwot
ICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSAiVGVzdCBTdHJpbmciKSB7CisgICAg
ICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09PSAiVGVzdCBTdHJpbmciKSB7CiAgICAgICAg
ICAgICBsb2coIlBBU1M6IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEg
c3RyaW5nLiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQg
bm90IGFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgc3RyaW5nLiIpOwor
ICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFsbG93IHNldHRpbmcgZGF0YWdyaWQuZGF0
YVNvdXJjZSB0byBhIHN0cmluZy4iKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3Qgc2V0
dGluZyBkYXRhU291cmNlIHRvIGFuIG9iamVjdC4KQEAgLTQyLDE1ICs0NCwxOSBAQAogICAgICAg
ICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSBkYXRhU291cmNlKSB7CiAgICAgICAgICAgICBs
b2coIlBBU1M6IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGFuIG9iamVj
dC4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBh
bGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhbiBvYmplY3QuIik7CisgICAg
ICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291
cmNlIHRvIGFuIG9iamVjdC4iKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFRlc3Qgc2V0dGlu
ZyBkYXRhU291cmNlIHRvIGFuIG9iamVjdC4KKyAgICAgICAgLy8gVGVzdCBzZXR0aW5nIGRhdGFT
b3VyY2UgdG8gbnVsbC4KICAgICAgICAgZGF0YWdyaWQuZGF0YVNvdXJjZSA9IG51bGw7Ci0gICAg
ICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09IG51bGwpIHsKKyAgICAgICAgaWYgKGRhdGFn
cmlkLmRhdGFTb3VyY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgIGxvZygiUEFTUzogQWxsb3dl
ZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gbnVsbC4iKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0YWdy
aWQuZGF0YVNvdXJjZSB0byBudWxsLiIpOworICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90
IGFsbG93IHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBudWxsLiIpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxv
ZygiRkFJTDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwogICAgICAgICB9CiAgICAg
PC9zY3JpcHQ+CiA8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33194</attachid>
            <date>2009-07-21 11:44:40 -0700</date>
            <delta_ts>2009-07-22 10:10:41 -0700</delta_ts>
            <desc>Patch, with missing file added</desc>
            <filename>dataGridV8_take4.patch</filename>
            <type>text/plain</type>
            <size>48577</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjEyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMDctMjAgIEplbnMgQWxma2UgIDxzbmVqQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1
cCBWOCBiaW5kaW5ncyBmb3IgRGF0YUdyaWQgZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzM4MworICAgICAgICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xNjczMAorCisgICAgICAgIFRl
c3RzOiBFbmhhbmNlZCBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50LyoK
KyAgICAgICAgdG8gaGFuZGxlIGV4Y2VwdGlvbnMsIGNoZWNrIGFwcHJvcHJpYXRlIEpTIHByb3Rv
dHlwZXMsIGFuZAorICAgICAgICB0ZXN0IGNvbHVtbi1saXN0J3MgaXRlbSgpIG1ldGhvZCBhcyB3
ZWxsIGFzIGFycmF5LWluZGV4aW5nLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBu
ZXcgc291cmNlIGZpbGVzLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOiBNYWRlIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEgcHV0ICNpZidzIGFyb3Vu
ZCBjb25kaXRpb25hbCBhdHRyaWJ1dGVzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTU9iamVj
dHNJbmNsdWRlLmg6ICNpbmNsdWRlIERhdGFHcmlkIGhlYWRlcnMuCisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcDogQWRkIGJpbmRpbmdzIGZyb20gSFRNTCB0YWdzIHRvIGRh
dGFncmlkIHRlbXBsYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0VGVt
cGxhdGUpOiBDdXN0b21pemUgZGF0YWdyaWQgdGVtcGxhdGUuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3BwOiBBZGRlZC4gKEJhc2VkIG9uIEpTRGF0YUdyaWRE
YXRhU291cmNlKQorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhR3JpZERhdGFTb3VyY2U6OlY4RGF0
YUdyaWREYXRhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNl
Ojp+VjhEYXRhR3JpZERhdGFTb3VyY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RGF0YUdy
aWREYXRhU291cmNlLmg6IEFkZGVkLiAoQmFzZWQgb24gSlNEYXRhR3JpZERhdGFTb3VyY2UpCisg
ICAgICAgIChXZWJDb3JlOjpWOERhdGFHcmlkRGF0YVNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjppc0pTRGF0YUdyaWREYXRhU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjpqc0RhdGFTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6YXNWOERhdGFHcmlkRGF0YVNvdXJjZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaDogQWRkZWQgbmV3IGhhbmRsZSB0eXBlICJEQVRBU09V
UkNFIi4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6IENvbmRpdGlvbmFsaXplIGRh
dGFncmlkIHN0dWZmLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuaDogRGVjbGFyZSBtb3JlIGFjY2Vzc29ycy4gQ29uZGl0aW9uYWxpemUuCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcDogQWRkZWQu
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERhdGFHcmlkRWxlbWVudEN1c3Rv
bS5jcHA6IEZpbGwgaW4gZGF0YVNvdXJjZSBhY2Nlc3NvcnMuCisgICAgICAgIChXZWJDb3JlOjpB
Q0NFU1NPUl9HRVRURVIpOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfU0VUVEVSKToKKwog
MjAwOS0wNy0yMCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDQ2MTI1KQorKysgV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTYwMyw2ICs2MDMsNyBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVhQYXRoTlNSZXNvbHZl
ci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5j
cHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlkQ29sdW1uTGlz
dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50
TG9jYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhE
T01QYXJzZXJDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAnLApAQCAtNjk1LDYgKzY5Niw4IEBACiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4Q29uc29sZU1lc3NhZ2UuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbnNv
bGVNZXNzYWdlLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291
cmNlLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2Uu
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01NYXAuY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9WOERPTU1hcC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwJywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQkocmV2aXNpb24gNDYxMjUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNiArMjQzLDE4IEBAIHN1
YiBHZXRJbXBsZW1lbnRhdGlvbkZpbGVOYW1lCiAgICAgcmV0dXJuICIke2lmYWNlfS5oIjsKIH0K
IAorIyBJZiB0aGUgbm9kZSBoYXMgYSBbQ29uZGl0aW9uYWw9WFhYXSBhdHRyaWJ1dGUsIHJldHVy
bnMgYW4gIkVOQUJMRShYWFgpIiBzdHJpbmcgZm9yIHVzZSBpbiBhbiAjaWYuCitzdWIgR2VuZXJh
dGVDb25kaXRpb25hbFN0cmluZworeworICAgIG15ICRub2RlID0gc2hpZnQ7CisgICAgbXkgJGNv
bmRpdGlvbmFsID0gJG5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9Owor
ICAgIGlmICgkY29uZGl0aW9uYWwpIHsKKyAgICAgICAgcmV0dXJuICJFTkFCTEUoIiAuIGpvaW4o
IikgJiYgRU5BQkxFKCIsIHNwbGl0KC8mLywgJGNvbmRpdGlvbmFsKSkgLiAiKSI7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KK30KKwogc3ViIEdlbmVyYXRlSGVhZGVy
CiB7CiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwpAQCAtMjU3LDE3ICsyNjksMTIgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgJGNvZGVHZW5lcmF0b3ItPkFkZE1ldGhvZHNDb25zdGFudHNBbmRB
dHRyaWJ1dGVzRnJvbVBhcmVudENsYXNzZXMoJGRhdGFOb2RlKTsKIAogICAgIG15ICRoYXNMZWdh
Y3lQYXJlbnQgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZWdhY3lQYXJlbnQi
fTsKLSAgICBteSAkY29uZGl0aW9uYWwgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25kaXRpb25hbCJ9OworICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29u
ZGl0aW9uYWxTdHJpbmcoJGRhdGFOb2RlKTsKIAogICAgICMgLSBBZGQgZGVmYXVsdCBoZWFkZXIg
dGVtcGxhdGUKICAgICBAaGVhZGVyQ29udGVudCA9IHNwbGl0KCJcciIsICRoZWFkZXJUZW1wbGF0
ZSk7CiAKLSAgICBteSAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgaWYgKCRjb25kaXRpb25hbCkg
ewotICAgICAgICAkY29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2luKCIpICYmIEVO
QUJMRSgiLCBzcGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4gIikiOwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIik7Ci0gICAgfQot
CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5c
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4j
aWZuZGVmICRjbGFzc05hbWUiIC4gIl9IIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxu
I2RlZmluZSAkY2xhc3NOYW1lIiAuICJfSFxuXG4iKTsKIApAQCAtMzEwLDcgKzMxNyw3IEBAIEVO
RAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9XG5cbiIpOwogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIjZW5kaWYgLy8gJGNsYXNzTmFtZSIgLiAiX0hcbiIpOwogCi0gICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29u
ZGl0aW9uYWw7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlv
bmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiB9CiAKIApAQCAtOTAzLDEz
NCArOTEwLDEzOCBAQCBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YQogICAgICAgICAg
ICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFMTF9DQU5fV1JJVEUiOwogICAgICAgICB9IGVsc2lm
ICgkYXR0ckV4dC0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHkifSkgewogICAgICAgICAgICAg
JGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFMTF9DQU5fUkVBRCI7Ci0gICAgICAgIGlmICghKCRhdHRy
aWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pICYmICEoJGF0dHJFeHQtPnsiVjhSZWFkT25seSJ9
KSkgewotICAgICAgICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6QUxMX0NBTl9XUklURSI7
CisgICAgICAgICAgICBpZiAoISgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvKSAmJiAh
KCRhdHRyRXh0LT57IlY4UmVhZE9ubHkifSkpIHsKKyAgICAgICAgICAgICAgICAkYWNjZXNzQ29u
dHJvbCAuPSAifHY4OjpBTExfQ0FOX1dSSVRFIjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgIH0KLSAgICBpZiAoJGF0dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7Ci0gICAg
ICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OlBST0hJQklUU19PVkVSV1JJVElORyI7Ci0gICAg
fQotICAgICRhY2Nlc3NDb250cm9sID0gInN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPigi
IC4gJGFjY2Vzc0NvbnRyb2wgLiAiKSI7CisgICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOERpc2Fs
bG93U2hhZG93aW5nIn0pIHsKKyAgICAgICAgICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OlBS
T0hJQklUU19PVkVSV1JJVElORyI7CisgICAgICAgIH0KKyAgICAgICAgJGFjY2Vzc0NvbnRyb2wg
PSAic3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KCIgLiAkYWNjZXNzQ29udHJvbCAuICIp
IjsKIAotICAgIG15ICRjdXN0b21BY2Nlc3NvciA9Ci0gICAgICAgICRhdHRyRXh0LT57IkN1c3Rv
bSJ9IHx8Ci0gICAgICAgICRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8Ci0gICAgICAgICRh
dHRyRXh0LT57IkN1c3RvbUdldHRlciJ9IHx8Ci0gICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9t
In0gfHwKLSAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSB8fAotICAgICAgICAk
YXR0ckV4dC0+eyJWOEN1c3RvbUdldHRlciJ9IHx8Ci0gICAgICAgICIiOwotICAgIGlmICgkY3Vz
dG9tQWNjZXNzb3IgZXEgMSkgewotICAgICAgICAjIHVzZSB0aGUgbmFtaW5nIGNvbnZlbnNpb24s
IGludGVyZmFjZSArIChjYXBpdGFsaXplKSBhdHRyIG5hbWUKLSAgICAgICAgJGN1c3RvbUFjY2Vz
c29yID0gJGludGVyZmFjZU5hbWUgLiBXS191Y2ZpcnN0KCRhdHRyTmFtZSk7Ci0gICAgfQotCi0g
ICAgbXkgJGdldHRlcjsKLSAgICBteSAkc2V0dGVyOwotICAgIG15ICRwcm9wQXR0ciA9ICJ2ODo6
Tm9uZSI7Ci0gICAgbXkgJGhhc0N1c3RvbVNldHRlciA9IDA7Ci0KLSAgICAjIENoZWNrIGF0dHJp
YnV0ZXMuCi0gICAgaWYgKCRhdHRyRXh0LT57IkRvbnRFbnVtIn0pIHsKLSAgICAgICAgJHByb3BB
dHRyIC49ICJ8djg6OkRvbnRFbnVtIjsKLSAgICB9Ci0gICAgaWYgKCRhdHRyRXh0LT57IlY4RGlz
YWxsb3dTaGFkb3dpbmcifSkgewotICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6RG9udERlbGV0
ZSI7Ci0gICAgfQotCi0gICAgbXkgJG9uX3Byb3RvID0gIjAgLyogb24gaW5zdGFuY2UgKi8iOwot
ICAgIG15ICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6SU5WQUxJRF9DTEFTU19JTkRFWCAvKiBubyBk
YXRhICovIjsKLQotICAgICMgQ29uc3RydWN0b3IKLSAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7Ci0gICAgICAgIG15ICRjb25zdHJ1Y3RvclR5
cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50
eXBlKTsKLSAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOwotICAg
ICAgICBteSAkY29uc3RydWN0b3JJbmRleCA9IHVjKCRjb25zdHJ1Y3RvclR5cGUpOwotICAgICAg
ICAkZGF0YSA9ICJWOENsYXNzSW5kZXg6OiR7Y29uc3RydWN0b3JJbmRleH0iOwotICAgICAgICAk
Z2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHtpbnRlcmZhY2VOYW1lfUNvbnN0
cnVjdG9yR2V0dGVyIjsKLSAgICAgICAgJHNldHRlciA9ICIwIjsKLSAgICAgICAgJHByb3BBdHRy
ID0gInY4OjpSZWFkT25seSI7Ci0KLSAgICAjIEV2ZW50TGlzdGVuZXJzCi0gICAgfSBlbHNpZiAo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVudExpc3RlbmVyIikgewotICAgICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgICAgICRnZXR0
ZXIgPSAiVjhDdXN0b206OnY4RE9NV2luZG93RXZlbnRIYW5kbGVyQWNjZXNzb3JHZXR0ZXIiOwot
ICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djhET01XaW5kb3dFdmVudEhhbmRsZXJB
Y2Nlc3NvclNldHRlciI7Ci0gICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJFbGVt
ZW50IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVx
ICJIVE1MQm9keUVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJTVkdFbGVtZW50SW5zdGFu
Y2UiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MRnJhbWVTZXRFbGVtZW50IikgewotICAgICAg
ICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djhFbGVtZW50RXZlbnRIYW5kbGVyQWNjZXNzb3JH
ZXR0ZXIiOwotICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djhFbGVtZW50RXZlbnRI
YW5kbGVyQWNjZXNzb3JTZXR0ZXIiOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBteSAkY3Vz
dG9tQWNjZXNzb3IgPQorICAgICAgICAgICAgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwKKyAgICAg
ICAgICAgICRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8CisgICAgICAgICAgICAkYXR0ckV4
dC0+eyJDdXN0b21HZXR0ZXIifSB8fAorICAgICAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b20i
fSB8fAorICAgICAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0ZXIifSB8fAorICAgICAg
ICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21HZXR0ZXIifSB8fAorICAgICAgICAgICAgIiI7Cisg
ICAgICAgIGlmICgkY3VzdG9tQWNjZXNzb3IgZXEgMSkgeworICAgICAgICAgICAgIyB1c2UgdGhl
IG5hbWluZyBjb252ZW5zaW9uLCBpbnRlcmZhY2UgKyAoY2FwaXRhbGl6ZSkgYXR0ciBuYW1lCisg
ICAgICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAuIFdLX3VjZmlyc3Qo
JGF0dHJOYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIG15ICRnZXR0ZXI7CisgICAgICAgIG15
ICRzZXR0ZXI7CisgICAgICAgIG15ICRwcm9wQXR0ciA9ICJ2ODo6Tm9uZSI7CisgICAgICAgIG15
ICRoYXNDdXN0b21TZXR0ZXIgPSAwOworCisgICAgICAgICMgQ2hlY2sgYXR0cmlidXRlcy4KKyAg
ICAgICAgaWYgKCRhdHRyRXh0LT57IkRvbnRFbnVtIn0pIHsKKyAgICAgICAgICAgICRwcm9wQXR0
ciAuPSAifHY4OjpEb250RW51bSI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRhdHRyRXh0LT57
IlY4RGlzYWxsb3dTaGFkb3dpbmcifSkgeworICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6
OkRvbnREZWxldGUiOworICAgICAgICB9CisKKyAgICAgICAgbXkgJG9uX3Byb3RvID0gIjAgLyog
b24gaW5zdGFuY2UgKi8iOworICAgICAgICBteSAkZGF0YSA9ICJWOENsYXNzSW5kZXg6OklOVkFM
SURfQ0xBU1NfSU5ERVggLyogbm8gZGF0YSAqLyI7CisKKyAgICAgICAgIyBDb25zdHJ1Y3Rvcgor
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQv
KSB7CisgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0
cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICAgICAkY29u
c3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CisgICAgICAgICAgICBteSAkY29uc3Ry
dWN0b3JJbmRleCA9IHVjKCRjb25zdHJ1Y3RvclR5cGUpOworICAgICAgICAgICAgJGRhdGEgPSAi
VjhDbGFzc0luZGV4Ojoke2NvbnN0cnVjdG9ySW5kZXh9IjsKKyAgICAgICAgICAgICRnZXR0ZXIg
PSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JH
ZXR0ZXIiOworICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICAgICAgICAgICRwcm9wQXR0
ciA9ICJ2ODo6UmVhZE9ubHkiOworCisgICAgICAgICMgRXZlbnRMaXN0ZW5lcnMKKyAgICAgICAg
fSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJFdmVudExpc3RlbmVyIikg
eworICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CisgICAg
ICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djhET01XaW5kb3dFdmVudEhhbmRsZXJB
Y2Nlc3NvckdldHRlciI7CisgICAgICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djhE
T01XaW5kb3dFdmVudEhhbmRsZXJBY2Nlc3NvclNldHRlciI7CisgICAgICAgICAgICB9IGVsc2lm
ICgkaW50ZXJmYWNlTmFtZSBlcSAiRWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkRvY3Vt
ZW50IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEJvZHlFbGVtZW50IiB8fCAkaW50ZXJmYWNl
TmFtZSBlcSAiU1ZHRWxlbWVudEluc3RhbmNlIiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEZy
YW1lU2V0RWxlbWVudCIpIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2
OEVsZW1lbnRFdmVudEhhbmRsZXJBY2Nlc3NvckdldHRlciI7CisgICAgICAgICAgICAgICAgJHNl
dHRlciA9ICJWOEN1c3RvbTo6djhFbGVtZW50RXZlbnRIYW5kbGVyQWNjZXNzb3JTZXR0ZXIiOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9t
Ojp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOworICAgICAgICAgICAgICAgIGlm
ICgkaW50ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIgYW5kICRhdHRyTmFtZSBlcSAic2Vs
ZiIpIHsKKyAgICAgICAgICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICAgICAgICAgICAg
ICAgICAgJHByb3BBdHRyID0gInY4OjpSZWFkT25seSI7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFj
Y2Vzc29yfUFjY2Vzc29yU2V0dGVyIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgIyBDdXN0b20gR2V0dGVyIGFuZCBTZXR0ZXIKKyAgICAgICAgfSBlbHNpZiAo
JGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgewogICAgICAg
ICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0
dGVyIjsKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIg
YW5kICRhdHRyTmFtZSBlcSAic2VsZiIpIHsKICAgICAgICAgICAgICAgICAkc2V0dGVyID0gIjAi
OwogICAgICAgICAgICAgICAgICRwcm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHkiOwogICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkaGFzQ3VzdG9tU2V0dGVyID0gMTsKICAgICAg
ICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNz
b3JTZXR0ZXIiOwogICAgICAgICAgICAgfQotICAgICAgICB9CiAKLSAgICAjIEN1c3RvbSBHZXR0
ZXIgYW5kIFNldHRlcgotICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkN1c3RvbSJ9IHx8ICRhdHRy
RXh0LT57IlY4Q3VzdG9tIn0pIHsKLSAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1
c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKLSAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1l
IGVxICJXb3JrZXJDb250ZXh0IiBhbmQgJGF0dHJOYW1lIGVxICJzZWxmIikgewotICAgICAgICAg
ICAgJHNldHRlciA9ICIwIjsKLSAgICAgICAgICAgICRwcm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHki
OwotICAgICAgICB9IGVsc2UgeworICAgICAgICAjIEN1c3RvbSBTZXR0ZXIKKyAgICAgICAgfSBl
bHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b21T
ZXR0ZXIifSkgewogICAgICAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7CisgICAgICAgICAg
ICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0
dGVyIjsKICAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nv
cn1BY2Nlc3NvclNldHRlciI7CisKKyAgICAgICAgIyBDdXN0b20gR2V0dGVyCisgICAgICAgIH0g
ZWxzaWYgKCRhdHRyRXh0LT57IkN1c3RvbUdldHRlciJ9KSB7CisgICAgICAgICAgICAkZ2V0dGVy
ID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOworICAgICAg
ICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0
clNldHRlciI7CisKKyAgICAgICAgIyBSZXBsYWNlYWJsZQorICAgICAgICB9IGVsc2lmICgkYXR0
ckV4dC0+eyJSZXBsYWNlYWJsZSJ9KSB7CisgICAgICAgICAgICAjIFJlcGxhY2VhYmxlIGFjY2Vz
c29yIGlzIHB1dCBvbiBpbnN0YW5jZSB0ZW1wbGF0ZSB3aXRoIFJlYWRPbmx5IGF0dHJpYnV0ZS4K
KyAgICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJO
YW1lfUF0dHJHZXR0ZXIiOworICAgICAgICAgICAgJHNldHRlciA9ICIwIjsKKworICAgICAgICAg
ICAgIyBNYXJrIHRvIGF2b2lkIGR1cGxpY2F0ZSB2ODo6UmVhZE9ubHkgZmxhZ3MgaW4gb3V0cHV0
LgorICAgICAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7CisKKyAgICAgICAgICAgICMgSGFu
ZGxlIHRoZSBzcGVjaWFsIGNhc2Ugb2Ygd2luZG93LnRvcCBiZWluZyBtYXJrZWQgdXBzdHJlYW0g
YXMgUmVwbGFjZWFibGUuCisgICAgICAgICAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aHkgW1Jl
cGxhY2VhYmxlXSBpcyBub3QgbWFya2VkIGFzIFJlYWRPbmx5CisgICAgICAgICAgICAjIHVwc3Ry
ZWFtIGFuZCByZWFjaCBwYXJpdHkuCisgICAgICAgICAgICBpZiAoISgkaW50ZXJmYWNlTmFtZSBl
cSAiRE9NV2luZG93IiBhbmQgJGF0dHJOYW1lIGVxICJ0b3AiKSkgeworICAgICAgICAgICAgICAg
ICRwcm9wQXR0ciAuPSAifHY4OjpSZWFkT25seSI7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
IyBOb3JtYWwKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRl
cmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOworICAgICAgICAgICAg
JHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRl
ciI7CiAgICAgICAgIH0KIAotICAgICMgQ3VzdG9tIFNldHRlcgotICAgIH0gZWxzaWYgKCRhdHRy
RXh0LT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0pIHsK
LSAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7Ci0gICAgICAgICRnZXR0ZXIgPSAiJHtpbnRl
cmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwotICAgICAgICAkc2V0
dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwotCi0g
ICAgIyBDdXN0b20gR2V0dGVyCi0gICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVy
In0pIHsKLSAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFj
Y2Vzc29yR2V0dGVyIjsKLSAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJu
YWw6OiR7YXR0ck5hbWV9QXR0clNldHRlciI7Ci0KLSAgICAjIFJlcGxhY2VhYmxlCi0gICAgfSBl
bHNpZiAoJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSkgewotICAgICAgICAjIFJlcGxhY2VhYmxl
IGFjY2Vzc29yIGlzIHB1dCBvbiBpbnN0YW5jZSB0ZW1wbGF0ZSB3aXRoIFJlYWRPbmx5IGF0dHJp
YnV0ZS4KLSAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0
ck5hbWV9QXR0ckdldHRlciI7Ci0gICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0KLSAgICAgICAgIyBN
YXJrIHRvIGF2b2lkIGR1cGxpY2F0ZSB2ODo6UmVhZE9ubHkgZmxhZ3MgaW4gb3V0cHV0LgotICAg
ICAgICAkaGFzQ3VzdG9tU2V0dGVyID0gMTsKLQotICAgICAgICAjIEhhbmRsZSB0aGUgc3BlY2lh
bCBjYXNlIG9mIHdpbmRvdy50b3AgYmVpbmcgbWFya2VkIHVwc3RyZWFtIGFzIFJlcGxhY2VhYmxl
LgotICAgICAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aHkgW1JlcGxhY2VhYmxlXSBpcyBub3Qg
bWFya2VkIGFzIFJlYWRPbmx5Ci0gICAgICAgICMgdXBzdHJlYW0gYW5kIHJlYWNoIHBhcml0eS4K
LSAgICAgICAgaWYgKCEoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgYW5kICRhdHRyTmFt
ZSBlcSAidG9wIikpIHsKKyAgICAgICAgaWYgKCRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0gJiYg
ISRoYXNDdXN0b21TZXR0ZXIpIHsKKyAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7CiAgICAgICAg
ICAgICAkcHJvcEF0dHIgLj0gInx2ODo6UmVhZE9ubHkiOwogICAgICAgICB9CiAKLSAgICAjIE5v
cm1hbAotICAgIH0gZWxzZSB7Ci0gICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUlu
dGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwotICAgICAgICAkc2V0dGVyID0gIiR7aW50
ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyIjsKLSAgICB9Ci0KLSAg
ICBpZiAoJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSAmJiAhJGhhc0N1c3RvbVNldHRlcikgewot
ICAgICAgICAkc2V0dGVyID0gIjAiOwotICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6UmVhZE9u
bHkiOwotICAgIH0KKyAgICAgICAgIyBSZWFkIG9ubHkgYXR0cmlidXRlcworICAgICAgICBpZiAo
JGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5LyB8fCAkYXR0ckV4dC0+eyJWOFJlYWRPbmx5
In0pIHsKKyAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7CisgICAgICAgIH0KIAotICAgICMgUmVh
ZCBvbmx5IGF0dHJpYnV0ZXMKLSAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRvbmx5
LyB8fCAkYXR0ckV4dC0+eyJWOFJlYWRPbmx5In0pIHsKLSAgICAgICAgJHNldHRlciA9ICIwIjsK
LSAgICB9CisgICAgICAgICMgQW4gYWNjZXNzb3IgY2FuIGJlIGluc3RhbGxlZCBvbiB0aGUgcHJv
dG8KKyAgICAgICAgaWYgKCRhdHRyRXh0LT57InY4T25Qcm90byJ9KSB7CisgICAgICAgICAgICAk
b25fcHJvdG8gPSAiMSAvKiBvbiBwcm90byAqLyI7CisgICAgICAgIH0KIAotICAgICMgQW4gYWNj
ZXNzb3IgY2FuIGJlIGluc3RhbGxlZCBvbiB0aGUgcHJvdG8KLSAgICBpZiAoJGF0dHJFeHQtPnsi
djhPblByb3RvIn0pIHsKLSAgICAgICAgJG9uX3Byb3RvID0gIjEgLyogb24gcHJvdG8gKi8iOwot
ICAgIH0KKyAgICAgICAgbXkgJGNvbW1lbnRJbmZvID0gIkF0dHJpYnV0ZSAnJGF0dHJOYW1lJyAo
VHlwZTogJyIgLiAkYXR0cmlidXRlLT50eXBlIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IicgRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsKKyAg
ICAgICAgCisgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogCi0gICAgbXkgJGNvbW1lbnRJbmZvID0gIkF0dHJpYnV0ZSAnJGF0dHJOYW1lJyAoVHlwZTog
JyIgLiAkYXR0cmlidXRlLT50eXBlIC4KLSAgICAgICAgICAgICAgICAgICAgICAiJyBFeHRBdHRy
OiAnIiAuIGpvaW4oJyAnLCBrZXlzKCV7JGF0dHJFeHR9KSkgLiAiJykiOwotICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAg
IC8vICRjb21tZW50SW5mbwogICB7ICIkYXR0ck5hbWUiLAogICAgICRnZXR0ZXIsCkBAIC0xMDQw
LDYgKzEwNTEsNyBAQCBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YQogICAgIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BBdHRyKSwKICAgICAkb25fcHJvdG8g
fSwKIEVORAorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgfQogfQogCkBAIC0x
MDU0LDcgKzEwNjYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIG15ICRjbGFz
c0luZGV4ID0gdWMoJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRpbnRlcmZhY2VOYW1lKSk7
CiAKICAgICBteSAkaGFzTGVnYWN5UGFyZW50ID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiTGVnYWN5UGFyZW50In07Ci0gICAgbXkgJGNvbmRpdGlvbmFsID0gJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKKyAgICBteSAkY29uZGl0aW9uYWxT
dHJpbmcgPSBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRkYXRhTm9kZSk7CiAKICAgICBAYWxs
UGFyZW50cyA9ICRjb2RlR2VuZXJhdG9yLT5GaW5kUGFyZW50c1JlY3Vyc2l2ZWx5KCRkYXRhTm9k
ZSk7CiAKQEAgLTEwNjcsMTEgKzEwNzksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgIiNpbmNsdWRlIFwiVjhCaW5kaW5nLmhcIlxuXG4iIC4KICAgICAgICAgICIjdW5k
ZWYgTE9HXG5cbiIpOwogCi0gICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgIGlmICgkY29u
ZGl0aW9uYWwpIHsKLSAgICAgICAgJGNvbmRpdGlvbmFsU3RyaW5nID0gIkVOQUJMRSgiIC4gam9p
bigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYvLCAkY29uZGl0aW9uYWwpKSAuICIpIjsKLSAgICAg
ICAgcHVzaChAaW1wbEZpeGVkSGVhZGVyLCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxu
Iik7Ci0gICAgfQorICAgIHB1c2goQGltcGxGaXhlZEhlYWRlciwgIlxuI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIAogICAgIGlmICgkY2xhc3NO
YW1lID1+IC9eVjhTVkdBbmltYXRlZC8pIHsKICAgICAgICAgQWRkSW5jbHVkZXNGb3JTVkdBbmlt
YXRlZFR5cGUoJGludGVyZmFjZU5hbWUpOwpAQCAtMTM4Nyw3ICsxMzk1LDcgQEAgRU5ECiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiBFTkQKIAotICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5k
aWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbDsKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CiB9CiAKIApAQCAtMjA0MCw4ICsyMDQ4LDggQEAgc3ViIFJldHVy
bk5hdGl2ZVRvSlNWYWx1ZQogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiUkdCQ29sb3IiKSB7
Ci0gICAgICAgIG15ICRjb25zdHJ1Y3QgPSAiUmVmUHRyPFJHQkNvbG9yPiByZ2Jjb2xvciA9IFJH
QkNvbG9yOjpjcmVhdGUoJHZhbHVlKTtcbiI7Ci0gICAgICAgIG15ICRjb252ZXJ0ID0gIlY4RE9N
V3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpSR0JDT0xPUiwgV1RGOjpn
ZXRQdHIocmdiY29sb3IpKSI7CisgICAgICAgIG15ICRjb25zdHJ1Y3QgPSAiUmVmUHRyPFJHQkNv
bG9yPiByZ2Jjb2xvciA9IFJHQkNvbG9yOjpjcmVhdGUoJHZhbHVlKTtcbiI7CisgICAgICAgIG15
ICRjb252ZXJ0ID0gIlY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4
OjpSR0JDT0xPUiwgV1RGOjpnZXRQdHIocmdiY29sb3IpKSI7CiAgICAgICAgIHJldHVybiAkY29u
c3RydWN0IC4gJGluZGVudCAuICJyZXR1cm4gIiAuICRjb252ZXJ0OwogICAgIH0KIApJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAkocmV2aXNpb24gNDYxMjUpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1Myw2ICsxNTMsMTEgQEAKICNpbmNsdWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNs
dWRlICJYUGF0aFJlc3VsdC5oIgogCisjaWYgRU5BQkxFKERBVEFHUklEKQorI2luY2x1ZGUgIkRh
dGFHcmlkQ29sdW1uLmgiCisjaW5jbHVkZSAiRGF0YUdyaWRDb2x1bW5MaXN0LmgiCisjZW5kaWYg
Ly8gREFUQUdSSUQKKwogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICNpbmNsdWRlICJTdG9yYWdl
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwCShyZXZpc2lvbiA0NjEyNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUyLDcgKzQ1MiwxMyBAQCB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhECiAgICAgY2FzZSBWOENsYXNzSW5kZXg6
OkNMSUVOVFJFQ1RMSVNUOgogICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCkt
PlNldEluZGV4ZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKENs
aWVudFJlY3RMaXN0KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6CisjaWYgRU5BQkxF
KERBVEFHUklEKQorICAgIGNhc2UgVjhDbGFzc0luZGV4OjpEQVRBR1JJRENPTFVNTkxJU1Q6Cisg
ICAgICAgIGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0SW5kZXhlZFByb3BlcnR5
SGFuZGxlcihVU0VfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KSk7
CisgICAgICAgIGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0TmFtZWRQcm9wZXJ0
eUhhbmRsZXIoVVNFX05BTUVEX1BST1BFUlRZX0dFVFRFUihEYXRhR3JpZENvbHVtbkxpc3QpKTsK
KyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApAQCAtNzg5LDcgKzc5NSwxOCBAQCBib29sIFY4RE9NV3JhcHBlcjo6aXNXcmFwcGVy
T2ZUeXBlKHY4OjpICiAjZGVmaW5lIEZPUl9FQUNIX1ZJREVPX1RBRyhtYWNybykKICNlbmRpZgog
CisjaWYgRU5BQkxFKERBVEFHUklEKQorI2RlZmluZSBGT1JfRUFDSF9EQVRBR1JJRF9UQUcobWFj
cm8pICAgICAgICAgICAgICAgXAorICBtYWNybyhkYXRhZ3JpZCwgREFUQUdSSUQpICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICBtYWNybyhkY2VsbCwgREFUQUdSSURDRUxMKSAgICAgICAgICAg
ICAgICAgICAgICAgXAorICBtYWNybyhkY29sLCBEQVRBR1JJRENPTCkgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICBtYWNybyhkcm93LCBEQVRBR1JJRFJPVykKKyNlbHNlCisjZGVmaW5lIEZP
Ul9FQUNIX0RBVEFHUklEX1RBRyhtYWNybykKKyNlbmRpZgorCiAjZGVmaW5lIEZPUl9FQUNIX1RB
RyhtYWNybykgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRk9SX0VBQ0hfREFUQUdSSURf
VEFHKG1hY3JvKSAgICAgICAgICAgICAgICAgICBcCiAgICAgbWFjcm8oYSwgQU5DSE9SKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgbWFjcm8oYXBwbGV0LCBBUFBMRVQpICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgbWFjcm8oYXJlYSwgQVJFQSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdy
aWREYXRhU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0
YUdyaWREYXRhU291cmNlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhEYXRhR3JpZERhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKERBVEFHUklEKQorCisjaW5jbHVkZSAiVjhE
YXRhR3JpZERhdGFTb3VyY2UuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MRGF0YUdyaWRFbGVtZW50LmgiCisjaW5jbHVkZSAiVjhI
VE1MRGF0YUdyaWRFbGVtZW50LmgiCisKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWOERhdGFH
cmlkRGF0YVNvdXJjZTo6VjhEYXRhR3JpZERhdGFTb3VyY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGRhdGFTb3VyY2UsIEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fZGF0YVNvdXJjZSh2ODo6UGVyc2lz
dGVudDx2ODo6VmFsdWU+OjpOZXcoZGF0YVNvdXJjZSkpCisgICAgLCBtX2ZyYW1lKGZyYW1lKQor
eworI2lmbmRlZiBOREVCVUcKKyAgICBWOEdDQ29udHJvbGxlcjo6cmVnaXN0ZXJHbG9iYWxIYW5k
bGUoREFUQVNPVVJDRSwgdGhpcywgbV9kYXRhU291cmNlKTsKKyNlbmRpZgorfQorCitWOERhdGFH
cmlkRGF0YVNvdXJjZTo6flY4RGF0YUdyaWREYXRhU291cmNlKCkKK3sKKyNpZm5kZWYgTkRFQlVH
CisgICAgVjhHQ0NvbnRyb2xsZXI6OnVucmVnaXN0ZXJHbG9iYWxIYW5kbGUodGhpcywgbV9kYXRh
U291cmNlKTsKKyNlbmRpZgorICAgIG1fZGF0YVNvdXJjZS5EaXNwb3NlKCk7CisgICAgbV9kYXRh
U291cmNlLkNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShEQVRBR1JJRCkKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3Vy
Y2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFT
b3VyY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBWOERhdGFHcmlk
RGF0YVNvdXJjZV9oCisjZGVmaW5lIFY4RGF0YUdyaWREYXRhU291cmNlX2gKKworI2lmIEVOQUJM
RShEQVRBR1JJRCkKKworI2luY2x1ZGUgIkRhdGFHcmlkRGF0YVNvdXJjZS5oIgorI2luY2x1ZGUg
PHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MRGF0
YUdyaWRFbGVtZW50OworCitjbGFzcyBWOERhdGFHcmlkRGF0YVNvdXJjZSA6IHB1YmxpYyBEYXRh
R3JpZERhdGFTb3VyY2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4RGF0YUdy
aWREYXRhU291cmNlPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGFTb3VyY2UsIEZy
YW1lKiBmcmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVjhEYXRhR3Jp
ZERhdGFTb3VyY2UoZGF0YVNvdXJjZSwgZnJhbWUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5W
OERhdGFHcmlkRGF0YVNvdXJjZSgpOworCisgICAgdmlydHVhbCBib29sIGlzSlNEYXRhR3JpZERh
dGFTb3VyY2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGpzRGF0YVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVNvdXJjZTsgfQorCitwcml2
YXRlOgorICAgIFY4RGF0YUdyaWREYXRhU291cmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgRnJh
bWUqKTsKKworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gbV9kYXRhU291cmNlOworICAg
IFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKK307CisKK2lubGluZSBWOERhdGFHcmlkRGF0YVNvdXJj
ZSogYXNWOERhdGFHcmlkRGF0YVNvdXJjZShEYXRhR3JpZERhdGFTb3VyY2UqIGRhdGFTb3VyY2Up
Cit7CisgICAgQVNTRVJUKGRhdGFTb3VyY2UtPmlzSlNEYXRhR3JpZERhdGFTb3VyY2UoKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFY4RGF0YUdyaWREYXRhU291cmNlKj4oZGF0YVNvdXJjZSk7
Cit9CisKK2lubGluZSBjb25zdCBWOERhdGFHcmlkRGF0YVNvdXJjZSogYXNWOERhdGFHcmlkRGF0
YVNvdXJjZShjb25zdCBEYXRhR3JpZERhdGFTb3VyY2UqIGRhdGFTb3VyY2UpCit7CisgICAgQVNT
RVJUKGRhdGFTb3VyY2UtPmlzSlNEYXRhR3JpZERhdGFTb3VyY2UoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IFY4RGF0YUdyaWREYXRhU291cmNlKj4oZGF0YVNvdXJjZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShEQVRBR1JJRCkKKyNl
bmRpZiAvLyBWOERhdGFHcmlkRGF0YVNvdXJjZV9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmgKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBz
dm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5oCShyZXZpc2lvbiA0NjEyNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgVihFVkVOVF9MSVNURU5FUikgICAgICAgICAgICAgXAogICAgIFYoTk9ERV9GSUxURVIp
ICAgICAgICAgICAgICAgIFwKICAgICBWKFNDUklQVElOU1RBTkNFKSAgICAgICAgICAgICBcCi0g
ICAgVihTQ1JJUFRWQUxVRSkKKyAgICBWKFNDUklQVFZBTFVFKSAgICAgICAgICAgICAgICBcCisg
ICAgVihEQVRBU09VUkNFKQogCiAKICAgICAvLyBIb3N0IGluZm9ybWF0aW9uIG9mIHBlcnNpc3Rl
bnQgaGFuZGxlcy4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCShyZXZpc2lvbiA0NjEyNSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+ICgqRnVuY3Rpb25UZW1wbGF0ZUZhY3RvcnkpKCk7CiAKKyNpZiBF
TkFCTEUoREFUQUdSSUQpCisjZGVmaW5lIERBVEFHUklEX0hUTUxFTEVNRU5UX1RZUEVTKFYpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihIVE1MREFUQUdSSURDRUxM
RUxFTUVOVCwgSFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQpICAgICAgICAgICAgICAgICBcCisgICAg
VihIVE1MREFUQUdSSURDT0xFTEVNRU5ULCBIVE1MRGF0YUdyaWRDb2xFbGVtZW50KSAgICAgICAg
ICAgICAgICAgICBcCisgICAgVihIVE1MREFUQUdSSURFTEVNRU5ULCBIVE1MRGF0YUdyaWRFbGVt
ZW50KSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihIVE1MREFUQUdSSURST1dFTEVN
RU5ULCBIVE1MRGF0YUdyaWRSb3dFbGVtZW50KQorI2RlZmluZSBEQVRBR1JJRF9OT05OT0RFX1RZ
UEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoREFU
QUdSSURDT0xVTU4sIERhdGFHcmlkQ29sdW1uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIFYoREFUQUdSSURDT0xVTU5MSVNULCBEYXRhR3JpZENvbHVtbkxpc3QpCisj
ZWxzZQorI2RlZmluZSBEQVRBR1JJRF9IVE1MRUxFTUVOVF9UWVBFUyhWKQorI2RlZmluZSBEQVRB
R1JJRF9OT05OT0RFX1RZUEVTKFYpCisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFTykKICNkZWZp
bmUgVklERU9fSFRNTEVMRU1FTlRfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBWKEhUTUxBVURJT0VMRU1FTlQsIEhUTUxBdWRpb0VsZW1lbnQpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTc5LDkgKzkzLDcgQEAgdHlwZWRlZiB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbAogICAgIFYoQVRUUiwgQXR0cikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYo
Q0hBUkFDVEVSREFUQSwgQ2hhcmFjdGVyRGF0YSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIFYoQ0RBVEFTRUNUSU9OLCBDREFUQVNlY3Rpb24pICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFYoQ09NTUVOVCwgQ29tbWVudCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFYoREFU
QUdSSURDT0xVTU4sIERhdGFHcmlkQ29sdW1uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIFYoREFUQUdSSURDT0xVTU5MSVNULCBEYXRhR3JpZENvbHVtbkxpc3QpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoQ09NTUVOVCwgQ29tbWVudCkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoRE9DVU1F
TlQsIERvY3VtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIFYoRE9DVU1FTlRGUkFHTUVOVCwgRG9jdW1lbnRGcmFnbWVudCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoRE9DVU1FTlRUWVBFLCBEb2N1bWVudFR5cGUp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTAzLDEwICsxMTUs
NiBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihIVE1M
QlJFTEVNRU5ULCBIVE1MQlJFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgVihIVE1MQlVUVE9ORUxFTUVOVCwgSFRNTEJ1dHRvbkVsZW1lbnQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihIVE1MQ0FOVkFTRUxFTUVOVCwgSFRNTENh
bnZhc0VsZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgVihIVE1MREFU
QUdSSURDRUxMRUxFTUVOVCwgSFRNTERhdGFHcmlkQ2VsbEVsZW1lbnQpICAgICAgICAgICAgICAg
ICBcCi0gICAgVihIVE1MREFUQUdSSURDT0xFTEVNRU5ULCBIVE1MRGF0YUdyaWRDb2xFbGVtZW50
KSAgICAgICAgICAgICAgICAgICBcCi0gICAgVihIVE1MREFUQUdSSURFTEVNRU5ULCBIVE1MRGF0
YUdyaWRFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgVihIVE1MREFUQUdS
SURST1dFTEVNRU5ULCBIVE1MRGF0YUdyaWRSb3dFbGVtZW50KSAgICAgICAgICAgICAgICAgICBc
CiAgICAgVihIVE1MRElSRUNUT1JZRUxFTUVOVCwgSFRNTERpcmVjdG9yeUVsZW1lbnQpICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgVihIVE1MRElWRUxFTUVOVCwgSFRNTERpdkVsZW1lbnQp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihIVE1MRExJU1RFTEVN
RU5ULCBIVE1MRExpc3RFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBA
IC0xNTQsNiArMTYyLDcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bAogICAgIFYoSFRNTFRJVExFRUxFTUVOVCwgSFRNTFRpdGxlRWxlbWVudCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIFYoSFRNTFVMSVNURUxFTUVOVCwgSFRNTFVMaXN0RWxl
bWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoSFRNTEVMRU1FTlQs
IEhUTUxFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIERBVEFHUklEX0hUTUxFTEVNRU5UX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIFZJREVPX0hUTUxFTEVNRU5UX1RZUEVTKFYpCiAKICNpZiBF
TkFCTEUoU1ZHX0FOSU1BVElPTikKQEAgLTM3Niw2ICszODUsNyBAQCB0eXBlZGVmIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihYUEFUSFJFU1VMVCwgWFBhdGhSZXN1bHQp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihYU0xUUFJP
Q0VTU09SLCBYU0xUUHJvY2Vzc29yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgQUNUSVZFX0RPTV9PQkpFQ1RfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgREFUQUdSSURfTk9OTk9ERV9UWVBFUyhWKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVklERU9fTk9OTk9E
RV9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgU0hBUkVEX1dPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgV09SS0VSX05PTk5PREVfV1JBUFBFUl9UWVBFUyhWKQpA
QCAtMzg5LDE0ICszOTksMTQgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbAogICAgIFYoU1FMVFJBTlNBQ1RJT04sIFNRTFRyYW5zYWN0aW9uKQogI2Vsc2UKICNkZWZp
bmUgRE9NX09CSkVDVF9EQVRBQkFTRV9UWVBFUyhWKQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRE9N
X1NUT1JBR0UpCi0jZGVmaW5lIERPTV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgVihTVE9SQUdFLCBTdG9yYWdlKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgVihTVE9S
QUdFRVZFTlQsIFN0b3JhZ2VFdmVudCkKLSNlbHNlCi0jZGVmaW5lIERPTV9PQkpFQ1RfU1RPUkFH
RV9UWVBFUyhWKQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisjZGVmaW5lIERP
TV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgVihTVE9SQUdFLCBTdG9yYWdlKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihTVE9SQUdFRVZFTlQsIFN0b3JhZ2VFdmVu
dCkKKyNlbHNlCisjZGVmaW5lIERPTV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKQogI2VuZGlmCiAK
ICNkZWZpbmUgRE9NX09CSkVDVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q3VzdG9tQmluZGluZy5oCShyZXZpc2lvbiA0NjEyNSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsOCArNDA2LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm9kZUZp
bHRlckFjY2VwdE5vZGUpOwogCi0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRN
TERhdGFHcmlkRWxlbWVudERhdGFTb3VyY2UpOwotCiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
SFRNTEZvcm1FbGVtZW50U3VibWl0KTsKIAogICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZ
X0dFVFRFUihET01XaW5kb3cpOwpAQCAtNDUyLDYgKzQ1MCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1FMUmVzdWx0U2V0Um93TGlzdEl0ZW0pOwog
CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoQ2xpZW50UmVjdExpc3Qp
OworICAKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUND
RVNTT1IoSFRNTERhdGFHcmlkRWxlbWVudERhdGFTb3VyY2UpOworICAgICAgICBERUNMQVJFX0lO
REVYRURfUFJPUEVSVFlfR0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCk7CisgICAgICAgIERFQ0xB
UkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCk7CisjZW5kaWYgICAg
ICAKIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BS
T1BFUlRZX0dFVFRFUihTdG9yYWdlKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlkQ29sdW1uTGlzdEN1
c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEYXRhR3JpZENvbHVtbkxpc3QuaCIK
KworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
KyNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKKyNp
ZiBFTkFCTEUoREFUQUdSSUQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSU5ERVhFRF9QUk9Q
RVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KQoreworICAgIElOQ19TVEFUUygiRGF0YUdy
aWRDb2x1bW5MaXN0LkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOworICAgIERhdGFHcmlkQ29sdW1u
TGlzdCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RGF0YUdyaWRD
b2x1bW5MaXN0PihWOENsYXNzSW5kZXg6OkRBVEFHUklEQ09MVU1OTElTVCwgaW5mby5Ib2xkZXIo
KSk7CisgICAgRGF0YUdyaWRDb2x1bW4qIHJlc3VsdCA9IGltcC0+aXRlbShpbmRleCk7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwor
ICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6
REFUQUdSSURDT0xVTU4sIHJlc3VsdCk7Cit9CisKK05BTUVEX1BST1BFUlRZX0dFVFRFUihEYXRh
R3JpZENvbHVtbkxpc3QpCit7CisgICAgSU5DX1NUQVRTKCJEYXRhR3JpZENvbHVtbkxpc3QuTmFt
ZWRQcm9wZXJ0eUdldHRlciIpOworICAgIC8vIFNlYXJjaCB0aGUgcHJvdG90eXBlIGNoYWluIGZp
cnN0LgorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IGluZm8uSG9sZGVyKCktPkdl
dFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKTsKKyAgICBpZiAoIXZhbHVl
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIAorICAgIC8vIFRoZW4gbG9v
ayBmb3IgSURMIGRlZmluZWQgcHJvcGVydGllcyBvbiB0aGUgb2JqZWN0IGl0c2VsZi4KKyAgICBp
ZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1lKSkKKyAg
ICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgCisgICAgLy8gRmlu
YWxseSwgbG9vayB1cCBhIGNvbHVtbiBieSBuYW1lLgorICAgIERhdGFHcmlkQ29sdW1uTGlzdCog
aW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RGF0YUdyaWRDb2x1bW5M
aXN0PihWOENsYXNzSW5kZXg6OkRBVEFHUklEQ09MVU1OTElTVCwgaW5mby5Ib2xkZXIoKSk7Cisg
ICAgRGF0YUdyaWRDb2x1bW4qIHJlc3VsdCA9IGltcC0+aXRlbVdpdGhOYW1lKHRvV2ViQ29yZVN0
cmluZyhuYW1lKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBub3RIYW5kbGVk
QnlJbnRlcmNlcHRvcigpOworICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2Jq
ZWN0KFY4Q2xhc3NJbmRleDo6REFUQUdSSURDT0xVTU4sIHJlc3VsdCk7Cit9CisgICAgCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQUdSSUQpCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlkQ29sdW1u
TGlzdEN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEYXRhR3JpZEVsZW1lbnRDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERh
dGFHcmlkRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDQ2MTI1KQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRGF0YUdyaWRFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksMjcgKzI5LDQyIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERhdGFHcmlkRWxlbWVudC5oIgotCi0j
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJWOERhdGFHcmlkRGF0YVNvdXJj
ZS5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5n
LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCisjaWYgRU5BQkxFKERBVEFHUklEKQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEFDQ0VTU09SX0dFVFRFUihIVE1MRGF0YUdyaWRFbGVtZW50RGF0
YVNvdXJjZSkKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRGF0YUdyaWRFbGVtZW50LmRhdGFT
b3VyY2UuX2dldCIpOwotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOworICAgIEhUTUxEYXRhR3JpZEVsZW1lbnQq
IGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRNTERhdGFHcmlk
RWxlbWVudD4oaG9sZGVyKTsKKyAgICBEYXRhR3JpZERhdGFTb3VyY2UqIGRhdGFTb3VyY2UgPSBp
bXAtPmRhdGFTb3VyY2UoKTsKKyAgICBpZiAoZGF0YVNvdXJjZSAmJiBkYXRhU291cmNlLT5pc0pT
RGF0YUdyaWREYXRhU291cmNlKCkpCisgICAgICAgIHJldHVybiBhc1Y4RGF0YUdyaWREYXRhU291
cmNlKGRhdGFTb3VyY2UpLT5qc0RhdGFTb3VyY2UoKTsKICAgICByZXR1cm4gdjg6Ok51bGwoKTsK
IH0KIAogQUNDRVNTT1JfU0VUVEVSKEhUTUxEYXRhR3JpZEVsZW1lbnREYXRhU291cmNlKQogewog
ICAgIElOQ19TVEFUUygiRE9NLkhUTUxEYXRhR3JpZEVsZW1lbnQuZGF0YVNvdXJjZS5fc2V0Iik7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uSG9sZGVyKCk7CisgICAgSFRNTERhdGFHcmlkRWxlbWVudCogaW1wID0gVjhET01X
cmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxIVE1MRGF0YUdyaWRFbGVtZW50Pihob2xk
ZXIpOworICAgIFBhc3NSZWZQdHI8RGF0YUdyaWREYXRhU291cmNlPiBkYXRhU291cmNlOworICAg
IGlmICghdmFsdWUuSXNFbXB0eSgpKSB7CisgICAgICAgIEZyYW1lICpmcmFtZSA9IGltcC0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKTsKKyAgICAgICAgZGF0YVNvdXJjZSA9IFY4RGF0YUdyaWREYXRhU291
cmNlOjpjcmVhdGUodmFsdWUsIGZyYW1lKTsKKyAgICB9CisgICAgaW1wLT5zZXREYXRhU291cmNl
KGRhdGFTb3VyY2UuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiBFTkFCTEUoREFUQUdSSUQpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NjEyNSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDA5LTA3LTIw
ICBKZW5zIEFsZmtlICA8c25lakBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgVjggYmluZGluZ3MgZm9yIERhdGFHcmlk
IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjczODMKKyAgICAgICAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vl
cy9kZXRhaWw/aWQ9MTY3MzAKKworICAgICAgICBUZXN0czogRW5oYW5jZWQgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC8qCisgICAgICAgIHRvIGhhbmRsZSBleGNlcHRp
b25zLCBjaGVjayBhcHByb3ByaWF0ZSBKUyBwcm90b3R5cGVzLCBhbmQKKyAgICAgICAgdGVzdCBj
b2x1bW4tbGlzdCdzIGl0ZW0oKSBtZXRob2QgYXMgd2VsbCBhcyBhcnJheS1pbmRleGluZy4KKwor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJh
c2ljLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50
L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEYXRh
R3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1hdHRyaWJ1dGVzLmh0bWw6CisgICAgICAg
ICogZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlk
Q29sdW1ucy1kb20uaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50
L0RhdGFHcmlkRGF0YVNvdXJjZS1iYXNpYy5odG1sOgorCiAyMDA5LTA3LTE5ICBTaW1vbiBIYXVz
bWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkg
WGFuIExvcGV6LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVu
dC9EYXRhR3JpZENvbHVtbnMtYmFzaWMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJhc2lj
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDYxMjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBAIFBBU1M6IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdy
aWQuY29sdW1ucyAKIFBBU1M6IEluaXRpYWwgbGVuZ3RoIG9mIGRhdGFncmlkLmNvbHVtbnMgaXMg
MC4KIFBBU1M6IENvbHVtbiByZXR1cm5lZCBmcm9tIGFkZC4KIFBBU1M6IFdlIGhhdmUgb25lIGNv
bHVtbiBpbiB0aGUgbGlzdC4KK1BBU1M6IFRoZSBjb2x1bW4gYXQgaXRlbSgwKSBpcyB0aGUgY29s
dW1uIHdlIGdvdCBiYWNrIGZyb20gYWRkLgogUEFTUzogVGhlIGNvbHVtbiBhdCBpbmRleCAwIGlz
IHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQuCiBQQVNTOiBUaGUgY29sdW1uIHdoZW4g
cmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUgd2UgZ290IGJhY2sgZnJvbSBhZGQuCiBQQVNT
OiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJvbWNvbCBhcyBleHBlY3RlZC4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJhc2ljLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVu
dC9EYXRhR3JpZENvbHVtbnMtYmFzaWMuaHRtbAkocmV2aXNpb24gNDYxMjUpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1iYXNpYy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsOCBAQAogICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAKKyAgICAgICAgdHJ5IHsK
KwogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKG1zZyArICJcbiIpKTsKQEAgLTQ2LDE3ICs0OCwyNyBAQAogICAgICAgICAgICAg
bG9nKCJGQUlMOiBFeHBlY3RlZCBvbmUgY29sdW1uIGluIHRoZSBsaXN0IGJ1dCBoYXZlICIgKyBk
YXRhZ3JpZC5jb2x1bW5zLmxlbmd0aCArICIgY29sdW1ucyBpbnN0ZWFkLiIpOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbHVtbiB3ZSBnb3QgYmFjayBm
cm9tIGFkZCBpcyB0aGUgb25lIGluIHRoZSBsaXN0LgotICAgICAgICBpZiAoZGF0YWdyaWQuY29s
dW1uc1swXSA9PSBjb2x1bW4pIHsKKyAgICAgICAgLy8gVXNlIGl0ZW0oMCkgdG8gbWFrZSBzdXJl
IHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQgaXMgdGhlIG9uZSBpbiB0aGUgbGlzdC4K
KyAgICAgICAgdmFyIGdvdENvbHVtbiA9IGRhdGFncmlkLmNvbHVtbnMuaXRlbSgwKTsKKyAgICAg
ICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKKyAgICAgICAgICAgIGxvZygiUEFTUzogVGhl
IGNvbHVtbiBhdCBpdGVtKDApIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQuIik7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gYXQg
aXRlbSgwKSAoIiArIGdvdENvbHVtbiArICIpIGlzIG5vdCB0aGUgb25lIHdlIGV4cGVjdGVkICgi
ICsgY29sdW1uICsgIikuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFVzZSBb
MF0gdG8gbWFrZSBzdXJlIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBhZGQgaXMgdGhlIG9u
ZSBpbiB0aGUgbGlzdC4KKyAgICAgICAgZ290Q29sdW1uID0gZGF0YWdyaWQuY29sdW1uc1swXTsK
KyAgICAgICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKICAgICAgICAgICAgIGxvZygiUEFT
UzogVGhlIGNvbHVtbiBhdCBpbmRleCAwIGlzIHRoZSBjb2x1bW4gd2UgZ290IGJhY2sgZnJvbSBh
ZGQuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1
bW4gYXQgaW5kZXggMCBpcyBub3QgdGhlIG9uZSB3ZSBleHBlY3RlZC4iKTsKKyAgICAgICAgICAg
IGxvZygiRkFJTDogVGhlIGNvbHVtbiBhdCBpbmRleCAwICgiICsgZ290Q29sdW1uICsgIikgaXMg
bm90IHRoZSBvbmUgd2UgZXhwZWN0ZWQgKCIgKyBjb2x1bW4gKyAiKS4iKTsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnNbImZyb21jb2wiXSA9PSBjb2x1
bW4pIHsKKyAgICAgICAgZ290Q29sdW1uID0gZGF0YWdyaWQuY29sdW1uc1siZnJvbWNvbCJdOwor
ICAgICAgICBpZiAoZ290Q29sdW1uID09IGNvbHVtbikgewogICAgICAgICAgICAgbG9nKCJQQVNT
OiBUaGUgY29sdW1uIHdoZW4gcmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUgd2UgZ290IGJh
Y2sgZnJvbSBhZGQuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6
IFRoZSBjb2x1bW4gd2hlbiByZWZlcmVuY2VkIGJ5IG5hbWUgaXMgbm90IHRoZSBvbmUgd2UgZXhw
ZWN0ZWQuIik7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gd2hlbiByZWZlcmVu
Y2VkIGJ5IG5hbWUgKCIgKyBnb3RDb2x1bW4gKyAiKSBpcyBub3QgdGhlIG9uZSB3ZSBleHBlY3Rl
ZCAoIiArIGNvbHVtbiArICIpLiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRXhhbWluZSB0
aGUgY29sdW1uJ3MgcHJvcGVydGllcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgd2hhdCB3ZSBleHBl
Y3RlZC4KQEAgLTk3LDYgKzEwOSwxMCBAQAogICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUgY29s
dW1uIGlzIG5vdCB0aGUgcHJpbWFyeSBjb2x1bW4gYXMgZXhwZWN0ZWQuIik7CiAgICAgICAgIH0K
IAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxvZygiRkFJTDog
VGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICAgICAgICB9CisKICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1hdHRyaWJ1dGVz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxl
bWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWF0dHJpYnV0ZXMuaHRtbAkocmV2aXNpb24gNDYxMjUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29s
dW1ucy1kb20tYXR0cmlidXRlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsOCBAQAog
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAg
ICB9CiAKKyAgICAgICAgdHJ5eworCiAgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgIlxuIikpOwpAQCAtNzQsNiArNzYs
MTAgQEAKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGZpcnN0IGNvbHVtbiBpcyBub3QgdGhl
IHByaW1hcnkgY29sdW1uIGFzIGV4cGVjdGVkLiIpOwogICAgICAgICB9CiAKKyAgICAgICAgfSBj
YXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IFRocmV3IGV4Y2VwdGlv
biAiICsgZXhjZXB0aW9uKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0
YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1
bW5zLWRvbS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ2MTI1KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDggQEAKK1BBU1M6IGRhdGFncmlkIEpTIGJpbmRp
bmcgaXMgW29iamVjdCBIVE1MRGF0YUdyaWRFbGVtZW50XQogUEFTUzogSW5pdGlhbCB2YWx1ZSBv
ZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIGRlZmluZWQuCitQQVNTOiBkYXRhZ3JpZC5jb2x1bW5zIEpT
IGJpbmRpbmcgaXMgW29iamVjdCBEYXRhR3JpZENvbHVtbkxpc3RdCiBQQVNTOiBJbml0aWFsIGxl
bmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuCitQQVNTOiBuZXdDb2wgSlMgYmluZGluZyBp
cyBbb2JqZWN0IEhUTUxEYXRhR3JpZENvbEVsZW1lbnRdCiBQQVNTOiBXZSBoYXZlIHRocmVlIGNv
bHVtbnMgaW4gdGhlIGxpc3QuCiBQQVNTOiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJvbSBhcyBleHBl
Y3RlZC4KIFBBU1M6IFRoZSBjb2x1bW4ncyBsYWJlbCBpcyBGcm9tIGFzIGV4cGVjdGVkLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVt
bnMtZG9tLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFH
cmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLmh0bWwJKHJldmlzaW9uIDQ2MTI1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMt
ZG9tLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsMTQgKzcsMjkgQEAKICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dHJ5IHsKIAogICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsKICAgICAgICAgfQotCisgICAgICAgIAorICAg
ICAgICBmdW5jdGlvbiBleHBlY3RCaW5kaW5nKHdoYXQsIG9iaiwgY2xhc3NuYW1lKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgZGVzYyA9IFN0cmluZyhvYmopOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkRGVzYyA9ICJbb2JqZWN0ICIgKyBjbGFzc25hbWUgKyAiXSI7CisgICAgICAgICAg
ICBpZiAoZGVzYyA9PSBleHBlY3RlZERlc2MpIHsKKyAgICAgICAgICAgICAgICBsb2coIlBBU1M6
ICIgKyB3aGF0ICsgIiBKUyBiaW5kaW5nIGlzICIgKyBkZXNjKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiAiICsgd2hhdCArICIgSlMgYmluZGluZyBp
cyAiICsgZGVzYyArICIoZXhwZWN0ZWQgIiArIGV4cGVjdGVkRGVzYyArICIpIik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRlc3QgYmluZGluZyBvZiA8
ZGF0YWdyaWQ+IHRvIEpTIEhUTUxEYXRhR3JpZEVsZW1lbnQ6CiAgICAgICAgIHZhciBkYXRhZ3Jp
ZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Ci0KKyAgICAgICAgZXhwZWN0Qmlu
ZGluZygiZGF0YWdyaWQiLCBkYXRhZ3JpZCwgIkhUTUxEYXRhR3JpZEVsZW1lbnQiKTsKKyAgICAg
ICAgCiAgICAgICAgIC8vIFRlc3QgaW5pdGlhbCB2YWx1ZS4KICAgICAgICAgaWYgKGRhdGFncmlk
LmNvbHVtbnMgIT0gbnVsbCkgewogICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0aWFsIHZhbHVl
IG9mIGRhdGFncmlkLmNvbHVtbnMgaXMgZGVmaW5lZC4iKTsKQEAgLTIyLDYgKzM3LDkgQEAKICAg
ICAgICAgICAgIGxvZygiRkFJTDogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIHdh
cyBudWxsLiIpOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gVGVzdCBiaW5kaW5nIG9mIDxkY29s
PiB0byBKUyBEYXRhR3JpZENvbHVtbkxpc3Q6CisgICAgICAgIGV4cGVjdEJpbmRpbmcoImRhdGFn
cmlkLmNvbHVtbnMiLCBkYXRhZ3JpZC5jb2x1bW5zLCAiRGF0YUdyaWRDb2x1bW5MaXN0Iik7Cisg
ICAgICAgIAogICAgICAgICAvLyBUZXN0IGluaXRpYWwgbGVuZ3RoLgogICAgICAgICBpZiAoZGF0
YWdyaWQuY29sdW1ucy5sZW5ndGggPT0gMikgewogICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0
aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuIik7CkBAIC0zMSw2ICs0OSw3IEBA
CiAgICAgICAgIAogICAgICAgICAvLyBUZXN0IGFkZGluZyBhIGNvbHVtbi4KICAgICAgICAgdmFy
IG5ld0NvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRjb2wiKTsKKyAgICAgICAgZXhwZWN0
QmluZGluZygibmV3Q29sIiwgbmV3Q29sLCAiSFRNTERhdGFHcmlkQ29sRWxlbWVudCIpOwogICAg
ICAgICBuZXdDb2wuc2V0QXR0cmlidXRlKCJpZCIsICJkYXRlIik7CiAgICAgICAgIG5ld0NvbC5z
ZXRBdHRyaWJ1dGUoImxhYmVsIiwgIkRhdGUgUmVjZWl2ZWQiKTsKICAgICAgICAgbmV3Q29sLnNl
dEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0Iik7CkBAIC05OCw3ICsxMTcsMTEgQEAKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlcmUgaXMgYSBwcmltYXJ5IGNvbHVt
biwgYnV0IHRoZXJlIHNob3VsZCBub3QgYmUuIik7CiAgICAgICAgIH0KLSAgICAKKyAgICAgICAg
ICAgIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxvZygiRkFJ
TDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICAgICAgICB9CisgICAgICAgIAog
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZERhdGFTb3VyY2Ut
YmFzaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdy
aWRFbGVtZW50L0RhdGFHcmlkRGF0YVNvdXJjZS1iYXNpYy5odG1sCShyZXZpc2lvbiA0NjEyNSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWREYXRh
U291cmNlLWJhc2ljLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw4IEBACiAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIAog
ICAgICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICB7CiAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1zZyArICJcbiIpKTsKQEAgLTE0LDcgKzE2LDcgQEAKICAgICAgICAgdmFyIGRhdGFn
cmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKIAogICAgICAgICAvLyBUZXN0
IGluaXRpYWwgdmFsdWUuCi0gICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09IG51bGwp
IHsKKyAgICAgICAgaWYgKGRhdGFncmlkLmRhdGFTb3VyY2UgPT09IG51bGwpIHsKICAgICAgICAg
ICAgIGxvZygiUEFTUzogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5kYXRhU291cmNlIGlzIG51
bGwuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsb2coIkZBSUw6IEluaXRpYWwg
dmFsdWUgb2YgZGF0YWdyaWQuZGF0YVNvdXJjZSB3YXMgbm90IG51bGwuIFdhcyAiICsgZGF0YWdy
aWQuZGF0YVNvdXJjZSArICIuIik7CkBAIC0yMiwxOCArMjQsMTggQEAKIAogICAgICAgICAvLyBU
ZXN0IHNldHRpbmcgdG8gYSBKUyBudW1iZXIKICAgICAgICAgZGF0YWdyaWQuZGF0YVNvdXJjZSA9
IDEwOwotICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSAxMCkgeworICAgICAgICBp
ZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PT0gMTApIHsKICAgICAgICAgICAgIGxvZygiUEFTUzog
QWxsb3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIuIik7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3dlZCBzZXR0
aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIuIik7CisgICAgICAgICAgICBsb2co
IkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgbnVt
YmVyLiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCBzZXR0aW5nIHRvIGEgSlMgbnVt
YmVyCiAgICAgICAgIGRhdGFncmlkLmRhdGFTb3VyY2UgPSAiVGVzdCBTdHJpbmciOwotICAgICAg
ICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSAiVGVzdCBTdHJpbmciKSB7CisgICAgICAgIGlm
IChkYXRhZ3JpZC5kYXRhU291cmNlID09PSAiVGVzdCBTdHJpbmciKSB7CiAgICAgICAgICAgICBs
b2coIlBBU1M6IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgc3RyaW5n
LiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFs
bG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgc3RyaW5nLiIpOworICAgICAg
ICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFsbG93IHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJj
ZSB0byBhIHN0cmluZy4iKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3Qgc2V0dGluZyBk
YXRhU291cmNlIHRvIGFuIG9iamVjdC4KQEAgLTQyLDE1ICs0NCwxOSBAQAogICAgICAgICBpZiAo
ZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSBkYXRhU291cmNlKSB7CiAgICAgICAgICAgICBsb2coIlBB
U1M6IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGFuIG9iamVjdC4iKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBhbGxvd2Vk
IHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhbiBvYmplY3QuIik7CisgICAgICAgICAg
ICBsb2coIkZBSUw6IERpZCBub3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRv
IGFuIG9iamVjdC4iKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFRlc3Qgc2V0dGluZyBkYXRh
U291cmNlIHRvIGFuIG9iamVjdC4KKyAgICAgICAgLy8gVGVzdCBzZXR0aW5nIGRhdGFTb3VyY2Ug
dG8gbnVsbC4KICAgICAgICAgZGF0YWdyaWQuZGF0YVNvdXJjZSA9IG51bGw7Ci0gICAgICAgIGlm
IChkYXRhZ3JpZC5kYXRhU291cmNlID09IG51bGwpIHsKKyAgICAgICAgaWYgKGRhdGFncmlkLmRh
dGFTb3VyY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgIGxvZygiUEFTUzogQWxsb3dlZCBzZXR0
aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gbnVsbC4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0
YVNvdXJjZSB0byBudWxsLiIpOworICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFsbG93
IHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBudWxsLiIpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxvZygiRkFJ
TDogVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwogICAgICAgICB9CiAgICAgPC9zY3Jp
cHQ+CiA8L2JvZHk+Cg==
</data>
<flag name="review"
          id="17509"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33266</attachid>
            <date>2009-07-22 10:10:41 -0700</date>
            <delta_ts>2009-07-22 14:17:55 -0700</delta_ts>
            <desc>5th patch</desc>
            <filename>dataGridV8_take5.patch</filename>
            <type>text/plain</type>
            <size>66425</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjIyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMDctMjEgIEplbnMgQWxma2UgIDxzbmVqQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1
cCBWOCBiaW5kaW5ncyBmb3IgRGF0YUdyaWQgZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzM4MworICAgICAgICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xNjczMAorCisgICAgICAgIFRl
c3RzOiBFbmhhbmNlZCBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50LyoK
KyAgICAgICAgdG8gaGFuZGxlIGV4Y2VwdGlvbnMsIGNoZWNrIGFwcHJvcHJpYXRlIEpTIHByb3Rv
dHlwZXMsIGFuZAorICAgICAgICB0ZXN0IGNvbHVtbi1saXN0J3MgaXRlbSgpIG1ldGhvZCBhcyB3
ZWxsIGFzIGFycmF5LWluZGV4aW5nLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBu
ZXcgc291cmNlIGZpbGVzLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOiBNYWRlIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEgcHV0ICNpZidzIGFyb3Vu
ZCBjb25kaXRpb25hbCBhdHRyaWJ1dGVzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTU9iamVj
dHNJbmNsdWRlLmg6ICNpbmNsdWRlIERhdGFHcmlkIGhlYWRlcnMuCisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcDogQWRkIGJpbmRpbmdzIGZyb20gSFRNTCB0YWdzIHRvIGRh
dGFncmlkIHRlbXBsYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0VGVt
cGxhdGUpOiBDdXN0b21pemUgZGF0YWdyaWQgdGVtcGxhdGUuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3BwOiBBZGRlZC4gKEJhc2VkIG9uIEpTRGF0YUdyaWRE
YXRhU291cmNlKQorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhR3JpZERhdGFTb3VyY2U6OlY4RGF0
YUdyaWREYXRhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNl
Ojp+VjhEYXRhR3JpZERhdGFTb3VyY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RGF0YUdy
aWREYXRhU291cmNlLmg6IEFkZGVkLiAoQmFzZWQgb24gSlNEYXRhR3JpZERhdGFTb3VyY2UpCisg
ICAgICAgIChXZWJDb3JlOjpWOERhdGFHcmlkRGF0YVNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjppc0pTRGF0YUdyaWREYXRhU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YUdyaWREYXRhU291cmNlOjpqc0RhdGFTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6YXNWOERhdGFHcmlkRGF0YVNvdXJjZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaDogQWRkZWQgbmV3IGhhbmRsZSB0eXBlICJEQVRBU09V
UkNFIi4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6IENvbmRpdGlvbmFsaXplIGRh
dGFncmlkIHN0dWZmLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuaDogRGVjbGFyZSBtb3JlIGFjY2Vzc29ycy4gQ29uZGl0aW9uYWxpemUuCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcDogQWRkZWQu
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERhdGFHcmlkRWxlbWVudEN1c3Rv
bS5jcHA6IEZpbGwgaW4gZGF0YVNvdXJjZSBhY2Nlc3NvcnMuCisgICAgICAgIChXZWJDb3JlOjpB
Q0NFU1NPUl9HRVRURVIpOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfU0VUVEVSKToKKwog
MjAwOS0wNy0yMiAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA0NjIy
NSkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC02MDYsNiArNjA2
LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21YUGF0
aE5TUmVzb2x2ZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJh
c2VDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhR3Jp
ZENvbHVtbkxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NUGFyc2VyQ29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwJywKQEAgLTY5OCw2ICs2OTksOCBAQAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9WOENvbnNvbGVNZXNzYWdlLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvVjhDb25zb2xlTWVzc2FnZS5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERhdGFH
cmlkRGF0YVNvdXJjZS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWRE
YXRhU291cmNlLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01NYXAuaCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcCcsCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDQ2MjI1KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMjQzLDYgKzI0
MywxOCBAQCBzdWIgR2V0SW1wbGVtZW50YXRpb25GaWxlTmFtZQogICAgIHJldHVybiAiJHtpZmFj
ZX0uaCI7CiB9CiAKKyMgSWYgdGhlIG5vZGUgaGFzIGEgW0NvbmRpdGlvbmFsPVhYWF0gYXR0cmli
dXRlLCByZXR1cm5zIGFuICJFTkFCTEUoWFhYKSIgc3RyaW5nIGZvciB1c2UgaW4gYW4gI2lmLgor
c3ViIEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcKK3sKKyAgICBteSAkbm9kZSA9IHNoaWZ0Owor
ICAgIG15ICRjb25kaXRpb25hbCA9ICRub2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0
aW9uYWwifTsKKyAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CisgICAgICAgIHJldHVybiAiRU5BQkxF
KCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBzcGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4gIiki
OworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9CisKIHN1YiBHZW5l
cmF0ZUhlYWRlcgogewogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKQEAgLTI1NywxNyArMjY5LDEy
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICRjb2RlR2VuZXJhdG9yLT5BZGRNZXRob2RzQ29u
c3RhbnRzQW5kQXR0cmlidXRlc0Zyb21QYXJlbnRDbGFzc2VzKCRkYXRhTm9kZSk7CiAKICAgICBt
eSAkaGFzTGVnYWN5UGFyZW50ID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVn
YWN5UGFyZW50In07Ci0gICAgbXkgJGNvbmRpdGlvbmFsID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKKyAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSBH
ZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRkYXRhTm9kZSk7CiAKICAgICAjIC0gQWRkIGRlZmF1
bHQgaGVhZGVyIHRlbXBsYXRlCiAgICAgQGhlYWRlckNvbnRlbnQgPSBzcGxpdCgiXHIiLCAkaGVh
ZGVyVGVtcGxhdGUpOwogCi0gICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgIGlmICgkY29u
ZGl0aW9uYWwpIHsKLSAgICAgICAgJGNvbmRpdGlvbmFsU3RyaW5nID0gIkVOQUJMRSgiIC4gam9p
bigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYvLCAkY29uZGl0aW9uYWwpKSAuICIpIjsKLSAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIp
OwotICAgIH0KLQorICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIlxuI2lmbmRlZiAkY2xhc3NOYW1lIiAuICJfSCIpOwogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJcbiNkZWZpbmUgJGNsYXNzTmFtZSIgLiAiX0hcblxuIik7CiAKQEAgLTMxMCw3ICsz
MTcsNyBAQCBFTkQKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifVxuXG4iKTsKICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiI2VuZGlmIC8vICRjbGFzc05hbWUiIC4gIl9IXG4iKTsKIAotICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cblxu
IikgaWYgJGNvbmRpdGlvbmFsOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWYgLy8g
JHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogfQogCiAK
QEAgLTkwMywxMzQgKzkxMCwxMzggQEAgc3ViIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEK
ICAgICAgICAgICAgICRhY2Nlc3NDb250cm9sID0gInY4OjpBTExfQ0FOX1dSSVRFIjsKICAgICAg
ICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0pIHsKICAg
ICAgICAgICAgICRhY2Nlc3NDb250cm9sID0gInY4OjpBTExfQ0FOX1JFQUQiOwotICAgICAgICBp
ZiAoISgkYXR0cmlidXRlLT50eXBlID1+IC9ecmVhZG9ubHkvKSAmJiAhKCRhdHRyRXh0LT57IlY4
UmVhZE9ubHkifSkpIHsKLSAgICAgICAgICAgICRhY2Nlc3NDb250cm9sIC49ICJ8djg6OkFMTF9D
QU5fV1JJVEUiOworICAgICAgICAgICAgaWYgKCEoJGF0dHJpYnV0ZS0+dHlwZSA9fiAvXnJlYWRv
bmx5LykgJiYgISgkYXR0ckV4dC0+eyJWOFJlYWRPbmx5In0pKSB7CisgICAgICAgICAgICAgICAg
JGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6QUxMX0NBTl9XUklURSI7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCRhdHRyRXh0LT57IlY4RGlzYWxsb3dTaGFkb3dpbmci
fSkgewotICAgICAgICAkYWNjZXNzQ29udHJvbCAuPSAifHY4OjpQUk9ISUJJVFNfT1ZFUldSSVRJ
TkciOwotICAgIH0KLSAgICAkYWNjZXNzQ29udHJvbCA9ICJzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4oIiAuICRhY2Nlc3NDb250cm9sIC4gIikiOworICAgICAgICBpZiAoJGF0dHJFeHQt
PnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7CisgICAgICAgICAgICAkYWNjZXNzQ29udHJvbCAu
PSAifHY4OjpQUk9ISUJJVFNfT1ZFUldSSVRJTkciOworICAgICAgICB9CisgICAgICAgICRhY2Nl
c3NDb250cm9sID0gInN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPigiIC4gJGFjY2Vzc0Nv
bnRyb2wgLiAiKSI7CiAKLSAgICBteSAkY3VzdG9tQWNjZXNzb3IgPQotICAgICAgICAkYXR0ckV4
dC0+eyJDdXN0b20ifSB8fAotICAgICAgICAkYXR0ckV4dC0+eyJDdXN0b21TZXR0ZXIifSB8fAot
ICAgICAgICAkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSB8fAotICAgICAgICAkYXR0ckV4dC0+
eyJWOEN1c3RvbSJ9IHx8Ci0gICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwK
LSAgICAgICAgJGF0dHJFeHQtPnsiVjhDdXN0b21HZXR0ZXIifSB8fAotICAgICAgICAiIjsKLSAg
ICBpZiAoJGN1c3RvbUFjY2Vzc29yIGVxIDEpIHsKLSAgICAgICAgIyB1c2UgdGhlIG5hbWluZyBj
b252ZW5zaW9uLCBpbnRlcmZhY2UgKyAoY2FwaXRhbGl6ZSkgYXR0ciBuYW1lCi0gICAgICAgICRj
dXN0b21BY2Nlc3NvciA9ICRpbnRlcmZhY2VOYW1lIC4gV0tfdWNmaXJzdCgkYXR0ck5hbWUpOwot
ICAgIH0KLQotICAgIG15ICRnZXR0ZXI7Ci0gICAgbXkgJHNldHRlcjsKLSAgICBteSAkcHJvcEF0
dHIgPSAidjg6Ok5vbmUiOwotICAgIG15ICRoYXNDdXN0b21TZXR0ZXIgPSAwOwotCi0gICAgIyBD
aGVjayBhdHRyaWJ1dGVzLgotICAgIGlmICgkYXR0ckV4dC0+eyJEb250RW51bSJ9KSB7Ci0gICAg
ICAgICRwcm9wQXR0ciAuPSAifHY4OjpEb250RW51bSI7Ci0gICAgfQotICAgIGlmICgkYXR0ckV4
dC0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKLSAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6
OkRvbnREZWxldGUiOwotICAgIH0KLQotICAgIG15ICRvbl9wcm90byA9ICIwIC8qIG9uIGluc3Rh
bmNlICovIjsKLSAgICBteSAkZGF0YSA9ICJWOENsYXNzSW5kZXg6OklOVkFMSURfQ0xBU1NfSU5E
RVggLyogbm8gZGF0YSAqLyI7Ci0KLSAgICAjIENvbnN0cnVjdG9yCi0gICAgaWYgKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgewotICAgICAgICBteSAkY29u
c3RydWN0b3JUeXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+dHlwZSk7Ci0gICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3Rv
ciQvLzsKLSAgICAgICAgbXkgJGNvbnN0cnVjdG9ySW5kZXggPSB1YygkY29uc3RydWN0b3JUeXBl
KTsKLSAgICAgICAgJGRhdGEgPSAiVjhDbGFzc0luZGV4Ojoke2NvbnN0cnVjdG9ySW5kZXh9IjsK
LSAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7aW50ZXJmYWNl
TmFtZX1Db25zdHJ1Y3RvckdldHRlciI7Ci0gICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0gICAgICAg
ICRwcm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHkiOwotCi0gICAgIyBFdmVudExpc3RlbmVycwotICAg
IH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIp
IHsKLSAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAg
ICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OERPTVdpbmRvd0V2ZW50SGFuZGxlckFjY2Vzc29y
R2V0dGVyIjsKLSAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4RE9NV2luZG93RXZl
bnRIYW5kbGVyQWNjZXNzb3JTZXR0ZXIiOwotICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFt
ZSBlcSAiRWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkRvY3VtZW50IiB8fCAkaW50ZXJm
YWNlTmFtZSBlcSAiSFRNTEJvZHlFbGVtZW50IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiU1ZHRWxl
bWVudEluc3RhbmNlIiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEZyYW1lU2V0RWxlbWVudCIp
IHsKLSAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4RWxlbWVudEV2ZW50SGFuZGxl
ckFjY2Vzc29yR2V0dGVyIjsKLSAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4RWxl
bWVudEV2ZW50SGFuZGxlckFjY2Vzc29yU2V0dGVyIjsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgbXkgJGN1c3RvbUFjY2Vzc29yID0KKyAgICAgICAgICAgICRhdHRyRXh0LT57IkN1c3RvbSJ9
IHx8CisgICAgICAgICAgICAkYXR0ckV4dC0+eyJDdXN0b21TZXR0ZXIifSB8fAorICAgICAgICAg
ICAgJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0gfHwKKyAgICAgICAgICAgICRhdHRyRXh0LT57
IlY4Q3VzdG9tIn0gfHwKKyAgICAgICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0g
fHwKKyAgICAgICAgICAgICRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVyIn0gfHwKKyAgICAgICAg
ICAgICIiOworICAgICAgICBpZiAoJGN1c3RvbUFjY2Vzc29yIGVxIDEpIHsKKyAgICAgICAgICAg
ICMgdXNlIHRoZSBuYW1pbmcgY29udmVuc2lvbiwgaW50ZXJmYWNlICsgKGNhcGl0YWxpemUpIGF0
dHIgbmFtZQorICAgICAgICAgICAgJGN1c3RvbUFjY2Vzc29yID0gJGludGVyZmFjZU5hbWUgLiBX
S191Y2ZpcnN0KCRhdHRyTmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBteSAkZ2V0dGVyOwor
ICAgICAgICBteSAkc2V0dGVyOworICAgICAgICBteSAkcHJvcEF0dHIgPSAidjg6Ok5vbmUiOwor
ICAgICAgICBteSAkaGFzQ3VzdG9tU2V0dGVyID0gMDsKKworICAgICAgICAjIENoZWNrIGF0dHJp
YnV0ZXMuCisgICAgICAgIGlmICgkYXR0ckV4dC0+eyJEb250RW51bSJ9KSB7CisgICAgICAgICAg
ICAkcHJvcEF0dHIgLj0gInx2ODo6RG9udEVudW0iOworICAgICAgICB9CisgICAgICAgIGlmICgk
YXR0ckV4dC0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKKyAgICAgICAgICAgICRwcm9wQXR0
ciAuPSAifHY4OjpEb250RGVsZXRlIjsKKyAgICAgICAgfQorCisgICAgICAgIG15ICRvbl9wcm90
byA9ICIwIC8qIG9uIGluc3RhbmNlICovIjsKKyAgICAgICAgbXkgJGRhdGEgPSAiVjhDbGFzc0lu
ZGV4OjpJTlZBTElEX0NMQVNTX0lOREVYIC8qIG5vIGRhdGEgKi8iOworCisgICAgICAgICMgQ29u
c3RydWN0b3IKKyAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29u
c3RydWN0b3IkLykgeworICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRjb2RlR2Vu
ZXJhdG9yLT5TdHJpcE1vZHVsZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAg
ICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOworICAgICAgICAgICAg
bXkgJGNvbnN0cnVjdG9ySW5kZXggPSB1YygkY29uc3RydWN0b3JUeXBlKTsKKyAgICAgICAgICAg
ICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6JHtjb25zdHJ1Y3RvckluZGV4fSI7CisgICAgICAgICAg
ICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHtpbnRlcmZhY2VOYW1lfUNv
bnN0cnVjdG9yR2V0dGVyIjsKKyAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7CisgICAgICAgICAg
ICAkcHJvcEF0dHIgPSAidjg6OlJlYWRPbmx5IjsKKworICAgICAgICAjIEV2ZW50TGlzdGVuZXJz
CisgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRM
aXN0ZW5lciIpIHsKKyAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93
IikgeworICAgICAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4RE9NV2luZG93RXZl
bnRIYW5kbGVyQWNjZXNzb3JHZXR0ZXIiOworICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhD
dXN0b206OnY4RE9NV2luZG93RXZlbnRIYW5kbGVyQWNjZXNzb3JTZXR0ZXIiOworICAgICAgICAg
ICAgfSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIkVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1l
IGVxICJEb2N1bWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxCb2R5RWxlbWVudCIgfHwg
JGludGVyZmFjZU5hbWUgZXEgIlNWR0VsZW1lbnRJbnN0YW5jZSIgfHwgJGludGVyZmFjZU5hbWUg
ZXEgIkhUTUxGcmFtZVNldEVsZW1lbnQiKSB7CisgICAgICAgICAgICAgICAgJGdldHRlciA9ICJW
OEN1c3RvbTo6djhFbGVtZW50RXZlbnRIYW5kbGVyQWNjZXNzb3JHZXR0ZXIiOworICAgICAgICAg
ICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4RWxlbWVudEV2ZW50SGFuZGxlckFjY2Vzc29y
U2V0dGVyIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGdldHRlciA9
ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKKyAgICAgICAg
ICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckNvbnRleHQiIGFuZCAkYXR0ck5h
bWUgZXEgInNlbGYiKSB7CisgICAgICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7CisgICAg
ICAgICAgICAgICAgICAgICRwcm9wQXR0ciA9ICJ2ODo6UmVhZE9ubHkiOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRzZXR0ZXIgPSAiVjhDdXN0b206OnY4
JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvclNldHRlciI7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICMgQ3VzdG9tIEdldHRlciBhbmQgU2V0dGVyCisgICAgICAg
IH0gZWxzaWYgKCRhdHRyRXh0LT57IkN1c3RvbSJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0p
IHsKICAgICAgICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1B
Y2Nlc3NvckdldHRlciI7CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtl
ckNvbnRleHQiIGFuZCAkYXR0ck5hbWUgZXEgInNlbGYiKSB7CiAgICAgICAgICAgICAgICAgJHNl
dHRlciA9ICIwIjsKICAgICAgICAgICAgICAgICAkcHJvcEF0dHIgPSAidjg6OlJlYWRPbmx5IjsK
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9
IDE7CiAgICAgICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vz
c29yfUFjY2Vzc29yU2V0dGVyIjsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQogCi0gICAgIyBD
dXN0b20gR2V0dGVyIGFuZCBTZXR0ZXIKLSAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b20i
fSB8fCAkYXR0ckV4dC0+eyJWOEN1c3RvbSJ9KSB7Ci0gICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0
b206OnY4JHtjdXN0b21BY2Nlc3Nvcn1BY2Nlc3NvckdldHRlciI7Ci0gICAgICAgIGlmICgkaW50
ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIgYW5kICRhdHRyTmFtZSBlcSAic2VsZiIpIHsK
LSAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7Ci0gICAgICAgICAgICAkcHJvcEF0dHIgPSAidjg6
OlJlYWRPbmx5IjsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgIyBDdXN0b20gU2V0dGVyCisg
ICAgICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0LT57
IlY4Q3VzdG9tU2V0dGVyIn0pIHsKICAgICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOwor
ICAgICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5h
bWV9QXR0ckdldHRlciI7CiAgICAgICAgICAgICAkc2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3Vz
dG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOworCisgICAgICAgICMgQ3VzdG9tIEdldHRlcgor
ICAgICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifSkgeworICAgICAgICAg
ICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVy
IjsKKyAgICAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0
dHJOYW1lfUF0dHJTZXR0ZXIiOworCisgICAgICAgICMgUmVwbGFjZWFibGUKKyAgICAgICAgfSBl
bHNpZiAoJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSkgeworICAgICAgICAgICAgIyBSZXBsYWNl
YWJsZSBhY2Nlc3NvciBpcyBwdXQgb24gaW5zdGFuY2UgdGVtcGxhdGUgd2l0aCBSZWFkT25seSBh
dHRyaWJ1dGUuCisgICAgICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5h
bDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKKyAgICAgICAgICAgICRzZXR0ZXIgPSAiMCI7CisK
KyAgICAgICAgICAgICMgTWFyayB0byBhdm9pZCBkdXBsaWNhdGUgdjg6OlJlYWRPbmx5IGZsYWdz
IGluIG91dHB1dC4KKyAgICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOworCisgICAgICAg
ICAgICAjIEhhbmRsZSB0aGUgc3BlY2lhbCBjYXNlIG9mIHdpbmRvdy50b3AgYmVpbmcgbWFya2Vk
IHVwc3RyZWFtIGFzIFJlcGxhY2VhYmxlLgorICAgICAgICAgICAgIyBGSVhNRTogSW52ZXN0aWdh
dGUgd2h5IFtSZXBsYWNlYWJsZV0gaXMgbm90IG1hcmtlZCBhcyBSZWFkT25seQorICAgICAgICAg
ICAgIyB1cHN0cmVhbSBhbmQgcmVhY2ggcGFyaXR5LgorICAgICAgICAgICAgaWYgKCEoJGludGVy
ZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgYW5kICRhdHRyTmFtZSBlcSAidG9wIikpIHsKKyAgICAg
ICAgICAgICAgICAkcHJvcEF0dHIgLj0gInx2ODo6UmVhZE9ubHkiOworICAgICAgICAgICAgfQor
CisgICAgICAgICMgTm9ybWFsCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkZ2V0dGVy
ID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKKyAg
ICAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke2F0dHJOYW1l
fUF0dHJTZXR0ZXIiOwogICAgICAgICB9CiAKLSAgICAjIEN1c3RvbSBTZXR0ZXIKLSAgICB9IGVs
c2lmICgkYXR0ckV4dC0+eyJDdXN0b21TZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3RvbVNl
dHRlciJ9KSB7Ci0gICAgICAgICRoYXNDdXN0b21TZXR0ZXIgPSAxOwotICAgICAgICAkZ2V0dGVy
ID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKLSAg
ICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yU2V0
dGVyIjsKLQotICAgICMgQ3VzdG9tIEdldHRlcgotICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IkN1
c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICRnZXR0ZXIgPSAiVjhDdXN0b206OnY4JHtjdXN0b21B
Y2Nlc3Nvcn1BY2Nlc3NvckdldHRlciI7Ci0gICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VO
YW1lfUludGVybmFsOjoke2F0dHJOYW1lfUF0dHJTZXR0ZXIiOwotCi0gICAgIyBSZXBsYWNlYWJs
ZQotICAgIH0gZWxzaWYgKCRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0pIHsKLSAgICAgICAgIyBS
ZXBsYWNlYWJsZSBhY2Nlc3NvciBpcyBwdXQgb24gaW5zdGFuY2UgdGVtcGxhdGUgd2l0aCBSZWFk
T25seSBhdHRyaWJ1dGUuCi0gICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfUludGVy
bmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwotICAgICAgICAkc2V0dGVyID0gIjAiOwotCi0g
ICAgICAgICMgTWFyayB0byBhdm9pZCBkdXBsaWNhdGUgdjg6OlJlYWRPbmx5IGZsYWdzIGluIG91
dHB1dC4KLSAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7Ci0KLSAgICAgICAgIyBIYW5kbGUg
dGhlIHNwZWNpYWwgY2FzZSBvZiB3aW5kb3cudG9wIGJlaW5nIG1hcmtlZCB1cHN0cmVhbSBhcyBS
ZXBsYWNlYWJsZS4KLSAgICAgICAgIyBGSVhNRTogSW52ZXN0aWdhdGUgd2h5IFtSZXBsYWNlYWJs
ZV0gaXMgbm90IG1hcmtlZCBhcyBSZWFkT25seQotICAgICAgICAjIHVwc3RyZWFtIGFuZCByZWFj
aCBwYXJpdHkuCi0gICAgICAgIGlmICghKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciIGFu
ZCAkYXR0ck5hbWUgZXEgInRvcCIpKSB7CisgICAgICAgIGlmICgkYXR0ckV4dC0+eyJSZXBsYWNl
YWJsZSJ9ICYmICEkaGFzQ3VzdG9tU2V0dGVyKSB7CisgICAgICAgICAgICAkc2V0dGVyID0gIjAi
OwogICAgICAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OlJlYWRPbmx5IjsKICAgICAgICAgfQog
Ci0gICAgIyBOb3JtYWwKLSAgICB9IGVsc2UgewotICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJm
YWNlTmFtZX1JbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyIjsKLSAgICAgICAgJHNldHRl
ciA9ICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlciI7Ci0g
ICAgfQotCi0gICAgaWYgKCRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0gJiYgISRoYXNDdXN0b21T
ZXR0ZXIpIHsKLSAgICAgICAgJHNldHRlciA9ICIwIjsKLSAgICAgICAgJHByb3BBdHRyIC49ICJ8
djg6OlJlYWRPbmx5IjsKLSAgICB9CisgICAgICAgICMgUmVhZCBvbmx5IGF0dHJpYnV0ZXMKKyAg
ICAgICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8gfHwgJGF0dHJFeHQtPnsi
VjhSZWFkT25seSJ9KSB7CisgICAgICAgICAgICAkc2V0dGVyID0gIjAiOworICAgICAgICB9CiAK
LSAgICAjIFJlYWQgb25seSBhdHRyaWJ1dGVzCi0gICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUgPX4g
L15yZWFkb25seS8gfHwgJGF0dHJFeHQtPnsiVjhSZWFkT25seSJ9KSB7Ci0gICAgICAgICRzZXR0
ZXIgPSAiMCI7Ci0gICAgfQorICAgICAgICAjIEFuIGFjY2Vzc29yIGNhbiBiZSBpbnN0YWxsZWQg
b24gdGhlIHByb3RvCisgICAgICAgIGlmICgkYXR0ckV4dC0+eyJ2OE9uUHJvdG8ifSkgeworICAg
ICAgICAgICAgJG9uX3Byb3RvID0gIjEgLyogb24gcHJvdG8gKi8iOworICAgICAgICB9CiAKLSAg
ICAjIEFuIGFjY2Vzc29yIGNhbiBiZSBpbnN0YWxsZWQgb24gdGhlIHByb3RvCi0gICAgaWYgKCRh
dHRyRXh0LT57InY4T25Qcm90byJ9KSB7Ci0gICAgICAgICRvbl9wcm90byA9ICIxIC8qIG9uIHBy
b3RvICovIjsKLSAgICB9CisgICAgICAgIG15ICRjb21tZW50SW5mbyA9ICJBdHRyaWJ1dGUgJyRh
dHRyTmFtZScgKFR5cGU6ICciIC4gJGF0dHJpYnV0ZS0+dHlwZSAuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICInIEV4dEF0dHI6ICciIC4gam9pbignICcsIGtleXMoJXskYXR0ckV4dH0pKSAu
ICInKSI7CisgICAgICAgIAorICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKIAotICAgIG15ICRjb21tZW50SW5mbyA9ICJBdHRyaWJ1dGUgJyRhdHRyTmFt
ZScgKFR5cGU6ICciIC4gJGF0dHJpYnV0ZS0+dHlwZSAuCi0gICAgICAgICAgICAgICAgICAgICAg
IicgRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsKLSAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOwogICAvLyAkY29tbWVudEluZm8KICAgeyAiJGF0dHJOYW1lIiwKICAgICAkZ2V0dGVy
LApAQCAtMTA0MCw2ICsxMDUxLDcgQEAgc3ViIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEK
ICAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9wQXR0ciksCiAgICAg
JG9uX3Byb3RvIH0sCiBFTkQKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAv
LyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIH0K
IH0KIApAQCAtMTA1NCw3ICsxMDY2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICBteSAkY2xhc3NJbmRleCA9IHVjKCRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkaW50ZXJm
YWNlTmFtZSkpOwogCiAgICAgbXkgJGhhc0xlZ2FjeVBhcmVudCA9ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeVBhcmVudCJ9OwotICAgIG15ICRjb25kaXRpb25hbCA9ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn07CisgICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZGF0YU5vZGUpOwog
CiAgICAgQGFsbFBhcmVudHMgPSAkY29kZUdlbmVyYXRvci0+RmluZFBhcmVudHNSZWN1cnNpdmVs
eSgkZGF0YU5vZGUpOwogCkBAIC0xMDY3LDExICsxMDc5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICIjaW5jbHVkZSBcIlY4QmluZGluZy5oXCJcblxuIiAuCiAgICAg
ICAgICAiI3VuZGVmIExPR1xuXG4iKTsKIAotICAgIG15ICRjb25kaXRpb25hbFN0cmluZzsKLSAg
ICBpZiAoJGNvbmRpdGlvbmFsKSB7Ci0gICAgICAgICRjb25kaXRpb25hbFN0cmluZyA9ICJFTkFC
TEUoIiAuIGpvaW4oIikgJiYgRU5BQkxFKCIsIHNwbGl0KC8mLywgJGNvbmRpdGlvbmFsKSkgLiAi
KSI7Ci0gICAgICAgIHB1c2goQGltcGxGaXhlZEhlYWRlciwgIlxuI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG5cbiIpOwotICAgIH0KKyAgICBwdXNoKEBpbXBsRml4ZWRIZWFkZXIsICJcbiNpZiAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAKICAgICBp
ZiAoJGNsYXNzTmFtZSA9fiAvXlY4U1ZHQW5pbWF0ZWQvKSB7CiAgICAgICAgIEFkZEluY2x1ZGVz
Rm9yU1ZHQW5pbWF0ZWRUeXBlKCRpbnRlcmZhY2VOYW1lKTsKQEAgLTEzODcsNyArMTM5NSw3IEBA
IEVORAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogRU5ECiAKLSAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWw7
CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogfQogCiAKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgJKHJldmlzaW9uIDQ2MjI1KQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUz
LDExIEBACiAjaW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVkZSAiWFBhdGhSZXN1
bHQuaCIKIAorI2lmIEVOQUJMRShEQVRBR1JJRCkKKyNpbmNsdWRlICJEYXRhR3JpZENvbHVtbi5o
IgorI2luY2x1ZGUgIkRhdGFHcmlkQ29sdW1uTGlzdC5oIgorI2VuZGlmIC8vIERBVEFHUklECisK
ICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAjaW5jbHVkZSAiU3RvcmFnZS5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VFdmVudC5oIgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAko
cmV2aXNpb24gNDYyMjUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1Miw2ICs0NTIsMTIgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IFY4RAogICAgIGNhc2UgVjhDbGFzc0luZGV4OjpDTElFTlRSRUNUTElT
VDoKICAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRJbmRleGVkUHJv
cGVydHlIYW5kbGVyKFVTRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihDbGllbnRSZWN0TGlzdCkp
OwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisgICAgY2FzZSBWOENsYXNz
SW5kZXg6OkRBVEFHUklEQ09MVU1OTElTVDoKKyAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VU
ZW1wbGF0ZSgpLT5TZXRJbmRleGVkUHJvcGVydHlIYW5kbGVyKFVTRV9JTkRFWEVEX1BST1BFUlRZ
X0dFVFRFUihEYXRhR3JpZENvbHVtbkxpc3QpKTsKKyAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFu
Y2VUZW1wbGF0ZSgpLT5TZXROYW1lZFByb3BlcnR5SGFuZGxlcihVU0VfTkFNRURfUFJPUEVSVFlf
R0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCkpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTc3Nyw3ICs3ODMsMTggQEAgYm9v
bCBWOERPTVdyYXBwZXI6OmlzV3JhcHBlck9mVHlwZSh2ODo6SAogI2RlZmluZSBGT1JfRUFDSF9W
SURFT19UQUcobWFjcm8pCiAjZW5kaWYKIAorI2lmIEVOQUJMRShEQVRBR1JJRCkKKyNkZWZpbmUg
Rk9SX0VBQ0hfREFUQUdSSURfVEFHKG1hY3JvKSAgICAgICAgICAgICAgIFwKKyAgICBtYWNybyhk
YXRhZ3JpZCwgREFUQUdSSUQpICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIG1hY3JvKGRj
ZWxsLCBEQVRBR1JJRENFTEwpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbWFjcm8oZGNv
bCwgREFUQUdSSURDT0wpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBtYWNybyhkcm93
LCBEQVRBR1JJRFJPVykKKyNlbHNlCisjZGVmaW5lIEZPUl9FQUNIX0RBVEFHUklEX1RBRyhtYWNy
bykKKyNlbmRpZgorCiAjZGVmaW5lIEZPUl9FQUNIX1RBRyhtYWNybykgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgRk9SX0VBQ0hfREFUQUdSSURfVEFHKG1hY3JvKSAgICAgICAgICAgICAg
ICAgICBcCiAgICAgbWFjcm8oYSwgQU5DSE9SKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgbWFjcm8oYXBwbGV0LCBBUFBMRVQpICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgbWFjcm8oYXJlYSwgQVJFQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdyaWREYXRhU291cmNlLmNwcAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKERBVEFHUklEKQorCisjaW5jbHVkZSAiVjhEYXRhR3JpZERhdGFTb3VyY2UuaCIKKwor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1M
RGF0YUdyaWRFbGVtZW50LmgiCisjaW5jbHVkZSAiVjhIVE1MRGF0YUdyaWRFbGVtZW50LmgiCisK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWOERhdGFHcmlkRGF0YVNvdXJjZTo6VjhEYXRhR3Jp
ZERhdGFTb3VyY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGFTb3VyY2UsIEZyYW1lKiBmcmFt
ZSkKKyAgICA6IG1fZGF0YVNvdXJjZSh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+OjpOZXcoZGF0
YVNvdXJjZSkpCisgICAgLCBtX2ZyYW1lKGZyYW1lKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBW
OEdDQ29udHJvbGxlcjo6cmVnaXN0ZXJHbG9iYWxIYW5kbGUoREFUQVNPVVJDRSwgdGhpcywgbV9k
YXRhU291cmNlKTsKKyNlbmRpZgorfQorCitWOERhdGFHcmlkRGF0YVNvdXJjZTo6flY4RGF0YUdy
aWREYXRhU291cmNlKCkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgVjhHQ0NvbnRyb2xsZXI6OnVu
cmVnaXN0ZXJHbG9iYWxIYW5kbGUodGhpcywgbV9kYXRhU291cmNlKTsKKyNlbmRpZgorICAgIG1f
ZGF0YVNvdXJjZS5EaXNwb3NlKCk7CisgICAgbV9kYXRhU291cmNlLkNsZWFyKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShEQVRBR1JJRCkKClByb3Bl
cnR5IGNoYW5nZXMgb246IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2Uu
Y3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERhdGFHcmlkRGF0YVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhEYXRhR3JpZERhdGFTb3VyY2UuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKworI2lmbmRlZiBWOERhdGFHcmlkRGF0YVNvdXJjZV9oCisjZGVmaW5lIFY4
RGF0YUdyaWREYXRhU291cmNlX2gKKworI2lmIEVOQUJMRShEQVRBR1JJRCkKKworI2luY2x1ZGUg
IkRhdGFHcmlkRGF0YVNvdXJjZS5oIgorI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MRGF0YUdyaWRFbGVtZW50OworCitjbGFzcyBW
OERhdGFHcmlkRGF0YVNvdXJjZSA6IHB1YmxpYyBEYXRhR3JpZERhdGFTb3VyY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4RGF0YUdyaWREYXRhU291cmNlPiBjcmVhdGUodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGFTb3VyY2UsIEZyYW1lKiBmcmFtZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVjhEYXRhR3JpZERhdGFTb3VyY2UoZGF0YVNvdXJjZSwg
ZnJhbWUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5WOERhdGFHcmlkRGF0YVNvdXJjZSgpOwor
CisgICAgdmlydHVhbCBib29sIGlzSlNEYXRhR3JpZERhdGFTb3VyY2UoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRGF0YVNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YVNvdXJjZTsgfQorCitwcml2YXRlOgorICAgIFY4RGF0YUdyaWREYXRh
U291cmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgRnJhbWUqKTsKKworICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpWYWx1ZT4gbV9kYXRhU291cmNlOworICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsK
K307CisKK2lubGluZSBWOERhdGFHcmlkRGF0YVNvdXJjZSogYXNWOERhdGFHcmlkRGF0YVNvdXJj
ZShEYXRhR3JpZERhdGFTb3VyY2UqIGRhdGFTb3VyY2UpCit7CisgICAgQVNTRVJUKGRhdGFTb3Vy
Y2UtPmlzSlNEYXRhR3JpZERhdGFTb3VyY2UoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFY4
RGF0YUdyaWREYXRhU291cmNlKj4oZGF0YVNvdXJjZSk7Cit9CisKK2lubGluZSBjb25zdCBWOERh
dGFHcmlkRGF0YVNvdXJjZSogYXNWOERhdGFHcmlkRGF0YVNvdXJjZShjb25zdCBEYXRhR3JpZERh
dGFTb3VyY2UqIGRhdGFTb3VyY2UpCit7CisgICAgQVNTRVJUKGRhdGFTb3VyY2UtPmlzSlNEYXRh
R3JpZERhdGFTb3VyY2UoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFY4RGF0YUdy
aWREYXRhU291cmNlKj4oZGF0YVNvdXJjZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShEQVRBR1JJRCkKKyNlbmRpZiAvLyBWOERhdGFHcmlkRGF0YVNv
dXJjZV9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGF0YUdy
aWREYXRhU291cmNlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oCShyZXZpc2lvbiA0NjIyNSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNyArNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgVihFVkVOVF9MSVNURU5FUikg
ICAgICAgICAgICAgXAogICAgIFYoTk9ERV9GSUxURVIpICAgICAgICAgICAgICAgIFwKICAgICBW
KFNDUklQVElOU1RBTkNFKSAgICAgICAgICAgICBcCi0gICAgVihTQ1JJUFRWQUxVRSkKKyAgICBW
KFNDUklQVFZBTFVFKSAgICAgICAgICAgICAgICBcCisgICAgVihEQVRBU09VUkNFKQogCiAKICAg
ICAvLyBIb3N0IGluZm9ybWF0aW9uIG9mIHBlcnNpc3RlbnQgaGFuZGxlcy4KSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhJbmRleC5oCShyZXZpc2lvbiA0NjIyNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJ
bmRleC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwyMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICgqRnVu
Y3Rpb25UZW1wbGF0ZUZhY3RvcnkpKCk7CiAKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisjZGVmaW5l
IERBVEFHUklEX0hUTUxFTEVNRU5UX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgVihIVE1MREFUQUdSSURDRUxMRUxFTUVOVCwgSFRNTERhdGFHcmlkQ2Vs
bEVsZW1lbnQpICAgICAgICAgICAgICAgICBcCisgICAgVihIVE1MREFUQUdSSURDT0xFTEVNRU5U
LCBIVE1MRGF0YUdyaWRDb2xFbGVtZW50KSAgICAgICAgICAgICAgICAgICBcCisgICAgVihIVE1M
REFUQUdSSURFTEVNRU5ULCBIVE1MRGF0YUdyaWRFbGVtZW50KSAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgVihIVE1MREFUQUdSSURST1dFTEVNRU5ULCBIVE1MRGF0YUdyaWRSb3dFbGVt
ZW50KQorI2RlZmluZSBEQVRBR1JJRF9OT05OT0RFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoREFUQUdSSURDT0xVTU4sIERhdGFHcmlkQ29s
dW1uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoREFUQUdSSURD
T0xVTU5MSVNULCBEYXRhR3JpZENvbHVtbkxpc3QpCisjZWxzZQorI2RlZmluZSBEQVRBR1JJRF9I
VE1MRUxFTUVOVF9UWVBFUyhWKQorI2RlZmluZSBEQVRBR1JJRF9OT05OT0RFX1RZUEVTKFYpCisj
ZW5kaWYKKwogI2lmIEVOQUJMRShWSURFTykKICNkZWZpbmUgVklERU9fSFRNTEVMRU1FTlRfVFlQ
RVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEhUTUxB
VURJT0VMRU1FTlQsIEhUTUxBdWRpb0VsZW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKQEAgLTc5LDkgKzkzLDcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbAogICAgIFYoQVRUUiwgQXR0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoQ0hBUkFDVEVSREFUQSwgQ2hhcmFjdGVy
RGF0YSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoQ0RBVEFT
RUNUSU9OLCBDREFUQVNlY3Rpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIFYoQ09NTUVOVCwgQ29tbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KLSAgICBWKERBVEFHUklEQ09MVU1OLCBEYXRhR3JpZENv
bHVtbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCi0gICAgVihEQVRBR1JJ
RENPTFVNTkxJU1QsIERhdGFHcmlkQ29sdW1uTGlzdCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgVihDT01NRU5ULCBDb21tZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihET0NVTUVOVCwgRG9jdW1lbnQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihET0NVTUVOVEZS
QUdNRU5ULCBEb2N1bWVudEZyYWdtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgVihET0NVTUVOVFRZUEUsIERvY3VtZW50VHlwZSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCkBAIC0xMDMsMTAgKzExNSw2IEBAIHR5cGVkZWYgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGwKICAgICBWKEhUTUxCUkVMRU1FTlQsIEhUTUxCUkVsZW1l
bnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEhUTUxCVVRU
T05FTEVNRU5ULCBIVE1MQnV0dG9uRWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBWKEhUTUxDQU5WQVNFTEVNRU5ULCBIVE1MQ2FudmFzRWxlbWVudCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICBWKEhUTUxEQVRBR1JJRENFTExFTEVNRU5ULCBIVE1M
RGF0YUdyaWRDZWxsRWxlbWVudCkgICAgICAgICAgICAgICAgIFwKLSAgICBWKEhUTUxEQVRBR1JJ
RENPTEVMRU1FTlQsIEhUTUxEYXRhR3JpZENvbEVsZW1lbnQpICAgICAgICAgICAgICAgICAgIFwK
LSAgICBWKEhUTUxEQVRBR1JJREVMRU1FTlQsIEhUTUxEYXRhR3JpZEVsZW1lbnQpICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBWKEhUTUxEQVRBR1JJRFJPV0VMRU1FTlQsIEhUTUxEYXRh
R3JpZFJvd0VsZW1lbnQpICAgICAgICAgICAgICAgICAgIFwKICAgICBWKEhUTUxESVJFQ1RPUllF
TEVNRU5ULCBIVE1MRGlyZWN0b3J5RWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICBWKEhUTUxESVZFTEVNRU5ULCBIVE1MRGl2RWxlbWVudCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBWKEhUTUxETElTVEVMRU1FTlQsIEhUTUxETGlzdEVsZW1lbnQp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE1NCw2ICsxNjIsNyBAQCB0eXBl
ZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihIVE1MVElUTEVFTEVN
RU5ULCBIVE1MVGl0bGVFbGVtZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgVihIVE1MVUxJU1RFTEVNRU5ULCBIVE1MVUxpc3RFbGVtZW50KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgVihIVE1MRUxFTUVOVCwgSFRNTEVsZW1lbnQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgREFUQUdSSURfSFRNTEVMRU1F
TlRfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
VklERU9fSFRNTEVMRU1FTlRfVFlQRVMoVikKIAogI2lmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQpA
QCAtMzc2LDYgKzM4NSw3IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGwKICAgICBWKFhQQVRIUkVTVUxULCBYUGF0aFJlc3VsdCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICBWKFhTTFRQUk9DRVNTT1IsIFhTTFRQcm9jZXNzb3Ip
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBBQ1RJVkVfRE9NX09C
SkVDVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBEQVRBR1JJRF9OT05OT0RFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICBWSURFT19OT05OT0RFX1RZUEVTKFYpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBTSEFSRURfV09SS0VSX05P
Tk5PREVfV1JBUFBFUl9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpCkBAIC0zODksMTQgKzM5OSwxNCBAQCB0
eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihTUUxUUkFOU0FD
VElPTiwgU1FMVHJhbnNhY3Rpb24pCiAjZWxzZQogI2RlZmluZSBET01fT0JKRUNUX0RBVEFCQVNF
X1RZUEVTKFYpCi0jZW5kaWYNCi0NCi0jaWYgRU5BQkxFKERPTV9TVE9SQUdFKQ0KLSNkZWZpbmUg
RE9NX09CSkVDVF9TVE9SQUdFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwNCi0gICAgVihTVE9SQUdFLCBTdG9yYWdlKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgIFYoU1RPUkFHRUVWRU5ULCBTdG9yYWdl
RXZlbnQpDQotI2Vsc2UNCi0jZGVmaW5lIERPTV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKQ0KKyNl
bmRpZgorCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorI2RlZmluZSBET01fT0JKRUNUX1NUT1JB
R0VfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYo
U1RPUkFHRSwgU3RvcmFnZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIFYoU1RPUkFHRUVWRU5ULCBTdG9yYWdlRXZlbnQpCisjZWxzZQorI2Rl
ZmluZSBET01fT0JKRUNUX1NUT1JBR0VfVFlQRVMoVikKICNlbmRpZgogCiAjZGVmaW5lIERPTV9P
QkpFQ1RfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcu
aAkocmV2aXNpb24gNDYyMjUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNDA2LDggKzQwNiw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vZGVGaWx0ZXJBY2NlcHROb2Rl
KTsKIAotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxEYXRhR3JpZEVsZW1l
bnREYXRhU291cmNlKTsKLQogICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxGb3JtRWxlbWVu
dFN1Ym1pdCk7CiAKICAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoRE9NV2lu
ZG93KTsKQEAgLTQ1Miw2ICs0NTAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKFNRTFJlc3VsdFNldFJvd0xpc3RJdGVtKTsKIAogICAgICAgICBERUNM
QVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKENsaWVudFJlY3RMaXN0KTsKKyAgCisjaWYgRU5B
QkxFKERBVEFHUklEKQorICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxEYXRh
R3JpZEVsZW1lbnREYXRhU291cmNlKTsKKyAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZ
X0dFVFRFUihEYXRhR3JpZENvbHVtbkxpc3QpOworICAgICAgICBERUNMQVJFX05BTUVEX1BST1BF
UlRZX0dFVFRFUihEYXRhR3JpZENvbHVtbkxpc3QpOworI2VuZGlmICAgICAgCiAKICNpZiBFTkFC
TEUoRE9NX1NUT1JBR0UpCiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIo
U3RvcmFnZSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlkQ29s
dW1uTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRh
dGFHcmlkQ29sdW1uTGlzdC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFBy
b3h5LmgiCisKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
SU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KQoreworICAgIElOQ19T
VEFUUygiRGF0YUdyaWRDb2x1bW5MaXN0LkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOworICAgIERh
dGFHcmlkQ29sdW1uTGlzdCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmpl
Y3Q8RGF0YUdyaWRDb2x1bW5MaXN0PihWOENsYXNzSW5kZXg6OkRBVEFHUklEQ09MVU1OTElTVCwg
aW5mby5Ib2xkZXIoKSk7CisgICAgRGF0YUdyaWRDb2x1bW4qIHJlc3VsdCA9IGltcC0+aXRlbShp
bmRleCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRl
cmNlcHRvcigpOworICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4
Q2xhc3NJbmRleDo6REFUQUdSSURDT0xVTU4sIHJlc3VsdCk7Cit9CisKK05BTUVEX1BST1BFUlRZ
X0dFVFRFUihEYXRhR3JpZENvbHVtbkxpc3QpCit7CisgICAgSU5DX1NUQVRTKCJEYXRhR3JpZENv
bHVtbkxpc3QuTmFtZWRQcm9wZXJ0eUdldHRlciIpOworICAgIC8vIFNlYXJjaCB0aGUgcHJvdG90
eXBlIGNoYWluIGZpcnN0LgorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IGluZm8u
SG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKTsKKyAg
ICBpZiAoIXZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIAorICAg
IC8vIFRoZW4gbG9vayBmb3IgSURMIGRlZmluZWQgcHJvcGVydGllcyBvbiB0aGUgb2JqZWN0IGl0
c2VsZi4KKyAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0
eShuYW1lKSkKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAg
CisgICAgLy8gRmluYWxseSwgbG9vayB1cCBhIGNvbHVtbiBieSBuYW1lLgorICAgIERhdGFHcmlk
Q29sdW1uTGlzdCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RGF0
YUdyaWRDb2x1bW5MaXN0PihWOENsYXNzSW5kZXg6OkRBVEFHUklEQ09MVU1OTElTVCwgaW5mby5I
b2xkZXIoKSk7CisgICAgRGF0YUdyaWRDb2x1bW4qIHJlc3VsdCA9IGltcC0+aXRlbVdpdGhOYW1l
KHRvV2ViQ29yZVN0cmluZyhuYW1lKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNv
bnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6REFUQUdSSURDT0xVTU4sIHJlc3VsdCk7Cit9
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiBFTkFCTEUoREFUQUdSSUQp
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFH
cmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEYXRhR3JpZEVs
ZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTERhdGFHcmlkRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDQ2MjI1KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRGF0YUdyaWRFbGVtZW50Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMjUgKzMxLDQwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSFRNTERhdGFHcmlkRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKLQorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhEYXRhR3JpZERhdGFTb3Vy
Y2UuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKKyNpZiBFTkFCTEUoREFUQUdSSUQpCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogQUNDRVNTT1JfR0VUVEVSKEhUTUxEYXRhR3JpZEVsZW1lbnRE
YXRhU291cmNlKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxEYXRhR3JpZEVsZW1lbnQuZGF0
YVNvdXJjZS5fZ2V0Iik7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CisgICAgSFRNTERhdGFHcmlkRWxlbWVu
dCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxIVE1MRGF0YUdy
aWRFbGVtZW50Pihob2xkZXIpOworICAgIERhdGFHcmlkRGF0YVNvdXJjZSogZGF0YVNvdXJjZSA9
IGltcC0+ZGF0YVNvdXJjZSgpOworICAgIGlmIChkYXRhU291cmNlICYmIGRhdGFTb3VyY2UtPmlz
SlNEYXRhR3JpZERhdGFTb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGFzVjhEYXRhR3JpZERhdGFT
b3VyY2UoZGF0YVNvdXJjZSktPmpzRGF0YVNvdXJjZSgpOwogICAgIHJldHVybiB2ODo6TnVsbCgp
OwogfQogCiBBQ0NFU1NPUl9TRVRURVIoSFRNTERhdGFHcmlkRWxlbWVudERhdGFTb3VyY2UpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTERhdGFHcmlkRWxlbWVudC5kYXRhU291cmNlLl9zZXQi
KTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9s
ZGVyID0gaW5mby5Ib2xkZXIoKTsKKyAgICBIVE1MRGF0YUdyaWRFbGVtZW50KiBpbXAgPSBWOERP
TVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPEhUTUxEYXRhR3JpZEVsZW1lbnQ+KGhv
bGRlcik7CisgICAgUmVmUHRyPERhdGFHcmlkRGF0YVNvdXJjZT4gZGF0YVNvdXJjZTsKKyAgICBp
ZiAoIXZhbHVlLklzRW1wdHkoKSkgeworICAgICAgICBGcmFtZSAqZnJhbWUgPSBpbXAtPmRvY3Vt
ZW50KCktPmZyYW1lKCk7CisgICAgICAgIGRhdGFTb3VyY2UgPSBWOERhdGFHcmlkRGF0YVNvdXJj
ZTo6Y3JlYXRlKHZhbHVlLCBmcmFtZSk7CisgICAgfQorICAgIGltcC0+c2V0RGF0YVNvdXJjZShk
YXRhU291cmNlLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKERBVEFHUklEKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDYyMjUpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0wNy0y
MSAgSmVucyBBbGZrZSAgPHNuZWpAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIFY4IGJpbmRpbmdzIGZvciBEYXRhR3Jp
ZCBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3MzgzCisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1
ZXMvZGV0YWlsP2lkPTE2NzMwCisKKyAgICAgICAgVGVzdHM6IEVuaGFuY2VkIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvKgorICAgICAgICB0byBoYW5kbGUgZXhjZXB0
aW9ucywgY2hlY2sgYXBwcm9wcmlhdGUgSlMgcHJvdG90eXBlcywgYW5kCisgICAgICAgIHRlc3Qg
Y29sdW1uLWxpc3QncyBpdGVtKCkgbWV0aG9kIGFzIHdlbGwgYXMgYXJyYXktaW5kZXhpbmcuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1i
YXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVu
dC9EYXRhR3JpZENvbHVtbnMtYmFzaWMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGF0
YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tYXR0cmlidXRlcy5odG1sOgorICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3Jp
ZENvbHVtbnMtZG9tLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVu
dC9EYXRhR3JpZERhdGFTb3VyY2UtYmFzaWMuaHRtbDoKKwogMjAwOS0wNy0yMSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4u
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlk
Q29sdW1ucy1iYXNpYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA0NjIyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3Jp
ZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJhc2ljLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMiw2ICsyLDcgQEAgUEFTUzogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5z
IAogUEFTUzogSW5pdGlhbCBsZW5ndGggb2YgZGF0YWdyaWQuY29sdW1ucyBpcyAwLgogUEFTUzog
Q29sdW1uIHJldHVybmVkIGZyb20gYWRkLgogUEFTUzogV2UgaGF2ZSBvbmUgY29sdW1uIGluIHRo
ZSBsaXN0LgorUEFTUzogVGhlIGNvbHVtbiBhdCBpdGVtKDApIGlzIHRoZSBjb2x1bW4gd2UgZ290
IGJhY2sgZnJvbSBhZGQuCiBQQVNTOiBUaGUgY29sdW1uIGF0IGluZGV4IDAgaXMgdGhlIGNvbHVt
biB3ZSBnb3QgYmFjayBmcm9tIGFkZC4KIFBBU1M6IFRoZSBjb2x1bW4gd2hlbiByZWZlcmVuY2Vk
IGJ5IG5hbWUgaXMgdGhlIG9uZSB3ZSBnb3QgYmFjayBmcm9tIGFkZC4KIFBBU1M6IFRoZSBjb2x1
bW4ncyBJRCBpcyBmcm9tY29sIGFzIGV4cGVjdGVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtYmFzaWMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlk
Q29sdW1ucy1iYXNpYy5odG1sCShyZXZpc2lvbiA0NjIyNSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxEYXRhR3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWJhc2ljLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEyLDkxICsxMiwxMDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtc2cgKyAiXG4iKSk7CiAgICAgICAgIH0KLQotICAgICAgICB2YXIgZGF0YWdy
aWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwotCi0gICAgICAgIC8vIFRlc3Qg
aW5pdGlhbCB2YWx1ZS4KLSAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnMgIT0gbnVsbCkgewot
ICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0aWFsIHZhbHVlIG9mIGRhdGFncmlkLmNvbHVtbnMg
aXMgZGVmaW5lZC4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDog
SW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIHdhcyBudWxsLiIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gVGVzdCBpbml0aWFsIGxlbmd0aC4KLSAgICAgICAgaWYgKGRhdGFncmlk
LmNvbHVtbnMubGVuZ3RoID09IDApIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogSW5pdGlhbCBs
ZW5ndGggb2YgZGF0YWdyaWQuY29sdW1ucyBpcyAwLiIpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbG9nKCJGQUlMOiBJbml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIHdh
cyAiICsgZGF0YWdyaWQuY29sdW1ucy5sZW5ndGggKyAiLiIpOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICAvLyBUZXN0IGFkZGluZyBhIGNvbHVtbi4KLSAgICAgICAgdmFyIGNvbHVtbiA9
IGRhdGFncmlkLmNvbHVtbnMuYWRkKCJmcm9tY29sIiwgIkZyb20iLCAidGV4dCIsIHRydWUsIDIp
OwotICAgICAgICAKLSAgICAgICAgLy8gVGVzdCByZXR1cm4gdmFsdWUgZnJvbSBhZGRpbmcgdGhl
IGNvbHVtbi4KLSAgICAgICAgaWYgKGNvbHVtbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICBsb2co
IlBBU1M6IENvbHVtbiByZXR1cm5lZCBmcm9tIGFkZC4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGxvZygiRkFJTDogTm8gY29sdW1uIHJldHVybmVkLiIpOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbHVtbiBsaXN0IG5vdyBoYXMgb25l
IGNvbHVtbi4KLSAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnMubGVuZ3RoID09IDEpIHsKLSAg
ICAgICAgICAgIGxvZygiUEFTUzogV2UgaGF2ZSBvbmUgY29sdW1uIGluIHRoZSBsaXN0LiIpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBFeHBlY3RlZCBvbmUgY29s
dW1uIGluIHRoZSBsaXN0IGJ1dCBoYXZlICIgKyBkYXRhZ3JpZC5jb2x1bW5zLmxlbmd0aCArICIg
Y29sdW1ucyBpbnN0ZWFkLiIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBNYWtl
IHN1cmUgdGhlIGNvbHVtbiB3ZSBnb3QgYmFjayBmcm9tIGFkZCBpcyB0aGUgb25lIGluIHRoZSBs
aXN0LgotICAgICAgICBpZiAoZGF0YWdyaWQuY29sdW1uc1swXSA9PSBjb2x1bW4pIHsKLSAgICAg
ICAgICAgIGxvZygiUEFTUzogVGhlIGNvbHVtbiBhdCBpbmRleCAwIGlzIHRoZSBjb2x1bW4gd2Ug
Z290IGJhY2sgZnJvbSBhZGQuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2co
IkZBSUw6IFRoZSBjb2x1bW4gYXQgaW5kZXggMCBpcyBub3QgdGhlIG9uZSB3ZSBleHBlY3RlZC4i
KTsKLSAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnNbImZy
b21jb2wiXSA9PSBjb2x1bW4pIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogVGhlIGNvbHVtbiB3
aGVuIHJlZmVyZW5jZWQgYnkgbmFtZSBpcyB0aGUgb25lIHdlIGdvdCBiYWNrIGZyb20gYWRkLiIp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUgY29sdW1uIHdo
ZW4gcmVmZXJlbmNlZCBieSBuYW1lIGlzIG5vdCB0aGUgb25lIHdlIGV4cGVjdGVkLiIpOwotICAg
ICAgICB9CisgICAgICAgIHRyeSB7CiAKLSAgICAgICAgLy8gRXhhbWluZSB0aGUgY29sdW1uJ3Mg
cHJvcGVydGllcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgd2hhdCB3ZSBleHBlY3RlZC4KLSAgICAg
ICAgaWYgKGNvbHVtbi5pZCA9PSAiZnJvbWNvbCIpIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzog
VGhlIGNvbHVtbidzIElEIGlzIGZyb21jb2wgYXMgZXhwZWN0ZWQuIik7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4ncyBJRCBzaG91bGQgYmUgZnJv
bWNvbCBidXQgaXMgIiArIGNvbHVtbi5pZCArICIgaW5zdGVhZC4iKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKGNvbHVtbi5sYWJlbCA9PSAiRnJvbSIpIHsKLSAgICAgICAgICAg
IGxvZygiUEFTUzogVGhlIGNvbHVtbidzIGxhYmVsIGlzIEZyb20gYXMgZXhwZWN0ZWQuIik7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4ncyBsYWJl
bCBzaG91bGQgYmUgRnJvbSBidXQgaXMgIiArIGNvbHVtbi5sYWJlbCArICIgaW5zdGVhZC4iKTsK
LSAgICAgICAgfQorICAgICAgICAgICAgdmFyIGRhdGFncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3QnKTsKIAotICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT0gInRleHQiKSB7Ci0g
ICAgICAgICAgICBsb2coIlBBU1M6IFRoZSBjb2x1bW4ncyB0eXBlIGlzIHRleHQgYXMgZXhwZWN0
ZWQuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1
bW4ncyB0eXBlIHNob3VsZCBiZSB0ZXh0IGJ1dCBpcyAiICsgY29sdW1uLnR5cGUgKyAiIGluc3Rl
YWQuIik7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIC8vIFRlc3QgaW5pdGlhbCB2YWx1ZS4KKyAg
ICAgICAgICAgIGlmIChkYXRhZ3JpZC5jb2x1bW5zICE9IG51bGwpIHsKKyAgICAgICAgICAgICAg
ICBsb2coIlBBU1M6IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQuY29sdW1ucyBpcyBkZWZpbmVk
LiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IElu
aXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQuY29sdW1ucyB3YXMgbnVsbC4iKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGVzdCBpbml0aWFsIGxlbmd0aC4KKyAgICAgICAgICAgIGlm
IChkYXRhZ3JpZC5jb2x1bW5zLmxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQ
QVNTOiBJbml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDAuIik7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTDogSW5pdGlhbCBsZW5ndGgg
b2YgZGF0YWdyaWQuY29sdW1ucyB3YXMgIiArIGRhdGFncmlkLmNvbHVtbnMubGVuZ3RoICsgIi4i
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICAvLyBUZXN0IGFkZGluZyBh
IGNvbHVtbi4KKyAgICAgICAgICAgIHZhciBjb2x1bW4gPSBkYXRhZ3JpZC5jb2x1bW5zLmFkZCgi
ZnJvbWNvbCIsICJGcm9tIiwgInRleHQiLCB0cnVlLCAyKTsKKyAgICAgICAgCisgICAgICAgICAg
ICAvLyBUZXN0IHJldHVybiB2YWx1ZSBmcm9tIGFkZGluZyB0aGUgY29sdW1uLgorICAgICAgICAg
ICAgaWYgKGNvbHVtbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBDb2x1
bW4gcmV0dXJuZWQgZnJvbSBhZGQuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGxvZygiRkFJTDogTm8gY29sdW1uIHJldHVybmVkLiIpOworICAgICAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29sdW1uIGxpc3Qgbm93IGhh
cyBvbmUgY29sdW1uLgorICAgICAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnMubGVuZ3RoID09
IDEpIHsKKyAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFdlIGhhdmUgb25lIGNvbHVtbiBpbiB0
aGUgbGlzdC4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJG
QUlMOiBFeHBlY3RlZCBvbmUgY29sdW1uIGluIHRoZSBsaXN0IGJ1dCBoYXZlICIgKyBkYXRhZ3Jp
ZC5jb2x1bW5zLmxlbmd0aCArICIgY29sdW1ucyBpbnN0ZWFkLiIpOworICAgICAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgICAgIC8vIFVzZSBpdGVtKDApIHRvIG1ha2Ugc3VyZSB0aGUgY29s
dW1uIHdlIGdvdCBiYWNrIGZyb20gYWRkIGlzIHRoZSBvbmUgaW4gdGhlIGxpc3QuCisgICAgICAg
ICAgICB2YXIgZ290Q29sdW1uID0gZGF0YWdyaWQuY29sdW1ucy5pdGVtKDApOworICAgICAgICAg
ICAgaWYgKGdvdENvbHVtbiA9PSBjb2x1bW4pIHsKKyAgICAgICAgICAgICAgICBsb2coIlBBU1M6
IFRoZSBjb2x1bW4gYXQgaXRlbSgwKSBpcyB0aGUgY29sdW1uIHdlIGdvdCBiYWNrIGZyb20gYWRk
LiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFRo
ZSBjb2x1bW4gYXQgaXRlbSgwKSAoIiArIGdvdENvbHVtbiArICIpIGlzIG5vdCB0aGUgb25lIHdl
IGV4cGVjdGVkICgiICsgY29sdW1uICsgIikuIik7CisgICAgICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICAgICAgLy8gVXNlIFswXSB0byBtYWtlIHN1cmUgdGhlIGNvbHVtbiB3ZSBnb3QgYmFj
ayBmcm9tIGFkZCBpcyB0aGUgb25lIGluIHRoZSBsaXN0LgorICAgICAgICAgICAgZ290Q29sdW1u
ID0gZGF0YWdyaWQuY29sdW1uc1swXTsKKyAgICAgICAgICAgIGlmIChnb3RDb2x1bW4gPT0gY29s
dW1uKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBUaGUgY29sdW1uIGF0IGluZGV4IDAg
aXMgdGhlIGNvbHVtbiB3ZSBnb3QgYmFjayBmcm9tIGFkZC4iKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUgY29sdW1uIGF0IGluZGV4IDAgKCIg
KyBnb3RDb2x1bW4gKyAiKSBpcyBub3QgdGhlIG9uZSB3ZSBleHBlY3RlZCAoIiArIGNvbHVtbiAr
ICIpLiIpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGdvdENvbHVtbiA9
IGRhdGFncmlkLmNvbHVtbnNbImZyb21jb2wiXTsKKyAgICAgICAgICAgIGlmIChnb3RDb2x1bW4g
PT0gY29sdW1uKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBUaGUgY29sdW1uIHdoZW4g
cmVmZXJlbmNlZCBieSBuYW1lIGlzIHRoZSBvbmUgd2UgZ290IGJhY2sgZnJvbSBhZGQuIik7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVt
biB3aGVuIHJlZmVyZW5jZWQgYnkgbmFtZSAoIiArIGdvdENvbHVtbiArICIpIGlzIG5vdCB0aGUg
b25lIHdlIGV4cGVjdGVkICgiICsgY29sdW1uICsgIikuIik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIEV4YW1pbmUgdGhlIGNvbHVtbidzIHByb3BlcnRpZXMgdG8gbWFrZSBzdXJl
IHRoZXkgYXJlIHdoYXQgd2UgZXhwZWN0ZWQuCisgICAgICAgICAgICBpZiAoY29sdW1uLmlkID09
ICJmcm9tY29sIikgeworICAgICAgICAgICAgICAgIGxvZygiUEFTUzogVGhlIGNvbHVtbidzIElE
IGlzIGZyb21jb2wgYXMgZXhwZWN0ZWQuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbidzIElEIHNob3VsZCBiZSBmcm9tY29sIGJ1
dCBpcyAiICsgY29sdW1uLmlkICsgIiBpbnN0ZWFkLiIpOworICAgICAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgICAgIGlmIChjb2x1bW4ubGFiZWwgPT0gIkZyb20iKSB7CisgICAgICAgICAg
ICAgICAgbG9nKCJQQVNTOiBUaGUgY29sdW1uJ3MgbGFiZWwgaXMgRnJvbSBhcyBleHBlY3RlZC4i
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUg
Y29sdW1uJ3MgbGFiZWwgc2hvdWxkIGJlIEZyb20gYnV0IGlzICIgKyBjb2x1bW4ubGFiZWwgKyAi
IGluc3RlYWQuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb2x1bW4udHlw
ZSA9PSAidGV4dCIpIHsKKyAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFRoZSBjb2x1bW4ncyB0
eXBlIGlzIHRleHQgYXMgZXhwZWN0ZWQuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbidzIHR5cGUgc2hvdWxkIGJlIHRleHQgYnV0
IGlzICIgKyBjb2x1bW4udHlwZSArICIgaW5zdGVhZC4iKTsKKyAgICAgICAgICAgIH0KICAgICAK
LSAgICAgICAgaWYgKGNvbHVtbi5wcmltYXJ5KSB7Ci0gICAgICAgICAgICBsb2coIlBBU1M6IFRo
ZSBjb2x1bW4ncyBwcmltYXJ5IHByb3BlcnR5IGlzIHRydWUgYXMgZXhwZWN0ZWQuIik7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4ncyBwcmltYXJ5
IHByb3BlcnR5IHNob3VsZCBiZSB0cnVlIGJ1dCBpc24ndC4iKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChjb2x1bW4uc29ydGFibGUgPT0gMikgewotICAgICAgICAgICAgbG9nKCJQQVNTOiBU
aGUgY29sdW1uJ3Mgc29ydGFibGUgcHJvcGVydHkgaXMgMiBhcyBleHBlY3RlZC4iKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbidzIHNvcnRhYmxl
IHByb3BlcnR5IHNob3VsZCBiZSAyIGJ1dCBpcyAiICsgY29sdW1uLnNvcnRhYmxlICsgIiBpbnN0
ZWFkLiIpOwotICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29sdW1uLnByaW1hcnkpIHsKKyAg
ICAgICAgICAgICAgICBsb2coIlBBU1M6IFRoZSBjb2x1bW4ncyBwcmltYXJ5IHByb3BlcnR5IGlz
IHRydWUgYXMgZXhwZWN0ZWQuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbidzIHByaW1hcnkgcHJvcGVydHkgc2hvdWxkIGJlIHRy
dWUgYnV0IGlzbid0LiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29sdW1u
LnNvcnRhYmxlID09IDIpIHsKKyAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFRoZSBjb2x1bW4n
cyBzb3J0YWJsZSBwcm9wZXJ0eSBpcyAyIGFzIGV4cGVjdGVkLiIpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4ncyBzb3J0YWJsZSBw
cm9wZXJ0eSBzaG91bGQgYmUgMiBidXQgaXMgIiArIGNvbHVtbi5zb3J0YWJsZSArICIgaW5zdGVh
ZC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdvdCBz
ZXQgYXMgdGhlIHByaW1hcnkgY29sdW1uLgorICAgICAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVt
bnMucHJpbWFyeUNvbHVtbiA9PSBjb2x1bW4pIHsKKyAgICAgICAgICAgICAgICBsb2coIlBBU1M6
IFRoZSBjb2x1bW4gcmV0dXJuZWQgZnJvbSBhZGQgaXMgbm93IHRoZSBwcmltYXJ5IGNvbHVtbi4i
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUg
Y29sdW1uIGlzIG5vdCB0aGUgcHJpbWFyeSBjb2x1bW4gYXMgZXhwZWN0ZWQuIik7CisgICAgICAg
ICAgICB9CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdvdCBzZXQgYXMgdGhlIHByaW1hcnkg
Y29sdW1uLgotICAgICAgICBpZiAoZGF0YWdyaWQuY29sdW1ucy5wcmltYXJ5Q29sdW1uID09IGNv
bHVtbikgewotICAgICAgICAgICAgbG9nKCJQQVNTOiBUaGUgY29sdW1uIHJldHVybmVkIGZyb20g
YWRkIGlzIG5vdyB0aGUgcHJpbWFyeSBjb2x1bW4uIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4gaXMgbm90IHRoZSBwcmltYXJ5IGNvbHVtbiBh
cyBleHBlY3RlZC4iKTsKKyAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAg
ICBsb2coIkZBSUw6IFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKICAgICAgICAgfQot
CisgICAgICAgIAogICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIDwvc2NyaXB0
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3Jp
ZENvbHVtbnMtZG9tLWF0dHJpYnV0ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tYXR0cmlidXRl
cy5odG1sCShyZXZpc2lvbiA0NjIyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRh
R3JpZEVsZW1lbnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1hdHRyaWJ1dGVzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEzLDY3ICsxMyw3MyBAQAogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cg
KyAiXG4iKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgZGF0YWdyaWQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndGVzdCcpOworICAgICAgICB0cnkgewogCi0gICAgICAgIC8vIFRlc3Qg
aW5pdGlhbCB2YWx1ZS4KLSAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnMgIT0gbnVsbCkgewot
ICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0aWFsIHZhbHVlIG9mIGRhdGFncmlkLmNvbHVtbnMg
aXMgZGVmaW5lZC4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDog
SW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIHdhcyBudWxsLiIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gVGVzdCBpbml0aWFsIGxlbmd0aC4KLSAgICAgICAgaWYgKGRhdGFncmlk
LmNvbHVtbnMubGVuZ3RoID09IDIpIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogSW5pdGlhbCBs
ZW5ndGggb2YgZGF0YWdyaWQuY29sdW1ucyBpcyAyLiIpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbG9nKCJGQUlMOiBJbml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIHdh
cyAiICsgZGF0YWdyaWQuY29sdW1ucy5sZW5ndGggKyAiLiIpOwotICAgICAgICB9CisgICAgICAg
ICAgICB2YXIgZGF0YWdyaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwogICAg
ICAgICAKLSAgICAgICAgLy8gRXhhbWluZSB0aGUgZmlyc3QgY29sdW1uJ3MgcHJvcGVydGllcyB0
byBtYWtlIHN1cmUgdGhleSBhcmUgd2hhdCB3ZSBleHBlY3RlZCBhZnRlcgotICAgICAgICAvLyB3
ZSBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMgdXNpbmcgc2V0QXR0cmlidXRlIGNhbGxzLgotICAgICAg
ICBkYXRhZ3JpZC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgiaWQiLCAiZnJvbSIpOwotICAgICAg
ICBkYXRhZ3JpZC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgibGFiZWwiLCAiRnJvbSIpOwotICAg
ICAgICBkYXRhZ3JpZC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0Iik7Ci0g
ICAgICAgIGRhdGFncmlkLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJwcmltYXJ5IiwgInRydWUi
KTsKLQotICAgICAgICB2YXIgY29sdW1uID0gZGF0YWdyaWQuY29sdW1uc1swXTsKLSAgICAgICAg
aWYgKGNvbHVtbi5pZCA9PSAiZnJvbSIpIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogVGhlIGNv
bHVtbidzIElEIGlzIGZyb20gYXMgZXhwZWN0ZWQuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4ncyBJRCBzaG91bGQgYmUgZnJvbSBidXQgaXMg
IiArIGNvbHVtbi5pZCArICIgaW5zdGVhZC4iKTsKLSAgICAgICAgfQorICAgICAgICAgICAgLy8g
VGVzdCBpbml0aWFsIHZhbHVlLgorICAgICAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnMgIT0g
bnVsbCkgeworICAgICAgICAgICAgICAgIGxvZygiUEFTUzogSW5pdGlhbCB2YWx1ZSBvZiBkYXRh
Z3JpZC5jb2x1bW5zIGlzIGRlZmluZWQuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGxvZygiRkFJTDogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIHdh
cyBudWxsLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUZXN0IGluaXRpYWwg
bGVuZ3RoLgorICAgICAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnMubGVuZ3RoID09IDIpIHsK
KyAgICAgICAgICAgICAgICBsb2coIlBBU1M6IEluaXRpYWwgbGVuZ3RoIG9mIGRhdGFncmlkLmNv
bHVtbnMgaXMgMi4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9n
KCJGQUlMOiBJbml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIHdhcyAiICsgZGF0YWdy
aWQuY29sdW1ucy5sZW5ndGggKyAiLiIpOworICAgICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgaWYgKGNvbHVtbi5sYWJlbCA9PSAiRnJvbSIpIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzog
VGhlIGNvbHVtbidzIGxhYmVsIGlzIEZyb20gYXMgZXhwZWN0ZWQuIik7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4ncyBsYWJlbCBzaG91bGQgYmUg
RnJvbSBidXQgaXMgIiArIGNvbHVtbi5sYWJlbCArICIgaW5zdGVhZC4iKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PSAidGV4dCIpIHsKLSAgICAgICAgICAgIGxvZygi
UEFTUzogVGhlIGNvbHVtbidzIHR5cGUgaXMgdGV4dCBhcyBleHBlY3RlZC4iKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbidzIHR5cGUgc2hvdWxk
IGJlIHRleHQgYnV0IGlzICIgKyBjb2x1bW4udHlwZSArICIgaW5zdGVhZC4iKTsKLSAgICAgICAg
fQorICAgICAgICAgICAgLy8gRXhhbWluZSB0aGUgZmlyc3QgY29sdW1uJ3MgcHJvcGVydGllcyB0
byBtYWtlIHN1cmUgdGhleSBhcmUgd2hhdCB3ZSBleHBlY3RlZCBhZnRlcgorICAgICAgICAgICAg
Ly8gd2UgY2hhbmdlIHRoZSBhdHRyaWJ1dGVzIHVzaW5nIHNldEF0dHJpYnV0ZSBjYWxscy4KKyAg
ICAgICAgICAgIGRhdGFncmlkLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJpZCIsICJmcm9tIik7
CisgICAgICAgICAgICBkYXRhZ3JpZC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgibGFiZWwiLCAi
RnJvbSIpOworICAgICAgICAgICAgZGF0YWdyaWQuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInR5
cGUiLCAidGV4dCIpOworICAgICAgICAgICAgZGF0YWdyaWQuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1
dGUoInByaW1hcnkiLCAidHJ1ZSIpOworCisgICAgICAgICAgICB2YXIgY29sdW1uID0gZGF0YWdy
aWQuY29sdW1uc1swXTsKKyAgICAgICAgICAgIGlmIChjb2x1bW4uaWQgPT0gImZyb20iKSB7Cisg
ICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBUaGUgY29sdW1uJ3MgSUQgaXMgZnJvbSBhcyBleHBl
Y3RlZC4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlM
OiBUaGUgY29sdW1uJ3MgSUQgc2hvdWxkIGJlIGZyb20gYnV0IGlzICIgKyBjb2x1bW4uaWQgKyAi
IGluc3RlYWQuIik7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgaWYgKGNv
bHVtbi5sYWJlbCA9PSAiRnJvbSIpIHsKKyAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFRoZSBj
b2x1bW4ncyBsYWJlbCBpcyBGcm9tIGFzIGV4cGVjdGVkLiIpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFRoZSBjb2x1bW4ncyBsYWJlbCBzaG91bGQg
YmUgRnJvbSBidXQgaXMgIiArIGNvbHVtbi5sYWJlbCArICIgaW5zdGVhZC4iKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09ICJ0ZXh0IikgeworICAgICAg
ICAgICAgICAgIGxvZygiUEFTUzogVGhlIGNvbHVtbidzIHR5cGUgaXMgdGV4dCBhcyBleHBlY3Rl
ZC4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBU
aGUgY29sdW1uJ3MgdHlwZSBzaG91bGQgYmUgdGV4dCBidXQgaXMgIiArIGNvbHVtbi50eXBlICsg
IiBpbnN0ZWFkLiIpOworICAgICAgICAgICAgfQogICAgIAotICAgICAgICBpZiAoY29sdW1uLnBy
aW1hcnkpIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogVGhlIGNvbHVtbidzIHByaW1hcnkgcHJv
cGVydHkgaXMgdHJ1ZSBhcyBleHBlY3RlZC4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbidzIHByaW1hcnkgcHJvcGVydHkgc2hvdWxkIGJlIHRy
dWUgYnV0IGlzbid0LiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbHVtbi5zb3J0YWJs
ZSA9PSAyKSB7Ci0gICAgICAgICAgICBsb2coIlBBU1M6IFRoZSBjb2x1bW4ncyBzb3J0YWJsZSBw
cm9wZXJ0eSBpcyAyIGFzIGV4cGVjdGVkLiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgbG9nKCJGQUlMOiBUaGUgY29sdW1uJ3Mgc29ydGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIDIg
YnV0IGlzICIgKyBjb2x1bW4uc29ydGFibGUgKyAiIGluc3RlYWQuIik7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGZyb20gY29sdW1uIGlzIHRoZSBwcmltYXJ5IGNvbHVt
bi4KLSAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnMucHJpbWFyeUNvbHVtbiA9PSBjb2x1bW4p
IHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogVGhlIGZpcnN0IGNvbHVtbiBpcyB0aGUgcHJpbWFy
eSBjb2x1bW4uIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFRo
ZSBmaXJzdCBjb2x1bW4gaXMgbm90IHRoZSBwcmltYXJ5IGNvbHVtbiBhcyBleHBlY3RlZC4iKTsK
KyAgICAgICAgICAgIGlmIChjb2x1bW4ucHJpbWFyeSkgeworICAgICAgICAgICAgICAgIGxvZygi
UEFTUzogVGhlIGNvbHVtbidzIHByaW1hcnkgcHJvcGVydHkgaXMgdHJ1ZSBhcyBleHBlY3RlZC4i
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUg
Y29sdW1uJ3MgcHJpbWFyeSBwcm9wZXJ0eSBzaG91bGQgYmUgdHJ1ZSBidXQgaXNuJ3QuIik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb2x1bW4uc29ydGFibGUgPT0gMikgewor
ICAgICAgICAgICAgICAgIGxvZygiUEFTUzogVGhlIGNvbHVtbidzIHNvcnRhYmxlIHByb3BlcnR5
IGlzIDIgYXMgZXhwZWN0ZWQuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbidzIHNvcnRhYmxlIHByb3BlcnR5IHNob3VsZCBiZSAy
IGJ1dCBpcyAiICsgY29sdW1uLnNvcnRhYmxlICsgIiBpbnN0ZWFkLiIpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGZyb20gY29sdW1uIGlzIHRoZSBwcmlt
YXJ5IGNvbHVtbi4KKyAgICAgICAgICAgIGlmIChkYXRhZ3JpZC5jb2x1bW5zLnByaW1hcnlDb2x1
bW4gPT0gY29sdW1uKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBUaGUgZmlyc3QgY29s
dW1uIGlzIHRoZSBwcmltYXJ5IGNvbHVtbi4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUgZmlyc3QgY29sdW1uIGlzIG5vdCB0aGUgcHJpbWFy
eSBjb2x1bW4gYXMgZXhwZWN0ZWQuIik7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGxvZygiRkFJTDogVGhyZXcgZXhj
ZXB0aW9uICIgKyBleGNlcHRpb24pOwogICAgICAgICB9Ci0KKyAgICAgICAgCiAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGF0YUdyaWRFbGVtZW50L0RhdGFHcmlkQ29sdW1ucy1kb20tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1l
bnQvRGF0YUdyaWRDb2x1bW5zLWRvbS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ2MjI1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMt
ZG9tLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDggQEAKK1BBU1M6IGRh
dGFncmlkIEpTIGJpbmRpbmcgaXMgW29iamVjdCBIVE1MRGF0YUdyaWRFbGVtZW50XQogUEFTUzog
SW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIGRlZmluZWQuCitQQVNTOiBkYXRh
Z3JpZC5jb2x1bW5zIEpTIGJpbmRpbmcgaXMgW29iamVjdCBEYXRhR3JpZENvbHVtbkxpc3RdCiBQ
QVNTOiBJbml0aWFsIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuCitQQVNTOiBuZXdD
b2wgSlMgYmluZGluZyBpcyBbb2JqZWN0IEhUTUxEYXRhR3JpZENvbEVsZW1lbnRdCiBQQVNTOiBX
ZSBoYXZlIHRocmVlIGNvbHVtbnMgaW4gdGhlIGxpc3QuCiBQQVNTOiBUaGUgY29sdW1uJ3MgSUQg
aXMgZnJvbSBhcyBleHBlY3RlZC4KIFBBU1M6IFRoZSBjb2x1bW4ncyBsYWJlbCBpcyBGcm9tIGFz
IGV4cGVjdGVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVu
dC9EYXRhR3JpZENvbHVtbnMtZG9tLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZENvbHVtbnMtZG9tLmh0bWwJKHJldmlz
aW9uIDQ2MjI1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9E
YXRhR3JpZENvbHVtbnMtZG9tLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDkzICsxMiwxMTUg
QEAKICAgICAgICAgewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNv
bGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAiXG4iKSk7CiAg
ICAgICAgIH0KLQotICAgICAgICB2YXIgZGF0YWdyaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGVzdCcpOwotCi0gICAgICAgIC8vIFRlc3QgaW5pdGlhbCB2YWx1ZS4KLSAgICAgICAgaWYg
KGRhdGFncmlkLmNvbHVtbnMgIT0gbnVsbCkgewotICAgICAgICAgICAgbG9nKCJQQVNTOiBJbml0
aWFsIHZhbHVlIG9mIGRhdGFncmlkLmNvbHVtbnMgaXMgZGVmaW5lZC4iKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5j
b2x1bW5zIHdhcyBudWxsLiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGVzdCBpbml0aWFs
IGxlbmd0aC4KLSAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnMubGVuZ3RoID09IDIpIHsKLSAg
ICAgICAgICAgIGxvZygiUEFTUzogSW5pdGlhbCBsZW5ndGggb2YgZGF0YWdyaWQuY29sdW1ucyBp
cyAyLiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBJbml0aWFs
IGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIHdhcyAiICsgZGF0YWdyaWQuY29sdW1ucy5sZW5n
dGggKyAiLiIpOwotICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAvLyBUZXN0IGFkZGluZyBh
IGNvbHVtbi4KLSAgICAgICAgdmFyIG5ld0NvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRj
b2wiKTsKLSAgICAgICAgbmV3Q29sLnNldEF0dHJpYnV0ZSgiaWQiLCAiZGF0ZSIpOwotICAgICAg
ICBuZXdDb2wuc2V0QXR0cmlidXRlKCJsYWJlbCIsICJEYXRlIFJlY2VpdmVkIik7Ci0gICAgICAg
IG5ld0NvbC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAidGV4dCIpOwotICAgICAgICB2YXIgY29sdW1u
ID0gZGF0YWdyaWQuYXBwZW5kQ2hpbGQobmV3Q29sKTsKLSAgICAgICAgCi0gICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGUgY29sdW1uIGxpc3Qgbm93IGhhcyB0aHJlZSBjb2x1bW5zLgotICAgICAgICBp
ZiAoZGF0YWdyaWQuY29sdW1ucy5sZW5ndGggPT0gMykgewotICAgICAgICAgICAgbG9nKCJQQVNT
OiBXZSBoYXZlIHRocmVlIGNvbHVtbnMgaW4gdGhlIGxpc3QuIik7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBsb2coIkZBSUw6IEV4cGVjdGVkIHRocmVlIGNvbHVtbnMgaW4gdGhlIGxp
c3QgYnV0IGhhdmUgIiArIGRhdGFncmlkLmNvbHVtbnMubGVuZ3RoICsgIiBjb2x1bW5zIGluc3Rl
YWQuIik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIEV4YW1pbmUgdGhlIGZpcnN0
IGNvbHVtbidzIHByb3BlcnRpZXMgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIHdoYXQgd2UgZXhwZWN0
ZWQuCi0gICAgICAgIHZhciBjb2x1bW4gPSBkYXRhZ3JpZC5jb2x1bW5zWzBdOwotICAgICAgICBp
ZiAoY29sdW1uLmlkID09ICJmcm9tIikgewotICAgICAgICAgICAgbG9nKCJQQVNTOiBUaGUgY29s
dW1uJ3MgSUQgaXMgZnJvbSBhcyBleHBlY3RlZC4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbidzIElEIHNob3VsZCBiZSBmcm9tIGJ1dCBpcyAi
ICsgY29sdW1uLmlkICsgIiBpbnN0ZWFkLiIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiAoY29sdW1uLmxhYmVsID09ICJGcm9tIikgewotICAgICAgICAgICAgbG9nKCJQQVNTOiBU
aGUgY29sdW1uJ3MgbGFiZWwgaXMgRnJvbSBhcyBleHBlY3RlZC4iKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbidzIGxhYmVsIHNob3VsZCBiZSBG
cm9tIGJ1dCBpcyAiICsgY29sdW1uLmxhYmVsICsgIiBpbnN0ZWFkLiIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGNvbHVtbi50eXBlID09ICJ0ZXh0IikgewotICAgICAgICAgICAgbG9nKCJQ
QVNTOiBUaGUgY29sdW1uJ3MgdHlwZSBpcyB0ZXh0IGFzIGV4cGVjdGVkLiIpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUgY29sdW1uJ3MgdHlwZSBzaG91bGQg
YmUgdGV4dCBidXQgaXMgIiArIGNvbHVtbi50eXBlICsgIiBpbnN0ZWFkLiIpOwotICAgICAgICB9
CisgICAgICAgIGZ1bmN0aW9uIGV4cGVjdEJpbmRpbmcod2hhdCwgb2JqLCBjbGFzc25hbWUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBkZXNjID0gU3RyaW5nKG9iaik7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWREZXNjID0gIltvYmplY3QgIiArIGNsYXNzbmFtZSArICJdIjsKKyAgICAg
ICAgICAgIGlmIChkZXNjID09IGV4cGVjdGVkRGVzYykgeworICAgICAgICAgICAgICAgIGxvZygi
UEFTUzogIiArIHdoYXQgKyAiIEpTIGJpbmRpbmcgaXMgIiArIGRlc2MpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6ICIgKyB3aGF0ICsgIiBKUyBiaW5k
aW5nIGlzICIgKyBkZXNjICsgIihleHBlY3RlZCAiICsgZXhwZWN0ZWREZXNjICsgIikiKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgdmFyIGRhdGFncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Rlc3QnKTsKKyAgICAgICAgICAgIGV4cGVjdEJpbmRpbmcoImRhdGFncmlkIiwgZGF0YWdyaWQs
ICJIVE1MRGF0YUdyaWRFbGVtZW50Iik7CisgICAgICAgIAorICAgICAgICAgICAgLy8gVGVzdCBp
bml0aWFsIHZhbHVlLgorICAgICAgICAgICAgaWYgKGRhdGFncmlkLmNvbHVtbnMgIT0gbnVsbCkg
eworICAgICAgICAgICAgICAgIGxvZygiUEFTUzogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5j
b2x1bW5zIGlzIGRlZmluZWQuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGxvZygiRkFJTDogSW5pdGlhbCB2YWx1ZSBvZiBkYXRhZ3JpZC5jb2x1bW5zIHdhcyBudWxs
LiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUZXN0IGNvcnJlY3QgYmluZGlu
ZyBvZiBEYXRhR3JpZENvbHVtbkxpc3QuCisgICAgICAgICAgICBleHBlY3RCaW5kaW5nKCJkYXRh
Z3JpZC5jb2x1bW5zIiwgZGF0YWdyaWQuY29sdW1ucywgIkRhdGFHcmlkQ29sdW1uTGlzdCIpOwor
ICAgICAgICAKKyAgICAgICAgICAgIC8vIFRlc3QgaW5pdGlhbCBsZW5ndGguCisgICAgICAgICAg
ICBpZiAoZGF0YWdyaWQuY29sdW1ucy5sZW5ndGggPT0gMikgeworICAgICAgICAgICAgICAgIGxv
ZygiUEFTUzogSW5pdGlhbCBsZW5ndGggb2YgZGF0YWdyaWQuY29sdW1ucyBpcyAyLiIpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IEluaXRpYWwgbGVu
Z3RoIG9mIGRhdGFncmlkLmNvbHVtbnMgd2FzICIgKyBkYXRhZ3JpZC5jb2x1bW5zLmxlbmd0aCAr
ICIuIik7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgLy8gVGVzdCBhZGRp
bmcgYSBjb2x1bW4uCisgICAgICAgICAgICB2YXIgbmV3Q29sID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGNvbCIpOworICAgICAgICAgICAgZXhwZWN0QmluZGluZygibmV3Q29sIiwgbmV3Q29s
LCAiSFRNTERhdGFHcmlkQ29sRWxlbWVudCIpOworICAgICAgICAgICAgbmV3Q29sLnNldEF0dHJp
YnV0ZSgiaWQiLCAiZGF0ZSIpOworICAgICAgICAgICAgbmV3Q29sLnNldEF0dHJpYnV0ZSgibGFi
ZWwiLCAiRGF0ZSBSZWNlaXZlZCIpOworICAgICAgICAgICAgbmV3Q29sLnNldEF0dHJpYnV0ZSgi
dHlwZSIsICJ0ZXh0Iik7CisgICAgICAgICAgICB2YXIgY29sdW1uID0gZGF0YWdyaWQuYXBwZW5k
Q2hpbGQobmV3Q29sKTsKKyAgICAgICAgCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNv
bHVtbiBsaXN0IG5vdyBoYXMgdGhyZWUgY29sdW1ucy4KKyAgICAgICAgICAgIGlmIChkYXRhZ3Jp
ZC5jb2x1bW5zLmxlbmd0aCA9PSAzKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBXZSBo
YXZlIHRocmVlIGNvbHVtbnMgaW4gdGhlIGxpc3QuIik7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGxvZygiRkFJTDogRXhwZWN0ZWQgdGhyZWUgY29sdW1ucyBpbiB0aGUg
bGlzdCBidXQgaGF2ZSAiICsgZGF0YWdyaWQuY29sdW1ucy5sZW5ndGggKyAiIGNvbHVtbnMgaW5z
dGVhZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICAvLyBFeGFtaW5l
IHRoZSBmaXJzdCBjb2x1bW4ncyBwcm9wZXJ0aWVzIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSB3aGF0
IHdlIGV4cGVjdGVkLgorICAgICAgICAgICAgdmFyIGNvbHVtbiA9IGRhdGFncmlkLmNvbHVtbnNb
MF07CisgICAgICAgICAgICBpZiAoY29sdW1uLmlkID09ICJmcm9tIikgeworICAgICAgICAgICAg
ICAgIGxvZygiUEFTUzogVGhlIGNvbHVtbidzIElEIGlzIGZyb20gYXMgZXhwZWN0ZWQuIik7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVt
bidzIElEIHNob3VsZCBiZSBmcm9tIGJ1dCBpcyAiICsgY29sdW1uLmlkICsgIiBpbnN0ZWFkLiIp
OworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGlmIChjb2x1bW4ubGFiZWwg
PT0gIkZyb20iKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBUaGUgY29sdW1uJ3MgbGFi
ZWwgaXMgRnJvbSBhcyBleHBlY3RlZC4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgbG9nKCJGQUlMOiBUaGUgY29sdW1uJ3MgbGFiZWwgc2hvdWxkIGJlIEZyb20gYnV0
IGlzICIgKyBjb2x1bW4ubGFiZWwgKyAiIGluc3RlYWQuIik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PSAidGV4dCIpIHsKKyAgICAgICAgICAgICAgICBs
b2coIlBBU1M6IFRoZSBjb2x1bW4ncyB0eXBlIGlzIHRleHQgYXMgZXhwZWN0ZWQuIik7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbidz
IHR5cGUgc2hvdWxkIGJlIHRleHQgYnV0IGlzICIgKyBjb2x1bW4udHlwZSArICIgaW5zdGVhZC4i
KTsKKyAgICAgICAgICAgIH0KICAgICAKLSAgICAgICAgaWYgKGNvbHVtbi5wcmltYXJ5KSB7Ci0g
ICAgICAgICAgICBsb2coIlBBU1M6IFRoZSBjb2x1bW4ncyBwcmltYXJ5IHByb3BlcnR5IGlzIHRy
dWUgYXMgZXhwZWN0ZWQuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZB
SUw6IFRoZSBjb2x1bW4ncyBwcmltYXJ5IHByb3BlcnR5IHNob3VsZCBiZSB0cnVlIGJ1dCBpc24n
dC4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb2x1bW4uc29ydGFibGUgPT0gMikgewot
ICAgICAgICAgICAgbG9nKCJQQVNTOiBUaGUgY29sdW1uJ3Mgc29ydGFibGUgcHJvcGVydHkgaXMg
MiBhcyBleHBlY3RlZC4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJ
TDogVGhlIGNvbHVtbidzIHNvcnRhYmxlIHByb3BlcnR5IHNob3VsZCBiZSAyIGJ1dCBpcyAiICsg
Y29sdW1uLnNvcnRhYmxlICsgIiBpbnN0ZWFkLiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
TWFrZSBzdXJlIHRoZSBmcm9tIGNvbHVtbiBpcyB0aGUgcHJpbWFyeSBjb2x1bW4uCi0gICAgICAg
IGlmIChkYXRhZ3JpZC5jb2x1bW5zLnByaW1hcnlDb2x1bW4gPT0gY29sdW1uKSB7Ci0gICAgICAg
ICAgICBsb2coIlBBU1M6IFRoZSBmaXJzdCBjb2x1bW4gaXMgdGhlIHByaW1hcnkgY29sdW1uLiIp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUgZmlyc3QgY29s
dW1uIGlzIG5vdCB0aGUgcHJpbWFyeSBjb2x1bW4gYXMgZXhwZWN0ZWQuIik7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBZYW5rIHRoZSBmaXJzdCBjb2x1bW4gb3V0LgotICAgICAgICBkYXRhZ3Jp
ZC5yZW1vdmVDaGlsZChkYXRhZ3JpZC5maXJzdENoaWxkKTsKLSAgICAgICAgCi0gICAgICAgIC8v
IENoZWNrIHRoZSBjb2x1bW4gY291bnQgbm93LgotICAgICAgICBpZiAoZGF0YWdyaWQuY29sdW1u
cy5sZW5ndGggPT0gMikgewotICAgICAgICAgICAgbG9nKCJQQVNTOiBBZnRlciByZW1vdmluZyBh
IGNvbHVtbiwgdGhlIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5zIGlzIDIuIik7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IEFmdGVyIHJlbW92aW5nIGEgY29sdW1u
LCB0aGUgbGVuZ3RoIG9mIGRhdGFncmlkLmNvbHVtbnMgaXMgIiArIGRhdGFncmlkLmNvbHVtbnMu
bGVuZ3RoICsgIi4iKTsKKyAgICAgICAgICAgIGlmIChjb2x1bW4ucHJpbWFyeSkgeworICAgICAg
ICAgICAgICAgIGxvZygiUEFTUzogVGhlIGNvbHVtbidzIHByaW1hcnkgcHJvcGVydHkgaXMgdHJ1
ZSBhcyBleHBlY3RlZC4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
bG9nKCJGQUlMOiBUaGUgY29sdW1uJ3MgcHJpbWFyeSBwcm9wZXJ0eSBzaG91bGQgYmUgdHJ1ZSBi
dXQgaXNuJ3QuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb2x1bW4uc29y
dGFibGUgPT0gMikgeworICAgICAgICAgICAgICAgIGxvZygiUEFTUzogVGhlIGNvbHVtbidzIHNv
cnRhYmxlIHByb3BlcnR5IGlzIDIgYXMgZXhwZWN0ZWQuIik7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGxvZygiRkFJTDogVGhlIGNvbHVtbidzIHNvcnRhYmxlIHByb3Bl
cnR5IHNob3VsZCBiZSAyIGJ1dCBpcyAiICsgY29sdW1uLnNvcnRhYmxlICsgIiBpbnN0ZWFkLiIp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGZyb20gY29s
dW1uIGlzIHRoZSBwcmltYXJ5IGNvbHVtbi4KKyAgICAgICAgICAgIGlmIChkYXRhZ3JpZC5jb2x1
bW5zLnByaW1hcnlDb2x1bW4gPT0gY29sdW1uKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNT
OiBUaGUgZmlyc3QgY29sdW1uIGlzIHRoZSBwcmltYXJ5IGNvbHVtbi4iKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBUaGUgZmlyc3QgY29sdW1uIGlz
IG5vdCB0aGUgcHJpbWFyeSBjb2x1bW4gYXMgZXhwZWN0ZWQuIik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFlhbmsgdGhlIGZpcnN0IGNvbHVtbiBvdXQuCisgICAgICAgICAgICBk
YXRhZ3JpZC5yZW1vdmVDaGlsZChkYXRhZ3JpZC5maXJzdENoaWxkKTsKKyAgICAgICAgCisgICAg
ICAgICAgICAvLyBDaGVjayB0aGUgY29sdW1uIGNvdW50IG5vdy4KKyAgICAgICAgICAgIGlmIChk
YXRhZ3JpZC5jb2x1bW5zLmxlbmd0aCA9PSAyKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNT
OiBBZnRlciByZW1vdmluZyBhIGNvbHVtbiwgdGhlIGxlbmd0aCBvZiBkYXRhZ3JpZC5jb2x1bW5z
IGlzIDIuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZygiRkFJ
TDogQWZ0ZXIgcmVtb3ZpbmcgYSBjb2x1bW4sIHRoZSBsZW5ndGggb2YgZGF0YWdyaWQuY29sdW1u
cyBpcyAiICsgZGF0YWdyaWQuY29sdW1ucy5sZW5ndGggKyAiLiIpOworICAgICAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBubyBsb25nZXIgYmUgYSBwcmlt
YXJ5IGNvbHVtbi4KKyAgICAgICAgICAgIGlmICghZGF0YWdyaWQuY29sdW1ucy5wcmltYXJ5Q29s
dW1uKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBObyBjb2x1bW4gaXMgdGhlIHByaW1h
cnkgY29sdW1uLiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2co
IkZBSUw6IFRoZXJlIGlzIGEgcHJpbWFyeSBjb2x1bW4sIGJ1dCB0aGVyZSBzaG91bGQgbm90IGJl
LiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIH0gY2F0Y2ggKGV4Y2Vw
dGlvbikgeworICAgICAgICAgICAgbG9nKCJGQUlMOiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2Vw
dGlvbik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIC8vIFRoZXJlIHNob3VsZCBubyBs
b25nZXIgYmUgYSBwcmltYXJ5IGNvbHVtbi4KLSAgICAgICAgaWYgKCFkYXRhZ3JpZC5jb2x1bW5z
LnByaW1hcnlDb2x1bW4pIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogTm8gY29sdW1uIGlzIHRo
ZSBwcmltYXJ5IGNvbHVtbi4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygi
RkFJTDogVGhlcmUgaXMgYSBwcmltYXJ5IGNvbHVtbiwgYnV0IHRoZXJlIHNob3VsZCBub3QgYmUu
Iik7Ci0gICAgICAgIH0KLSAgICAKICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAg
ICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEYXRhR3JpZEVsZW1l
bnQvRGF0YUdyaWREYXRhU291cmNlLWJhc2ljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTERhdGFHcmlkRWxlbWVudC9EYXRhR3JpZERhdGFTb3VyY2UtYmFzaWMu
aHRtbAkocmV2aXNpb24gNDYyMjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGF0YUdy
aWRFbGVtZW50L0RhdGFHcmlkRGF0YVNvdXJjZS1iYXNpYy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMCw0NyArMTAsNTYgQEAKICAgICAgICAgewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
c2cgKyAiXG4iKSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CiAKLSAgICAg
ICAgdmFyIGRhdGFncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKLQotICAg
ICAgICAvLyBUZXN0IGluaXRpYWwgdmFsdWUuCi0gICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291
cmNlID09IG51bGwpIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogSW5pdGlhbCB2YWx1ZSBvZiBk
YXRhZ3JpZC5kYXRhU291cmNlIGlzIG51bGwuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBsb2coIkZBSUw6IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQuZGF0YVNvdXJjZSB3YXMg
bm90IG51bGwuIFdhcyAiICsgZGF0YWdyaWQuZGF0YVNvdXJjZSArICIuIik7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBUZXN0IHNldHRpbmcgdG8gYSBKUyBudW1iZXIKLSAgICAgICAgZGF0YWdy
aWQuZGF0YVNvdXJjZSA9IDEwOwotICAgICAgICBpZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PSAx
MCkgewotICAgICAgICAgICAgbG9nKCJQQVNTOiBBbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0
YVNvdXJjZSB0byBhIG51bWJlci4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxv
ZygiRkFJTDogRGlkIG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBh
IG51bWJlci4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRlc3Qgc2V0dGluZyB0byBhIEpT
IG51bWJlcgotICAgICAgICBkYXRhZ3JpZC5kYXRhU291cmNlID0gIlRlc3QgU3RyaW5nIjsKLSAg
ICAgICAgaWYgKGRhdGFncmlkLmRhdGFTb3VyY2UgPT0gIlRlc3QgU3RyaW5nIikgewotICAgICAg
ICAgICAgbG9nKCJQQVNTOiBBbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBh
IHN0cmluZy4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogRGlk
IG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhIHN0cmluZy4iKTsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIFRlc3Qgc2V0dGluZyBkYXRhU291cmNlIHRvIGFuIG9i
amVjdC4KLSAgICAgICAgdmFyIGRhdGFTb3VyY2UgPSB7fTsKLSAgICAgICAgZGF0YWdyaWQuZGF0
YVNvdXJjZSA9IGRhdGFTb3VyY2U7Ci0gICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09
IGRhdGFTb3VyY2UpIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogQWxsb3dlZCBzZXR0aW5nIGRh
dGFncmlkLmRhdGFTb3VyY2UgdG8gYW4gb2JqZWN0LiIpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRh
U291cmNlIHRvIGFuIG9iamVjdC4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRlc3Qgc2V0
dGluZyBkYXRhU291cmNlIHRvIGFuIG9iamVjdC4KLSAgICAgICAgZGF0YWdyaWQuZGF0YVNvdXJj
ZSA9IG51bGw7Ci0gICAgICAgIGlmIChkYXRhZ3JpZC5kYXRhU291cmNlID09IG51bGwpIHsKLSAg
ICAgICAgICAgIGxvZygiUEFTUzogQWxsb3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2Ug
dG8gbnVsbC4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogRGlk
IG5vdCBhbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBudWxsLiIpOworICAg
ICAgICAgICAgdmFyIGRhdGFncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsK
KyAgICAgICAgCisgICAgICAgICAgICAvLyBUZXN0IHNldHRpbmcgdGhlIGRhdGFTb3VyY2UgcHJv
cGVydHkgYW5kIG1ha2luZyBzdXJlIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkKKyAgICAgICAg
ICAgIC8vIG1hdGNoZXMgd2hhdCB3ZSBwdXQgaW4gKHVzaW5nIHRoZSA9PT0gb3BlcmF0b3IgdG8g
Y2hlY2sgZm9yIGV4YWN0IGVxdWFsaXR5LikKKworICAgICAgICAgICAgLy8gVGVzdCBpbml0aWFs
IHZhbHVlLgorICAgICAgICAgICAgaWYgKGRhdGFncmlkLmRhdGFTb3VyY2UgPT09IG51bGwpIHsK
KyAgICAgICAgICAgICAgICBsb2coIlBBU1M6IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQuZGF0
YVNvdXJjZSBpcyBudWxsLiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBsb2coIkZBSUw6IEluaXRpYWwgdmFsdWUgb2YgZGF0YWdyaWQuZGF0YVNvdXJjZSB3YXMgbm90
IG51bGwuIFdhcyAiICsgZGF0YWdyaWQuZGF0YVNvdXJjZSArICIuIik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRlc3Qgc2V0dGluZyB0byBhIEpTIG51bWJlci4KKyAgICAgICAg
ICAgIGRhdGFncmlkLmRhdGFTb3VyY2UgPSAxMDsKKyAgICAgICAgICAgIGlmIChkYXRhZ3JpZC5k
YXRhU291cmNlID09PSAxMCkgeworICAgICAgICAgICAgICAgIGxvZygiUEFTUzogQWxsb3dlZCBz
ZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIuIik7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBhbGxvdyBzZXR0aW5n
IGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYSBudW1iZXIuIik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRlc3Qgc2V0dGluZyB0byBhIEpTIG51bWJlci4KKyAgICAgICAgICAgIGRh
dGFncmlkLmRhdGFTb3VyY2UgPSAiVGVzdCBTdHJpbmciOworICAgICAgICAgICAgaWYgKGRhdGFn
cmlkLmRhdGFTb3VyY2UgPT09ICJUZXN0IFN0cmluZyIpIHsKKyAgICAgICAgICAgICAgICBsb2co
IlBBU1M6IEFsbG93ZWQgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgc3RyaW5nLiIp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IERpZCBu
b3QgYWxsb3cgc2V0dGluZyBkYXRhZ3JpZC5kYXRhU291cmNlIHRvIGEgc3RyaW5nLiIpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUZXN0IHNldHRpbmcgZGF0YVNvdXJjZSB0byBh
biBvYmplY3QuCisgICAgICAgICAgICB2YXIgZGF0YVNvdXJjZSA9IHt9OworICAgICAgICAgICAg
ZGF0YWdyaWQuZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7CisgICAgICAgICAgICBpZiAoZGF0YWdy
aWQuZGF0YVNvdXJjZSA9PSBkYXRhU291cmNlKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNT
OiBBbGxvd2VkIHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBhbiBvYmplY3QuIik7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBh
bGxvdyBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gYW4gb2JqZWN0LiIpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUZXN0IHNldHRpbmcgZGF0YVNvdXJjZSB0byBudWxs
LgorICAgICAgICAgICAgZGF0YWdyaWQuZGF0YVNvdXJjZSA9IG51bGw7CisgICAgICAgICAgICBp
ZiAoZGF0YWdyaWQuZGF0YVNvdXJjZSA9PT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGxvZygi
UEFTUzogQWxsb3dlZCBzZXR0aW5nIGRhdGFncmlkLmRhdGFTb3VyY2UgdG8gbnVsbC4iKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGFs
bG93IHNldHRpbmcgZGF0YWdyaWQuZGF0YVNvdXJjZSB0byBudWxsLiIpOworICAgICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBs
b2coIkZBSUw6IFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKICAgICAgICAgfQogICAg
IDwvc2NyaXB0PgogPC9ib2R5Pgo=
</data>
<flag name="review"
          id="17573"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>