<?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>88973</bug_id>
          
          <creation_ts>2012-06-13 01:03:22 -0700</creation_ts>
          <short_desc>Web Inspector: [WebGL] Add minimum transport protocol from backend to frontend</short_desc>
          <delta_ts>2012-08-22 03:59:08 -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>Web Inspector (Deprecated)</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>
          <dependson>89087</dependson>
    
    <dependson>89088</dependson>
    
    <dependson>89107</dependson>
    
    <dependson>89530</dependson>
    
    <dependson>89592</dependson>
    
    <dependson>94511</dependson>
    
    <dependson>94576</dependson>
          <blocked>87959</blocked>
    
    <blocked>94689</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrey Adaikin">aandrey</reporter>
          <assigned_to name="Andrey Adaikin">aandrey</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>eustas.bug</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rakuco</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>647788</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-13 01:03:22 -0700</bug_when>
    <thetext>Minimum transport protocol implementation between backend and frontend to allow capturing WebGL function calls for a given frame.
This will add:
- WebGL.captureFrame command from FE to BE
- WebGL.contextCreated &amp; WebGL.reportFunctionCall events from BE to FE
- simple experimental implementation of the InjectedWebGLScriptSource.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647798</commentid>
    <comment_count>1</comment_count>
      <attachid>147259</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-13 01:18:51 -0700</bug_when>
    <thetext>Created attachment 147259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647802</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 01:23:02 -0700</bug_when>
    <thetext>Attachment 147259 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScriptBase.cpp:90:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.cpp:109:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.h:63:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptBase.h:64:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 35 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649023</commentid>
    <comment_count>3</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-14 03:01:17 -0700</bug_when>
    <thetext>Extracted part of this change to https://bugs.webkit.org/show_bug.cgi?id=89087</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649035</commentid>
    <comment_count>4</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-14 03:20:43 -0700</bug_when>
    <thetext>Implementation of the InjectedWebGLScriptSource.js extracted to https://bugs.webkit.org/show_bug.cgi?id=89088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649200</commentid>
    <comment_count>5</comment_count>
      <attachid>147259</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-14 08:40:39 -0700</bug_when>
    <thetext>Comment on attachment 147259
Patch

Clearing r? from the obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699372</commentid>
    <comment_count>6</comment_count>
      <attachid>159385</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-20 03:22:43 -0700</bug_when>
    <thetext>Created attachment 159385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699374</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-20 03:26:12 -0700</bug_when>
    <thetext>Attachment 159385 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScriptWebGLModule.cpp:95:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptWebGLModule.h:54:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699382</commentid>
    <comment_count>8</comment_count>
      <attachid>159385</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-20 03:53:41 -0700</bug_when>
    <thetext>Comment on attachment 159385
Patch

Attachment 159385 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13529906</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699465</commentid>
    <comment_count>9</comment_count>
      <attachid>159385</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-20 06:52:36 -0700</bug_when>
    <thetext>Comment on attachment 159385
Patch

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

&gt; Source/WebCore/inspector/InjectedScriptWebGLModule.cpp:75
&gt; +void InjectedScriptWebGLModule::captureFrame(ErrorString* errorString, String* traceLogId)

captureTraceLog ?

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModule.cpp:95
&gt;&gt; +void InjectedScriptWebGLModule::getTraceLog(ErrorString* errorString, const String&amp; traceLogId, RefPtr&lt;TypeBuilder::WebGL::TraceLog&gt;* traceLog)
&gt; 
&gt; The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]

::traceLog (according to the WebKit guidelines). We only use get prefixes in the protocol.

&gt; Source/WebCore/inspector/InjectedScriptWebGLModule.cpp:97
&gt; +    ScriptFunctionCall function(injectedScriptObject(), &quot;getTraceLog&quot;);

traceLog

&gt; Source/WebCore/inspector/Inspector.json:3160
&gt; +                    { &quot;name&quot;: &quot;traceLogId&quot;, &quot;$ref&quot;: &quot;TraceLogId&quot; }

Is there a &quot;logCaptured&quot; event? I wonder if you should return traceLogId there instead.

&gt; Source/WebCore/inspector/Inspector.json:3164
&gt; +                &quot;name&quot;: &quot;getTraceLog&quot;,

traceLog

&gt; Source/WebCore/inspector/InspectorWebGLAgent.cpp:103
&gt; +    InjectedScript injectedScript = m_injectedScriptManager-&gt;injectedScriptForObjectId(traceLogId);

It sounds like N-1 lines from here could be extracted and reused below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699479</commentid>
    <comment_count>10</comment_count>
      <attachid>159385</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-20 07:17:21 -0700</bug_when>
    <thetext>Comment on attachment 159385
Patch

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

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModule.cpp:75
&gt;&gt; +void InjectedScriptWebGLModule::captureFrame(ErrorString* errorString, String* traceLogId)
&gt; 
&gt; captureTraceLog ?

This is to capture only a single frame, i.e. we say webgl module to start capturing now *and* end capturing after the frame ends. Opposite to that, there may be startCapturing &amp; endCapturing separate commands in the future, should we want to support capturing arbitrary number of frames.

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModule.cpp:97
&gt;&gt; +    ScriptFunctionCall function(injectedScriptObject(), &quot;getTraceLog&quot;);
&gt; 
&gt; traceLog

done.

&gt;&gt; Source/WebCore/inspector/Inspector.json:3160
&gt;&gt; +                    { &quot;name&quot;: &quot;traceLogId&quot;, &quot;$ref&quot;: &quot;TraceLogId&quot; }
&gt; 
&gt; Is there a &quot;logCaptured&quot; event? I wonder if you should return traceLogId there instead.

No events for now (need a InjectedModuleHost class implementation). For now we will be poking the trace logs with getTraceLog after a time out.

&gt;&gt; Source/WebCore/inspector/Inspector.json:3164
&gt;&gt; +                &quot;name&quot;: &quot;getTraceLog&quot;,
&gt; 
&gt; traceLog

did you really mean it? this is a protocol command, and as you said, we do use &quot;get&quot; prefixes in the protocol.

&gt;&gt; Source/WebCore/inspector/InspectorWebGLAgent.cpp:103
&gt;&gt; +    InjectedScript injectedScript = m_injectedScriptManager-&gt;injectedScriptForObjectId(traceLogId);
&gt; 
&gt; It sounds like N-1 lines from here could be extracted and reused below.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699482</commentid>
    <comment_count>11</comment_count>
      <attachid>159420</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-20 07:23:51 -0700</bug_when>
    <thetext>Created attachment 159420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699486</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-20 07:26:51 -0700</bug_when>
    <thetext>Attachment 159420 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/inspector/InjectedScriptWebGLModule.cpp:95:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InjectedScriptWebGLModule.h:56:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699504</commentid>
    <comment_count>13</comment_count>
      <attachid>159420</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-20 07:49:24 -0700</bug_when>
    <thetext>Comment on attachment 159420
Patch

Rejecting attachment 159420 from commit-queue.

aandrey@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699519</commentid>
    <comment_count>14</comment_count>
      <attachid>159420</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-20 08:05:29 -0700</bug_when>
    <thetext>Comment on attachment 159420
Patch

Clearing flags on attachment: 159420

Committed r126028: &lt;http://trac.webkit.org/changeset/126028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699520</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-20 08:05:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700533</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 00:21:58 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 94576</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701667</commentid>
    <comment_count>17</comment_count>
      <attachid>159879</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-22 01:28:58 -0700</bug_when>
    <thetext>Created attachment 159879
Rebased patch to land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701686</commentid>
    <comment_count>18</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-08-22 01:50:19 -0700</bug_when>
    <thetext>Committed r126280: &lt;http://trac.webkit.org/changeset/126280&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147259</attachid>
            <date>2012-06-13 01:18:51 -0700</date>
            <delta_ts>2012-08-20 03:22:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88973-20120613121849.patch</filename>
            <type>text/plain</type>
            <size>88522</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFkNGExYWIzZWE3Nzk0
ZTkxN2M0NTM1MjJiNGM5M2M3YTQ5Yzg2NS4uZmU2ODM5NGQyYTBjMTQ5NGY5NzA3MzQ4YTE5Y2Q2
ZWVkNmQ3ZjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMi0wNi0xMyAgQW5k
cmV5IEFkYWlraW4gIDxhYW5kcmV5QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbV2ViR0xdIEFkZCBtaW5pbXVtIHRyYW5zcG9ydCBwcm90b2NvbCBmcm9tIGJhY2tlbmQg
dG8gZnJvbnRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4OTczCisKKyAgICAgICAgTWluaW11bSB0cmFuc3BvcnQgcHJvdG9jb2wgaW1wbGVtZW50
YXRpb24gYmV0d2VlbiBiYWNrZW5kIGFuZCBmcm9udGVuZCB0byBhbGxvdyBjYXB0dXJpbmcgV2Vi
R0wgZnVuY3Rpb24gY2FsbHMgZm9yIGEgZ2l2ZW4gZnJhbWUuCisgICAgICAgIFRoaXMgd2lsbCBh
ZGQ6CisgICAgICAgIC0gV2ViR0wuY2FwdHVyZUZyYW1lIGNvbW1hbmQgZnJvbSBGRSB0byBCRQor
ICAgICAgICAtIFdlYkdMLmNvbnRleHRDcmVhdGVkICYgV2ViR0wucmVwb3J0RnVuY3Rpb25DYWxs
IGV2ZW50cyBmcm9tIEJFIHRvIEZFCisgICAgICAgIC0gc2ltcGxlIGV4cGVyaW1lbnRhbCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgSW5qZWN0ZWRXZWJHTFNjcmlwdFNvdXJjZS5qcworICAgICAgICAt
IGNhY2hlIEluamVjdGVkU2NyaXB0IGFuZCBJbmplY3RlZFdlYkdMU2NyaXB0IGluIHRoZSBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIgYW5kIHJlbW92ZSB0aGUgaGlkZGVuIHByb3BlcnR5ICJkZXZ0b29s
c0luamVjdGVkU2NyaXB0IiBmcm9tIHRoZSBnbG9iYWwgb2JqZWN0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTRE9NR2xvYmFsT2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0Lmg6CisgICAgICAgIChTY3JpcHRPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0T2JqZWN0OjpTY3JpcHRPYmplY3QpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1
ZTo6U2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0VmFsdWU6On5TY3JpcHRW
YWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oOgorICAgICAgICAoU2NyaXB0
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE9iamVjdDo6flNjcmlwdE9iamVjdCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0
TWFuYWdlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHQ6Om5vZGVGb3JPYmplY3RJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6
cmVsZWFzZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6d3JhcENh
bGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBTZXJpYWxpemVkT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6bm9kZUFzU2NyaXB0VmFsdWUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJ
bmplY3RlZFNjcmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3Rl
ZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmpl
Y3RlZFNjcmlwdEJhc2U6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpJbmplY3RlZFNjcmlwdEJhc2U6OmluamVjdGVkU2NyaXB0T2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENhbGwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmguCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKEluamVjdGVkU2NyaXB0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNj
cmlwdEJhc2U6On5JbmplY3RlZFNjcmlwdEJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0
ZWRTY3JpcHRCYXNlOjpoYXNOb1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0QmFzZTo6c2NyaXB0U3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpJbmplY3Rl
ZFNjcmlwdEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpkaXNj
b25uZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRT
Y3JpcHRIb3N0Ojp3ZWJHTENvbnRleHRDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0SG9zdDo6d2ViR0xSZXBvcnRGdW5jdGlvbkNhbGwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0Ojppbml0KToKKyAgICAgICAgKEluamVjdGVkU2Ny
aXB0SG9zdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGw6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRT
Y3JpcHRzRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5q
ZWN0ZWRTY3JpcHRGb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkV2ViR0xTY3JpcHRGb3JPYmplY3RJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkV2ViR0xTY3Jp
cHRGb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjp3cmFwV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEluamVjdGVkU2NyaXB0TWFuYWdlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkV2Vi
R0xTY3JpcHQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRXZWJHTFNjcmlwdFNvdXJjZS5qcy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRXZWJHTFNjcmlwdDo6SW5qZWN0ZWRXZWJHTFNjcmlwdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbmplY3RlZFdlYkdMU2NyaXB0Ojp3cmFwV2ViR0xDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkV2ViR0xTY3JpcHQ6OmNhcHR1cmVGcmFtZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkV2ViR0xTY3JpcHQuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkV2ViR0xTY3JpcHRTb3VyY2UuanMuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKEluamVjdGVkV2ViR0xTY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5qZWN0ZWRXZWJHTFNjcmlwdDo6fkluamVjdGVkV2ViR0xTY3JpcHQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbmplY3RlZFdlYkdMU2NyaXB0U291cmNlLmpzOgorICAgICAgICAoLik6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JBbGxJbk9uZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldlYkdMQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV2ViR0xBZ2VudDo6Y2FwdHVyZUZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV2ViR0xB
Z2VudDo6Y29udGV4dENyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV2ViR0xB
Z2VudDo6cmVwb3J0RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
V2ViR0xBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yV2ViR0xBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNi0xMSAgS2ludWtvIFlhc3VkYSAgPGtpbnVr
b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5wcmVmaXggQmxvYi53ZWJraXRTbGljZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBlNGMwNGNjMjQwM2Y1MzcwYmNkMDk1NjZlMjI5YzQ3OGY3YmNl
ZDdjLi5jMzA5ODBlYWIwMDdkN2U3OGJmZTQ0NzUyNmQwYzNjZTA1ZmRhNDYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtOTMwLDggKzkzMCwxMCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKICAgICBpbnNwZWN0b3IvSWRlbnRpZmllcnNG
YWN0b3J5LmNwcAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKyAgICBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhv
c3QuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKyAgICBpbnNw
ZWN0b3IvSW5qZWN0ZWRXZWJHTFNjcmlwdC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggM2YxZTI5OGEwNGRlMDllZmRhNTdiYWRkZDcxZDE4MzhiYjA2MzcxOS4u
ZTBiMGE1MzRmZWYxNzFlMWZhZDkzMThjNjE1ZmQ0YTlhYWU5OWY1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCkBAIC0yNjUxLDEwICsyNjUxLDE0IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
aCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkV2ViR0xTY3JpcHQuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRXZWJHTFNjcmlwdC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMzdi
YjZiYjhiMzNlYzk0Njc3MzQ4ODU4M2EzOTRiN2UwNWVmZTkyYy4uNjhhYWYxOTQxMzQ1MWZkYWIy
YjEyZTI4NjMwNzZjNTgxYTRjMTAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC04OTQsOCArODk0LDEwIEBA
IFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIFwKICAgICBp
bnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmNwcCBcCisgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgXAogICAg
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcCBcCisgICAgaW5zcGVjdG9yL0luamVjdGVkV2ViR0xTY3JpcHQu
Y3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvckJhc2VBZ2VudC5jcHAgXApAQCAtMjA0MCw4ICsyMDQyLDEwIEBAIEhFQURFUlMgKz0gXAog
ICAgIGluc3BlY3Rvci9ET01XcmFwcGVyVmlzaXRvci5oIFwKICAgICBpbnNwZWN0b3IvSWRlbnRp
ZmllcnNGYWN0b3J5LmggXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIFwKKyAgICBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuaCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oIFwKKyAg
ICBpbnNwZWN0b3IvSW5qZWN0ZWRXZWJHTFNjcmlwdC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQmFzZUFnZW50LmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IGQyMjViOWE1ZjhkNGVlYTU3OGNhZmEyZWVlNWI0MzkyZjBlMDQ5MDcuLjZmMmY2Y2Mw
NmI2ZGY1ZmFiZWE0YmI4YzU1MGFhM2M3NzI5YTAyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI3
NjAsMTAgKzI3NjAsMTQgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0
b3J5LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0QmFzZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5o
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRXZWJHTFNjcmlwdC5jcHAnLAorICAgICAgICAgICAgJ2lu
c3BlY3Rvci9JbmplY3RlZFdlYkdMU2NyaXB0LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCA2MTBmZWZmNDk3ZDRmOTg0ZDQxNzM5ZWM2MGRlNjdiYzE1
MWZiM2RiLi5lMDhmZDJmZjYxYWY3ZWEzZTY4ZjNjNTI1MjExMzJjOWVhYmM5YWM1IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzMxNzksNiAr
NzMxNzksMzAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXEluamVjdGVkU2NyaXB0QmFzZS5jcHAiCisJCQkJPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbmplY3RlZFNjcmlwdEJh
c2UuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aW5zcGVjdG9yXEluamVjdGVkU2NyaXB0SG9zdC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgpAQCAtNzMyMjcsNiArNzMyNTEsMzAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluamVjdGVkV2ViR0xTY3JpcHQu
Y3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcSW5qZWN0ZWRXZWJHTFNjcmlwdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQWdlbnQuY3BwIgogCQkJ
CT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiODdiNWU0YTcwOWVmNDI1ZDc2YzNmMDAx
NTE0MmI1OTBmNmVjYzk2Li5lMjVjOGJiYjkwYTZkOTM0MTM0NDUzY2Q4NjhkNDZmYjQ1MjVkNjU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00NDU1LDYgKzQ0NTUsMTAgQEAKIAkJQUEyMUVDQ0QwQUJGMEZDNjAwMkI4MzRDIC8q
IENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJzb3JJbWFnZVZh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QUE0QzNBNzYwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTRDM0E3NDBCMkIxNjc5MDAyMzM0
QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQUE0QzNBNzcwQjJCMTY3OTAwMjMzNEEy
IC8qIFN0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUE0QzNBNzUwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5oICovOyB9
OworCQlBQUI2MDU0RTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYwNTRBMTU4
NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwICovOyB9OworCQlBQUI2MDU0
RjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUI2MDU0QjE1ODc0QzU4MDA3QjUwMzEg
LyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggKi87IH07CisJCUFBQjYwNTUwMTU4NzRDNTgwMDdCNTAz
MSAvKiBJbmplY3RlZFdlYkdMU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYwNTRDMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFdl
YkdMU2NyaXB0LmNwcCAqLzsgfTsKKwkJQUFCNjA1NTExNTg3NEM1ODAwN0I1MDMxIC8qIEluamVj
dGVkV2ViR0xTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFBQjYwNTREMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFdlYkdMU2NyaXB0Lmgg
Ki87IH07CiAJCUFBRDc2NkVCMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEFnZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBRDc2
NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEFnZW50LmNwcCAqLzsgfTsKIAkJ
QUFENzY2RUMxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMQWdlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBRDc2NkU5MTU3RTUwMkYw
MEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEFnZW50LmggKi87IH07CiAJCUFBRDc2NkVEMTU3RTUw
MkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFENzY2RUExNTdFNTAyRjAwRTg1
NDIzIC8qIEluc3BlY3RvcldlYkdMSW5zdHJ1bWVudGF0aW9uLmggKi87IH07CkBAIC0xMTQ1MSw2
ICsxMTQ1NSwxMCBAQAogCQlBQTRDM0E3NTBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE5MDMwRkUxNTdFMTZBMDAwMjc2MjQ3IC8qIElu
amVjdGVkV2ViR0xTY3JpcHRTb3VyY2UuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3Jp
cHQ7IHBhdGggPSBJbmplY3RlZFdlYkdMU2NyaXB0U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBQTkxMjc1MDE1N0UzNUE1MDA0NTRFNTQgLyogSW5qZWN0ZWRXZWJHTFNj
cmlwdFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFdl
YkdMU2NyaXB0U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQjYwNTRB
MTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFCNjA1NEIxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVk
U2NyaXB0QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNj
cmlwdEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFCNjA1NEMxNTg3NEM1
ODAwN0I1MDMxIC8qIEluamVjdGVkV2ViR0xTY3JpcHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRXZWJHTFNjcmlwdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUFBQjYwNTREMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFdlYkdM
U2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkV2ViR0xT
Y3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFENzY2RTgxNTdFNTAyRjAw
RTg1NDIzIC8qIEluc3BlY3RvcldlYkdMQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yV2ViR0xBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUFBRDc2NkU5MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JXZWJHTEFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvcldlYkdMQWdl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFENzY2RUExNTdFNTAyRjAwRTg1
NDIzIC8qIEluc3BlY3RvcldlYkdMSW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvcldlYkdMSW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDM3NiwxMiArMTQzODQsMTYgQEAKIAkJCQk1OTEzQTI0
MDEzRDQ5RUJBMDBGNUIwNUMgLyogSWRlbnRpZmllcnNGYWN0b3J5LmggKi8sCiAJCQkJRjM2NDRB
RkQxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLywKIAkJCQlGMzY0NEFG
RTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuaCAqLywKKwkJCQlBQUI2MDU0QTE1
ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCAqLywKKwkJCQlBQUI2MDU0
QjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggKi8sCiAJCQkJN0EwRTc2
RjYxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJCQkJN0Ew
RTc2RjcxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oICovLAogCQkJCTdB
MEU3NkY4MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaWRsICovLAogCQkJ
CUYzMTYzOTY5MTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwICov
LAogCQkJCUYzMTYzOTZBMTMyOTQ4MUEwMEE2NDlDQiAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIu
aCAqLywKIAkJCQk3QTU2M0Y5NTEyREY1QzkxMDBGNDUzNkQgLyogSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMgKi8sCisJCQkJQUFCNjA1NEMxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkV2ViR0xT
Y3JpcHQuY3BwICovLAorCQkJCUFBQjYwNTREMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFdl
YkdMU2NyaXB0LmggKi8sCiAJCQkJQUE5MDMwRkUxNTdFMTZBMDAwMjc2MjQ3IC8qIEluamVjdGVk
V2ViR0xTY3JpcHRTb3VyY2UuanMgKi8sCiAJCQkJMUM0MzVDRDQxNEU4NTQ1QjAwNEUxMEVBIC8q
IEluc3BlY3Rvci0wLjEuanNvbiAqLywKIAkJCQkxQzQzNUNENTE0RTg1NDVCMDA0RTEwRUEgLyog
SW5zcGVjdG9yLTEuMC5qc29uICovLApAQCAtMjMyNzksOCArMjMyOTEsMTAgQEAKIAkJCQkzMTZG
RTExODBFNkUxREE3MDBCRjYwODggLyogSW1wbGljaXRBbmltYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCURCMjNDMkNDMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjM2NDRCMDAxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVk
U2NyaXB0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBQUI2MDU0RjE1ODc0QzU4MDA3QjUwMzEgLyog
SW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzZGQTEwQkYwOEVE
MDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzE2
Mzk2QzEzMjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBQUI2MDU1MTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRXZWJHTFNjcmlw
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTUwQTE1NUEwNTAwMEE0MjM0IC8qIElubGlu
ZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTMwQTE1NUEwNTAwMEE0MjM0IC8qIElu
bGluZUZsb3dCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTc4OTE2MTEyMEQ2MDgwMDYwRUNF
NSAvKiBJbmxpbmVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjQxMCw4ICsyNjQyNCwx
MCBAQAogCQkJCTMxNkZFMTE3MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlEQjIzQzJDQjBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50
T3V0ZGVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM2NDRBRkYxMTE5ODA1OTAw
RTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFBQjYwNTRF
MTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0EwRTc2RjkxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGMzE2Mzk2QjEzMjk0ODFBMDBBNjQ5Q0IgLyogSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFBQjYwNTUwMTU4NzRDNTgwMDdC
NTAzMSAvKiBJbmplY3RlZFdlYkdMU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZG
NUU2MEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThDRkY1RTQwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dCb3guY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNFQTQ4NTkwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAKaW5kZXggZGJjMjc0ZDIzMTA2ZTE3Y2Y1MWUyMzUxMmI0MzdjZmI5YzUwNWYy
Yi4uMzYxMDQ4MDhiYjYwOWU1N2IwNDgxMTg1MmU4OTVkYWQ3MTMwYTRhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtMjAsNyAr
MjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqCiAgKi8KIApAQCAtOTMsOSArOTMsNiBAQCB2b2lk
IEpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgZW5kMiA9IHRo
aXNPYmplY3QtPmNvbnN0cnVjdG9ycygpLmVuZCgpOwogICAgIGZvciAoSlNET01Db25zdHJ1Y3Rv
ck1hcDo6aXRlcmF0b3IgaXQyID0gdGhpc09iamVjdC0+Y29uc3RydWN0b3JzKCkuYmVnaW4oKTsg
aXQyICE9IGVuZDI7ICsraXQyKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQyLT5zZWNvbmQp
OwotCi0gICAgaWYgKHRoaXNPYmplY3QtPm1faW5qZWN0ZWRTY3JpcHQpCi0gICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luamVjdGVkU2NyaXB0KTsKIH0KIAogdm9pZCBKU0RP
TUdsb2JhbE9iamVjdDo6c2V0Q3VycmVudEV2ZW50KEV2ZW50KiBjdXJyZW50RXZlbnQpCkBAIC0x
MDgsMTYgKzEwNSw2IEBAIEV2ZW50KiBKU0RPTUdsb2JhbE9iamVjdDo6Y3VycmVudEV2ZW50KCkg
Y29uc3QKICAgICByZXR1cm4gbV9jdXJyZW50RXZlbnQ7CiB9CiAKLXZvaWQgSlNET01HbG9iYWxP
YmplY3Q6OnNldEluamVjdGVkU2NyaXB0KEpTT2JqZWN0KiBpbmplY3RlZFNjcmlwdCkKLXsKLSAg
ICBtX2luamVjdGVkU2NyaXB0LnNldE1heUJlTnVsbChnbG9iYWxEYXRhKCksIHRoaXMsIGluamVj
dGVkU2NyaXB0KTsKLX0KLQotSlNPYmplY3QqIEpTRE9NR2xvYmFsT2JqZWN0OjppbmplY3RlZFNj
cmlwdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHQuZ2V0KCk7Ci19Ci0K
IEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KERvY3VtZW50KiBkb2N1bWVu
dCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIHRvSlNET01XaW5kb3coZG9j
dW1lbnQtPmZyYW1lKCksIGN1cnJlbnRXb3JsZChleGVjKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCBiZDI3NzNhZTQxMzYzMTk1NTRh
NzQwMmViMTY1MDlmOGZmNmI0ZGMyLi4zY2UxMmQxMGZjZGQ4ODNjYzE4MjBjMjZkZTNmOTE4NzRm
OTU3ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKgogICovCiAKQEAgLTY4
LDkgKzY4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEN1cnJlbnRF
dmVudChFdmVudCopOwogICAgICAgICBFdmVudCogY3VycmVudEV2ZW50KCkgY29uc3Q7CiAKLSAg
ICAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlwdChKU09iamVjdCopOwotICAgICAgICBKU09iamVj
dCogaW5qZWN0ZWRTY3JpcHQoKSBjb25zdDsKLQogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogCiAgICAgICAgIERPTVdy
YXBwZXJXb3JsZCogd29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CkBAIC04OCw3ICs4
NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBFdmVudCogbV9jdXJyZW50RXZl
bnQ7CiAgICAgICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7Ci0gICAgICAgIEpT
Qzo6V3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2luamVjdGVkU2NyaXB0OwogICAgIH07CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBDb25zdHJ1Y3RvckNsYXNzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGQ4YWZh
NzFmNGZlZDgxNjk1MTY4M2JiYjM2YTg0NDJlMmFjYzMwZDAuLjM2M2VhZjE3MTc0OTlmYzA0OTU2
NjU5NzJlNGQ3NWIzODMzNWE4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0dGxpbGVrLmNv
bT4KLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzcsMTEg
KzM3LDExIEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRl
ICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVk
ZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3Rh
dGUuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlIDxwYXJzZXIvU291cmNl
Q29kZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKQEAgLTQ5LDcgKzQ5LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgU2Ny
aXB0T2JqZWN0IGluamVjdEFuZEV4ZWN1dGVGdW5jdGlvbihjb25zdCBTdHJpbmcmIHNvdXJjZSwg
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJn
cykKK1NjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2Ny
aXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGludCBp
ZCkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCkBAIC02OCw1
OSArNjgsMTUgQEAgc3RhdGljIFNjcmlwdE9iamVjdCBpbmplY3RBbmRFeGVjdXRlRnVuY3Rpb24o
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIFNjcmlwdFN0YXRlKgogICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZU5vbmUpCiAgICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKIAotICAgIEpTVmFs
dWUgcmVzdWx0ID0gSlNDOjpjYWxsKHNjcmlwdFN0YXRlLCBmdW5jdGlvblZhbHVlLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNWYWx1ZSwgYXJncyk7Ci0gICAgaWYgKHJlc3VsdC5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHQu
Z2V0T2JqZWN0KCkpOwotICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKLX0KLQotU2NyaXB0T2Jq
ZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgaW50IGlkKQotewotICAgIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBKU1ZhbHVlIGdsb2Jh
bFRoaXNWYWx1ZSA9IHNjcmlwdFN0YXRlLT5nbG9iYWxUaGlzVmFsdWUoKTsKLQogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9KUyhzY3JpcHRTdGF0ZSwg
Z2xvYmFsT2JqZWN0LCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSkpOwogICAgIGFyZ3MuYXBw
ZW5kKGdsb2JhbFRoaXNWYWx1ZSk7CiAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIoaWQpKTsKIAot
ICAgIHJldHVybiBpbmplY3RBbmRFeGVjdXRlRnVuY3Rpb24oc291cmNlLCBzY3JpcHRTdGF0ZSwg
YXJncyk7Ci19Ci0KLSNpZiBFTkFCTEUoV0VCR0wpCi1TY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjppbmplY3RXZWJHTFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U2NyaXB0T2JqZWN0JiBnbENvbnRleHQpCi17Ci0gICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
ID0gZ2xDb250ZXh0LnNjcmlwdFN0YXRlKCk7Ci0KLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwotICAgIGFyZ3MuYXBwZW5kKGdsQ29udGV4dC5qc1ZhbHVlKCkpOwotCi0gICAgcmV0dXJu
IGluamVjdEFuZEV4ZWN1dGVGdW5jdGlvbihzb3VyY2UsIHNjcmlwdFN0YXRlLCBhcmdzKTsKLX0K
LSNlbmRpZgotCi12b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2Ny
aXB0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKLXsKLSAgICBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5zZXRJbmplY3RlZFNjcmlw
dCgwKTsKLX0KLQotSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3Rl
ZFNjcmlwdEZvcihTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCi17Ci0gICAgSlNMb2NrIGxvY2so
U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSk7Ci0gICAgSlNPYmplY3QqIGluamVjdGVkU2NyaXB0ID0gZ2xvYmFsT2JqZWN0
LT5pbmplY3RlZFNjcmlwdCgpOwotICAgIGlmIChpbmplY3RlZFNjcmlwdCkKLSAgICAgICAgcmV0
dXJuIEluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgaW5qZWN0ZWRTY3Jp
cHQpLCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwotCi0gICAgaWYgKCFtX2luc3BlY3Rl
ZFN0YXRlQWNjZXNzQ2hlY2soc2NyaXB0U3RhdGUpKQotICAgICAgICByZXR1cm4gSW5qZWN0ZWRT
Y3JpcHQoKTsKLQotICAgIHBhaXI8aW50LCBTY3JpcHRPYmplY3Q+IGluamVjdGVkU2NyaXB0T2Jq
ZWN0ID0gaW5qZWN0U2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIHNjcmlwdFN0YXRlKTsK
LSAgICBnbG9iYWxPYmplY3QtPnNldEluamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0T2JqZWN0
LnNlY29uZC5qc09iamVjdCgpKTsKLSAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQoaW5qZWN0ZWRT
Y3JpcHRPYmplY3Quc2Vjb25kLCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwotICAgIG1f
aWRUb0luamVjdGVkU2NyaXB0LnNldChpbmplY3RlZFNjcmlwdE9iamVjdC5maXJzdCwgcmVzdWx0
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpjYWxsKHNj
cmlwdFN0YXRlLCBmdW5jdGlvblZhbHVlLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbFRoaXNW
YWx1ZSwgYXJncyk7CisgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4g
U2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCByZXN1bHQuZ2V0T2JqZWN0KCkpOworICAgIHJldHVy
biBTY3JpcHRPYmplY3QoKTsKIH0KIAogYm9vbCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNhbkFj
Y2Vzc0luc3BlY3RlZFdpbmRvdyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcAppbmRleCAxZmNkOWNiODAyNjM0OTA5
N2FhNjJjMmQ4MTk1MGUyMDJmMTM0MTVhLi4wY2ZiODJiNmU3MDExMWFiMzZmMTk4NmRmNjA2ZDhi
YzI1YmUwZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5j
cHAKQEAgLTUwLDYgKzUwLDEyIEBAIFNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgSlNPYmplY3QqIG9iamVjdCkKIHsKIH0KIAorU2NyaXB0T2JqZWN0
OjpTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRWYWx1
ZSYgc2NyaXB0VmFsdWUpCisgICAgOiBTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZS0+Z2xvYmFsRGF0
YSgpLCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCkpCisgICAgLCBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0
YXRlKQoreworfQorCiBzdGF0aWMgYm9vbCBoYW5kbGVFeGNlcHRpb24oU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlKQogewogICAgIGlmICghc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaAppbmRleCBlYjAyZTliN2FkNTkw
OTVkNGJmNDFlNmUyNzViMjcxYjM3OWE1NGNjLi4yYzFhZTRkMzMzZDRmNWUzNTNlYTY0NjUwOGY0
OWJkNGNlOWNhN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3Qu
aApAQCAtNDQsNyArNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0
T2JqZWN0IDogcHVibGljIFNjcmlwdFZhbHVlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNjcmlw
dE9iamVjdChTY3JpcHRTdGF0ZSosIEpTQzo6SlNPYmplY3QqKTsKLSAgICAgICAgU2NyaXB0T2Jq
ZWN0KCkge30KKyAgICAgICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0
VmFsdWUmKTsKKyAgICAgICAgU2NyaXB0T2JqZWN0KCkgeyB9CiAgICAgICAgIEpTQzo6SlNPYmpl
Y3QqIGpzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsgfQogICAg
ICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0
YXRlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCmluZGV4IDE1
NzNhNDkwNjJkMWI0MWRiZDY4MTFlOGUwNzBiZTJmMmY5YzUyMjAuLjg5ZGFhMzljMzI0YTgyYzNl
ZmY3ODEzYjUxYzdmMGRjNmRmOTcyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0VmFsdWUuaApAQCAtMSwxMCArMSwxMCBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwOCwg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAog
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
ICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CkBAIC00Nyw4ICs0Nyw4IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFNj
cmlwdFZhbHVlIHsKIHB1YmxpYzoKICAgICBTY3JpcHRWYWx1ZSgpIHsgfQotICAgIFNjcmlwdFZh
bHVlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTVmFsdWUgdmFsdWUpIDog
bV92YWx1ZShnbG9iYWxEYXRhLCB2YWx1ZSkge30KLSAgICB2aXJ0dWFsIH5TY3JpcHRWYWx1ZSgp
IHt9CisgICAgU2NyaXB0VmFsdWUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSkgOiBtX3ZhbHVlKGdsb2JhbERhdGEsIHZhbHVlKSB7IH0KKyAgICB2aXJ0
dWFsIH5TY3JpcHRWYWx1ZSgpIHsgfQogCiAgICAgSlNDOjpKU1ZhbHVlIGpzVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CiAgICAgYm9vbCBnZXRTdHJpbmcoU2NyaXB0U3Rh
dGUqLCBTdHJpbmcmIHJlc3VsdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0T2JqZWN0LmNwcAppbmRleCAzZDM4YTllZWNlZjkwMDRmNGE2ZjZlNTNlYTA3MmIwZjhl
MjJmYjg2Li4wMjY2ZGY0OGU5ZGJlNjAwMzZmMjMwMmFmM2MzZjgwOGY4ZTczMjljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAKQEAgLTUxLDYgKzUxLDEy
IEBAIFNjcmlwdE9iamVjdDo6U2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OE9iCiB7CiB9CiAKK1NjcmlwdE9iamVjdDo6U2NyaXB0
T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHNjcmlw
dFZhbHVlKQorICAgIDogU2NyaXB0VmFsdWUoc2NyaXB0VmFsdWUpCisgICAgLCBtX3NjcmlwdFN0
YXRlKHNjcmlwdFN0YXRlKQoreworfQorCiB2ODo6TG9jYWw8djg6Ok9iamVjdD4gU2NyaXB0T2Jq
ZWN0Ojp2OE9iamVjdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHY4VmFsdWUoKS0+SXNPYmplY3Qo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oCmluZGV4IDQ1NDFh
YjA4ODMzM2E5YjM0YzIyMTg3MDFmYWE3OGI4ZjM1Y2JlYjguLjFjNDdhNjBjMGYzZTdlZTg4OWY5
OTYwZjNiZGExMGYxYTFjODIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dE9iamVjdC5oCkBAIC00Myw4ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBTY3JpcHRPYmplY3QgOiBwdWJsaWMgU2NyaXB0VmFsdWUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7Cisg
ICAgICAgIFNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJik7CiAg
ICAgICAgIFNjcmlwdE9iamVjdCgpIDogbV9zY3JpcHRTdGF0ZSgwKSB7IH07Ci0gICAgICAgIHZp
cnR1YWwgflNjcmlwdE9iamVjdCgpIHt9CisgICAgICAgIHZpcnR1YWwgflNjcmlwdE9iamVjdCgp
IHsgfQogCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB2OE9iamVjdCgpIGNvbnN0Owog
ICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Njcmlw
dFN0YXRlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRl
blByb3BlcnR5TmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9w
ZXJ0eU5hbWUuaAppbmRleCAzMzhmMWU0ZDE2ZDAyOTBjYzZhNTM0MjQxOWI5NDA0ZWE2NTcxNGI4
Li4yMWM4NWViNzY5MzEyZWViYWY4NzI5MzI0Yjg5NTA1MTRiN2YyNTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKQEAgLTEsMTAg
KzEsMTAgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICog
bWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0LDcg
KzE0LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzksNyArMzksNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgVihsaXN0ZW5lcikgXAogICAgIFYoYXR0cmlidXRlTGlzdGVuZXIp
IFwKICAgICBWKHNjcmlwdFN0YXRlKSBcCi0gICAgVihkZXZ0b29sc0luamVjdGVkU2NyaXB0KSBc
CiAgICAgVihzbGVlcEZ1bmN0aW9uKSBcCiAgICAgVih0b1N0cmluZ1N0cmluZykgXAogICAgIFYo
ZXZlbnQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDEwOWMyNWVhMTNmOGIwNWM4
MjNkNzA0ZDE1YTZkMGZlODhlYjIyNjYuLmIwNjllNDk3Yjg3MzBlYWI2ODFmYTBlMjFhNzgyM2Rl
MDdkY2M3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMzLDE2ICsz
MywxMyBAQAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJTYWZlQWxsb2NhdGlvbi5oIgotI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOERPTVdp
bmRvdy5oIgotI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiVjhJ
bmplY3RlZFNjcmlwdEhvc3QuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhS
ZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMTEzLDcyICsx
MTAsNiBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3Rl
ZFNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdFNvdQogICAgIHJldHVybiBTY3JpcHRPYmplY3Qo
aW5zcGVjdGVkU2NyaXB0U3RhdGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoaW5qZWN0
ZWRTY3JpcHRWYWx1ZSkpOwogfQogCi0jaWYgRU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IElu
amVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0V2ViR0xTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3Jp
cHRTb3VyY2UsIGNvbnN0IFNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQotewotICAgIHY4OjpIYW5k
bGVTY29wZSBzY29wZTsKLQotICAgIFNjcmlwdFN0YXRlKiBpbnNwZWN0ZWRTY3JpcHRTdGF0ZSA9
IGdsQ29udGV4dC5zY3JpcHRTdGF0ZSgpOwotICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gaW5z
cGVjdGVkQ29udGV4dCA9IGluc3BlY3RlZFNjcmlwdFN0YXRlLT5jb250ZXh0KCk7Ci0gICAgdjg6
OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShpbnNwZWN0ZWRDb250ZXh0KTsKLQotICAgIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiB3aW5kb3dHbG9iYWwgPSBpbnNwZWN0ZWRDb250ZXh0LT5HbG9i
YWwoKTsKLQotICAgIHY4OjpMb2NhbDx2ODo6U2NyaXB0PiBzY3JpcHQgPSB2ODo6U2NyaXB0OjpD
b21waWxlKHY4U3RyaW5nKHNjcmlwdFNvdXJjZSkpOwotICAgIFY4UmVjdXJzaW9uU2NvcGU6Ok1p
Y3JvdGFza1N1cHByZXNzaW9uIHJlY3Vyc2lvblNjb3BlOwotICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHYgPSBzY3JpcHQtPlJ1bigpOwotICAgIEFTU0VSVCghdi5Jc0VtcHR5KCkpOwotICAgIEFT
U0VSVCh2LT5Jc0Z1bmN0aW9uKCkpOwotCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3Nb
XSA9IHsKLSAgICAgICAgZ2xDb250ZXh0LnY4VmFsdWUoKSwKLSAgICB9OwotICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IGluamVjdGVkU2NyaXB0VmFsdWUgPSB2ODo6RnVuY3Rpb246OkNhc3QoKnYp
LT5DYWxsKHdpbmRvd0dsb2JhbCwgMSwgYXJncyk7Ci0gICAgcmV0dXJuIFNjcmlwdE9iamVjdChp
bnNwZWN0ZWRTY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChpbmplY3Rl
ZFNjcmlwdFZhbHVlKSk7Ci19Ci0jZW5kaWYKLQotdm9pZCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6
OmRpc2NhcmRJbmplY3RlZFNjcmlwdChTY3JpcHRTdGF0ZSogaW5zcGVjdGVkU2NyaXB0U3RhdGUp
Ci17Ci0gICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpMb2NhbDx2ODo6
Q29udGV4dD4gY29udGV4dCA9IGluc3BlY3RlZFNjcmlwdFN0YXRlLT5jb250ZXh0KCk7Ci0gICAg
djg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShjb250ZXh0KTsKLQotICAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKLSAgICAvLyBTa2lwIHBy
b3h5IG9iamVjdC4gVGhlIHByb3h5IG9iamVjdCB3aWxsIHN1cnZpdmUgcGFnZSBuYXZpZ2F0aW9u
IHdoaWxlIHdlIG5lZWQKLSAgICAvLyBhbiBvYmplY3Qgd2hvc2UgbGlmZXRpbWUgY29pbmNpZGVz
IHdpdGggdGhhdCBvZiB0aGUgaW5zcGVjdGVkIGNvbnRleHQuCi0gICAgZ2xvYmFsID0gdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+OjpDYXN0KGdsb2JhbC0+R2V0UHJvdG90eXBlKCkpOwotCi0gICAgdjg6
OkhhbmRsZTx2ODo6U3RyaW5nPiBrZXkgPSBWOEhpZGRlblByb3BlcnR5TmFtZTo6ZGV2dG9vbHNJ
bmplY3RlZFNjcmlwdCgpOwotICAgIGdsb2JhbC0+RGVsZXRlSGlkZGVuVmFsdWUoa2V5KTsKLX0K
LQotSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZv
cihTY3JpcHRTdGF0ZSogaW5zcGVjdGVkU2NyaXB0U3RhdGUpCi17Ci0gICAgdjg6OkhhbmRsZVNj
b3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCA9IGlu
c3BlY3RlZFNjcmlwdFN0YXRlLT5jb250ZXh0KCk7Ci0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNv
bnRleHRTY29wZShjb250ZXh0KTsKLQotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBnbG9iYWwg
PSBjb250ZXh0LT5HbG9iYWwoKTsKLSAgICAvLyBTa2lwIHByb3h5IG9iamVjdC4gVGhlIHByb3h5
IG9iamVjdCB3aWxsIHN1cnZpdmUgcGFnZSBuYXZpZ2F0aW9uIHdoaWxlIHdlIG5lZWQKLSAgICAv
LyBhbiBvYmplY3Qgd2hvc2UgbGlmZXRpbWUgY29pbmNpZGVzIHdpdGggdGhhdCBvZiB0aGUgaW5z
cGVjdGVkIGNvbnRleHQuCi0gICAgZ2xvYmFsID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0
KGdsb2JhbC0+R2V0UHJvdG90eXBlKCkpOwotCi0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBr
ZXkgPSBWOEhpZGRlblByb3BlcnR5TmFtZTo6ZGV2dG9vbHNJbmplY3RlZFNjcmlwdCgpOwotICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbCA9IGdsb2JhbC0+R2V0SGlkZGVuVmFsdWUoa2V5KTsK
LSAgICBpZiAoIXZhbC5Jc0VtcHR5KCkgJiYgdmFsLT5Jc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQoU2NyaXB0T2JqZWN0KGluc3BlY3RlZFNjcmlwdFN0YXRlLCB2ODo6
TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsKSksIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVj
ayk7Ci0KLSAgICBpZiAoIW1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayhpbnNwZWN0ZWRTY3Jp
cHRTdGF0ZSkpCi0gICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwotCi0gICAgcGFpcjxp
bnQsIFNjcmlwdE9iamVjdD4gaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RTY3JpcHQoaW5qZWN0ZWRT
Y3JpcHRTb3VyY2UoKSwgaW5zcGVjdGVkU2NyaXB0U3RhdGUpOwotICAgIEluamVjdGVkU2NyaXB0
IHJlc3VsdChpbmplY3RlZFNjcmlwdC5zZWNvbmQsIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVj
ayk7Ci0gICAgbV9pZFRvSW5qZWN0ZWRTY3JpcHQuc2V0KGluamVjdGVkU2NyaXB0LmZpcnN0LCBy
ZXN1bHQpOwotICAgIGdsb2JhbC0+U2V0SGlkZGVuVmFsdWUoa2V5LCBpbmplY3RlZFNjcmlwdC5z
ZWNvbmQudjhPYmplY3QoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogYm9vbCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggMmYwZTYxNzg0NDI2NzYw
MDMyZWRiN2E4ZjUyMDBiY2YwOGE0ZDljNy4uYjZmNWMwODA0ZDFlNWJkODM5NzliYmEzMzQxZTdj
YTZmZGJjZjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEx
LCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCwxNSArMzQsMTIgQEAKIAogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCiAKLSNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0TWFuYWdlci5oIgotI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgorI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRl
cjo6QXJyYXk7CiB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFt
ZTsKQEAgLTUzLDE5ICs1MCwxOCBAQCB1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbmplY3RlZFNjcmlwdDo6
SW5qZWN0ZWRTY3JpcHQoKQotICAgIDogbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKDApCisg
ICAgOiBJbmplY3RlZFNjcmlwdEJhc2UoKQogewogfQogCiBJbmplY3RlZFNjcmlwdDo6SW5qZWN0
ZWRTY3JpcHQoU2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRTdGF0
ZUFjY2Vzc0NoZWNrIGFjY2Vzc0NoZWNrKQotICAgIDogbV9pbmplY3RlZFNjcmlwdE9iamVjdChp
bmplY3RlZFNjcmlwdE9iamVjdCkKLSAgICAsIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayhh
Y2Nlc3NDaGVjaykKKyAgICA6IEluamVjdGVkU2NyaXB0QmFzZShpbmplY3RlZFNjcmlwdE9iamVj
dCwgYWNjZXNzQ2hlY2spCiB7CiB9CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1
cm5CeVZhbHVlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJl
c3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZXZhbHVh
dGUiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgImV2YWx1YXRlIik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lv
bik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0R3JvdXApOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KGluY2x1ZGVDb21tYW5kTGluZUFQSSk7CkBAIC03NSw3ICs3MSw3
IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxG
dW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9v
bCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewot
ICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAi
Y2FsbEZ1bmN0aW9uT24iKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgImNhbGxGdW5jdGlvbk9uIik7CiAgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQob2JqZWN0SWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Np
b24pOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGFyZ3VtZW50cyk7CkBAIC04NSw3ICs4
MSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2
YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRW
YWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21t
YW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8UmVtb3RlT2JqZWN0PiogcmVz
dWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7Ci0gICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJldmFsdWF0
ZU9uQ2FsbEZyYW1lIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZU9uQ2FsbEZyYW1lIik7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2Fs
bEZyYW1lSWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwpAQCAt
OTcsNyArOTMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VgogCiB2b2lkIEluamVjdGVkU2Ny
aXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7Ci0g
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJn
ZXRGdW5jdGlvbkRldGFpbHMiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldEZ1bmN0aW9uRGV0YWlscyIpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGZ1bmN0aW9uSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
cmVzdWx0VmFsdWU7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CkBAIC0x
MTEsNyArMTA3LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgogCiB2b2lkIEluamVjdGVkU2Ny
aXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8QXJyYXk8UHJvcGVydHlEZXNj
cmlwdG9yPiA+KiBwcm9wZXJ0aWVzKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihtX2luamVjdGVkU2NyaXB0T2JqZWN0LCAiZ2V0UHJvcGVydGllcyIpOworICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0UHJvcGVydGll
cyIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChvd25Qcm9wZXJ0aWVzKTsKIApAQCAtMTI5LDcgKzEyNSw3IEBAIE5v
ZGUqIEluamVjdGVkU2NyaXB0Ojpub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCkKICAgICBpZiAoaGFzTm9WYWx1ZSgpIHx8ICFjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9p
bmplY3RlZFNjcmlwdE9iamVjdCwgIm5vZGVGb3JPYmplY3RJZCIpOworICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAibm9kZUZvck9iamVjdElk
Iik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogCiAgICAgYm9vbCBo
YWRFeGNlcHRpb24gPSBmYWxzZTsKQEAgLTE0MSw3ICsxMzcsNyBAQCBOb2RlKiBJbmplY3RlZFNj
cmlwdDo6bm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCiAKIHZvaWQgSW5q
ZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkKIHsKLSAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInJl
bGVhc2VPYmplY3QiKTsKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3QiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChvYmplY3RJZCk7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CiAgICAg
bWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOwpAQCAtMTUxLDEyICsxNDcsMTIgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogUGFz
c1JlZlB0cjxBcnJheTxDYWxsRnJhbWU+ID4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVz
KGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1
ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9i
amVjdCwgIndyYXBDYWxsRnJhbWVzIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyIpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFs
c2U7CiAgICAgU2NyaXB0VmFsdWUgY2FsbEZyYW1lc1ZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0aEV2
YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0
aW9uKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdCA9IGNhbGxGcmFtZXNWYWx1
ZS50b0luc3BlY3RvclZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7
CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQgPSBjYWxsRnJhbWVzVmFsdWUudG9J
bnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKTsKICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0g
SW5zcGVjdG9yVmFsdWU6OlR5cGVBcnJheSkKICAgICAgICAgcmV0dXJuIEFycmF5PENhbGxGcmFt
ZT46OnJ1bnRpbWVDYXN0KHJlc3VsdCk7CiAgICAgcmV0dXJuIEFycmF5PENhbGxGcmFtZT46OmNy
ZWF0ZSgpOwpAQCAtMTY2LDcgKzE2Miw3IEBAIFBhc3NSZWZQdHI8QXJyYXk8Q2FsbEZyYW1lPiA+
IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYKIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6
OndyYXBPYmplY3QoU2NyaXB0VmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBj
b25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgd3JhcEZ1bmN0aW9uKG1faW5qZWN0ZWRTY3JpcHRPYmplY3QsICJ3cmFwT2JqZWN0Iik7Cisg
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAid3JhcE9iamVjdCIpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7
CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAgd3JhcEZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdygpKTsKQEAgLTE3
NSw3ICsxNzEsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KFNjcmlwdAogICAgIGlmIChoYWRFeGNlcHRp
b24pIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJhd1Jlc3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0
LnNjcmlwdFN0YXRlKCkpLT5hc09iamVjdCgpOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHJhd1Jlc3VsdCA9IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3Qo
KTsKICAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDo6cnVudGlt
ZUNhc3QocmF3UmVzdWx0KTsKIH0KIApAQCAtMTg2LDE0ICsxODIsMTQgQEAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcE5v
ZGUoTm9kZSogbm8KIAogUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFNlcmlhbGl6ZWRPYmplY3QoU2VyaWFsaXplZFNjcmlw
dFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKSBj
b25zdAogewotICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gc2VyaWFsaXplZFNjcmlwdFZh
bHVlLT5kZXNlcmlhbGl6ZUZvckluc3BlY3RvcihtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlw
dFN0YXRlKCkpOworICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlID0gc2VyaWFsaXplZFNjcmlw
dFZhbHVlLT5kZXNlcmlhbGl6ZUZvckluc3BlY3RvcihzY3JpcHRTdGF0ZSgpKTsKICAgICByZXR1
cm4gc2NyaXB0VmFsdWUuaGFzTm9WYWx1ZSgpID8gMCA6IHdyYXBPYmplY3Qoc2NyaXB0VmFsdWUs
IGdyb3VwTmFtZSk7CiB9CiAKIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0
QnlJZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9W
YWx1ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlw
dE9iamVjdCwgImZpbmRPYmplY3RCeUlkIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2JqZWN0QnlJZCIpOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0g
ZmFsc2U7CkBAIC0yMDUsNyArMjAxLDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZp
bmRPYmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0CiB2b2lkIEluamVjdGVk
U2NyaXB0OjppbnNwZWN0Tm9kZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1
ZSgpKTsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9i
amVjdCwgImluc3BlY3ROb2RlIik7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksICJpbnNwZWN0Tm9kZSIpOwogICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KG5vZGVBc1NjcmlwdFZhbHVlKG5vZGUpKTsKICAgICBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IHJlc3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CkBAIC0yMTQs
OTAgKzIxMCwxNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjppbnNwZWN0Tm9kZShOb2RlKiBub2Rl
KQogdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXApCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbCByZWxlYXNlRnVuY3Rpb24obV9pbmplY3RlZFNjcmlwdE9iamVjdCwgInJlbGVh
c2VPYmplY3RHcm91cCIpOworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCByZWxlYXNlRnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3RHcm91cCIpOwogICAgIHJlbGVh
c2VGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgYm9vbCBoYWRFeGNl
cHRpb24gPSBmYWxzZTsKICAgICBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQocmVsZWFzZUZ1
bmN0aW9uLCBoYWRFeGNlcHRpb24pOwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKIH0KIAot
Ym9vbCBJbmplY3RlZFNjcmlwdDo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKG1faW5qZWN0ZWRTY3JpcHRP
YmplY3Quc2NyaXB0U3RhdGUoKSk7Ci19Ci0KLVNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0Ojpj
YWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwg
Ym9vbCYgaGFkRXhjZXB0aW9uKSBjb25zdAotewotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbVNjcmlw
dFN0YXRlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7Ci0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbENhbGxGdW5jdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LCAiSW5qZWN0ZWRTY3Jp
cHQiLCAxKTsKLQotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IG1faW5qZWN0ZWRTY3Jp
cHRPYmplY3Quc2NyaXB0U3RhdGUoKTsKLSAgICBib29sIGV2YWxJc0Rpc2FibGVkID0gZmFsc2U7
Ci0gICAgaWYgKHNjcmlwdFN0YXRlKSB7Ci0gICAgICAgIGV2YWxJc0Rpc2FibGVkID0gIWV2YWxF
bmFibGVkKHNjcmlwdFN0YXRlKTsKLSAgICAgICAgLy8gVGVtcG9yYXJpbHkgZW5hYmxlIGFsbG93
IGV2YWxzIGZvciBpbnNwZWN0b3IuCi0gICAgICAgIGlmIChldmFsSXNEaXNhYmxlZCkKLSAgICAg
ICAgICAgIHNldEV2YWxFbmFibGVkKHNjcmlwdFN0YXRlLCB0cnVlKTsKLSAgICB9Ci0KLSAgICBT
Y3JpcHRWYWx1ZSByZXN1bHRWYWx1ZSA9IGZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKLQot
ICAgIGlmIChldmFsSXNEaXNhYmxlZCkKLSAgICAgICAgc2V0RXZhbEVuYWJsZWQoc2NyaXB0U3Rh
dGUsIGZhbHNlKTsKLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0
aW9uKGNvb2tpZSk7Ci0gICAgcmV0dXJuIHJlc3VsdFZhbHVlOwotfQotCi12b2lkIEluamVjdGVk
U2NyaXB0OjptYWtlQ2FsbChTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+KiByZXN1bHQpCi17Ci0gICAgaWYgKGhhc05vVmFsdWUoKSB8fCAhY2FuQWNj
ZXNzSW5zcGVjdGVkV2luZG93KCkpIHsKLSAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclZhbHVl
OjpudWxsKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBib29sIGhhZEV4Y2VwdGlv
biA9IGZhbHNlOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdFZhbHVlID0gY2FsbEZ1bmN0aW9uV2l0
aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwotCi0gICAgQVNTRVJUKCFoYWRF
eGNlcHRpb24pOwotICAgIGlmICghaGFkRXhjZXB0aW9uKSB7Ci0gICAgICAgICpyZXN1bHQgPSBy
ZXN1bHRWYWx1ZS50b0luc3BlY3RvclZhbHVlKG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0
U3RhdGUoKSk7Ci0gICAgICAgIGlmICghKnJlc3VsdCkKLSAgICAgICAgICAgICpyZXN1bHQgPSBJ
bnNwZWN0b3JTdHJpbmc6OmNyZWF0ZShTdHJpbmc6OmZvcm1hdCgiT2JqZWN0IGhhcyB0b28gbG9u
ZyByZWZlcmVuY2UgY2hhaW4obXVzdCBub3QgYmUgbG9uZ2VyIHRoYW4gJWQpIiwgSW5zcGVjdG9y
VmFsdWU6Om1heERlcHRoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgICpyZXN1bHQgPSBJbnNwZWN0
b3JTdHJpbmc6OmNyZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1ha2luZyBhIGNhbGwuIik7Ci19Ci0K
LXZvaWQgSW5qZWN0ZWRTY3JpcHQ6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0Piogb2JqZWN0UmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0
PGJvb2w+KiB3YXNUaHJvd24pCi17Ci0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7
Ci0gICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQpOwotICAgIGlmICghcmVzdWx0KSB7Ci0g
ICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IHZhbHVlIGlzIGVt
cHR5IjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0g
SW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcpIHsKLSAgICAgICAgcmVzdWx0LT5hc1N0cmluZyhl
cnJvclN0cmluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVzdWx0UGFpciA9IHJlc3VsdC0+YXNPYmplY3QoKTsKLSAgICBpZiAoIXJlc3Vs
dFBhaXIpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQg
aXMgbm90IGFuIE9iamVjdCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqID0gcmVzdWx0UGFpci0+Z2V0T2JqZWN0KCJyZXN1bHQi
KTsKLSAgICBib29sIHdhc1Rocm93blZhbCA9IGZhbHNlOwotICAgIGlmICghcmVzdWx0T2JqIHx8
ICFyZXN1bHRQYWlyLT5nZXRCb29sZWFuKCJ3YXNUaHJvd24iLCAmd2FzVGhyb3duVmFsKSkgewot
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBw
YWlyIG9mIHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgKm9iamVjdFJlc3VsdCA9IFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6
OnJ1bnRpbWVDYXN0KHJlc3VsdE9iaik7Ci0gICAgKndhc1Rocm93biA9IHdhc1Rocm93blZhbDsK
LX0KLQogU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6Om5vZGVBc1NjcmlwdFZhbHVlKE5vZGUq
IG5vZGUpCiB7Ci0gICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFs
dWUobV9pbmplY3RlZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpLCBub2RlKTsKKyAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShzY3JpcHRTdGF0ZSgpLCBu
b2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCA4YzY3MzZkOTM4ODA2NTljOTU3ZDQ4ZGRmN2NiODg2
NjFhYzY1MDIwLi5iZjBiYzI0Y2M1ZjA1ZTNhMmZkNmRiMzAwOWYwMTMwNzMyYjBiYTU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBJbmplY3RlZFNjcmlwdF9oCiAjZGVmaW5lIEluamVj
dGVkU2NyaXB0X2gKIAorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0QmFzZS5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCkBAIC00MSwyMyArNDIsMTYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3Rv
ck9iamVjdDsKLWNsYXNzIEluc3BlY3RvclZhbHVlOwogY2xhc3MgTm9kZTsKLWNsYXNzIFNjcmlw
dEZ1bmN0aW9uQ2FsbDsKLQotdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CitjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1jbGFzcyBJbmpl
Y3RlZFNjcmlwdCB7CitjbGFzcyBJbmplY3RlZFNjcmlwdCA6IHB1YmxpYyBJbmplY3RlZFNjcmlw
dEJhc2UgewogcHVibGljOgogICAgIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfkluamVjdGVkU2Ny
aXB0KCkgeyB9CiAKLSAgICBib29sIGhhc05vVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luamVj
dGVkU2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKTsgfQotCiAgICAgdm9pZCBldmFsdWF0ZShFcnJv
clN0cmluZyosCiAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCiAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLApAQCAtOTcsMjEgKzkx
LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5zcGVjdE5vZGUoTm9kZSopOwogICAgIHZvaWQg
cmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYpOwotICAgIFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3Rh
dGUoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7Ci0gICAgdHlwZWRl
ZiBib29sICgqSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjaykoU2NyaXB0U3RhdGUqKTsKICAgICBJ
bmplY3RlZFNjcmlwdChTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwog
Ci0gICAgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSBjb25zdDsKLSAgICBTY3JpcHRW
YWx1ZSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoU2NyaXB0RnVuY3Rpb25DYWxsJiwgYm9v
bCYgaGFkRXhjZXB0aW9uKSBjb25zdDsKLSAgICB2b2lkIG1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9u
Q2FsbCYsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCk7Ci0gICAgdm9pZCBtYWtlRXZh
bENhbGwoRXJyb3JTdHJpbmcqLCBTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1
dDxib29sPiogd2FzVGhyb3duKTsKICAgICBTY3JpcHRWYWx1ZSBub2RlQXNTY3JpcHRWYWx1ZShO
b2RlKik7Ci0KLSAgICBTY3JpcHRPYmplY3QgbV9pbmplY3RlZFNjcmlwdE9iamVjdDsKLSAgICBJ
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjazsKIH07
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRC
YXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZTg3OGFiMTc0ZGFiYjdhY2QwZjRmYWJiNGM5YmM3OTdkNWRh
YzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QmFzZS5jcHAKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRCYXNlLmgiCisK
KyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlw
dEZ1bmN0aW9uQ2FsbC5oIgorCit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0luamVjdGVkU2NyaXB0QmFz
ZTo6SW5qZWN0ZWRTY3JpcHRCYXNlKCkKKyAgICA6IG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVj
aygwKQoreworfQorCitJbmplY3RlZFNjcmlwdEJhc2U6OkluamVjdGVkU2NyaXB0QmFzZShTY3Jp
cHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2sg
YWNjZXNzQ2hlY2spCisgICAgOiBtX2luamVjdGVkU2NyaXB0T2JqZWN0KGluamVjdGVkU2NyaXB0
T2JqZWN0KQorICAgICwgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKGFjY2Vzc0NoZWNrKQor
eworfQorCitib29sIEluamVjdGVkU2NyaXB0QmFzZTo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKG1faW5q
ZWN0ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7Cit9CisKK2NvbnN0IFNjcmlwdE9iamVj
dCYgSW5qZWN0ZWRTY3JpcHRCYXNlOjppbmplY3RlZFNjcmlwdE9iamVjdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmplY3Q7Cit9CisKK1NjcmlwdFZhbHVlIEluamVj
dGVkU2NyaXB0QmFzZTo6Y2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKFNjcmlwdEZ1bmN0aW9u
Q2FsbCYgZnVuY3Rpb24sIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3QKK3sKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dEZyb21TY3JpcHRTdGF0ZShtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRl
KCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgIkluamVjdGVkU2NyaXB0IiwgMSk7CisKKyAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUg
PSBtX2luamVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCk7CisgICAgYm9vbCBldmFsSXNE
aXNhYmxlZCA9IGZhbHNlOworICAgIGlmIChzY3JpcHRTdGF0ZSkgeworICAgICAgICBldmFsSXNE
aXNhYmxlZCA9ICFldmFsRW5hYmxlZChzY3JpcHRTdGF0ZSk7CisgICAgICAgIC8vIFRlbXBvcmFy
aWx5IGVuYWJsZSBhbGxvdyBldmFscyBmb3IgaW5zcGVjdG9yLgorICAgICAgICBpZiAoZXZhbElz
RGlzYWJsZWQpCisgICAgICAgICAgICBzZXRFdmFsRW5hYmxlZChzY3JpcHRTdGF0ZSwgdHJ1ZSk7
CisgICAgfQorCisgICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFsdWUgPSBmdW5jdGlvbi5jYWxsKGhh
ZEV4Y2VwdGlvbik7CisKKyAgICBpZiAoZXZhbElzRGlzYWJsZWQpCisgICAgICAgIHNldEV2YWxF
bmFibGVkKHNjcmlwdFN0YXRlLCBmYWxzZSk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENhbGxGdW5jdGlvbihjb29raWUpOworICAgIHJldHVybiByZXN1bHRWYWx1ZTsKK30K
Kwordm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKFNjcmlwdEZ1bmN0aW9uQ2FsbCYg
ZnVuY3Rpb24sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIHJlc3VsdCkKK3sKKyAgICBpZiAoaGFz
Tm9WYWx1ZSgpIHx8ICFjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coKSkgeworICAgICAgICAqcmVz
dWx0ID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgU2NyaXB0VmFsdWUgcmVzdWx0VmFs
dWUgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24sIGhhZEV4Y2VwdGlvbik7
CisKKyAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CisgICAgaWYgKCFoYWRFeGNlcHRpb24pIHsK
KyAgICAgICAgKnJlc3VsdCA9IHJlc3VsdFZhbHVlLnRvSW5zcGVjdG9yVmFsdWUobV9pbmplY3Rl
ZFNjcmlwdE9iamVjdC5zY3JpcHRTdGF0ZSgpKTsKKyAgICAgICAgaWYgKCEqcmVzdWx0KQorICAg
ICAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0
KCJPYmplY3QgaGFzIHRvbyBsb25nIHJlZmVyZW5jZSBjaGFpbihtdXN0IG5vdCBiZSBsb25nZXIg
dGhhbiAlZCkiLCBJbnNwZWN0b3JWYWx1ZTo6bWF4RGVwdGgpKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgKnJlc3VsdCA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFr
aW5nIGEgY2FsbC4iKTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2Fs
bChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24s
IFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piogb2JqZWN0UmVzdWx0
LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit7CisgICAgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CisgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHQp
OworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBl
cnJvcjogcmVzdWx0IHZhbHVlIGlzIGVtcHR5IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcpIHsKKyAg
ICAgICAgcmVzdWx0LT5hc1N0cmluZyhlcnJvclN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0UGFpciA9IHJlc3VsdC0+YXNP
YmplY3QoKTsKKyAgICBpZiAoIXJlc3VsdFBhaXIpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0g
IkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGFuIE9iamVjdCI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqID0gcmVzdWx0
UGFpci0+Z2V0T2JqZWN0KCJyZXN1bHQiKTsKKyAgICBib29sIHdhc1Rocm93blZhbCA9IGZhbHNl
OworICAgIGlmICghcmVzdWx0T2JqIHx8ICFyZXN1bHRQYWlyLT5nZXRCb29sZWFuKCJ3YXNUaHJv
d24iLCAmd2FzVGhyb3duVmFsKSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwg
ZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9mIHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgKm9iamVjdFJlc3VsdCA9IFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q6OnJ1bnRpbWVDYXN0KHJlc3VsdE9iaik7CisgICAgKndh
c1Rocm93biA9IHdhc1Rocm93blZhbDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGQ1NDVlZjkyZmIzNzZkMzFjZTI4Mjdk
NmIxYTA3MmE4ZjI3YTkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluamVjdGVk
U2NyaXB0QmFzZV9oCisjZGVmaW5lIEluamVjdGVkU2NyaXB0QmFzZV9oCisKKyNpbmNsdWRlICJJ
bnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEluc3BlY3RvclZhbHVlOworY2xhc3MgU2NyaXB0RnVuY3Rpb25D
YWxsOworCit0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKKworI2lmIEVOQUJMRShJTlNQRUNU
T1IpCisKK2NsYXNzIEluamVjdGVkU2NyaXB0QmFzZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
SW5qZWN0ZWRTY3JpcHRCYXNlKCkgeyB9CisKKyAgICBib29sIGhhc05vVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2luamVjdGVkU2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKTsgfQorICAgIFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRPYmpl
Y3Quc2NyaXB0U3RhdGUoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdHlwZWRlZiBib29sICgqSW5z
cGVjdGVkU3RhdGVBY2Nlc3NDaGVjaykoU2NyaXB0U3RhdGUqKTsKKyAgICBJbmplY3RlZFNjcmlw
dEJhc2UoKTsKKyAgICBJbmplY3RlZFNjcmlwdEJhc2UoU2NyaXB0T2JqZWN0LCBJbnNwZWN0ZWRT
dGF0ZUFjY2Vzc0NoZWNrKTsKKworICAgIGJvb2wgY2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KCkg
Y29uc3Q7CisgICAgY29uc3QgU2NyaXB0T2JqZWN0JiBpbmplY3RlZFNjcmlwdE9iamVjdCgpIGNv
bnN0OworICAgIFNjcmlwdFZhbHVlIGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChTY3JpcHRG
dW5jdGlvbkNhbGwmLCBib29sJiBoYWRFeGNlcHRpb24pIGNvbnN0OworICAgIHZvaWQgbWFrZUNh
bGwoU2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsK
KyAgICB2b2lkIG1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyosIFNjcmlwdEZ1bmN0aW9uQ2FsbCYs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworCitwcml2YXRlOgorICAgIFNj
cmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqZWN0OworICAgIEluc3BlY3RlZFN0YXRlQWNj
ZXNzQ2hlY2sgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrOworfTsKKworI2VuZGlmCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDU5ODU4ZDk3NzliNDYyMTQyNjljZGYw
YWFlN2YyYmJkMmE4MDVmOWYuLjA0N2RkODIxMjAwYTgxMDM4YTc3ODVhZDI4MWUwOTRmMThhZDQ0
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwCkBAIC01Myw2ICs1Myw3IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogI2luY2x1
ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViR0xBZ2VudC5oIgogI2VuZGlm
CiAKICNpbmNsdWRlICJtYXJrdXAuaCIKQEAgLTc3LDYgKzc4LDEyIEBAIEluamVjdGVkU2NyaXB0
SG9zdDo6SW5qZWN0ZWRTY3JpcHRIb3N0KCkKICNlbmRpZgogICAgICwgbV9kb21TdG9yYWdlQWdl
bnQoMCkKICAgICAsIG1fZG9tQWdlbnQoMCkKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKKyAgICAsIG1fZGVidWdnZXJBZ2VudCgwKQorI2VuZGlmCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgICwgbV93ZWJnbEFnZW50KDApCisjZW5kaWYKICAgICAsIG1fbGFzdFdvcmtlcklkKDEgPDwg
MzEpIC8vIERpc3Rpbmd1aXNoIGlkcyBvZiBmYWtlIHdvcmtlcnMgZnJvbSByZWFsIG9uZXMsIHRv
IG1pbmltaXplIHRoZSBjaGFuY2VzIHRoZXkgb3ZlcmxhcC4KIHsKICAgICBtX2RlZmF1bHRJbnNw
ZWN0YWJsZU9iamVjdCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0YWJsZU9iamVjdCgpKTsKQEAgLTk1
LDYgKzEwMiwxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6ZGlzY29ubmVjdCgpCiAjZW5k
aWYKICAgICBtX2RvbVN0b3JhZ2VBZ2VudCA9IDA7CiAgICAgbV9kb21BZ2VudCA9IDA7CisjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgbV9kZWJ1Z2dlckFnZW50ID0gMDsKKyNl
bmRpZgorI2lmIEVOQUJMRShXRUJHTCkKKyAgICBtX3dlYmdsQWdlbnQgPSAwOworI2VuZGlmCiB9
CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0SW1wbChQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBvYmplY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGhpbnRzKQpAQCAt
MTkwLDYgKzIwMywxOSBAQCBTY3JpcHREZWJ1Z1NlcnZlciYgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpz
Y3JpcHREZWJ1Z1NlcnZlcigpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQg
SW5qZWN0ZWRTY3JpcHRIb3N0Ojp3ZWJHTENvbnRleHRDcmVhdGVkKGNvbnN0IFN0cmluZyYgY29u
dGV4dElkKQoreworICAgIGlmIChtX3dlYmdsQWdlbnQpCisgICAgICAgIG1fd2ViZ2xBZ2VudC0+
Y29udGV4dENyZWF0ZWQoY29udGV4dElkKTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6
OndlYkdMUmVwb3J0RnVuY3Rpb25DYWxsKGNvbnN0IFN0cmluZyYgY29udGV4dElkLCBjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBhcmdzLCBjb25zdCBTdHJpbmcmIHJl
c3VsdCkKK3sKKyAgICBpZiAobV93ZWJnbEFnZW50KQorICAgICAgICBtX3dlYmdsQWdlbnQtPnJl
cG9ydEZ1bmN0aW9uQ2FsbChjb250ZXh0SWQsIGZ1bmN0aW9uTmFtZSwgYXJncywgcmVzdWx0KTsK
K30KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAppbmRleCA0ZTlhODIxMDI5OWM3MDFhMGJj
MTdlY2E1OTNjM2IzZjM0NWI5ODZhLi5lNTk5YjI5Yzk4YTViMGZmNmZkYTA1ZDZkZjRiYmZmMzMx
NTg3ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5oCkBAIC03LDEzICs3LDEzIEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtNDksNiArNDksNyBAQCBj
bGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBj
bGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKK2NsYXNzIEluc3Bl
Y3RvcldlYkdMQWdlbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7CiBj
bGFzcyBTY3JpcHRPYmplY3Q7CkBAIC03Miw2ICs3Myw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAgICAgICAgICwgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCogZGVidWdnZXJBZ2VudAogI2VuZGlmCisjaWYgRU5BQkxFKFdFQkdMKQorICAgICAgICAgICAg
LCBJbnNwZWN0b3JXZWJHTEFnZW50KiB3ZWJnbEFnZW50CisjZW5kaWYKICAgICAgICAgKQogICAg
IHsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50OwpAQCAtODQsNiAr
ODgsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgICAg
IG1fZGVidWdnZXJBZ2VudCA9IGRlYnVnZ2VyQWdlbnQ7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VC
R0wpCisgICAgICAgIG1fd2ViZ2xBZ2VudCA9IHdlYmdsQWdlbnQ7CisjZW5kaWYKICAgICB9CiAK
ICAgICBzdGF0aWMgTm9kZSogc2NyaXB0VmFsdWVBc05vZGUoU2NyaXB0VmFsdWUpOwpAQCAtMTE5
LDYgKzEyNiwxMSBAQCBwdWJsaWM6CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVn
U2VydmVyKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIHdlYkdMQ29u
dGV4dENyZWF0ZWQoY29uc3QgU3RyaW5nJiBjb250ZXh0SWQpOworICAgIHZvaWQgd2ViR0xSZXBv
cnRGdW5jdGlvbkNhbGwoY29uc3QgU3RyaW5nJiBjb250ZXh0SWQsIGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3MsIGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIEluamVjdGVkU2NyaXB0SG9zdCgpOwogCkBAIC0xMzIsNiAr
MTQ0LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgSW5zcGVjdG9yV2ViR0xBZ2VudCogbV93ZWJnbEFnZW50OworI2VuZGlm
CiAgICAgbG9uZyBtX2xhc3RXb3JrZXJJZDsKICAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RhYmxl
T2JqZWN0PiA+IG1faW5zcGVjdGVkT2JqZWN0czsKICAgICBPd25QdHI8SW5zcGVjdGFibGVPYmpl
Y3Q+IG1fZGVmYXVsdEluc3BlY3RhYmxlT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbAppbmRleCA1NGYwODBmMmMzYWFhNGYzYzMyNmQw
ZGE0YjI2NzhkYzI2MTVmODQ4Li4zZjcwZDU2ZGQ3ZjE4ZGE3YjkxOGZiNjU5NzRhMGY0ZjEyZmNh
ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmlkbApAQCAtNTMsNSArNTMsMTAgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIGRpZERl
c3Ryb3lXb3JrZXIoaW4gbG9uZyBpZCk7CiAgICAgICAgIGxvbmcgbmV4dFdvcmtlcklkKCk7CiAj
ZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wKKyAgICAg
ICAgdm9pZCB3ZWJHTENvbnRleHRDcmVhdGVkKGluIERPTVN0cmluZyBjb250ZXh0SWQpOworICAg
ICAgICB2b2lkIHdlYkdMUmVwb3J0RnVuY3Rpb25DYWxsKGluIERPTVN0cmluZyBjb250ZXh0SWQs
IGluIERPTVN0cmluZyBmdW5jdGlvbk5hbWUsIGluIERPTVN0cmluZyBhcmd1bWVudHMsIGluIERP
TVN0cmluZyByZXN1bHQpOworI2VuZGlmCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOTMzY2Q2OWQxMmU3
Y2YwMDY1NDBlNDdiZmUzZjQ4ZGFhZmJjZTRmMy4uN2Y3ZjNiYmQyN2QwZWJhMTFhZTI0N2VmOGEw
ODcyYTQ4MDc3Zjg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdFNvdXJjZS5oIgogI2lmIEVO
QUJMRShXRUJHTCkKKyNpbmNsdWRlICJJbmplY3RlZFdlYkdMU2NyaXB0LmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRXZWJHTFNjcmlwdFNvdXJjZS5oIgogI2VuZGlmCiAjaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCkBAIC0xMTcsMTAgKzExOCwxMCBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYgog
CiB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0cygpCiB7
Ci0gICAgSWRUb0luamVjdGVkU2NyaXB0TWFwOjppdGVyYXRvciBlbmQgPSBtX2lkVG9JbmplY3Rl
ZFNjcmlwdC5lbmQoKTsKLSAgICBmb3IgKElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3Ig
aXQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAg
ICAgIGRpc2NhcmRJbmplY3RlZFNjcmlwdChpdC0+c2Vjb25kLnNjcmlwdFN0YXRlKCkpOwogICAg
IG1faWRUb0luamVjdGVkU2NyaXB0LmNsZWFyKCk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIG1f
aWRUb0luamVjdGVkV2ViR0xTY3JpcHQuY2xlYXIoKTsKKyNlbmRpZgogICAgIG1fc2NyaXB0U3Rh
dGVUb0lkLmNsZWFyKCk7CiB9CiAKQEAgLTEzMCwxMiArMTMxLDEwIEBAIHZvaWQgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKERPTVdpbmRvdyogd2luZG93
KQogICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8bG9uZz4gaWRzVG9SZW1vdmU7Ci0gICAg
SWRUb0luamVjdGVkU2NyaXB0TWFwOjppdGVyYXRvciBlbmQgPSBtX2lkVG9JbmplY3RlZFNjcmlw
dC5lbmQoKTsKLSAgICBmb3IgKElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBt
X2lkVG9JbmplY3RlZFNjcmlwdC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBmb3Ig
KElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lkVG9JbmplY3RlZFNjcmlw
dC5iZWdpbigpLCBlbmQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5lbmQoKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IGl0LT5zZWNvbmQuc2Ny
aXB0U3RhdGUoKTsKICAgICAgICAgaWYgKHdpbmRvdyAhPSBkb21XaW5kb3dGcm9tU2NyaXB0U3Rh
dGUoc2NyaXB0U3RhdGUpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRpc2NhcmRJ
bmplY3RlZFNjcmlwdChzY3JpcHRTdGF0ZSk7CiAgICAgICAgIG1fc2NyaXB0U3RhdGVUb0lkLnJl
bW92ZShzY3JpcHRTdGF0ZSk7CiAgICAgICAgIGlkc1RvUmVtb3ZlLmFwcGVuZChpdC0+Zmlyc3Qp
OwogICAgIH0KQEAgLTE0Myw2ICsxNDIsMjAgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6
OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IoRE9NV2luZG93KiB3aW5kb3cpCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpZHNUb1JlbW92ZS5zaXplKCk7IGkrKykKICAgICAgICAgbV9pZFRv
SW5qZWN0ZWRTY3JpcHQucmVtb3ZlKGlkc1RvUmVtb3ZlW2ldKTsKIAorI2lmIEVOQUJMRShXRUJH
TCkKKyAgICBpZHNUb1JlbW92ZS5jbGVhcigpOworICAgIGZvciAoSWRUb0luamVjdGVkV2ViR0xT
Y3JpcHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvSW5qZWN0ZWRXZWJHTFNjcmlwdC5iZWdpbigp
LCBlbmQgPSBtX2lkVG9JbmplY3RlZFdlYkdMU2NyaXB0LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gaXQtPnNlY29uZC5zY3JpcHRT
dGF0ZSgpOworICAgICAgICBpZiAod2luZG93ICE9IGRvbVdpbmRvd0Zyb21TY3JpcHRTdGF0ZShz
Y3JpcHRTdGF0ZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbV9zY3JpcHRTdGF0
ZVRvSWQucmVtb3ZlKHNjcmlwdFN0YXRlKTsKKyAgICAgICAgaWRzVG9SZW1vdmUuYXBwZW5kKGl0
LT5maXJzdCk7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpZHNUb1JlbW92
ZS5zaXplKCk7IGkrKykKKyAgICAgICAgbV9pZFRvSW5qZWN0ZWRXZWJHTFNjcmlwdC5yZW1vdmUo
aWRzVG9SZW1vdmVbaV0pOworI2VuZGlmCisKICAgICAvLyBOb3cgcmVtb3ZlIHNjcmlwdCBzdGF0
ZXMgdGhhdCBoYXZlIGlkIGJ1dCBubyBpbmplY3RlZCBzY3JpcHQuCiAgICAgVmVjdG9yPFNjcmlw
dFN0YXRlKj4gc2NyaXB0U3RhdGVzVG9SZW1vdmU7CiAgICAgZm9yIChTY3JpcHRTdGF0ZVRvSWQ6
Oml0ZXJhdG9yIGl0ID0gbV9zY3JpcHRTdGF0ZVRvSWQuYmVnaW4oKTsgaXQgIT0gbV9zY3JpcHRT
dGF0ZVRvSWQuZW5kKCk7ICsraXQpIHsKQEAgLTE3NiwxMCArMTg5LDY0IEBAIHBhaXI8aW50LCBT
Y3JpcHRPYmplY3Q+IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0U2NyaXB0KGNvbnN0IFN0
cmluZyYgc291cmNlCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGlkLCBjcmVhdGVJbmplY3Rl
ZFNjcmlwdChzb3VyY2UsIHNjcmlwdFN0YXRlLCBpZCkpOwogfQogCitJbmplY3RlZFNjcmlwdCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKiBpbnNw
ZWN0ZWRTY3JpcHRTdGF0ZSkKK3sKKyAgICBTY3JpcHRTdGF0ZVRvSWQ6Oml0ZXJhdG9yIGl0ID0g
bV9zY3JpcHRTdGF0ZVRvSWQuZmluZChpbnNwZWN0ZWRTY3JpcHRTdGF0ZSk7CisgICAgaWYgKGl0
ICE9IG1fc2NyaXB0U3RhdGVUb0lkLmVuZCgpKSB7CisgICAgICAgIElkVG9JbmplY3RlZFNjcmlw
dE1hcDo6aXRlcmF0b3IgaXQxID0gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZmluZChpdC0+c2Vjb25k
KTsKKyAgICAgICAgaWYgKGl0MSAhPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5lbmQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBpdDEtPnNlY29uZDsKKyAgICB9CisKKyAgICBpZiAoIW1faW5zcGVjdGVk
U3RhdGVBY2Nlc3NDaGVjayhpbnNwZWN0ZWRTY3JpcHRTdGF0ZSkpCisgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdCgpOworCisgICAgcGFpcjxpbnQsIFNjcmlwdE9iamVjdD4gaW5qZWN0ZWRT
Y3JpcHQgPSBpbmplY3RTY3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgaW5zcGVjdGVkU2Ny
aXB0U3RhdGUpOworICAgIEluamVjdGVkU2NyaXB0IHJlc3VsdChpbmplY3RlZFNjcmlwdC5zZWNv
bmQsIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7CisgICAgbV9pZFRvSW5qZWN0ZWRTY3Jp
cHQuc2V0KGluamVjdGVkU2NyaXB0LmZpcnN0LCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKICNpZiBFTkFCTEUoV0VCR0wpCitJbmplY3RlZFdlYkdMU2NyaXB0IEluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6aW5qZWN0ZWRXZWJHTFNjcmlwdEZvck9iamVjdElkKGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQpCit7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBwYXJzZWRPYmplY3RJZCA9
IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04ob2JqZWN0SWQpOworICAgIGlmIChwYXJzZWRPYmpl
Y3RJZCAmJiBwYXJzZWRPYmplY3RJZC0+dHlwZSgpID09IEluc3BlY3RvclZhbHVlOjpUeXBlT2Jq
ZWN0KSB7CisgICAgICAgIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCA9IDA7CisgICAgICAgIGJvb2wg
c3VjY2VzcyA9IHBhcnNlZE9iamVjdElkLT5hc09iamVjdCgpLT5nZXROdW1iZXIoImluamVjdGVk
U2NyaXB0SWQiLCAmaW5qZWN0ZWRTY3JpcHRJZCk7CisgICAgICAgIGlmIChzdWNjZXNzKQorICAg
ICAgICAgICAgcmV0dXJuIG1faWRUb0luamVjdGVkV2ViR0xTY3JpcHQuZ2V0KGluamVjdGVkU2Ny
aXB0SWQpOworICAgIH0KKyAgICByZXR1cm4gSW5qZWN0ZWRXZWJHTFNjcmlwdCgpOworfQorCitJ
bmplY3RlZFdlYkdMU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRXZWJHTFNj
cmlwdEZvcihTY3JpcHRTdGF0ZSogaW5zcGVjdGVkU2NyaXB0U3RhdGUpCit7CisgICAgU2NyaXB0
U3RhdGVUb0lkOjppdGVyYXRvciBpdCA9IG1fc2NyaXB0U3RhdGVUb0lkLmZpbmQoaW5zcGVjdGVk
U2NyaXB0U3RhdGUpOworICAgIGlmIChpdCAhPSBtX3NjcmlwdFN0YXRlVG9JZC5lbmQoKSkgewor
ICAgICAgICBJZFRvSW5qZWN0ZWRXZWJHTFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQxID0gbV9pZFRv
SW5qZWN0ZWRXZWJHTFNjcmlwdC5maW5kKGl0LT5zZWNvbmQpOworICAgICAgICBpZiAoaXQxICE9
IG1faWRUb0luamVjdGVkV2ViR0xTY3JpcHQuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gaXQx
LT5zZWNvbmQ7CisgICAgfQorCisgICAgaWYgKCFtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2so
aW5zcGVjdGVkU2NyaXB0U3RhdGUpKQorICAgICAgICByZXR1cm4gSW5qZWN0ZWRXZWJHTFNjcmlw
dCgpOworCisgICAgcGFpcjxpbnQsIFNjcmlwdE9iamVjdD4gaW5qZWN0ZWRTY3JpcHQgPSBpbmpl
Y3RTY3JpcHQoaW5qZWN0ZWRXZWJHTFNjcmlwdFNvdXJjZSgpLCBpbnNwZWN0ZWRTY3JpcHRTdGF0
ZSk7CisgICAgSW5qZWN0ZWRXZWJHTFNjcmlwdCByZXN1bHQoaW5qZWN0ZWRTY3JpcHQuc2Vjb25k
LCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOworICAgIG1faWRUb0luamVjdGVkV2ViR0xT
Y3JpcHQuc2V0KGluamVjdGVkU2NyaXB0LmZpcnN0LCByZXN1bHQpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKIFNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OndyYXBXZWJHTFJl
bmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0JiBnbENv
bnRleHQpCiB7Ci0gICAgcmV0dXJuIGluamVjdFdlYkdMU2NyaXB0KGluamVjdGVkV2ViR0xTY3Jp
cHRTb3VyY2UoKSwgZ2xDb250ZXh0KTsKKyAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBn
bENvbnRleHQuc2NyaXB0U3RhdGUoKTsKKyAgICBJbmplY3RlZFdlYkdMU2NyaXB0IGluamVjdGVk
V2ViR0xTY3JpcHQgPSBpbmplY3RlZFdlYkdMU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKworICAg
IGlmIChpbmplY3RlZFdlYkdMU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIFNj
cmlwdE9iamVjdCgpOworCisgICAgcmV0dXJuIGluamVjdGVkV2ViR0xTY3JpcHQud3JhcFdlYkdM
Q29udGV4dChnbENvbnRleHQpOwogfQogCiBTdHJpbmcgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpp
bmplY3RlZFdlYkdMU2NyaXB0U291cmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaAppbmRleCA1YzBlOGNlMjA4OTc5MzU1YWM2M2Y1Yzc4
NDQwMWQzNTgxNmM4NzYzLi5jZTM4NDdhMjQyYmM5NDgxNWRiY2IyMmVmNTA4YjM1ZjIxMTdjMjdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5oCkBAIC00MSw2ICs0MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTVdpbmRv
dzsKIGNsYXNzIEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OworI2lm
IEVOQUJMRShXRUJHTCkKK2NsYXNzIEluamVjdGVkV2ViR0xTY3JpcHQ7CisjZW5kaWYKIGNsYXNz
IEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIFNjcmlwdE9iamVjdDsKIApAQCAtNjUsNiArNjgsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCk7CiAKICNpZiBFTkFCTEUoV0VCR0wpCisgICAgSW5qZWN0ZWRXZWJHTFNjcmlwdCBp
bmplY3RlZFdlYkdMU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7CisgICAgSW5qZWN0ZWRXZWJHTFNj
cmlwdCBpbmplY3RlZFdlYkdMU2NyaXB0Rm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCk7CiAgICAgU2NyaXB0T2JqZWN0IHdyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVt
ZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0Jik7CiAjZW5kaWYKIApAQCAtNzQsMTEgKzc5LDEx
IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKTsKICAgICBT
Y3JpcHRPYmplY3QgY3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFNj
cmlwdFN0YXRlKiwgaW50IGlkKTsKLSAgICB2b2lkIGRpc2NhcmRJbmplY3RlZFNjcmlwdChTY3Jp
cHRTdGF0ZSopOwogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFN0cmluZyBpbmplY3RlZFdlYkdM
U2NyaXB0U291cmNlKCk7Ci0gICAgU2NyaXB0T2JqZWN0IGluamVjdFdlYkdMU2NyaXB0KGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBTY3JpcHRPYmplY3QmKTsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8aW50LCBJbmplY3RlZFdlYkdMU2NyaXB0PiBJZFRvSW5qZWN0ZWRXZWJHTFNjcmlwdE1hcDsK
KyAgICBJZFRvSW5qZWN0ZWRXZWJHTFNjcmlwdE1hcCBtX2lkVG9JbmplY3RlZFdlYkdMU2NyaXB0
OwogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coU2Ny
aXB0U3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFdlYkdMU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFdlYkdM
U2NyaXB0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDlkM2M3ZmRhOGU1Y2ZiZjhhZWVhYmQyZWVmNTJiMWIw
NzZmZWM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkV2ViR0xTY3JpcHQuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJJbmpl
Y3RlZFdlYkdMU2NyaXB0LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0luamVj
dGVkV2ViR0xTY3JpcHQ6OkluamVjdGVkV2ViR0xTY3JpcHQoKQorICAgIDogSW5qZWN0ZWRTY3Jp
cHRCYXNlKCkKK3sKK30KKworSW5qZWN0ZWRXZWJHTFNjcmlwdDo6SW5qZWN0ZWRXZWJHTFNjcmlw
dChTY3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRlQWNjZXNz
Q2hlY2sgYWNjZXNzQ2hlY2spCisgICAgOiBJbmplY3RlZFNjcmlwdEJhc2UoaW5qZWN0ZWRTY3Jp
cHRPYmplY3QsIGFjY2Vzc0NoZWNrKQoreworfQorCitTY3JpcHRPYmplY3QgSW5qZWN0ZWRXZWJH
TFNjcmlwdDo6d3JhcFdlYkdMQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29udGV4dCkK
K3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgIndyYXBXZWJHTENvbnRleHQiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChnbENv
bnRleHQpOworCisgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBTY3JpcHRWYWx1
ZSByZXN1bHRWYWx1ZSA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChmdW5jdGlvbiwgaGFk
RXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CisKKyAgICBpZiAoaGFkRXhj
ZXB0aW9uIHx8IHJlc3VsdFZhbHVlLmhhc05vVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlw
dE9iamVjdCgpOworCisgICAgcmV0dXJuIFNjcmlwdE9iamVjdChnbENvbnRleHQuc2NyaXB0U3Rh
dGUoKSwgcmVzdWx0VmFsdWUpOworfQorCit2b2lkIEluamVjdGVkV2ViR0xTY3JpcHQ6OmNhcHR1
cmVGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY29udGV4dElk
KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAiY2FwdHVyZUZyYW1lIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY29udGV4
dElkKTsKKworICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgY2FsbEZ1bmN0aW9u
V2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOworICAgIEFTU0VSVCghaGFk
RXhjZXB0aW9uKTsKKworICAgIGlmIChoYWRFeGNlcHRpb24pCisgICAgICAgICplcnJvclN0cmlu
ZyA9ICJJbnRlcm5hbCBlcnJvciI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRXZWJHTFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkV2ViR0xTY3JpcHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzliZjg3MDhmNGM1MzBiNmNkZTE2YzM5
NTMyZTI5MDQyNTBkODRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkV2ViR0xTY3JpcHQuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3Rl
ZFdlYkdMU2NyaXB0X2gKKyNkZWZpbmUgSW5qZWN0ZWRXZWJHTFNjcmlwdF9oCisKKyNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdEJhc2UuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIu
aCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisj
aWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKFdFQkdMKQorCitjbGFzcyBJbmplY3RlZFdl
YkdMU2NyaXB0IDogcHVibGljIEluamVjdGVkU2NyaXB0QmFzZSB7CitwdWJsaWM6CisgICAgSW5q
ZWN0ZWRXZWJHTFNjcmlwdCgpOworICAgIH5JbmplY3RlZFdlYkdMU2NyaXB0KCkgeyB9CisKKyAg
ICBTY3JpcHRPYmplY3Qgd3JhcFdlYkdMQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29u
dGV4dCk7CisgICAgdm9pZCBjYXB0dXJlRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGNvbnRleHRJZCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIEluamVjdGVkV2ViR0xTY3JpcHQg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFdlYkdMU2NyaXB0Rm9yKFNjcmlwdFN0YXRl
Kik7CisgICAgSW5qZWN0ZWRXZWJHTFNjcmlwdChTY3JpcHRPYmplY3QsIEluc3BlY3RlZFN0YXRl
QWNjZXNzQ2hlY2spOworfTsKKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRXZWJH
TFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFdlYkdM
U2NyaXB0U291cmNlLmpzCmluZGV4IDZhNTU1NGQzMTJhMGVmMGEzMTIyZjU4ZWM1MWVjMmRkYWQ3
ZGIwMmIuLmM3OTM3YTcyMjBkMmZhZmEzNDlhMjEyOGM2ZDg4MjVhYmQ0MDkzZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFdlYkdMU2NyaXB0U291cmNlLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFdlYkdMU2NyaXB0U291cmNl
LmpzCkBAIC0yOCw5ICsyOCwxMTIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotKGZ1bmN0aW9u
KGdsQ29udGV4dCkgeworLyoqCisgKiBAcGFyYW0ge0luamVjdGVkU2NyaXB0SG9zdH0gSW5qZWN0
ZWRTY3JpcHRIb3N0CisgKi8KKyhmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0
ZWRXaW5kb3csIGluamVjdGVkU2NyaXB0SWQpIHsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
LwordmFyIEluamVjdGVkU2NyaXB0ID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2xhc3RCb3Vu
ZE9iamVjdElkID0gMTsKKyAgICB0aGlzLl9pZFRvV3JhcHBlclByb3h5ID0ge307CisgICAgdGhp
cy5faWRUb1JlYWxXZWJHTENvbnRleHQgPSB7fTsKKyAgICB0aGlzLl9jYXB0dXJpbmdGcmFtZUlu
Zm8gPSBudWxsOworfQorCitJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CisgICAgd3JhcFdl
YkdMQ29udGV4dDogZnVuY3Rpb24oZ2xDb250ZXh0KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIg
aWQgaW4gdGhpcy5faWRUb1JlYWxXZWJHTENvbnRleHQpIHsKKyAgICAgICAgICAgIGlmICh0aGlz
Ll9pZFRvUmVhbFdlYkdMQ29udGV4dFtpZF0gPT09IGdsQ29udGV4dCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5faWRUb1dyYXBwZXJQcm94eVtpZF07CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgcHJveHkgPSB7fTsKKyAgICAgICAgdmFyIG5hbWVQcm9jZXNzZWQgPSB7fTsKKyAgICAg
ICAgbmFtZVByb2Nlc3NlZFsiX19wcm90b19fIl0gPSBudWxsOworICAgICAgICBuYW1lUHJvY2Vz
c2VkWyJjb25zdHJ1Y3RvciJdID0gdHJ1ZTsKKyAgICAgICAgZm9yICh2YXIgbyA9IGdsQ29udGV4
dDsgbzsgbyA9IG8uX19wcm90b19fKSB7CisgICAgICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyhvKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bmFtZVByb2Nlc3NlZFtuYW1lXSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIG5hbWVQcm9jZXNzZWRbbmFtZV0gPSB0cnVlOworICAgICAgICAgICAgICAgIGlm
ICh0eXBlb2YgZ2xDb250ZXh0W25hbWVdID09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcHJveHlbbmFtZV0gPSB0aGlzLl93cmFwcGVkRnVuY3Rpb24uYmluZCh0aGlzLCBnbENv
bnRleHQsIG5hbWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgbmFtZSwgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2xDb250ZXh0W25hbWVdOworICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbENvbnRleHRbbmFtZV0gPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEluIG9yZGVy
IHRvIGVtdWxhdGUgImluc3RhbmNlb2YiLgorICAgICAgICBwcm94eVsiX19wcm90b19fIl0gPSBn
bENvbnRleHRbIl9fcHJvdG9fXyJdOworICAgICAgICBwcm94eVsiY29uc3RydWN0b3IiXSA9IGds
Q29udGV4dFsiY29uc3RydWN0b3IiXTsKKworICAgICAgICB2YXIgY29udGV4dElkID0gdGhpcy5f
Z2VuZXJhdGVPYmplY3RJZCgpOworICAgICAgICB0aGlzLl9pZFRvV3JhcHBlclByb3h5W2NvbnRl
eHRJZF0gPSBwcm94eTsKKyAgICAgICAgdGhpcy5faWRUb1JlYWxXZWJHTENvbnRleHRbY29udGV4
dElkXSA9IGdsQ29udGV4dDsKKyAgICAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0LndlYkdMQ29udGV4
dENyZWF0ZWQoY29udGV4dElkKTsKKworICAgICAgICByZXR1cm4gcHJveHk7CisgICAgfSwKKwor
ICAgIF9nZW5lcmF0ZU9iamVjdElkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgaWQg
PSB0aGlzLl9sYXN0Qm91bmRPYmplY3RJZCsrOworICAgICAgICB2YXIgb2JqZWN0SWQgPSAie1wi
aW5qZWN0ZWRTY3JpcHRJZFwiOiIgKyBpbmplY3RlZFNjcmlwdElkICsgIixcIndlYkdMSWRcIjoi
ICsgaWQgKyAifSI7CisgICAgICAgIHJldHVybiBvYmplY3RJZDsKKyAgICB9LAorCisgICAgY2Fw
dHVyZUZyYW1lOiBmdW5jdGlvbihjb250ZXh0SWQpCisgICAgeworICAgICAgICB0aGlzLl9jYXB0
dXJpbmdGcmFtZUluZm8gPSB7CisgICAgICAgICAgICBjb250ZXh0SWQ6IGNvbnRleHRJZCwKKyAg
ICAgICAgICAgIGNhcHR1cmVkQ2FsbHNOdW06IDAKKyAgICAgICAgfTsKKyAgICB9LAorCisgICAg
X3N0b3BDYXB0dXJpbmc6IGZ1bmN0aW9uKGluZm8pCisgICAgeworICAgICAgICBpZiAodGhpcy5f
Y2FwdHVyaW5nRnJhbWVJbmZvID09PSBpbmZvKQorICAgICAgICAgICAgdGhpcy5fY2FwdHVyaW5n
RnJhbWVJbmZvID0gbnVsbDsKKyAgICB9LAorCisgICAgX3dyYXBwZWRGdW5jdGlvbjogZnVuY3Rp
b24oZ2xDb250ZXh0LCBmdW5jdGlvbk5hbWUsIHZhcl9hcmdzKSB7CisgICAgICAgIC8vIENhbGwg
cmVhbCBXZWJHTCBmdW5jdGlvbi4KKyAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChhcmd1bWVudHMsIDIpOworICAgICAgICB2YXIgcmVzdWx0ID0gZ2xDb250ZXh0
W2Z1bmN0aW9uTmFtZV0uYXBwbHkoZ2xDb250ZXh0LCBhcmdzKTsKKworICAgICAgICBpZiAodGhp
cy5fY2FwdHVyaW5nRnJhbWVJbmZvICYmIHRoaXMuX2lkVG9SZWFsV2ViR0xDb250ZXh0W3RoaXMu
X2NhcHR1cmluZ0ZyYW1lSW5mby5jb250ZXh0SWRdID09PSBnbENvbnRleHQpIHsKKyAgICAgICAg
ICAgIHZhciBjYXB0dXJlZENhbGxzTnVtID0gKyt0aGlzLl9jYXB0dXJpbmdGcmFtZUluZm8uY2Fw
dHVyZWRDYWxsc051bTsKKyAgICAgICAgICAgIGlmIChjYXB0dXJlZENhbGxzTnVtID09IDEpIHsK
KyAgICAgICAgICAgICAgICB0aGlzLl9zZXRaZXJvVGltZW91dHModGhpcy5fc3RvcENhcHR1cmlu
Zy5iaW5kKHRoaXMsIHRoaXMuX2NhcHR1cmluZ0ZyYW1lSW5mbykpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0LndlYkdMUmVwb3J0RnVuY3Rpb25DYWxsKHRo
aXMuX2NhcHR1cmluZ0ZyYW1lSW5mby5jb250ZXh0SWQsIGZ1bmN0aW9uTmFtZSwgIlsiICsgYXJn
cy5qb2luKCIsICIpICsgIl0iLCByZXN1bHQgKyAiIik7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICBfc2V0WmVyb1RpbWVvdXRzOiBmdW5jdGlvbihj
YWxsYmFjaykgeworICAgICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwor
ICAgICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGNhbGxiYWNrOworICAgICAgICBjaGFu
bmVsLnBvcnQyLnBvc3RNZXNzYWdlKCIiKTsKKyAgICAgICAgaW5zcGVjdGVkV2luZG93LnNldFRp
bWVvdXQoY2FsbGJhY2ssIDApOworICAgIH0KK307CiAKLS8vIEZJWE1FOiBXcmFwIFdlYkdMIGNv
bnRleHQgZm9yIGluc3RydW1lbnRhdGlvbi4KLXJldHVybiBnbENvbnRleHQ7Cit2YXIgaW5qZWN0
ZWRTY3JpcHQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQoKTsKK3JldHVybiBpbmplY3RlZFNjcmlwdDsK
IAogfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBhNDA3NTI1
OWFmZjliODdlYjIzYmZmMjg3MTk0OTI3ZTUyMWRkZTkyLi42NDNmYWUzODM3NTM2MzMxNDU4ZjQ0
YzFmMzcxZTAwNTA2MmQxMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCkBAIC01MzksOSArNTM5LDkgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAi
bmFtZSI6ICJpc29sYXRlZENvbnRleHRDcmVhdGVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZXh0IiwgIiRyZWYi
OiAiRXhlY3V0aW9uQ29udGV4dERlc2NyaXB0aW9uIiwgImRlc2NyaXB0aW9uIjogIkEgbmV3bHkg
Y3JlYXRlZCBpc29sYXRlZCBjb250ZXguIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiY29udGV4dCIsICIkcmVmIjogIkV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlvbiIsICJkZXNj
cmlwdGlvbiI6ICJBIG5ld2x5IGNyZWF0ZWQgaXNvbGF0ZWQgY29udGV4dC4iIH0KICAgICAgICAg
ICAgICAgICBdLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJc3N1ZWQgd2hlbiBu
ZXcgaXNvbGF0ZWQgY29udGV4dCBpcyBjcmVhdGVkLiIKKyAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiSXNzdWVkIHdoZW4gYSBuZXcgaXNvbGF0ZWQgY29udGV4dCBpcyBjcmVhdGVkLiIK
ICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCkBAIC0yODI1LDcgKzI4MjUsMTMgQEAK
ICAgICB7CiAgICAgICAgICJkb21haW4iOiAiV2ViR0wiLAogICAgICAgICAiaGlkZGVuIjogdHJ1
ZSwKLSAgICAgICAgInR5cGVzIjogW10sCisgICAgICAgICJ0eXBlcyI6IFsKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiT2JqZWN0SWQiLAorICAgICAgICAgICAgICAgICJ0
eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBp
ZGVudGlmaWVyIG9mIGEgV2ViR0wgb2JqZWN0LiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwK
ICAgICAgICAgImNvbW1hbmRzIjogWwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJu
YW1lIjogImVuYWJsZSIsCkBAIC0yODM0LDggKzI4NDAsMzIgQEAKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAibmFtZSI6ICJkaXNhYmxlIiwKICAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRGlzYWJsZXMgV2ViR0wgaW5zcGVjdGlvbi4iCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImNhcHR1cmVGcmFtZSIsCisgICAg
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiY29udGV4dElkIiwgIiRyZWYiOiAiT2JqZWN0SWQiLCAiZGVzY3JpcHRpb24iOiAiV2ViR0wg
Y29udGV4dCB0byBjYXB0dXJlIHRoZSBjYWxscyBmb3IuIiB9CisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2FwdHVyZXMgV2ViR0wgZnVuY3Rpb24g
Y2FsbHMgb24gYSBnaXZlbiBjb250ZXh0IGZvciB0aGUgbmV4dCBmcmFtZS4iCiAgICAgICAgICAg
ICB9CiAgICAgICAgIF0sCi0gICAgICAgICJldmVudHMiOiBbXQorICAgICAgICAiZXZlbnRzIjog
WworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImNvbnRleHRDcmVhdGVk
IiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJjb250ZXh0SWQiLCAiJHJlZiI6ICJPYmplY3RJZCIsICJkZXNjcmlwdGlvbiI6
ICJXZWJHTCBjb250ZXh0IGhhbmRsZS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJJc3N1ZWQgd2hlbiBhIG5ldyBXZWJHTCByZW5kZXJpbmcg
Y29udGV4dCBpcyBjcmVhdGVkLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgIm5hbWUiOiAicmVwb3J0RnVuY3Rpb25DYWxsIiwKKyAgICAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZXh0
SWQiLCAiJHJlZiI6ICJPYmplY3RJZCIsICJkZXNjcmlwdGlvbiI6ICJXZWJHTCBjb250ZXh0IG9u
IHdoaWNoIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJmdW5jdGlvbk5hbWUiLCAidHlwZSI6ICJzdHJpbmciIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiYXJncyIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAg
ICAgICAgICAgICBdCisgICAgICAgICAgICB9CisgICAgICAgIF0KICAgICB9XQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggYmU5MmEx
M2ZjN2IzY2Q4NTYxMzYzOGU2MTg4NzdjODJmYjJjMzlhYy4uODhkMjIxM2EyMjI1N2ZiZWU1NGM4
NDFhYzdlYjZjZjU5OGE4NjdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWxsSW5PbmUuY3BwCkBAIC0zMiw4ICszMiwxMCBAQAogI2luY2x1ZGUgIkRPTVBhdGNo
U3VwcG9ydC5jcHAiCiAjaW5jbHVkZSAiSWRlbnRpZmllcnNGYWN0b3J5LmNwcCIKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdC5jcHAiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCIK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuY3BwIgogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAiCisjaW5jbHVkZSAiSW5qZWN0ZWRXZWJHTFNjcmlwdC5jcHAiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmNwcCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBm
OWY0ZTYyNTYwYTZmNTgyMDNmMDVlODM5MDU3NGRlMjg5Y2ViNjI5Li5hM2M0ZTc2NTJjNWNiODVm
MzcyZTYyZGE0NWYyNzhhZDFkMGM2MDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xNDYsNyArMTQ2LDkgQEAgSW5zcGVjdG9y
Q29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGll
bnQqIGluc3BlY3RvckMKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIG1fYWdlbnRz
LmFwcGVuZChJbnNwZWN0b3JXZWJHTEFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpOwor
ICAgIE93blB0cjxJbnNwZWN0b3JXZWJHTEFnZW50PiB3ZWJnbEFnZW50UHRyKEluc3BlY3Rvcldl
YkdMQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0
KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CisgICAgSW5zcGVjdG9yV2ViR0xB
Z2VudCogd2ViZ2xBZ2VudCA9IHdlYmdsQWdlbnRQdHIuZ2V0KCk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKHdlYmdsQWdlbnRQdHIucmVsZWFzZSgpKTsKICNlbmRpZgogCiAgICAgQVNTRVJUX0FSRyhp
bnNwZWN0b3JDbGllbnQsIGluc3BlY3RvckNsaWVudCk7CkBAIC0xNTcsNyArMTU5LDEyIEBAIElu
c3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVj
dG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAjZW5kaWYKICAgICAgICAgLCBkb21TdG9yYWdlQWdlbnQK
ICAgICAgICAgLCBtX2RvbUFnZW50CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAg
ICAgICAgICwgbV9kZWJ1Z2dlckFnZW50CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAg
ICAgICwgd2ViZ2xBZ2VudAorI2VuZGlmCiAgICAgKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldlYkdMQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkdM
QWdlbnQuY3BwCmluZGV4IGU4YzQ1N2I5NmNhNTM0ZWIyMmJkYWU0Nzk2YTAwMjAxMDQ2M2ZlMWIu
LmE5NjE3YjJhYjk4Yzg2MWQ2NzQ4OTM5YTUwZDM3YTlkNzZmNGNkNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJHTEFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViR0xBZ2VudC5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJHTEFnZW50LmgiCiAKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJJbmplY3RlZFdlYkdMU2NyaXB0LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5o
IgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKQEAgLTk0LDYgKzk1LDI3IEBAIHZv
aWQgSW5zcGVjdG9yV2ViR0xBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9zdGF0
ZS0+c2V0Qm9vbGVhbihXZWJHTEFnZW50U3RhdGU6OndlYkdMQWdlbnRFbmFibGVkLCBtX2VuYWJs
ZWQpOwogfQogCit2b2lkIEluc3BlY3RvcldlYkdMQWdlbnQ6OmNhcHR1cmVGcmFtZShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY29udGV4dElkKQoreworICAgIEluamVj
dGVkV2ViR0xTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+
aW5qZWN0ZWRXZWJHTFNjcmlwdEZvck9iamVjdElkKGNvbnRleHRJZCk7CisgICAgaWYgKGluamVj
dGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFs
IGVycm9yIjsKKyAgICBlbHNlCisgICAgICAgIGluamVjdGVkU2NyaXB0LmNhcHR1cmVGcmFtZShl
cnJvclN0cmluZywgY29udGV4dElkKTsKK30KKwordm9pZCBJbnNwZWN0b3JXZWJHTEFnZW50Ojpj
b250ZXh0Q3JlYXRlZChjb25zdCBTdHJpbmcmIGNvbnRleHRJZCkKK3sKKyAgICBpZiAobV9mcm9u
dGVuZCkKKyAgICAgICAgbV9mcm9udGVuZC0+Y29udGV4dENyZWF0ZWQoY29udGV4dElkKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JXZWJHTEFnZW50OjpyZXBvcnRGdW5jdGlvbkNhbGwoY29uc3QgU3Ry
aW5nJiBjb250ZXh0SWQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcm
IGFyZ3MsIGNvbnN0IFN0cmluZyYgcmVzdWx0KQoreworICAgIGlmIChtX2Zyb250ZW5kKQorICAg
ICAgICBtX2Zyb250ZW5kLT5yZXBvcnRGdW5jdGlvbkNhbGwoY29udGV4dElkLCBmdW5jdGlvbk5h
bWUsIGFyZ3MsIHJlc3VsdCk7Cit9CisKIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JXZWJHTEFnZW50
Ojp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0IFNjcmlw
dE9iamVjdCYgZ2xDb250ZXh0KQogewogICAgIHJldHVybiBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci0+d3JhcFdlYkdMUmVuZGVyaW5nQ29udGV4dEZvckluc3RydW1lbnRhdGlvbihnbENvbnRleHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkdMQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJHTEFnZW50LmgKaW5k
ZXggYTkxZThiOTA2NzhhMzMzNjJmMjMzZmE2YTM2ZGQ5OWI2MmUyYjRmZS4uNmZhMDU5NDU3Nzg2
MDY1NTc1NDJlY2U4Y2E4ODU1ZDY1ZTE1MzE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvcldlYkdMQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yV2ViR0xBZ2VudC5oCkBAIC02OCw4ICs2OCwxMSBAQCBwdWJsaWM6CiAg
ICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FwdHVyZUZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBjb250ZXh0SWQpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGluamVjdGVkIHNjcmlwdC4K
KyAgICB2b2lkIGNvbnRleHRDcmVhdGVkKGNvbnN0IFN0cmluZyYgY29udGV4dElkKTsKKyAgICB2
b2lkIHJlcG9ydEZ1bmN0aW9uQ2FsbChjb25zdCBTdHJpbmcmIGNvbnRleHRJZCwgY29uc3QgU3Ry
aW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXJncywgY29uc3QgU3RyaW5nJiByZXN1
bHQpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcAppbmRleCA0ZDE2ZWI2MzAwYjZhMjA2NzBhYjNkNGVmNzgyODFhMjE2N2RhY2EwLi5i
OGJkOGIxMTJlZjdjZWYzNDg2MGY3NjM0MjliZmViMjFiYjQzMGM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC0xMTEsMTQgKzExMSwxOSBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleAogI2VuZGlmCiAgICAg
ICAgICwgMAogICAgICAgICAsIDAKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAg
ICAgICAgLCAwCisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCR0wpCiAgICAgICAgICwgMAorI2VuZGlm
CiAgICAgKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIG1fcnVudGlt
ZUFnZW50LT5zZXRTY3JpcHREZWJ1Z1NlcnZlcigmbV9kZWJ1Z2dlckFnZW50LT5zY3JpcHREZWJ1
Z1NlcnZlcigpKTsKICNlbmRpZgogfQotIAorCiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjp+
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpCiB7CiAgICAgZGlzY29ubmVjdEZyb250ZW5kKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159385</attachid>
            <date>2012-08-20 03:22:43 -0700</date>
            <delta_ts>2012-08-20 07:23:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88973-20120820142203.patch</filename>
            <type>text/plain</type>
            <size>16002</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg3OTdiMWE5MjJkM2M3
M2ZhN2M0OGI2NGE0Mjg0MDU0OGQ5YzM2MC4uOGIzZThiOTUyYjYzZGRjNDdhN2FhOWE5ODM0NjJl
MjFlNTgxMTkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA4LTIwICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gQWRkIG1pbmltdW0gdHJhbnNwb3J0IHByb3RvY29sIGZyb20gYmFja2VuZCB0
byBmcm9udGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCB0aGUgZm9sbG93aW5nIHByb3RvY29sIG1ldGhvZHMgdG8gY29tbXVuaWNhdGUgd2l0
aCB0aGUgV2ViR0wgaW5qZWN0ZWQKKyAgICAgICAgbW9kdWxlOiBjYXB0dXJlRnJhbWUsIGdldFRy
YWNlTG9nLCBkcm9wVHJhY2VMb2csIHJlcGxheVRyYWNlTG9nLgorCisgICAgICAgICogaW5zcGVj
dG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0V2ViR0xNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHRXZWJHTE1vZHVsZTo6Y2FwdHVyZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZTo6ZHJvcFRyYWNlTG9nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6OmdldFRyYWNlTG9nKToK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6OnJlcGxheVRyYWNl
TG9nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZS5oOgor
ICAgICAgICAoSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNv
bnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXZWJHTEFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldlYkdMQWdlbnQ6Okluc3BlY3RvcldlYkdMQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV2ViR0xBZ2VudDo6ZHJvcFRyYWNlTG9n
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV2ViR0xB
Z2VudDo6Y2FwdHVyZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldlYkdMQWdl
bnQ6OmdldFRyYWNlTG9nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldlYkdMQWdlbnQ6
OnJlcGxheVRyYWNlTG9nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV2ViR0xBZ2Vu
dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXZWJH
TEFnZW50OjpjcmVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yV2ViR0xBZ2VudCk6CisKIDIwMTIt
MDgtMTkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtW
OF0gTW92ZSBjb250ZXh0RGVidWdJZCgpIGFuZCBzZXRDb250ZXh0RGVidWdJZCgpIGZyb20gVjhQ
cm94eSB0byBTY3JpcHRDb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CmluZGV4IDA5MjFmYTljZWM4MjdmMDdiNDlmZjE4
NmY0YTc0YjYwNWExY2RjYzMuLjgxN2VkMGI0NmZmY2Y2MjU4MjE4Y2MyYWE3N2EzYzU4NDYzOWMx
MjkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnB5CkBAIC01OCw3ICs1OCw3IEBAIFRZUEVfTkFNRV9GSVhfTUFQID0gewogCiAKIFRZ
UEVTX1dJVEhfUlVOVElNRV9DQVNUX1NFVCA9IGZyb3plbnNldChbIlJ1bnRpbWUuUmVtb3RlT2Jq
ZWN0IiwgIlJ1bnRpbWUuUHJvcGVydHlEZXNjcmlwdG9yIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkRlYnVnZ2VyLkZ1bmN0aW9uRGV0YWlscyIsICJEZWJ1Z2dl
ci5DYWxsRnJhbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RGVidWdnZXIuRnVuY3Rpb25EZXRhaWxzIiwgIkRlYnVnZ2VyLkNhbGxGcmFtZSIsICJXZWJHTC5U
cmFjZUxvZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhp
cyBzaG91bGQgYmUgYSB0ZW1wb3JhcnkgaGFjay4gVGltZWxpbmVFdmVudCBzaG91bGQgYmUgY3Jl
YXRlZCB2aWEgZ2VuZXJhdGVkIEMrKyBBUEkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJUaW1lbGluZS5UaW1lbGluZUV2ZW50Il0pCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlLmNwcAppbmRl
eCA3Mzc5MGRkMmZkZTAxMGMyZTM3Yjg0ZjM0MWQxM2NlYTgyMjBjYTdiLi4wY2QyYjM2MzMxNDU2
MzI0YzRiMWVmYTYzMzRhNWYxZjNhMGUyY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUuY3BwCkBAIC03MiwxNSArNzIs
NDkgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6OndyYXBXZWJHTENv
bnRleHQoY29uc3QgU2NyaXB0T2JqZWN0JiBnbEMKICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KGds
Q29udGV4dC5zY3JpcHRTdGF0ZSgpLCByZXN1bHRWYWx1ZSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRT
Y3JpcHRXZWJHTE1vZHVsZTo6Y2FwdHVyZUZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBjb250ZXh0SWQpCit2b2lkIEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6
OmNhcHR1cmVGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFN0cmluZyogdHJhY2VMb2dJ
ZCkKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgImNhcHR1cmVGcmFtZSIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNvbnRl
eHRJZCk7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKKyAgICBtYWtl
Q2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdFZhbHVlIHx8IHJl
c3VsdFZhbHVlLT50eXBlKCkgIT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcgfHwgIXJlc3Vs
dFZhbHVlLT5hc1N0cmluZyh0cmFjZUxvZ0lkKSkKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIklu
dGVybmFsIGVycm9yOiBjYXB0dXJlRnJhbWUiOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0V2Vi
R0xNb2R1bGU6OmRyb3BUcmFjZUxvZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdHJhY2VMb2dJZCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgImRyb3BUcmFjZUxvZyIpOworICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KHRyYWNlTG9nSWQpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CiAg
ICAgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwog
ICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKICAgICBpZiAoaGFkRXhjZXB0aW9uKQotICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiOworICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiSW50ZXJuYWwgZXJyb3I6IGRyb3BUcmFjZUxvZyI7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3Jp
cHRXZWJHTE1vZHVsZTo6Z2V0VHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRyYWNlTG9nSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6V2ViR0w6OlRyYWNlTG9n
PiogdHJhY2VMb2cpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJnZXRUcmFjZUxvZyIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KHRyYWNlTG9nSWQpOworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7
CisgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CisgICAgaWYgKCFyZXN1bHRW
YWx1ZSB8fCByZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEluc3BlY3RvclZhbHVlOjpUeXBlT2JqZWN0
KSB7CisgICAgICAgIGlmICghcmVzdWx0VmFsdWUtPmFzU3RyaW5nKGVycm9yU3RyaW5nKSkKKyAg
ICAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogZ2V0VHJhY2VMb2ciOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgICp0cmFjZUxvZyA9IFR5cGVCdWlsZGVyOjpXZWJH
TDo6VHJhY2VMb2c6OnJ1bnRpbWVDYXN0KHJlc3VsdFZhbHVlKTsKK30KKwordm9pZCBJbmplY3Rl
ZFNjcmlwdFdlYkdMTW9kdWxlOjpyZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgdHJhY2VMb2dJZCwgaW50IHN0ZXBObywgU3RyaW5nKiByZXN1bHQp
Cit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJyZXBsYXlUcmFjZUxvZyIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHRyYWNl
TG9nSWQpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHN0ZXBObyk7CisgICAgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJl
c3VsdFZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdFZhbHVlIHx8IHJlc3VsdFZhbHVlLT50eXBlKCkg
IT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcgfHwgIXJlc3VsdFZhbHVlLT5hc1N0cmluZyhy
ZXN1bHQpKQorICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlcGxheVRy
YWNlTG9nIjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlLmgKaW5kZXggNTBjOWU1
MjY2YWMwOTdkZTVjZDRhNjZhZjNkMjViMWQ1MGJlM2JhNi4uYWQ2NzkzNzVlNjNlNzU3OWZiZjUz
ODRhMTc0NjkwZGI4OTQ4ZjI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZS5oCkBAIC00OSw3ICs0OSwxMCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUgbW9kdWxlRm9yU3RhdGUoSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgU2NyaXB0U3RhdGUqKTsKIAogICAgIFNjcmlwdE9iamVjdCB3
cmFwV2ViR0xDb250ZXh0KGNvbnN0IFNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KTsKLSAgICB2b2lk
IGNhcHR1cmVGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29udGV4dElkKTsKKyAg
ICB2b2lkIGNhcHR1cmVGcmFtZShFcnJvclN0cmluZyosIFN0cmluZyopOworICAgIHZvaWQgZHJv
cFRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBnZXRUcmFj
ZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYsIFJlZlB0cjxUeXBlQnVpbGRlcjo6V2Vi
R0w6OlRyYWNlTG9nPiopOworICAgIHZvaWQgcmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmLCBpbnQsIFN0cmluZyopOwogCiBwcml2YXRlOgogICAgIEluamVjdGVkU2Ny
aXB0V2ViR0xNb2R1bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpp
bmRleCA0ZTY0NGRjNTYxMmQwMDBmMDhkYzNiMWQ3NzE3MmQwMWZkZTA0NDNmLi5kNmQ1YTA2YTk1
YmYyNGIyNmM5MTI4MWExZjU3YWNkOGI2NWZhYmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uCkBAIC0zMTE3LDcgKzMxMTcsMjggQEAKICAgICB7CiAgICAgICAgICJk
b21haW4iOiAiV2ViR0wiLAogICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKLSAgICAgICAgInR5cGVz
IjogW10sCisgICAgICAgICJ0eXBlcyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAiaWQiOiAiVHJhY2VMb2dJZCIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwK
KyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIG9iamVjdCBpZGVudGlmaWVy
LiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjog
IkNhbGwiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAg
ICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnVuY3Rp
b25OYW1lIiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiVHJhY2VMb2ciLAor
ICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgInByb3Bl
cnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaWQiLCAiJHJlZiI6ICJU
cmFjZUxvZ0lkIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhbGxzIiwgInR5
cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNhbGwiIH19CisgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgfQorICAgICAgICBdLAogICAgICAgICAiY29tbWFuZHMiOiBbCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZW5hYmxlIiwKQEAgLTMxMjYs
NiArMzE0NywzNyBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImRp
c2FibGUiLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBXZWJHTCBp
bnNwZWN0aW9uLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgIm5hbWUiOiAiZHJvcFRyYWNlTG9nIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0cmFjZUxvZ0lkIiwgIiRyZWYiOiAi
VHJhY2VMb2dJZCIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FwdHVyZUZyYW1lIiwKKyAgICAgICAg
ICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0cmFj
ZUxvZ0lkIiwgIiRyZWYiOiAiVHJhY2VMb2dJZCIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0VHJh
Y2VMb2ciLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInRyYWNlTG9nSWQiLCAiJHJlZiI6ICJUcmFjZUxvZ0lkIiB9CisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ0cmFjZUxvZyIsICIkcmVmIjogIlRyYWNlTG9nIiB9CisgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJyZXBsYXlUcmFjZUxvZyIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRl
cnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHJhY2VMb2dJZCIsICIkcmVm
IjogIlRyYWNlTG9nSWQiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RlcE5v
IiwgInR5cGUiOiAiaW50ZWdlciIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NyZWVuc2hv
dERhdGFVcmwiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAgICAgICAgICBdCiAgICAgICAg
ICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbXQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDVhMGYzYmY0MzRk
ODYwYTc2Y2ZhMGM5Zjc1YWJlZDBhY2RmZGQ2YTcuLmM4NWY0ZDRjYTg1MWQzOWQzYzIwMGIyNjIy
NjU1OTA4NzFiM2ZkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVy
OjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVj
dG9yQwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgbV9hZ2VudHMuYXBwZW5kKElu
c3BlY3RvcldlYkdMQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1f
c3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CisgICAgbV9hZ2Vu
dHMuYXBwZW5kKEluc3BlY3RvcldlYkdMQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdl
dCgpKSk7CiAjZW5kaWYKIAogICAgIEFTU0VSVF9BUkcoaW5zcGVjdG9yQ2xpZW50LCBpbnNwZWN0
b3JDbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldlYkdMQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkdM
QWdlbnQuY3BwCmluZGV4IDRkYzRkMzVjZmYzODhkMmM0YWQ1NGU3YjRmOGQ1YmUzMmYzYjM4ZjEu
Ljk0MzljYzFmMTliYzM3MWU1OGNkMGZkOGNiYzRiNTQwNTk1ODFlYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJHTEFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViR0xBZ2VudC5jcHAKQEAgLTM0LDExICsz
NCwxMyBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViR0xBZ2VudC5oIgogCisjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlLmgiIAogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnN0
cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdE9i
amVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAKQEAgLTQ4LDggKzUwLDkgQEAgbmFt
ZXNwYWNlIFdlYkdMQWdlbnRTdGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hhciB3ZWJHTEFnZW50RW5h
YmxlZFtdID0gIndlYkdMQWdlbnRFbmFibGVkIjsKIH07CiAKLUluc3BlY3RvcldlYkdMQWdlbnQ6
Okluc3BlY3RvcldlYkdMQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TWFuYWdlcikKK0luc3BlY3RvcldlYkdMQWdlbnQ6Okluc3BlY3RvcldlYkdMQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3Rh
dGUqIHN0YXRlLCBQYWdlKiBwYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TWFuYWdlcikKICAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JXZWJHTEFnZW50
PigiV2ViR0wiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkKKyAgICAsIG1faW5zcGVjdGVk
UGFnZShwYWdlKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKQogICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQpAQCAt
OTUsNiArOTgsNjUgQEAgdm9pZCBJbnNwZWN0b3JXZWJHTEFnZW50OjpkaXNhYmxlKEVycm9yU3Ry
aW5nKikKICAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFdlYkdMQWdlbnRTdGF0ZTo6d2ViR0xBZ2Vu
dEVuYWJsZWQsIG1fZW5hYmxlZCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yV2ViR0xBZ2VudDo6ZHJv
cFRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB0cmFjZUxv
Z0lkKQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQodHJhY2VMb2dJZCk7CisgICAg
aWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgeworICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlIG1vZHVsZSA9IEluamVjdGVkU2NyaXB0V2ViR0xN
b2R1bGU6Om1vZHVsZUZvclN0YXRlKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNj
cmlwdC5zY3JpcHRTdGF0ZSgpKTsKKyAgICBpZiAobW9kdWxlLmhhc05vVmFsdWUoKSkgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVy
bmFsIGVycm9yOiBubyBXZWJHTCBtb2R1bGUiOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IG1vZHVsZS5kcm9wVHJhY2VMb2coZXJyb3JTdHJpbmcsIHRyYWNlTG9nSWQpOworfQorCit2b2lk
IEluc3BlY3RvcldlYkdMQWdlbnQ6OmNhcHR1cmVGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIFN0cmluZyogdHJhY2VMb2dJZCkKK3sKKyAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUg
PSBtYWluV29ybGRTY3JpcHRTdGF0ZShtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpKTsKKyAg
ICBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlIG1vZHVsZSA9IEluamVjdGVkU2NyaXB0V2ViR0xN
b2R1bGU6Om1vZHVsZUZvclN0YXRlKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBzY3JpcHRTdGF0
ZSk7CisgICAgaWYgKG1vZHVsZS5oYXNOb1ZhbHVlKCkpIHsKKyAgICAgICAgKmVycm9yU3RyaW5n
ID0gIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSI7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgbW9kdWxlLmNhcHR1cmVGcmFtZShlcnJvclN0cmluZywgdHJhY2VMb2dJZCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yV2ViR0xBZ2VudDo6Z2V0VHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRyYWNlTG9nSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6V2ViR0w6
OlRyYWNlTG9nPiYgdHJhY2VMb2cpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZCh0
cmFjZUxvZ0lkKTsKKyAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CisgICAg
ICAgICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUgbW9kdWxlID0gSW5q
ZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZTo6bW9kdWxlRm9yU3RhdGUobV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIsIGluamVjdGVkU2NyaXB0LnNjcmlwdFN0YXRlKCkpOworICAgIGlmIChtb2R1bGUuaGFz
Tm9WYWx1ZSgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAqZXJy
b3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IG5vIFdlYkdMIG1vZHVsZSI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgbW9kdWxlLmdldFRyYWNlTG9nKGVycm9yU3RyaW5nLCB0cmFjZUxv
Z0lkLCAmdHJhY2VMb2cpOworfQorCit2b2lkIEluc3BlY3RvcldlYkdMQWdlbnQ6OnJlcGxheVRy
YWNlTG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB0cmFjZUxvZ0lk
LCBpbnQgc3RlcE5vLCBTdHJpbmcqIHJlc3VsdCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9i
amVjdElkKHRyYWNlTG9nSWQpOworICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkp
IHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSBtb2R1
bGUgPSBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlOjptb2R1bGVGb3JTdGF0ZShtX2luamVjdGVk
U2NyaXB0TWFuYWdlciwgaW5qZWN0ZWRTY3JpcHQuc2NyaXB0U3RhdGUoKSk7CisgICAgaWYgKG1v
ZHVsZS5oYXNOb1ZhbHVlKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogbm8gV2ViR0wgbW9kdWxlIjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtb2R1bGUucmVwbGF5VHJhY2VMb2coZXJyb3JTdHJp
bmcsIHRyYWNlTG9nSWQsIHN0ZXBObywgcmVzdWx0KTsKK30KKwogU2NyaXB0T2JqZWN0IEluc3Bl
Y3RvcldlYkdMQWdlbnQ6OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRp
b24oY29uc3QgU2NyaXB0T2JqZWN0JiBnbENvbnRleHQpCiB7CiAgICAgaWYgKGdsQ29udGV4dC5o
YXNOb1ZhbHVlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXZWJHTEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2Vi
R0xBZ2VudC5oCmluZGV4IGE5MWU4YjkwNjc4YTMzMzYyZjIzM2ZhNmEzNmRkOTliNjJlMmI0ZmUu
LmI1ODc5NDk4M2UyNDIwM2U5MjczMTY2YTZhYzY5MmM2OGY5YTM2YzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJHTEFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkdMQWdlbnQuaApAQCAtMzUsNiArMzUsNyBA
QAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgpAQCAtNDUsMTUgKzQ2LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvclN0YXRlOwogY2xh
c3MgSW5zdHJ1bWVudGluZ0FnZW50czsKK2NsYXNzIFBhZ2U7CiBjbGFzcyBTY3JpcHRPYmplY3Q7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFzcyBJbnNwZWN0b3JXZWJHTEFn
ZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JXZWJHTEFnZW50PiwgcHVi
bGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpXZWJHTENvbW1hbmRIYW5kbGVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JXZWJHTEFnZW50PiBjcmVhdGUo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUq
IHN0YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JXZWJHTEFnZW50PiBjcmVhdGUoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQ
YWdlKiBwYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yV2ViR0xBZ2VudChp
bnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yV2ViR0xBZ2VudChpbnN0cnVtZW50aW5n
QWdlbnRzLCBzdGF0ZSwgcGFnZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7CiAgICAgfQogICAg
IH5JbnNwZWN0b3JXZWJHTEFnZW50KCk7CiAKQEAgLTY4LDE0ICs3MCwxOSBAQCBwdWJsaWM6CiAg
ICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCB2b2lkIGNhcHR1cmVGcmFtZShFcnJvclN0cmluZyosIFN0cmluZyop
OworICAgIHZpcnR1YWwgdm9pZCBnZXRUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYsIFJlZlB0cjxUeXBlQnVpbGRlcjo6V2ViR0w6OlRyYWNlTG9nPiYpOworICAgIHZpcnR1YWwg
dm9pZCByZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYsIGludCwgU3Ry
aW5nKik7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5qZWN0ZWQgc2NyaXB0LgogCiAgICAg
Ly8gQ2FsbGVkIGZyb20gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAKIHByaXZhdGU6Ci0gICAg
SW5zcGVjdG9yV2ViR0xBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUq
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKyAgICBJbnNwZWN0b3JXZWJHTEFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqKTsKIAorICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKICAgICBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvckZyb250ZW5k
OjpXZWJHTCogbV9mcm9udGVuZDsKICAgICBib29sIG1fZW5hYmxlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159420</attachid>
            <date>2012-08-20 07:23:51 -0700</date>
            <delta_ts>2012-08-22 03:59:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88973-20120820182311.patch</filename>
            <type>text/plain</type>
            <size>16175</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg3OTdiMWE5MjJkM2M3
M2ZhN2M0OGI2NGE0Mjg0MDU0OGQ5YzM2MC4uOGIzZThiOTUyYjYzZGRjNDdhN2FhOWE5ODM0NjJl
MjFlNTgxMTkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA4LTIwICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gQWRkIG1pbmltdW0gdHJhbnNwb3J0IHByb3RvY29sIGZyb20gYmFja2VuZCB0
byBmcm9udGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCB0aGUgZm9sbG93aW5nIHByb3RvY29sIG1ldGhvZHMgdG8gY29tbXVuaWNhdGUgd2l0
aCB0aGUgV2ViR0wgaW5qZWN0ZWQKKyAgICAgICAgbW9kdWxlOiBjYXB0dXJlRnJhbWUsIGdldFRy
YWNlTG9nLCBkcm9wVHJhY2VMb2csIHJlcGxheVRyYWNlTG9nLgorCisgICAgICAgICogaW5zcGVj
dG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0V2ViR0xNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHRXZWJHTE1vZHVsZTo6Y2FwdHVyZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZTo6ZHJvcFRyYWNlTG9nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6OmdldFRyYWNlTG9nKToK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6OnJlcGxheVRyYWNl
TG9nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZS5oOgor
ICAgICAgICAoSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNv
bnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXZWJHTEFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldlYkdMQWdlbnQ6Okluc3BlY3RvcldlYkdMQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV2ViR0xBZ2VudDo6ZHJvcFRyYWNlTG9n
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV2ViR0xB
Z2VudDo6Y2FwdHVyZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldlYkdMQWdl
bnQ6OmdldFRyYWNlTG9nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldlYkdMQWdlbnQ6
OnJlcGxheVRyYWNlTG9nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV2ViR0xBZ2Vu
dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXZWJH
TEFnZW50OjpjcmVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yV2ViR0xBZ2VudCk6CisKIDIwMTIt
MDgtMTkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtW
OF0gTW92ZSBjb250ZXh0RGVidWdJZCgpIGFuZCBzZXRDb250ZXh0RGVidWdJZCgpIGZyb20gVjhQ
cm94eSB0byBTY3JpcHRDb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CmluZGV4IDA5MjFmYTljZWM4MjdmMDdiNDlmZjE4
NmY0YTc0YjYwNWExY2RjYzMuLjgxN2VkMGI0NmZmY2Y2MjU4MjE4Y2MyYWE3N2EzYzU4NDYzOWMx
MjkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnB5CkBAIC01OCw3ICs1OCw3IEBAIFRZUEVfTkFNRV9GSVhfTUFQID0gewogCiAKIFRZ
UEVTX1dJVEhfUlVOVElNRV9DQVNUX1NFVCA9IGZyb3plbnNldChbIlJ1bnRpbWUuUmVtb3RlT2Jq
ZWN0IiwgIlJ1bnRpbWUuUHJvcGVydHlEZXNjcmlwdG9yIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkRlYnVnZ2VyLkZ1bmN0aW9uRGV0YWlscyIsICJEZWJ1Z2dl
ci5DYWxsRnJhbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RGVidWdnZXIuRnVuY3Rpb25EZXRhaWxzIiwgIkRlYnVnZ2VyLkNhbGxGcmFtZSIsICJXZWJHTC5U
cmFjZUxvZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhp
cyBzaG91bGQgYmUgYSB0ZW1wb3JhcnkgaGFjay4gVGltZWxpbmVFdmVudCBzaG91bGQgYmUgY3Jl
YXRlZCB2aWEgZ2VuZXJhdGVkIEMrKyBBUEkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJUaW1lbGluZS5UaW1lbGluZUV2ZW50Il0pCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlLmNwcAppbmRl
eCA3Mzc5MGRkMmZkZTAxMGMyZTM3Yjg0ZjM0MWQxM2NlYTgyMjBjYTdiLi5iNTNiZTkyMTQ0ZmJk
N2U3Y2Y0YTBiZGI0MGI5OWE0ZGYwNGE0ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUuY3BwCkBAIC03MiwxNSArNzIs
NDkgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6OndyYXBXZWJHTENv
bnRleHQoY29uc3QgU2NyaXB0T2JqZWN0JiBnbEMKICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KGds
Q29udGV4dC5zY3JpcHRTdGF0ZSgpLCByZXN1bHRWYWx1ZSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRT
Y3JpcHRXZWJHTE1vZHVsZTo6Y2FwdHVyZUZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBjb250ZXh0SWQpCit2b2lkIEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6
OmNhcHR1cmVGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFN0cmluZyogdHJhY2VMb2dJ
ZCkKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmpl
Y3QoKSwgImNhcHR1cmVGcmFtZSIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNvbnRl
eHRJZCk7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKKyAgICBtYWtl
Q2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdFZhbHVlIHx8IHJl
c3VsdFZhbHVlLT50eXBlKCkgIT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcgfHwgIXJlc3Vs
dFZhbHVlLT5hc1N0cmluZyh0cmFjZUxvZ0lkKSkKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIklu
dGVybmFsIGVycm9yOiBjYXB0dXJlRnJhbWUiOworfQorCit2b2lkIEluamVjdGVkU2NyaXB0V2Vi
R0xNb2R1bGU6OmRyb3BUcmFjZUxvZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdHJhY2VMb2dJZCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgImRyb3BUcmFjZUxvZyIpOworICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KHRyYWNlTG9nSWQpOwogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CiAg
ICAgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKGZ1bmN0aW9uLCBoYWRFeGNlcHRpb24pOwog
ICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKICAgICBpZiAoaGFkRXhjZXB0aW9uKQotICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiOworICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiSW50ZXJuYWwgZXJyb3I6IGRyb3BUcmFjZUxvZyI7Cit9CisKK3ZvaWQgSW5qZWN0ZWRTY3Jp
cHRXZWJHTE1vZHVsZTo6dHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHRyYWNlTG9nSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6V2ViR0w6OlRyYWNlTG9nPiog
dHJhY2VMb2cpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0T2JqZWN0KCksICJ0cmFjZUxvZyIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHRy
YWNlTG9nSWQpOworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CisgICAg
bWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CisgICAgaWYgKCFyZXN1bHRWYWx1ZSB8
fCByZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEluc3BlY3RvclZhbHVlOjpUeXBlT2JqZWN0KSB7Cisg
ICAgICAgIGlmICghcmVzdWx0VmFsdWUtPmFzU3RyaW5nKGVycm9yU3RyaW5nKSkKKyAgICAgICAg
ICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogdHJhY2VMb2ciOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgICp0cmFjZUxvZyA9IFR5cGVCdWlsZGVyOjpXZWJHTDo6VHJhY2VM
b2c6OnJ1bnRpbWVDYXN0KHJlc3VsdFZhbHVlKTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdFdl
YkdMTW9kdWxlOjpyZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdHJhY2VMb2dJZCwgaW50IHN0ZXBObywgU3RyaW5nKiByZXN1bHQpCit7CisgICAg
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJyZXBs
YXlUcmFjZUxvZyIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHRyYWNlTG9nSWQpOwor
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHN0ZXBObyk7CisgICAgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiByZXN1bHRWYWx1ZTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVl
KTsKKyAgICBpZiAoIXJlc3VsdFZhbHVlIHx8IHJlc3VsdFZhbHVlLT50eXBlKCkgIT0gSW5zcGVj
dG9yVmFsdWU6OlR5cGVTdHJpbmcgfHwgIXJlc3VsdFZhbHVlLT5hc1N0cmluZyhyZXN1bHQpKQor
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlcGxheVRyYWNlTG9nIjsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlLmgKaW5kZXggNTBjOWU1MjY2YWMwOTdk
ZTVjZDRhNjZhZjNkMjViMWQ1MGJlM2JhNi4uMzY4ODk4ZjdjNThiOWEwMTYyYThiNmQwYmM2OTkz
OWFjMGZhZDBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0V2ViR0xNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRXZWJHTE1vZHVsZS5oCkBAIC00NCwxNSArNDQsMTcgQEAgY2xhc3MgU2NyaXB0T2Jq
ZWN0OwogCiBjbGFzcyBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlIDogcHVibGljIEluamVjdGVk
U2NyaXB0TW9kdWxlIHsKIHB1YmxpYzoKKyAgICBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlKCk7
CisgICAgCiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMg
SW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSBtb2R1bGVGb3JTdGF0ZShJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBTY3JpcHRTdGF0ZSopOwogCiAgICAgU2NyaXB0T2JqZWN0IHdyYXBXZWJHTENvbnRl
eHQoY29uc3QgU2NyaXB0T2JqZWN0JiBnbENvbnRleHQpOwotICAgIHZvaWQgY2FwdHVyZUZyYW1l
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQpOwotCi1wcml2YXRlOgotICAg
IEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUoKTsKKyAgICB2b2lkIGNhcHR1cmVGcmFtZShFcnJv
clN0cmluZyosIFN0cmluZyopOworICAgIHZvaWQgZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB0cmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYsIFJlZlB0cjxUeXBlQnVpbGRlcjo6V2ViR0w6OlRyYWNlTG9nPiopOworICAgIHZvaWQg
cmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBpbnQsIFN0cmluZyop
OwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5k
ZXggNGU2NDRkYzU2MTJkMDAwZjA4ZGMzYjFkNzcxNzJkMDFmZGUwNDQzZi4uZDZkNWEwNmE5NWJm
MjRiMjZjOTEyODFhMWY1N2FjZDhiNjVmYWJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuanNvbgpAQCAtMzExNyw3ICszMTE3LDI4IEBACiAgICAgewogICAgICAgICAiZG9t
YWluIjogIldlYkdMIiwKICAgICAgICAgImhpZGRlbiI6IHRydWUsCi0gICAgICAgICJ0eXBlcyI6
IFtdLAorICAgICAgICAidHlwZXMiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ImlkIjogIlRyYWNlTG9nSWQiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBvYmplY3QgaWRlbnRpZmllci4i
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJD
YWxsIiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgICAg
ICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZ1bmN0aW9u
TmFtZSIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIlRyYWNlTG9nIiwKKyAg
ICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0
aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlkIiwgIiRyZWYiOiAiVHJh
Y2VMb2dJZCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxscyIsICJ0eXBl
IjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJDYWxsIiB9fQorICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjogWwogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCkBAIC0zMTI2LDYg
KzMxNDcsMzcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJkaXNh
YmxlIiwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgV2ViR0wgaW5z
cGVjdGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICJuYW1lIjogImRyb3BUcmFjZUxvZyIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBb
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHJhY2VMb2dJZCIsICIkcmVmIjogIlRy
YWNlTG9nSWQiIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImNhcHR1cmVGcmFtZSIsCisgICAgICAgICAg
ICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHJhY2VM
b2dJZCIsICIkcmVmIjogIlRyYWNlTG9nSWQiIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImdldFRyYWNl
TG9nIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ0cmFjZUxvZ0lkIiwgIiRyZWYiOiAiVHJhY2VMb2dJZCIgfQorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidHJhY2VMb2ciLCAiJHJlZiI6ICJUcmFjZUxvZyIgfQorICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgIm5hbWUiOiAicmVwbGF5VHJhY2VMb2ciLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRyYWNlTG9nSWQiLCAiJHJlZiI6
ICJUcmFjZUxvZ0lkIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0ZXBObyIs
ICJ0eXBlIjogImludGVnZXIiIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjcmVlbnNob3RE
YXRhVXJsIiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICAgICAgXQogICAgICAgICAg
ICAgfQogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjogW10KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA1YTBmM2JmNDM0ZDg2
MGE3NmNmYTBjOWY3NWFiZWQwYWNkZmRkNmE3Li5jODVmNGQ0Y2E4NTFkMzlkM2MyMDBiMjYyMjY1
NTkwODcxYjNmZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6
SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3Rv
ckMKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNw
ZWN0b3JXZWJHTEFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0
YXRlLmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChJbnNwZWN0b3JXZWJHTEFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQo
KSkpOwogI2VuZGlmCiAKICAgICBBU1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9y
Q2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JX
ZWJHTEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJHTEFn
ZW50LmNwcAppbmRleCA0ZGM0ZDM1Y2ZmMzg4ZDJjNGFkNTRlN2I0ZjhkNWJlMzJmM2IzOGYxLi4x
NmZmYmNmYTQwOWEzYWYyMmY4MTI1OGFiMGNhODA3MWExZDg1MzUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViR0xBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkdMQWdlbnQuY3BwCkBAIC0zNCwxMSArMzQs
MTMgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvcldlYkdMQWdlbnQuaCIKIAorI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZS5oIiAKICNpbmNsdWRlICJJbnNwZWN0b3JG
cm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zdHJ1
bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRPYmpl
Y3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogCkBAIC00OCw4ICs1MCw5IEBAIG5hbWVz
cGFjZSBXZWJHTEFnZW50U3RhdGUgewogc3RhdGljIGNvbnN0IGNoYXIgd2ViR0xBZ2VudEVuYWJs
ZWRbXSA9ICJ3ZWJHTEFnZW50RW5hYmxlZCI7CiB9OwogCi1JbnNwZWN0b3JXZWJHTEFnZW50OjpJ
bnNwZWN0b3JXZWJHTEFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCitJbnNwZWN0b3JXZWJHTEFnZW50OjpJbnNwZWN0b3JXZWJHTEFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRl
KiBzdGF0ZSwgUGFnZSogcGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIpCiAgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yV2ViR0xBZ2VudD4o
IldlYkdMIiwgaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUpCisgICAgLCBtX2luc3BlY3RlZFBh
Z2UocGFnZSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFu
YWdlcikKICAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKQEAgLTk1
LDYgKzk4LDM4IEBAIHZvaWQgSW5zcGVjdG9yV2ViR0xBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmlu
ZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihXZWJHTEFnZW50U3RhdGU6OndlYkdMQWdlbnRF
bmFibGVkLCBtX2VuYWJsZWQpOwogfQogCit2b2lkIEluc3BlY3RvcldlYkdMQWdlbnQ6OmRyb3BU
cmFjZUxvZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHJhY2VMb2dJ
ZCkKK3sKKyAgICBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlIG1vZHVsZSA9IGluamVjdGVkU2Ny
aXB0V2ViR0xNb2R1bGVGb3JUcmFjZUxvZ0lkKGVycm9yU3RyaW5nLCB0cmFjZUxvZ0lkKTsKKyAg
ICBpZiAoIW1vZHVsZS5oYXNOb1ZhbHVlKCkpCisgICAgICAgIG1vZHVsZS5kcm9wVHJhY2VMb2co
ZXJyb3JTdHJpbmcsIHRyYWNlTG9nSWQpOworfQorCit2b2lkIEluc3BlY3RvcldlYkdMQWdlbnQ6
OmNhcHR1cmVGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFN0cmluZyogdHJhY2VMb2dJ
ZCkKK3sKKyAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRTY3JpcHRTdGF0
ZShtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBJbmplY3RlZFNjcmlwdFdlYkdM
TW9kdWxlIG1vZHVsZSA9IEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6Om1vZHVsZUZvclN0YXRl
KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBzY3JpcHRTdGF0ZSk7CisgICAgaWYgKG1vZHVsZS5o
YXNOb1ZhbHVlKCkpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBmcmFtZSBo
YXMgZ29uZSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbW9kdWxlLmNhcHR1cmVGcmFt
ZShlcnJvclN0cmluZywgdHJhY2VMb2dJZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yV2ViR0xBZ2Vu
dDo6Z2V0VHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRy
YWNlTG9nSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6V2ViR0w6OlRyYWNlTG9nPiYgdHJhY2VMb2cp
Cit7CisgICAgSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSBtb2R1bGUgPSBpbmplY3RlZFNjcmlw
dFdlYkdMTW9kdWxlRm9yVHJhY2VMb2dJZChlcnJvclN0cmluZywgdHJhY2VMb2dJZCk7CisgICAg
aWYgKCFtb2R1bGUuaGFzTm9WYWx1ZSgpKQorICAgICAgICBtb2R1bGUudHJhY2VMb2coZXJyb3JT
dHJpbmcsIHRyYWNlTG9nSWQsICZ0cmFjZUxvZyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yV2ViR0xB
Z2VudDo6cmVwbGF5VHJhY2VMb2coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHRyYWNlTG9nSWQsIGludCBzdGVwTm8sIFN0cmluZyogcmVzdWx0KQoreworICAgIEluamVj
dGVkU2NyaXB0V2ViR0xNb2R1bGUgbW9kdWxlID0gaW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZUZv
clRyYWNlTG9nSWQoZXJyb3JTdHJpbmcsIHRyYWNlTG9nSWQpOworICAgIGlmICghbW9kdWxlLmhh
c05vVmFsdWUoKSkKKyAgICAgICAgbW9kdWxlLnJlcGxheVRyYWNlTG9nKGVycm9yU3RyaW5nLCB0
cmFjZUxvZ0lkLCBzdGVwTm8sIHJlc3VsdCk7Cit9CisKIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JX
ZWJHTEFnZW50Ojp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNv
bnN0IFNjcmlwdE9iamVjdCYgZ2xDb250ZXh0KQogewogICAgIGlmIChnbENvbnRleHQuaGFzTm9W
YWx1ZSgpKSB7CkBAIC0xMDksNiArMTQ0LDIyIEBAIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JXZWJH
TEFnZW50Ojp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvCiAg
ICAgcmV0dXJuIG1vZHVsZS53cmFwV2ViR0xDb250ZXh0KGdsQ29udGV4dCk7CiB9CiAKK0luamVj
dGVkU2NyaXB0V2ViR0xNb2R1bGUgSW5zcGVjdG9yV2ViR0xBZ2VudDo6aW5qZWN0ZWRTY3JpcHRX
ZWJHTE1vZHVsZUZvclRyYWNlTG9nSWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHRyYWNlTG9nSWQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZCh0cmFj
ZUxvZ0lkKTsKKyAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CisgICAgICAg
ICplcnJvclN0cmluZyA9ICJJbnNwZWN0ZWQgZnJhbWUgaGFzIGdvbmUiOworICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSgpOworICAgIH0KKyAgICBJbmplY3RlZFNjcmlw
dFdlYkdMTW9kdWxlIG1vZHVsZSA9IEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6Om1vZHVsZUZv
clN0YXRlKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5zY3JpcHRTdGF0
ZSgpKTsKKyAgICBpZiAobW9kdWxlLmhhc05vVmFsdWUoKSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBubyBX
ZWJHTCBtb2R1bGUiOworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSgp
OworICAgIH0KKyAgICByZXR1cm4gbW9kdWxlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoV0VCR0wpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViR0xBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkdMQWdlbnQuaAppbmRleCBhOTFlOGI5
MDY3OGEzMzM2MmYyMzNmYTZhMzZkZDk5YjYyZTJiNGZlLi4xZDM3NzFkMjI5ZjFlYTM2YjYwYjE5
OTkwZTYyMmFiZjZjMzcxN2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yV2ViR0xBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXZWJHTEFnZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkluc3BlY3Rv
ckJhc2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTQz
LDE3ICs0NCwxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmplY3RlZFNjcmlw
dE1hbmFnZXI7CitjbGFzcyBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlOwogY2xhc3MgSW5zcGVj
dG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOworY2xhc3MgUGFnZTsKIGNsYXNz
IFNjcmlwdE9iamVjdDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNzIElu
c3BlY3RvcldlYkdMQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rvcldl
YkdMQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OldlYkdMQ29tbWFu
ZEhhbmRsZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvcldlYkdM
QWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvcldlYkdMQWdlbnQ+IGNy
ZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JT
dGF0ZSogc3RhdGUsIFBhZ2UqIHBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0
b3JXZWJHTEFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBpbmplY3RlZFNjcmlwdE1h
bmFnZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JXZWJHTEFnZW50
KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBwYWdlLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIp
KTsKICAgICB9CiAgICAgfkluc3BlY3RvcldlYkdMQWdlbnQoKTsKIApAQCAtNjgsMTQgKzcxLDIx
IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1
YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShF
cnJvclN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBkcm9wVHJhY2VMb2coRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FwdHVyZUZyYW1lKEVycm9yU3Ry
aW5nKiwgU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGdldFRyYWNlTG9nKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpXZWJHTDo6VHJhY2VMb2c+Jik7
CisgICAgdmlydHVhbCB2b2lkIHJlcGxheVRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiwgaW50LCBTdHJpbmcqKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBz
Y3JpcHQuCiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KIAog
cHJpdmF0ZToKLSAgICBJbnNwZWN0b3JXZWJHTEFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOworICAgIEluc3BlY3Rvcldl
YkdMQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgUGFnZSosIElu
amVjdGVkU2NyaXB0TWFuYWdlciopOwogCisgICAgSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSBp
bmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlRm9yVHJhY2VMb2dJZChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYpOworCisgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluamVjdGVkU2Ny
aXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yRnJvbnRl
bmQ6OldlYkdMKiBtX2Zyb250ZW5kOwogICAgIGJvb2wgbV9lbmFibGVkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159879</attachid>
            <date>2012-08-22 01:28:58 -0700</date>
            <delta_ts>2012-08-22 03:59:31 -0700</delta_ts>
            <desc>Rebased patch to land</desc>
            <filename>bug-88973-20120822122856.patch</filename>
            <type>text/plain</type>
            <size>16192</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Mjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZjM2E3MTdhZDcxOGVj
YmViYzE1OGRiNjA3ODU5ZjE5NjMxYjBmMi4uNzljODM0N2I3YzdkMjlhMTMwN2ZhN2ZhNjVmZjgx
YjE1YTc3NzdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA4LTIwICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gQWRkIG1pbmltdW0gdHJhbnNwb3J0IHByb3RvY29sIGZyb20gYmFja2VuZCB0
byBmcm9udGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCB0aGUgZm9sbG93aW5nIHByb3RvY29sIG1ldGhvZHMgdG8gY29tbXVuaWNhdGUgd2l0
aCB0aGUgV2ViR0wgaW5qZWN0ZWQKKyAgICAgICAgbW9kdWxlOiBjYXB0dXJlRnJhbWUsIGdldFRy
YWNlTG9nLCBkcm9wVHJhY2VMb2csIHJlcGxheVRyYWNlTG9nLgorCisgICAgICAgICogaW5zcGVj
dG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0V2ViR0xNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3Jp
cHRXZWJHTE1vZHVsZTo6Y2FwdHVyZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZTo6ZHJvcFRyYWNlTG9nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6OmdldFRyYWNlTG9nKToK
KyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6OnJlcGxheVRyYWNl
TG9nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZS5oOgor
ICAgICAgICAoSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNv
bnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXZWJHTEFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldlYkdMQWdlbnQ6Okluc3BlY3RvcldlYkdMQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV2ViR0xBZ2VudDo6ZHJvcFRyYWNlTG9n
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV2ViR0xB
Z2VudDo6Y2FwdHVyZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldlYkdMQWdl
bnQ6OmdldFRyYWNlTG9nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldlYkdMQWdlbnQ6
OnJlcGxheVRyYWNlTG9nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV2ViR0xBZ2Vu
dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXZWJH
TEFnZW50OjpjcmVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yV2ViR0xBZ2VudCk6CisKIDIwMTIt
MDgtMjIgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgogCiAgICAgICAgIER5
bmFtaWNhbGx5IHN0eWxpbmcgU2hhZG93RG9tIGNvbnRlbnQgb24gYSBub2RlIGRpc3RyaWJ1dGVk
IHRvIGFub3RoZXIgc2hhZG93IGluc2VydGlvbiBwb2ludCBmYWlscy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXggNjg1MTMx
YjcyMWRlZWY0NWE4NmM0YjBmOThmZWNjMTFmN2I0NzE5MC4uZjQ2ZWQzNTVmMWY0YTk3NjdlYzQ2
NzAwNmJmZTM2NDBmNDI1NzcwZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTU5LDcgKzU5LDcgQEAgVFlQRV9OQU1FX0ZJ
WF9NQVAgPSB7CiAKIAogVFlQRVNfV0lUSF9SVU5USU1FX0NBU1RfU0VUID0gZnJvemVuc2V0KFsi
UnVudGltZS5SZW1vdGVPYmplY3QiLCAiUnVudGltZS5Qcm9wZXJ0eURlc2NyaXB0b3IiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVidWdnZXIuRnVuY3Rpb25E
ZXRhaWxzIiwgIkRlYnVnZ2VyLkNhbGxGcmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJEZWJ1Z2dlci5GdW5jdGlvbkRldGFpbHMiLCAiRGVidWdnZXIuQ2Fs
bEZyYW1lIiwgIldlYkdMLlRyYWNlTG9nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBiZSBhIHRlbXBvcmFyeSBoYWNrLiBUaW1lbGluZUV2
ZW50IHNob3VsZCBiZSBjcmVhdGVkIHZpYSBnZW5lcmF0ZWQgQysrIEFQSS4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRpbWVsaW5lLlRpbWVsaW5lRXZlbnQiXSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2Vi
R0xNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2Vi
R0xNb2R1bGUuY3BwCmluZGV4IDczNzkwZGQyZmRlMDEwYzJlMzdiODRmMzQxZDEzY2VhODIyMGNh
N2IuLmI1M2JlOTIxNDRmYmQ3ZTdjZjRhMGJkYjQwYjk5YTRkZjA0YTRkMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZS5j
cHAKQEAgLTcyLDE1ICs3Miw0OSBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRXZWJHTE1v
ZHVsZTo6d3JhcFdlYkdMQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmIGdsQwogICAgIHJldHVy
biBTY3JpcHRPYmplY3QoZ2xDb250ZXh0LnNjcmlwdFN0YXRlKCksIHJlc3VsdFZhbHVlKTsKIH0K
IAotdm9pZCBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlOjpjYXB0dXJlRnJhbWUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCkKK3ZvaWQgSW5qZWN0ZWRT
Y3JpcHRXZWJHTE1vZHVsZTo6Y2FwdHVyZUZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
U3RyaW5nKiB0cmFjZUxvZ0lkKQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY2FwdHVyZUZyYW1lIik7Ci0gICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoY29udGV4dElkKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3Vs
dFZhbHVlOworICAgIG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUpOworICAgIGlmICgh
cmVzdWx0VmFsdWUgfHwgcmVzdWx0VmFsdWUtPnR5cGUoKSAhPSBJbnNwZWN0b3JWYWx1ZTo6VHlw
ZVN0cmluZyB8fCAhcmVzdWx0VmFsdWUtPmFzU3RyaW5nKHRyYWNlTG9nSWQpKQorICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IGNhcHR1cmVGcmFtZSI7Cit9CisKK3ZvaWQg
SW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZTo6ZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiB0cmFjZUxvZ0lkKQoreworICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZHJvcFRyYWNlTG9nIik7Cisg
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7CiAgICAgYm9vbCBoYWRFeGNl
cHRpb24gPSBmYWxzZTsKICAgICBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24s
IGhhZEV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFoYWRFeGNlcHRpb24pOwogICAgIGlmIChoYWRF
eGNlcHRpb24pCi0gICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciI7CisgICAg
ICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogZHJvcFRyYWNlTG9nIjsKK30KKwor
dm9pZCBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlOjp0cmFjZUxvZyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHJhY2VMb2dJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpX
ZWJHTDo6VHJhY2VMb2c+KiB0cmFjZUxvZykKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInRyYWNlTG9nIik7CisgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQodHJhY2VMb2dJZCk7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBy
ZXN1bHRWYWx1ZTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdFZhbHVlKTsKKyAgICBp
ZiAoIXJlc3VsdFZhbHVlIHx8IHJlc3VsdFZhbHVlLT50eXBlKCkgIT0gSW5zcGVjdG9yVmFsdWU6
OlR5cGVPYmplY3QpIHsKKyAgICAgICAgaWYgKCFyZXN1bHRWYWx1ZS0+YXNTdHJpbmcoZXJyb3JT
dHJpbmcpKQorICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiB0cmFj
ZUxvZyI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgKnRyYWNlTG9nID0gVHlwZUJ1aWxk
ZXI6OldlYkdMOjpUcmFjZUxvZzo6cnVudGltZUNhc3QocmVzdWx0VmFsdWUpOworfQorCit2b2lk
IEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGU6OnJlcGxheVRyYWNlTG9nKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB0cmFjZUxvZ0lkLCBpbnQgc3RlcE5vLCBTdHJpbmcq
IHJlc3VsdCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgInJlcGxheVRyYWNlTG9nIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQodHJhY2VMb2dJZCk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc3RlcE5vKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOworICAgIG1ha2VDYWxsKGZ1bmN0
aW9uLCAmcmVzdWx0VmFsdWUpOworICAgIGlmICghcmVzdWx0VmFsdWUgfHwgcmVzdWx0VmFsdWUt
PnR5cGUoKSAhPSBJbnNwZWN0b3JWYWx1ZTo6VHlwZVN0cmluZyB8fCAhcmVzdWx0VmFsdWUtPmFz
U3RyaW5nKHJlc3VsdCkpCisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjog
cmVwbGF5VHJhY2VMb2ciOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZS5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUuaAppbmRl
eCA1MGM5ZTUyNjZhYzA5N2RlNWNkNGE2NmFmM2QyNWIxZDUwYmUzYmE2Li4zNjg4OThmN2M1OGI5
YTAxNjJhOGI2ZDBiYzY5OTM5YWMwZmFkMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlLmgKQEAgLTQ0LDE1ICs0NCwxNyBA
QCBjbGFzcyBTY3JpcHRPYmplY3Q7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUg
OiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRNb2R1bGUgewogcHVibGljOgorICAgIEluamVjdGVkU2Ny
aXB0V2ViR0xNb2R1bGUoKTsKKyAgICAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2UoKSBjb25z
dDsKIAogICAgIHN0YXRpYyBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlIG1vZHVsZUZvclN0YXRl
KEluamVjdGVkU2NyaXB0TWFuYWdlciosIFNjcmlwdFN0YXRlKik7CiAKICAgICBTY3JpcHRPYmpl
Y3Qgd3JhcFdlYkdMQ29udGV4dChjb25zdCBTY3JpcHRPYmplY3QmIGdsQ29udGV4dCk7Ci0gICAg
dm9pZCBjYXB0dXJlRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCk7
Ci0KLXByaXZhdGU6Ci0gICAgSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSgpOworICAgIHZvaWQg
Y2FwdHVyZUZyYW1lKEVycm9yU3RyaW5nKiwgU3RyaW5nKik7CisgICAgdm9pZCBkcm9wVHJhY2VM
b2coRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHRyYWNlTG9nKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpXZWJHTDo6VHJhY2VM
b2c+Kik7CisgICAgdm9pZCByZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYsIGludCwgU3RyaW5nKik7CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuanNvbgppbmRleCA0MmI5NzNiMjhlNTY2YjkyZDlkYzRjNjNmNGZiNWY3ODIwZWRh
Mzk4Li42ZmVkOGRjNzFjMTE3MzJjMDFiNzNiNWQ0NDE3NWVmZTc4NWI0ODI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0zMTM1LDcgKzMxMzUsMjggQEAKICAg
ICB7CiAgICAgICAgICJkb21haW4iOiAiV2ViR0wiLAogICAgICAgICAiaGlkZGVuIjogdHJ1ZSwK
LSAgICAgICAgInR5cGVzIjogW10sCisgICAgICAgICJ0eXBlcyI6IFsKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAiaWQiOiAiVHJhY2VMb2dJZCIsCisgICAgICAgICAgICAgICAgInR5
cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIG9i
amVjdCBpZGVudGlmaWVyLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgImlkIjogIkNhbGwiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIs
CisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZnVuY3Rpb25OYW1lIiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQi
OiAiVHJhY2VMb2ciLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAg
ICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
aWQiLCAiJHJlZiI6ICJUcmFjZUxvZ0lkIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImNhbGxzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNhbGwiIH19
CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfQorICAgICAgICBdLAogICAgICAgICAi
Y29tbWFuZHMiOiBbCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZW5h
YmxlIiwKQEAgLTMxNDQsNiArMzE2NSwzNyBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICJuYW1lIjogImRpc2FibGUiLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJE
aXNhYmxlcyBXZWJHTCBpbnNwZWN0aW9uLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZHJvcFRyYWNlTG9nIiwKKyAgICAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0cmFjZUxv
Z0lkIiwgIiRyZWYiOiAiVHJhY2VMb2dJZCIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FwdHVyZUZy
YW1lIiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJ0cmFjZUxvZ0lkIiwgIiRyZWYiOiAiVHJhY2VMb2dJZCIgfQorICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Im5hbWUiOiAiZ2V0VHJhY2VMb2ciLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRyYWNlTG9nSWQiLCAiJHJlZiI6ICJUcmFj
ZUxvZ0lkIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6
IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0cmFjZUxvZyIsICIkcmVmIjogIlRy
YWNlTG9nIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXBsYXlUcmFjZUxvZyIsCisgICAgICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHJh
Y2VMb2dJZCIsICIkcmVmIjogIlRyYWNlTG9nSWQiIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic3RlcE5vIiwgInR5cGUiOiAiaW50ZWdlciIgfQorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic2NyZWVuc2hvdERhdGFVcmwiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAgICAg
ICAgICBdCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbXQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDVhMGYzYmY0MzRkODYwYTc2Y2ZhMGM5Zjc1YWJlZDBhY2RmZGQ2YTcuLmM4NWY0ZDRjYTg1
MWQzOWQzYzIwMGIyNjIyNjU1OTA4NzFiM2ZkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgbV9h
Z2VudHMuYXBwZW5kKEluc3BlY3RvcldlYkdMQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgp
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvcldlYkdMQWdlbnQ6OmNyZWF0ZShtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2UsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpKSk7CiAjZW5kaWYKIAogICAgIEFTU0VSVF9BUkcoaW5zcGVjdG9y
Q2xpZW50LCBpbnNwZWN0b3JDbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcldlYkdMQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldlYkdMQWdlbnQuY3BwCmluZGV4IDRkYzRkMzVjZmYzODhkMmM0YWQ1NGU3YjRm
OGQ1YmUzMmYzYjM4ZjEuLjE2ZmZiY2ZhNDA5YTNhZjIyZjgxMjU4YWIwY2E4MDcxYTFkODUzNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJHTEFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViR0xBZ2VudC5j
cHAKQEAgLTM0LDExICszNCwxMyBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViR0xBZ2VudC5o
IgogCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlLmgiIAogI2lu
Y2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIK
ICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAKQEAgLTQ4
LDggKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkdMQWdlbnRTdGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hh
ciB3ZWJHTEFnZW50RW5hYmxlZFtdID0gIndlYkdMQWdlbnRFbmFibGVkIjsKIH07CiAKLUluc3Bl
Y3RvcldlYkdMQWdlbnQ6Okluc3BlY3RvcldlYkdMQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKK0luc3BlY3RvcldlYkdMQWdlbnQ6Oklu
c3BlY3RvcldlYkdMQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNw
ZWN0b3JXZWJHTEFnZW50PigiV2ViR0wiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSkKKyAg
ICAsIG1faW5zcGVjdGVkUGFnZShwYWdlKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIo
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9lbmFi
bGVkKGZhbHNlKQpAQCAtOTUsNiArOTgsMzggQEAgdm9pZCBJbnNwZWN0b3JXZWJHTEFnZW50Ojpk
aXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFdlYkdMQWdlbnRT
dGF0ZTo6d2ViR0xBZ2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9y
V2ViR0xBZ2VudDo6ZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiB0cmFjZUxvZ0lkKQoreworICAgIEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUgbW9k
dWxlID0gaW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZUZvclRyYWNlTG9nSWQoZXJyb3JTdHJpbmcs
IHRyYWNlTG9nSWQpOworICAgIGlmICghbW9kdWxlLmhhc05vVmFsdWUoKSkKKyAgICAgICAgbW9k
dWxlLmRyb3BUcmFjZUxvZyhlcnJvclN0cmluZywgdHJhY2VMb2dJZCk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yV2ViR0xBZ2VudDo6Y2FwdHVyZUZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
U3RyaW5nKiB0cmFjZUxvZ0lkKQoreworICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IG1h
aW5Xb3JsZFNjcmlwdFN0YXRlKG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkpOworICAgIElu
amVjdGVkU2NyaXB0V2ViR0xNb2R1bGUgbW9kdWxlID0gSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVs
ZTo6bW9kdWxlRm9yU3RhdGUobV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIHNjcmlwdFN0YXRlKTsK
KyAgICBpZiAobW9kdWxlLmhhc05vVmFsdWUoKSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
SW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBt
b2R1bGUuY2FwdHVyZUZyYW1lKGVycm9yU3RyaW5nLCB0cmFjZUxvZ0lkKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JXZWJHTEFnZW50OjpnZXRUcmFjZUxvZyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdHJhY2VMb2dJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpXZWJHTDo6VHJh
Y2VMb2c+JiB0cmFjZUxvZykKK3sKKyAgICBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlIG1vZHVs
ZSA9IGluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGVGb3JUcmFjZUxvZ0lkKGVycm9yU3RyaW5nLCB0
cmFjZUxvZ0lkKTsKKyAgICBpZiAoIW1vZHVsZS5oYXNOb1ZhbHVlKCkpCisgICAgICAgIG1vZHVs
ZS50cmFjZUxvZyhlcnJvclN0cmluZywgdHJhY2VMb2dJZCwgJnRyYWNlTG9nKTsKK30KKwordm9p
ZCBJbnNwZWN0b3JXZWJHTEFnZW50OjpyZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdHJhY2VMb2dJZCwgaW50IHN0ZXBObywgU3RyaW5nKiByZXN1
bHQpCit7CisgICAgSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSBtb2R1bGUgPSBpbmplY3RlZFNj
cmlwdFdlYkdMTW9kdWxlRm9yVHJhY2VMb2dJZChlcnJvclN0cmluZywgdHJhY2VMb2dJZCk7Cisg
ICAgaWYgKCFtb2R1bGUuaGFzTm9WYWx1ZSgpKQorICAgICAgICBtb2R1bGUucmVwbGF5VHJhY2VM
b2coZXJyb3JTdHJpbmcsIHRyYWNlTG9nSWQsIHN0ZXBObywgcmVzdWx0KTsKK30KKwogU2NyaXB0
T2JqZWN0IEluc3BlY3RvcldlYkdMQWdlbnQ6OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJ
bnN0cnVtZW50YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0JiBnbENvbnRleHQpCiB7CiAgICAgaWYg
KGdsQ29udGV4dC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTEwOSw2ICsxNDQsMjIgQEAgU2NyaXB0T2Jq
ZWN0IEluc3BlY3RvcldlYkdMQWdlbnQ6OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0
cnVtZW50YXRpb24oY28KICAgICByZXR1cm4gbW9kdWxlLndyYXBXZWJHTENvbnRleHQoZ2xDb250
ZXh0KTsKIH0KIAorSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZSBJbnNwZWN0b3JXZWJHTEFnZW50
OjppbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlRm9yVHJhY2VMb2dJZChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHJhY2VMb2dJZCkKK3sKKyAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlw
dEZvck9iamVjdElkKHRyYWNlTG9nSWQpOworICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29u
ZSI7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlKCk7CisgICAgfQor
ICAgIEluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGUgbW9kdWxlID0gSW5qZWN0ZWRTY3JpcHRXZWJH
TE1vZHVsZTo6bW9kdWxlRm9yU3RhdGUobV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIGluamVjdGVk
U2NyaXB0LnNjcmlwdFN0YXRlKCkpOworICAgIGlmIChtb2R1bGUuaGFzTm9WYWx1ZSgpKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3I6IG5vIFdlYkdMIG1vZHVsZSI7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNj
cmlwdFdlYkdMTW9kdWxlKCk7CisgICAgfQorICAgIHJldHVybiBtb2R1bGU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJM
RShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JX
ZWJHTEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViR0xBZ2Vu
dC5oCmluZGV4IGE5MWU4YjkwNjc4YTMzMzYyZjIzM2ZhNmEzNmRkOTliNjJlMmI0ZmUuLjFkMzc3
MWQyMjlmMWVhMzZiNjBiMTk5OTBlNjIyYWJmNmMzNzE3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJHTEFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkdMQWdlbnQuaApAQCAtMzUsNiArMzUsNyBAQAogCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUeXBlQnVpbGRlci5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgpAQCAtNDMsMTcgKzQ0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKK2NsYXNzIEluamVjdGVkU2NyaXB0V2ViR0xNb2R1
bGU7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Citj
bGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0T2JqZWN0OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIAogY2xhc3MgSW5zcGVjdG9yV2ViR0xBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQ8SW5zcGVjdG9yV2ViR0xBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6V2ViR0xDb21tYW5kSGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5zcGVjdG9yV2ViR0xBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVj
dG9yV2ViR0xBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEluc3BlY3RvcldlYkdMQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUs
IGluamVjdGVkU2NyaXB0TWFuYWdlcikpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IElu
c3BlY3RvcldlYkdMQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIHBhZ2UsIGluamVj
dGVkU2NyaXB0TWFuYWdlcikpOwogICAgIH0KICAgICB+SW5zcGVjdG9yV2ViR0xBZ2VudCgpOwog
CkBAIC02OCwxNCArNzEsMjEgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9u
dC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGRyb3BUcmFj
ZUxvZyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBjYXB0
dXJlRnJhbWUoRXJyb3JTdHJpbmcqLCBTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VHJh
Y2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBSZWZQdHI8VHlwZUJ1aWxkZXI6Oldl
YkdMOjpUcmFjZUxvZz4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5VHJhY2VMb2coRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmLCBpbnQsIFN0cmluZyopOwogCiAgICAgLy8gQ2FsbGVkIGZy
b20gdGhlIGluamVjdGVkIHNjcmlwdC4KIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbgogCiBwcml2YXRlOgotICAgIEluc3BlY3RvcldlYkdMQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7
CisgICAgSW5zcGVjdG9yV2ViR0xBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9y
U3RhdGUqLCBQYWdlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAKKyAgICBJbmplY3RlZFNj
cmlwdFdlYkdMTW9kdWxlIGluamVjdGVkU2NyaXB0V2ViR0xNb2R1bGVGb3JUcmFjZUxvZ0lkKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CisKKyAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7
CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAg
ICBJbnNwZWN0b3JGcm9udGVuZDo6V2ViR0wqIG1fZnJvbnRlbmQ7CiAgICAgYm9vbCBtX2VuYWJs
ZWQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>