<?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>40052</bug_id>
          
          <creation_ts>2010-06-02 03:52:08 -0700</creation_ts>
          <short_desc>[DRT/Chromium] Upstream test_shell_webthemeengine as WebThemeEngineDRT</short_desc>
          <delta_ts>2010-06-08 23:57:01 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</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>40277</dependson>
          <blocked>35902</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Steiner">rolandsteiner</reporter>
          <assigned_to name="Roland Steiner">rolandsteiner</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>233195</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2010-06-02 03:52:08 -0700</bug_when>
    <thetext>Upstream test_shell_webthemeengine for DRT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234782</commentid>
    <comment_count>1</comment_count>
      <attachid>58013</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2010-06-07 04:25:24 -0700</bug_when>
    <thetext>Created attachment 58013
patch - WebKit version of WebThemeEngine

Initial version of WebThemeEngine for DRT

Also rolling Chromium DEPS since it requires new functionality from webkit_support included in Chromium rev. 48907

Note: A few cases of expected style &quot;violations&quot; due to aligned comments (better readability this way IMHO).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234783</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-07 04:28:25 -0700</bug_when>
    <thetext>Attachment 58013 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:57:  One space before end of line comments  [whitespace/comments] [5]
WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:65:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2 in 9 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>234799</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-07 05:11:24 -0700</bug_when>
    <thetext>Attachment 58013 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3163134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234826</commentid>
    <comment_count>4</comment_count>
      <attachid>58013</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-07 06:49:27 -0700</bug_when>
    <thetext>Comment on attachment 58013
patch - WebKit version of WebThemeEngine

WebKitTools/ChangeLog:8
 +          Add WebThemeEngineDRT and WebThemeControlDRT
Could you write what Chromium revision you ported please?


WebKitTools/DumpRenderTree/DumpRenderTree.gypi:37
 +              &apos;chromium/WebThemeEngineDRT.h&apos;,
We need to add these files in a conditional block for OS=win.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:50
 +  namespace {
We prefer static variables/functions to anonymous namespace in WebKit.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:52
 +  const SkColor kEdgeColor     = SK_ColorBLACK;
We don&apos;t prepend &quot;k&quot; to constant values in WebKit.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:68
 +  SkIRect Validate(const SkIRect&amp; rect, WebThemeControlDRT::Type ctype)
Function names should start with lowercase letter.




WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:75
 +          {
A block starting after a case label should be:
case XXX: {
    SkIRect ...
}
case ...


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:81
 +              int controlSize = std::min(rect.width(), rect.height());
We should use &quot;using namespace std;&quot; and remove std:: in code.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:99
 +  WebThemeControlDRT::WebThemeControlDRT(skia::PlatformCanvas* canvas,
ditto.  We should use &quot;using namespace skia;&quot;


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:146
 +                         int x1, int y1,
Indentation looks wrong.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:360
 +          shortOffset = m_width      - kNotchShortOffset;
The multiple space seems to make no sense. &quot;-&quot; is not aligned to other operators.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:367
 +          shortOffset = m_height    - kNotchShortOffset;
ditto.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:374
 +          shortOffset = m_height    - kNotchShortOffset;
ditto.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:396
 +          line(m_left  + kGripLongIndent,  m_top    + halfHeight,
ditto.

WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:407
 +          line(m_left + halfWidth,        m_top    + kGripLongIndent,
ditto.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:498
 +  void
We don&apos;t need to fold the line after &quot;void&quot;.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h:31
 +  // TestShellWebTheme::Control implements the generic rendering of controls
Need to update the comment.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h:54
 +      // third_party/WebKit/WebCore/platform/ThemeTypes.h but is maintained
&quot;third_party/WebKit/&quot; is not needed.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h:76
 +        kUnknownState = 0,
Enum values should not be prefixed with &quot;k&quot;, and indentation is wrong.



WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h:98
 +        kUnknownType = 0,
ditto.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h:136
 +      // If draw_edges is true, draw an edge around the control. If
Need to update the comment.


WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp:47
 +  #define CHECK_EQ(a, b) \
WebKit ASSERT() is not enough?


WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp:56
 +  #define NOT_REACHED_CRASH() \
Just using ASSERT_NOT_REACHED() looks enough.


WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp:63
 +  namespace {
We prefer static variables/functions in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235070</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-06-07 17:12:36 -0700</bug_when>
    <thetext>BTW, as the cr-linux bot shows, you&apos;re going to have problems rolling DEPS.  I think I have a DEPS roll ready for today, I&apos;ll upload that in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235102</commentid>
    <comment_count>6</comment_count>
      <attachid>58103</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2010-06-07 19:38:17 -0700</bug_when>
    <thetext>Created attachment 58103
patch - WebKit version of WebThemeEngine v2

Applied changes requested in review.

Removed changes to DEPS file - this will be handled by another bug entry (see dependencies)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235103</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-07 19:39:40 -0700</bug_when>
    <thetext>Attachment 58103 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:57:  One space before end of line comments  [whitespace/comments] [5]
WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:65:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235122</commentid>
    <comment_count>8</comment_count>
      <attachid>58103</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-07 21:14:36 -0700</bug_when>
    <thetext>Comment on attachment 58103
patch - WebKit version of WebThemeEngine v2

WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:31
 +  // This file implements a simple generic version of the WebKitThemeEngine,
WebKitThemeEngine -&gt; WebThemeEngine


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:272
 +          triangle(m_left,                m_bottom,
Should m_bottom be aligned to m_bottom in the above triangle() call?


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:292
 +      const int kCheckIndent = 3;
We don&apos;t add &quot;k&quot; prefix to a constant values in WebKit.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h:49
 +  namespace WebKit {
DRT classes should not be in WebKit namespace.  It doesn&apos;t need any namespace.



WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h:76
 +          unknownState = 0,
Enum values should start with a capital letter.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.h:98
 +          unknownType = 0,
ditto.


WebKitTools/DumpRenderTree/chromium/WebThemeEngineDRT.h:53
 +  namespace WebKit {
DRT classes should not have WebKit namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235159</commentid>
    <comment_count>9</comment_count>
      <attachid>58118</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2010-06-08 00:00:04 -0700</bug_when>
    <thetext>Created attachment 58118
patch - WebKit version of WebThemeEngine v2

New version, new luck</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235162</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-08 00:01:04 -0700</bug_when>
    <thetext>Attachment 58118 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:55:  One space before end of line comments  [whitespace/comments] [5]
WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:63:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235179</commentid>
    <comment_count>11</comment_count>
      <attachid>58118</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-08 01:22:28 -0700</bug_when>
    <thetext>Comment on attachment 58118
patch - WebKit version of WebThemeEngine v2


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:73
 +              SkIRect retval = rect;
Indentation should be 8 space from the beginning of the line.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:138
 +                        SkIntToScalar(x1), SkIntToScalar(y1),
Indentation looks wrong.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:345
 +              // Draw a box with a notch at the left.
Indentation should be 8 spaces from the beginning of the line, and &quot;break;&quot; should be inside of {}.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:353
 +              // Draw a box with a notch at the right.
ditto.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:361
 +              // Draw a box with a notch at the top.
ditto.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:369
 +              // Draw a box with a notch at the bottom.
ditto.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:392
 +              // Draw a horizontal crosshatch for the grip.
ditto.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:404
 +              // Draw a vertical crosshatch for the grip.
ditto.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:448
 +              // Draw a narrow rect for the track plus box hatches on the ends.
ditto.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:453
 +          }
Close the block after &quot;break;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235629</commentid>
    <comment_count>12</comment_count>
      <attachid>58207</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2010-06-08 20:59:15 -0700</bug_when>
    <thetext>Created attachment 58207
patch - WebKit version of WebThemeEngine v2

changed the switch - case identation as requested</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235631</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-08 21:00:37 -0700</bug_when>
    <thetext>Attachment 58207 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:55:  One space before end of line comments  [whitespace/comments] [5]
WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:63:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235634</commentid>
    <comment_count>14</comment_count>
      <attachid>58207</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-08 21:04:17 -0700</bug_when>
    <thetext>Comment on attachment 58207
patch - WebKit version of WebThemeEngine v2

WebKitTools/ChangeLog:8
 +          Add WebThemeEngineDRT and WebThemeControlDRT ported from Chrome rev. 48907
nit: Chrome -&gt; Chromium


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:243
 +            line(m_left + 1, i, m_right - 1, i, readOnlyColor);
Indentation looks worng.


WebKitTools/DumpRenderTree/chromium/WebThemeControlDRT.cpp:265
 +             break;
ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235674</commentid>
    <comment_count>15</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2010-06-08 23:57:01 -0700</bug_when>
    <thetext>Committed as r60883 (incl. fixes for the last style issues)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58013</attachid>
            <date>2010-06-07 04:25:24 -0700</date>
            <delta_ts>2010-06-07 19:38:17 -0700</delta_ts>
            <desc>patch - WebKit version of WebThemeEngine</desc>
            <filename>WebThemeEngine.patch</filename>
            <type>text/plain</type>
            <size>60110</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDBmYjIyYzEuLjQ1MTZjYjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDEwLTA2LTA3ICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJ1ZyA0MDA1MiAtIFtEUlQvQ2hyb21pdW1dIFVwc3RyZWFtIHRlc3Rfc2hlbGxfd2VidGhlbWVl
bmdpbmUgYXMgV2ViVGhlbWVFbmdpbmVEUlQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwMDUyCisKKyAgICAgICAgV2ViVGhlbWVFbmdpbmVEUlQgYW5k
IFRlc3RTaGVsbFdpbi5jcHAgcmVxdWlyZSBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkKKyAgICAg
ICAgaW5jbHVkZWQgaW4gd2Via2l0X3N1cHBvcnQgaW4gQ2hyb21pdW0gcmV2LiA0ODkwNworCisg
ICAgICAgICogREVQUzoKKwogMjAxMC0wNi0wNCAgSmF5IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL0RFUFMgYi9XZWJLaXQvY2hyb21pdW0vREVQUwppbmRleCA1
NDg0ZDBjLi4xYTc4NDhiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vREVQUworKysgYi9X
ZWJLaXQvY2hyb21pdW0vREVQUwpAQCAtMzIsNyArMzIsNyBAQAogCiB2YXJzID0gewogICAnY2hy
b21pdW1fc3ZuJzogJ2h0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3N2bi90cnVuay9zcmMnLAotICAn
Y2hyb21pdW1fcmV2JzogJzQ4NjI0JywKKyAgJ2Nocm9taXVtX3Jldic6ICc0ODkwNycsCiB9CiAK
IGRlcHMgPSB7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKaW5kZXggY2M3NzUzMC4uNTZkN2ZlNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBA
CisyMDEwLTA2LTAzICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyA0
MDA1MiAtIFtEUlQvQ2hyb21pdW1dIFVwc3RyZWFtIHRlc3Rfc2hlbGxfd2VidGhlbWVlbmdpbmUg
YXMgV2ViVGhlbWVFbmdpbmVEUlQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQwMDUyCisgICAgICAgIAorICAgICAgICBBZGQgV2ViVGhlbWVFbmdpbmVE
UlQgYW5kIFdlYlRoZW1lQ29udHJvbERSVAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGxXaW4uY3BwOgorICAgICAgICAocGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9sRFJUOjpXZWJUaGVt
ZUNvbnRyb2xEUlQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6On5XZWJU
aGVtZUNvbnRyb2xEUlQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6OmJv
eCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lQ29udHJvbERSVDo6bGluZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRoZW1lQ29udHJvbERSVDo6dHJpYW5nbGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJUaGVtZUNvbnRyb2xEUlQ6OnJvdW5kUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRo
ZW1lQ29udHJvbERSVDo6b3ZhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lQ29udHJvbERS
VDo6Y2lyY2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9sRFJUOjpuZXN0ZWRC
b3hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lQ29udHJvbERSVDo6bWFya1N0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9sRFJUOjpkcmF3KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVGhlbWVDb250cm9sRFJUOjpkcmF3VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVGhlbWVDb250cm9sRFJUOjpkcmF3UHJvZ3Jlc3NCYXIpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVGhlbWVDb250cm9sRFJUOjopOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJULmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
Oik6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lRW5naW5lRFJUOjpwYWludEJ1dHRvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRoZW1lRW5naW5lRFJUOjpwYWludE1lbnVMaXN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50U2Nyb2xsYmFyQXJyb3cpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRTY3JvbGxiYXJUaHVtYik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRoZW1lRW5naW5lRFJUOjpwYWludFNjcm9sbGJhclRyYWNrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50VGV4dEZpZWxkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50VHJhY2tiYXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRQcm9ncmVzc0Jhcik6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlRoZW1lRW5naW5lRFJUOjpXZWJUaGVtZUVuZ2luZURSVCk6CisK
IDIwMTAtMDYtMDQgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggMjgwYzhkZC4uMTJiNTM0YSAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC0zMSw2ICsz
MSwxMCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXh0SW5wdXRDb250cm9sbGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1dl
YlRoZW1lQ29udHJvbERSVC5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lQ29u
dHJvbERSVC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5jcHAn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJULmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2Vi
Vmlld0hvc3QuaCcsCiAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcAppbmRleCAzODg0ZTk0Li41YTQxMDU4IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxX
aW4uY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bFdpbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJUZXN0U2hlbGwuaCIKIAorI2luY2x1ZGUgIldlYlRoZW1lRW5naW5lRFJULmgiCiAjaW5jbHVk
ZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKICNpbmNsdWRlIDxmY250bC5oPgog
I2luY2x1ZGUgPGlvLmg+CkBAIC0zOCw2ICszOSw5IEBACiAjaW5jbHVkZSA8c2hsd2FwaS5oPgog
I2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKKy8vIFRoZW1lIGVuZ2luZQorc3RhdGljIFdlYktpdDo6
V2ViVGhlbWVFbmdpbmVEUlQgdGhlbWVFbmdpbmU7CisKIC8vIFRocmVhZCBtYWluIHRvIHJ1biBm
b3IgdGhlIHRocmVhZCB3aGljaCBqdXN0IHRlc3RzIGZvciB0aW1lb3V0LgogdW5zaWduZWQgaW50
IF9fc3RkY2FsbCB3YXRjaERvZ1RocmVhZCh2b2lkKiBhcmcpCiB7CkBAIC0xMDUsNiArMTA5LDkg
QEAgdm9pZCBwbGF0Zm9ybUluaXQoKQogICAgIF9zZXRtb2RlKF9maWxlbm8oc3Rkb3V0KSwgX09f
QklOQVJZKTsKICAgICBfc2V0bW9kZShfZmlsZW5vKHN0ZGVyciksIF9PX0JJTkFSWSk7CiAKKyAg
ICAvLyBTZXQgdGhlbWUgZW5naW5lLgorICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRUaGVtZUVuZ2lu
ZSgmdGhlbWVFbmdpbmUpOworCiAgICAgLy8gTG9hZCBBaGVtIGZvbnQuCiAgICAgLy8gQUhFTV9f
X18uVFRGIGlzIGNvcGllZCB0byB0aGUgZGlyZWN0b3J5IG9mIER1bXBSZW5kZXJUcmVlLmV4ZSBi
eSBXZWJLaXQuZ3lwLgogICAgIFdDSEFSIHBhdGhbX01BWF9QQVRIXTsKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVC5jcHAg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkxYWIyYjYKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNv
bnRyb2xEUlQuY3BwCkBAIC0wLDAgKzEsNTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgYSBz
aW1wbGUgZ2VuZXJpYyB2ZXJzaW9uIG9mIHRoZSBXZWJLaXRUaGVtZUVuZ2luZSwKKy8vIHdoaWNo
IGlzIHVzZWQgdG8gZHJhdyBhbGwgdGhlIG5hdGl2ZSBjb250cm9scyBvbiBhIHdlYiBwYWdlLiBX
ZSB1c2UgdGhpcworLy8gZmlsZSB3aGVuIHJ1bm5pbmcgaW4gbGF5b3V0IHRlc3QgbW9kZSBpbiBv
cmRlciB0byByZW1vdmUgYW55CisvLyBwbGF0Zm9ybS1zcGVjaWZpYyByZW5kZXJpbmcgZGlmZmVy
ZW5jZXMgZHVlIHRvIHRoZW1lcywgY29sb3JzLCBldGMuCisvLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViVGhlbWVDb250cm9sRFJULmgiCisKKyNpbmNsdWRlICJza2lhL2V4
dC9wbGF0Zm9ybV9jYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX3dpbi5o
IgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUGFpbnQuaCIKKyNp
bmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1BhdGguaCIKKyNpbmNsdWRl
ICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKKworI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgeworCitj
b25zdCBTa0NvbG9yIGtFZGdlQ29sb3IgICAgID0gU0tfQ29sb3JCTEFDSzsKK2NvbnN0IFNrQ29s
b3Iga1JlYWRPbmx5Q29sb3IgPSBTa0NvbG9yU2V0UkdCKDB4ZTksIDB4YzIsIDB4YTYpOworY29u
c3QgU2tDb2xvciBrRmdDb2xvciAgICAgICA9IFNLX0NvbG9yQkxBQ0s7CisKK2NvbnN0IFNrQ29s
b3Iga0JnQ29sb3JzW10gPSB7CisgICAgU0tfQ29sb3JCTEFDSywgICAgICAgICAgICAgICAgICAg
Ly8gVW5rbm93bgorICAgIFNrQ29sb3JTZXRSR0IoMHhjOSwgMHhjOSwgMHhjOSksIC8vIERpc2Fi
bGVkCisgICAgU2tDb2xvclNldFJHQigweGYzLCAweGUwLCAweGQwKSwgLy8gUmVhZG9ubHkKKyAg
ICBTa0NvbG9yU2V0UkdCKDB4ODksIDB4YzQsIDB4ZmYpLCAvLyBOb3JtYWwKKyAgICBTa0NvbG9y
U2V0UkdCKDB4NDMsIDB4ZjksIDB4ZmYpLCAvLyBIb3QKKyAgICBTa0NvbG9yU2V0UkdCKDB4MjAs
IDB4ZjYsIDB4Y2MpLCAvLyBGb2N1c2VkCisgICAgU2tDb2xvclNldFJHQigweDAwLCAweGYzLCAw
eGFjKSwgLy8gSG92ZXIKKyAgICBTa0NvbG9yU2V0UkdCKDB4YTksIDB4ZmYsIDB4MTIpLCAvLyBQ
cmVzc2VkCisgICAgU2tDb2xvclNldFJHQigweGNjLCAweGNjLCAweGNjKSAgLy8gSW5kZXRlcm1p
bmF0ZQorfTsKKworU2tJUmVjdCBWYWxpZGF0ZShjb25zdCBTa0lSZWN0JiByZWN0LCBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUpCit7CisgICAgc3dpdGNoIChjdHlwZSkgeworICAgIGNh
c2UgV2ViVGhlbWVDb250cm9sRFJUOjprVW5jaGVja2VkQm94VHlwZToKKyAgICBjYXNlIFdlYlRo
ZW1lQ29udHJvbERSVDo6a0NoZWNrZWRCb3hUeXBlOgorICAgIGNhc2UgV2ViVGhlbWVDb250cm9s
RFJUOjprVW5jaGVja2VkUmFkaW9UeXBlOgorICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUOjpr
Q2hlY2tlZFJhZGlvVHlwZToKKyAgICAgICAgeworICAgICAgICAgICAgU2tJUmVjdCByZXR2YWwg
PSByZWN0OworCisgICAgICAgICAgICAvLyBUaGUgbWF4aW11bSB3aWR0aCBhbmQgaGVpZ2h0IGlz
IDEzLgorICAgICAgICAgICAgLy8gQ2VudGVyIHRoZSBzcXVhcmUgaW4gdGhlIHBhc3NlZCByZWN0
YW5nbGUuCisgICAgICAgICAgICBjb25zdCBpbnQga01heENvbnRyb2xTaXplID0gMTM7CisgICAg
ICAgICAgICBpbnQgY29udHJvbFNpemUgPSBzdGQ6Om1pbihyZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpOworICAgICAgICAgICAgY29udHJvbFNpemUgPSBzdGQ6Om1pbihjb250cm9sU2l6ZSwg
a01heENvbnRyb2xTaXplKTsKKworICAgICAgICAgICAgcmV0dmFsLmZMZWZ0ID0gcmVjdC5mTGVm
dCArIChyZWN0LndpZHRoKCkgLyAyKSAtIChjb250cm9sU2l6ZSAvIDIpOworICAgICAgICAgICAg
cmV0dmFsLmZSaWdodCA9IHJldHZhbC5mTGVmdCArIGNvbnRyb2xTaXplIC0gMTsKKyAgICAgICAg
ICAgIHJldHZhbC5mVG9wID0gcmVjdC5mVG9wICsgKHJlY3QuaGVpZ2h0KCkgLyAyKSAtIChjb250
cm9sU2l6ZSAvIDIpOworICAgICAgICAgICAgcmV0dmFsLmZCb3R0b20gPSByZXR2YWwuZlRvcCAr
IGNvbnRyb2xTaXplIC0gMTsKKworICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgICAg
fQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHJlY3Q7CisgICAgfQorfQorCit9IC8v
IGFub255bW91cyBuYW1lc3BhY2UKKworV2ViVGhlbWVDb250cm9sRFJUOjpXZWJUaGVtZUNvbnRy
b2xEUlQoc2tpYTo6UGxhdGZvcm1DYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFNrSVJlY3QmIGlyZWN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSBjdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0YXRlIGNzdGF0ZSkKKyAgICA6IG1fY2FudmFzKGNhbnZhcykK
KyAgICAsIG1faXJlY3QoVmFsaWRhdGUoaXJlY3QsIGN0eXBlKSkKKyAgICAsIG1fdHlwZShjdHlw
ZSkKKyAgICAsIG1fc3RhdGUoY3N0YXRlKQorICAgICwgbV9sZWZ0KG1faXJlY3QuZkxlZnQpCisg
ICAgLCBtX3JpZ2h0KG1faXJlY3QuZlJpZ2h0KQorICAgICwgbV90b3AobV9pcmVjdC5mVG9wKQor
ICAgICwgbV9ib3R0b20obV9pcmVjdC5mQm90dG9tKQorICAgICwgbV9oZWlnaHQobV9pcmVjdC5o
ZWlnaHQoKSkKKyAgICAsIG1fd2lkdGgobV9pcmVjdC53aWR0aCgpKQorICAgICwgbV9lZGdlQ29s
b3Ioa0VkZ2VDb2xvcikKKyAgICAsIG1fYmdDb2xvcihrQmdDb2xvcnNbY3N0YXRlXSkKKyAgICAs
IG1fZmdDb2xvcihrRmdDb2xvcikKK3sKK30KKworV2ViVGhlbWVDb250cm9sRFJUOjp+V2ViVGhl
bWVDb250cm9sRFJUKCkKK3sKK30KKwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlQ6OmJveChjb25z
dCBTa0lSZWN0JiByZWN0LCBTa0NvbG9yIGZpbGxDb2xvcikKK3sKKyAgICBTa1BhaW50IHBhaW50
OworCisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIHBhaW50
LnNldENvbG9yKGZpbGxDb2xvcik7CisgICAgbV9jYW52YXMtPmRyYXdJUmVjdChyZWN0LCBwYWlu
dCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5
bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRyYXdJUmVjdChyZWN0
LCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUOjpsaW5lKGludCB4MCwgaW50
IHkwLCBpbnQgeDEsIGludCB5MSwgU2tDb2xvciBjb2xvcikKK3sKKyAgICBTa1BhaW50IHBhaW50
OworICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0xpbmUoU2tJ
bnRUb1NjYWxhcih4MCksIFNrSW50VG9TY2FsYXIoeTApLAorICAgICAgICAgICAgICAgICAgICAg
IFNrSW50VG9TY2FsYXIoeDEpLCBTa0ludFRvU2NhbGFyKHkxKSwKKyAgICAgICAgICAgICAgICAg
ICAgICBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUOjp0cmlhbmdsZShpbnQg
eDAsIGludCB5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHgxLCBpbnQgeTEsCisgICAg
ICAgICAgICAgICAgICAgICAgIGludCB4MiwgaW50IHkyLAorICAgICAgICAgICAgICAgICAgICAg
ICBTa0NvbG9yIGNvbG9yKQoreworICAgIFNrUGF0aCBwYXRoOworICAgIFNrUGFpbnQgcGFpbnQ7
CisKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWlu
dDo6a0ZpbGxfU3R5bGUpOworICAgIHBhdGguaW5jUmVzZXJ2ZSg0KTsKKyAgICBwYXRoLm1vdmVU
byhTa0ludFRvU2NhbGFyKHgwKSwgU2tJbnRUb1NjYWxhcih5MCkpOworICAgIHBhdGgubGluZVRv
KFNrSW50VG9TY2FsYXIoeDEpLCBTa0ludFRvU2NhbGFyKHkxKSk7CisgICAgcGF0aC5saW5lVG8o
U2tJbnRUb1NjYWxhcih4MiksIFNrSW50VG9TY2FsYXIoeTIpKTsKKyAgICBwYXRoLmNsb3NlKCk7
CisgICAgbV9jYW52YXMtPmRyYXdQYXRoKHBhdGgsIHBhaW50KTsKKworICAgIHBhaW50LnNldENv
bG9yKG1fZWRnZUNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0
eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd1BhdGgocGF0aCwgcGFpbnQpOworfQorCit2b2lkIFdl
YlRoZW1lQ29udHJvbERSVDo6cm91bmRSZWN0KFNrQ29sb3IgY29sb3IpCit7CisgICAgU2tSZWN0
IHJlY3Q7CisgICAgU2tTY2FsYXIgcmFkaXVzID0gU2tJbnRUb1NjYWxhcig1KTsKKyAgICBTa1Bh
aW50IHBhaW50OworCisgICAgcmVjdC5zZXQobV9pcmVjdCk7CisgICAgcGFpbnQuc2V0Q29sb3Io
Y29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBt
X2NhbnZhcy0+ZHJhd1JvdW5kUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cywgcGFpbnQpOworCisg
ICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFp
bnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3Um91bmRSZWN0KHJlY3QsIHJh
ZGl1cywgcmFkaXVzLCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUOjpvdmFs
KFNrQ29sb3IgY29sb3IpCit7CisgICAgU2tSZWN0IHJlY3Q7CisgICAgU2tQYWludCBwYWludDsK
KworICAgIHJlY3Quc2V0KG1faXJlY3QpOworICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAg
ICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRy
YXdPdmFsKHJlY3QsIHBhaW50KTsKKworICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsK
KyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKKyAgICBtX2NhbnZh
cy0+ZHJhd092YWwocmVjdCwgcGFpbnQpOworfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVDo6
Y2lyY2xlKFNrU2NhbGFyIHJhZGl1cywgU2tDb2xvciBjb2xvcikKK3sKKyAgICBTa1NjYWxhciBj
eSA9IFNrSW50VG9TY2FsYXIobV90b3AgICsgbV9oZWlnaHQgLyAyKTsKKyAgICBTa1NjYWxhciBj
eCA9IFNrSW50VG9TY2FsYXIobV9sZWZ0ICsgbV93aWR0aCAvIDIpOworICAgIFNrUGFpbnQgcGFp
bnQ7CisKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQ
YWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3Q2lyY2xlKGN4LCBjeSwgcmFk
aXVzLCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7CisgICAgcGFp
bnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRyYXdD
aXJjbGUoY3gsIGN5LCByYWRpdXMsIHBhaW50KTsKK30KKwordm9pZCBXZWJUaGVtZUNvbnRyb2xE
UlQ6Om5lc3RlZEJveGVzKGludCBpbmRlbnRMZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpbmRlbnRUb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGluZGVudFJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBpbmRlbnRCb3R0b20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2tDb2xvciBvdXRlckNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNrQ29sb3IgaW5uZXJDb2xvcikKK3sKKyAgICBTa0lSZWN0IGxpcmVjdDsKKyAgICBi
b3gobV9pcmVjdCwgb3V0ZXJDb2xvcik7CisgICAgbGlyZWN0LnNldChtX2lyZWN0LmZMZWZ0ICsg
aW5kZW50TGVmdCwKKyAgICAgICAgICAgICAgIG1faXJlY3QuZlRvcCArIGluZGVudFRvcCwKKyAg
ICAgICAgICAgICAgIG1faXJlY3QuZlJpZ2h0IC0gaW5kZW50UmlnaHQsCisgICAgICAgICAgICAg
ICBtX2lyZWN0LmZCb3R0b20gLSBpbmRlbnRCb3R0b20pOworICAgIGJveChsaXJlY3QsIGlubmVy
Q29sb3IpOworfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVDo6bWFya1N0YXRlKCkKK3sKKyAg
ICAvLyBUaGUgaG9yaXpvbnRhbCBsaW5lcyBpbiBhIHJlYWQgb25seSBjb250cm9sIGFyZSBzcGFj
ZWQgYnkgdGhpcyBhbW91bnQuCisgICAgY29uc3QgaW50IGtSZWFkT25seUxpbmVPZmZzZXQgPSA1
OworCisgICAgLy8gVGhlIGxlbmd0aCBvZiBhIHRyaWFuZ2xlIHNpZGUgZm9yIHRoZSBjb3JuZXIg
bWFya3MuCisgICAgY29uc3QgaW50IGtUcmlhbmdsZVNpemUgPSA1OworCisgICAgc3dpdGNoICht
X3N0YXRlKSB7CisgICAgY2FzZSBrVW5rbm93blN0YXRlOgorICAgIGNhc2Uga0Rpc2FibGVkU3Rh
dGU6CisgICAgY2FzZSBrTm9ybWFsU3RhdGU6CisgICAgICAgIC8vIERvbid0IHZpc3VhbGx5IG1h
cmsgdGhlc2Ugc3RhdGVzIChjb2xvciBpcyBlbm91Z2gpLgorICAgICAgICBicmVhazsKKworICAg
IGNhc2Uga1JlYWRPbmx5U3RhdGU6CisgICAgICAgIC8vIERyYXdpbmcgbGluZXMgYWNyb3NzIHRo
ZSBjb250cm9sLgorICAgICAgICBmb3IgKGludCBpID0gbV90b3AgKyBrUmVhZE9ubHlMaW5lT2Zm
c2V0OyBpIDwgbV9ib3R0b207IGkgKz0ga1JlYWRPbmx5TGluZU9mZnNldCkKKyAgICAgICAgICBs
aW5lKG1fbGVmdCArIDEsIGksIG1fcmlnaHQgLSAxLCBpLCBrUmVhZE9ubHlDb2xvcik7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBrSG90U3RhdGU6CisgICAgICAgIC8vIERyYXcgYSB0cmlh
bmdsZSBpbiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisgICAgICAgIHRy
aWFuZ2xlKG1fbGVmdCwgICAgICAgICAgICAgICAgICBtX3RvcCwKKyAgICAgICAgICAgICAgICAg
bV9sZWZ0ICsga1RyaWFuZ2xlU2l6ZSwgIG1fdG9wLAorICAgICAgICAgICAgICAgICBtX2xlZnQs
ICAgICAgICAgICAgICAgICAgbV90b3AgKyBrVHJpYW5nbGVTaXplLCAgICBtX2VkZ2VDb2xvcik7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBrSG92ZXJTdGF0ZToKKyAgICAgICAgLy8gRHJh
dyBhIHRyaWFuZ2xlIGluIHRoZSB1cHBlciByaWdodCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisg
ICAgICAgIHRyaWFuZ2xlKG1fcmlnaHQsICAgICAgICAgICAgICAgICBtX3RvcCwKKyAgICAgICAg
ICAgICAgICAgbV9yaWdodCwgICAgICAgICAgICAgICAgIG1fdG9wICsga1RyaWFuZ2xlU2l6ZSwK
KyAgICAgICAgICAgICAgICAgbV9yaWdodCAtIGtUcmlhbmdsZVNpemUsIG1fdG9wLCAgICAgICAg
ICAgICAgICAgICAgbV9lZGdlQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2Uga0Zv
Y3VzZWRTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSBib3R0b20gcmln
aHQgY29ybmVyIG9mIHRoZSBjb250cm9sLgorICAgICAgICB0cmlhbmdsZShtX3JpZ2h0LCAgICAg
ICAgICAgICAgICAgbV9ib3R0b20sCisgICAgICAgICAgICAgICAgIG1fcmlnaHQgLSBrVHJpYW5n
bGVTaXplLCBtX2JvdHRvbSwKKyAgICAgICAgICAgICAgICAgbV9yaWdodCwgICAgICAgICAgICAg
ICAgIG1fYm90dG9tIC0ga1RyaWFuZ2xlU2l6ZSwgbV9lZGdlQ29sb3IpOworICAgICAgICAgICBi
cmVhazsKKworICAgIGNhc2Uga1ByZXNzZWRTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFu
Z2xlIGluIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisgICAgICAgIHRy
aWFuZ2xlKG1fbGVmdCwgICAgICAgICAgICAgICAgIG1fYm90dG9tLAorICAgICAgICAgICAgICAg
ICBtX2xlZnQsICAgICAgICAgICAgICAgICBtX2JvdHRvbSAtIGtUcmlhbmdsZVNpemUsCisgICAg
ICAgICAgICAgICAgIG1fbGVmdCArIGtUcmlhbmdsZVNpemUsIG1fYm90dG9tLCAgICAgICAgICAg
ICAgICAgIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVDo6ZHJhdygpCit7CisgICAg
aW50IGhhbGZXaWR0aCA9IG1fd2lkdGggLyAyOworICAgIGludCBoYWxmSGVpZ2h0ID0gbV9oZWln
aHQgLyAyOworICAgIGludCBxdWFydGVyV2lkdGggPSBtX3dpZHRoIC8gNDsKKyAgICBpbnQgcXVh
cnRlckhlaWdodCA9IG1faGVpZ2h0IC8gNDsKKworICAgIC8vIEluZGVudCBhbW91bnRzIGZvciB0
aGUgY2hlY2sgaW4gYSBjaGVja2JveCBvciByYWRpbyBidXR0b24uCisgICAgY29uc3QgaW50IGtD
aGVja0luZGVudCA9IDM7CisKKyAgICAvLyBJbmRlbnQgYW1vdW50cyBmb3Igc2hvcnQgYW5kIGxv
bmcgc2lkZXMgb2YgdGhlIHNjcm9sbGJhciBub3RjaGVzLgorICAgIGNvbnN0IGludCBrTm90Y2hM
b25nT2Zmc2V0ID0gMTsKKyAgICBjb25zdCBpbnQga05vdGNoU2hvcnRPZmZzZXQgPSA0OworICAg
IGNvbnN0IGludCBrTm9PZmZzZXQgPSAwOworICAgIGludCBzaG9ydE9mZnNldDsKKyAgICBpbnQg
bG9uZ09mZnNldDsKKworICAgIC8vIEluZGVudCBhbW91bnRzIGZvciB0aGUgc2hvcnQgYW5kIGxv
bmcgc2lkZXMgb2YgYSBzY3JvbGwgdGh1bWIgYm94LgorICAgIGNvbnN0IGludCBrVGh1bWJMb25n
SW5kZW50ID0gMDsKKyAgICBjb25zdCBpbnQga1RodW1iU2hvcnRJbmRlbnQgPSAyOworCisgICAg
Ly8gSW5kZW50cyBmb3IgdGhlIGNyb3NzaGF0Y2ggb24gYSBzY3JvbGwgZ3JpcC4KKyAgICBjb25z
dCBpbnQga0dyaXBMb25nSW5kZW50ID0gMzsKKyAgICBjb25zdCBpbnQga0dyaXBTaG9ydEluZGVu
dCA9IDU7CisKKyAgICAvLyBJbmRlbnRzIGZvciB0aGUgdGhlIHNsaWRlciB0cmFjay4KKyAgICBj
b25zdCBpbnQga1NsaWRlckluZGVudCA9IDI7CisKKyAgICBtX2NhbnZhcy0+YmVnaW5QbGF0Zm9y
bVBhaW50KCk7CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2Uga1Vua25vd25UeXBl
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIGtUZXh0RmllbGRUeXBlOgorICAgICAgICAvLyBXZSByZW5k
ZXIgdGhpcyBieSBoYW5kIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIENSQVNIKCk7CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBrUHVzaEJ1dHRvblR5cGU6CisgICAgICAgIC8vIHB1c2ggYnV0dG9ucyByZW5kZXIgYXMg
YSByb3VuZGVkIHJlY3RhbmdsZQorICAgICAgICByb3VuZFJlY3QobV9iZ0NvbG9yKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIGtVbmNoZWNrZWRCb3hUeXBlOgorICAgICAgICAvLyBVbmNo
ZWNrZWQgYm94ZXMgYXJlIHNpbXBseSBwbGFpbiBib3hlcy4KKyAgICAgICAgYm94KG1faXJlY3Qs
IG1fYmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBrQ2hlY2tlZEJveFR5cGU6
CisgICAgICAgIG5lc3RlZEJveGVzKGtDaGVja0luZGVudCwga0NoZWNrSW5kZW50LCBrQ2hlY2tJ
bmRlbnQsIGtDaGVja0luZGVudCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2Uga1VuY2hlY2tlZFJhZGlvVHlwZToKKyAgICAgICAgY2lyY2xlKFNrSW50
VG9TY2FsYXIoaGFsZkhlaWdodCksIG1fYmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBrQ2hlY2tlZFJhZGlvVHlwZToKKyAgICAgICAgY2lyY2xlKFNrSW50VG9TY2FsYXIoaGFs
ZkhlaWdodCksIG1fYmdDb2xvcik7CisgICAgICAgIGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZI
ZWlnaHQgLSBrQ2hlY2tJbmRlbnQpLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2Uga0hvcml6b250YWxTY3JvbGxUcmFja0JhY2tUeXBlOgorICAgICAgICAvLyBEcmF3IGEg
Ym94IHdpdGggYSBub3RjaCBhdCB0aGUgbGVmdC4KKyAgICAgICAgbG9uZ09mZnNldCA9IGhhbGZI
ZWlnaHQgLSBrTm90Y2hMb25nT2Zmc2V0OworICAgICAgICBzaG9ydE9mZnNldCA9IG1fd2lkdGgg
LSBrTm90Y2hTaG9ydE9mZnNldDsKKyAgICAgICAgbmVzdGVkQm94ZXMoa05vT2Zmc2V0LCBsb25n
T2Zmc2V0LCBzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbV9iZ0NvbG9yLCBtX2VkZ2VDb2xvcik7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBrSG9yaXpvbnRhbFNjcm9sbFRyYWNrRm9yd2Fy
ZFR5cGU6CisgICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSByaWdodC4K
KyAgICAgICAgbG9uZ09mZnNldCAgPSBoYWxmSGVpZ2h0IC0ga05vdGNoTG9uZ09mZnNldDsKKyAg
ICAgICAgc2hvcnRPZmZzZXQgPSBtX3dpZHRoICAgICAgLSBrTm90Y2hTaG9ydE9mZnNldDsKKyAg
ICAgICAgbmVzdGVkQm94ZXMoc2hvcnRPZmZzZXQsIGxvbmdPZmZzZXQsIGtOb09mZnNldCwgbG9u
Z09mZnNldCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2Uga1ZlcnRpY2FsU2Nyb2xsVHJhY2tCYWNrVHlwZToKKyAgICAgICAgLy8gRHJhdyBhIGJveCB3
aXRoIGEgbm90Y2ggYXQgdGhlIHRvcC4KKyAgICAgICAgbG9uZ09mZnNldCAgPSBoYWxmV2lkdGgg
LSBrTm90Y2hMb25nT2Zmc2V0OworICAgICAgICBzaG9ydE9mZnNldCA9IG1faGVpZ2h0ICAgIC0g
a05vdGNoU2hvcnRPZmZzZXQ7CisgICAgICAgIG5lc3RlZEJveGVzKGxvbmdPZmZzZXQsIGtOb09m
ZnNldCwgbG9uZ09mZnNldCwgc2hvcnRPZmZzZXQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGtWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6
CisgICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSBib3R0b20uCisgICAg
ICAgIGxvbmdPZmZzZXQgID0gaGFsZldpZHRoIC0ga05vdGNoTG9uZ09mZnNldDsKKyAgICAgICAg
c2hvcnRPZmZzZXQgPSBtX2hlaWdodCAgICAtIGtOb3RjaFNob3J0T2Zmc2V0OworICAgICAgICBu
ZXN0ZWRCb3hlcyhsb25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwga05vT2Zmc2V0
LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBrSG9y
aXpvbnRhbFNjcm9sbFRodW1iVHlwZToKKyAgICAgICAgLy8gRHJhdyBhIG5hcnJvd2VyIGJveCBv
biB0b3Agb2YgdGhlIG91dHNpZGUgYm94LgorICAgICAgICBuZXN0ZWRCb3hlcyhrVGh1bWJMb25n
SW5kZW50LCBrVGh1bWJTaG9ydEluZGVudCwga1RodW1iTG9uZ0luZGVudCwga1RodW1iU2hvcnRJ
bmRlbnQsIG1fYmdDb2xvciwgbV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IGtWZXJ0aWNhbFNjcm9sbFRodW1iVHlwZToKKyAgICAgICAgLy8gRHJhdyBhIHNob3J0ZXIgYm94
IG9uIHRvcCBvZiB0aGUgb3V0c2lkZSBib3guCisgICAgICAgIG5lc3RlZEJveGVzKGtUaHVtYlNo
b3J0SW5kZW50LCBrVGh1bWJMb25nSW5kZW50LCBrVGh1bWJTaG9ydEluZGVudCwga1RodW1iTG9u
Z0luZGVudCwgbV9iZ0NvbG9yLCBtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2Uga0hvcml6b250YWxTbGlkZXJUaHVtYlR5cGU6CisgICAgICAgIC8vIFNsaWRlciB0aHVtYnMg
YXJlIG92YWxzLgorICAgICAgICBvdmFsKG1fYmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBrSG9yaXpvbnRhbFNjcm9sbEdyaXBUeXBlOgorICAgICAgICAvLyBEcmF3IGEgaG9y
aXpvbnRhbCBjcm9zc2hhdGNoIGZvciB0aGUgZ3JpcC4KKyAgICAgICAgbG9uZ09mZnNldCA9IGhh
bGZXaWR0aCAtIGtHcmlwTG9uZ0luZGVudDsKKyAgICAgICAgbGluZShtX2xlZnQgICsga0dyaXBM
b25nSW5kZW50LCAgbV90b3AgICAgKyBoYWxmSGVpZ2h0LAorICAgICAgICAgICAgIG1fcmlnaHQg
LSBrR3JpcExvbmdJbmRlbnQsICBtX3RvcCAgICArIGhhbGZIZWlnaHQsICAgICAgbV9mZ0NvbG9y
KTsKKyAgICAgICAgbGluZShtX2xlZnQgICsgbG9uZ09mZnNldCwgICAgICBtX3RvcCAgICArIGtH
cmlwU2hvcnRJbmRlbnQsCisgICAgICAgICAgICAgbV9sZWZ0ICArIGxvbmdPZmZzZXQsICAgICAg
bV9ib3R0b20gLSBrR3JpcFNob3J0SW5kZW50LCBtX2ZnQ29sb3IpOworICAgICAgICBsaW5lKG1f
cmlnaHQgLSBsb25nT2Zmc2V0LCAgICAgIG1fdG9wICAgICsga0dyaXBTaG9ydEluZGVudCwKKyAg
ICAgICAgICAgICBtX3JpZ2h0IC0gbG9uZ09mZnNldCwgICAgICBtX2JvdHRvbSAtIGtHcmlwU2hv
cnRJbmRlbnQsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBrVmVydGlj
YWxTY3JvbGxHcmlwVHlwZToKKyAgICAgICAgLy8gRHJhdyBhIHZlcnRpY2FsIGNyb3NzaGF0Y2gg
Zm9yIHRoZSBncmlwLgorICAgICAgICBsb25nT2Zmc2V0ID0gaGFsZkhlaWdodCAtIGtHcmlwTG9u
Z0luZGVudDsKKyAgICAgICAgbGluZShtX2xlZnQgKyBoYWxmV2lkdGgsICAgICAgICBtX3RvcCAg
ICArIGtHcmlwTG9uZ0luZGVudCwKKyAgICAgICAgICAgICBtX2xlZnQgKyBoYWxmV2lkdGgsICAg
ICAgICBtX2JvdHRvbSAtIGtHcmlwTG9uZ0luZGVudCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgbGlu
ZShtX2xlZnQgKyBrR3JpcFNob3J0SW5kZW50LCAgbV90b3AgICAgKyBsb25nT2Zmc2V0LAorICAg
ICAgICAgICAgIG1fcmlnaHQgLSBrR3JpcFNob3J0SW5kZW50LCBtX3RvcCAgICArIGxvbmdPZmZz
ZXQsICAgICBtX2ZnQ29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCArIGtHcmlwU2hvcnRJbmRl
bnQsICBtX2JvdHRvbSAtIGxvbmdPZmZzZXQsCisgICAgICAgICAgICAgbV9yaWdodCAtIGtHcmlw
U2hvcnRJbmRlbnQsIG1fYm90dG9tIC0gbG9uZ09mZnNldCwgICAgIG1fZmdDb2xvcik7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBrTGVmdEFycm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBh
IGxlZnQgYXJyb3cgaW5zaWRlIGEgYm94LgorICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9y
KTsKKyAgICAgICAgdHJpYW5nbGUobV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBx
dWFydGVySGVpZ2h0LAorICAgICAgICAgICAgICAgICBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBt
X2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsCisgICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBxdWFy
dGVyV2lkdGgsIG1fdG9wICAgICsgaGFsZkhlaWdodCwgICAgbV9mZ0NvbG9yKTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIGtSaWdodEFycm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBhIGxl
ZnQgYXJyb3cgaW5zaWRlIGEgYm94LgorICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsK
KyAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBxdWFy
dGVySGVpZ2h0LAorICAgICAgICAgICAgICAgICBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3Rv
cCAgICArIGhhbGZIZWlnaHQsCisgICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBxdWFydGVyV2lk
dGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIGtVcEFycm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBhbiB1cCBhcnJvdyBp
bnNpZGUgYSBib3guCisgICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0
cmlhbmdsZShtX2xlZnQgICsgcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQs
CisgICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fdG9wICAgICsgcXVh
cnRlckhlaWdodCwKKyAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV9i
b3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2Uga0Rvd25BcnJvd1R5cGU6CisgICAgICAgIC8vIERyYXcgYSBkb3duIGFycm93IGluc2lk
ZSBhIGJveC4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIHRyaWFu
Z2xlKG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsgcXVhcnRlckhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBxdWFydGVy
SGVpZ2h0LAorICAgICAgICAgICAgICAgICBtX2xlZnQgICsgaGFsZldpZHRoLCAgICBtX2JvdHRv
bSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBrSG9yaXpvbnRhbFNsaWRlclRyYWNrVHlwZToKKyAgICAgICAgLy8gRHJhdyBhIG5hcnJvdyBy
ZWN0IGZvciB0aGUgdHJhY2sgcGx1cyBib3ggaGF0Y2hlcyBvbiB0aGUgZW5kcy4KKyAgICAgICAg
U2tJUmVjdCBsaXJlY3Q7CisgICAgICAgIGxpcmVjdCA9IG1faXJlY3Q7CisgICAgICAgIGxpcmVj
dC5pbnNldChrTm9PZmZzZXQsIGhhbGZIZWlnaHQgLSBrU2xpZGVySW5kZW50KTsKKyAgICAgICAg
Ym94KGxpcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAgbGluZShtX2xlZnQsICBtX3RvcCwgbV9s
ZWZ0LCAgbV9ib3R0b20sIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgbGluZShtX3JpZ2h0LCBtX3Rv
cCwgbV9yaWdodCwgbV9ib3R0b20sIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIGtEcm9wRG93bkJ1dHRvblR5cGU6CisgICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBh
IGJpZyBkb3duIGFycm93IG9uIHRvcC4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7
CisgICAgICAgIHRyaWFuZ2xlKG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9wLAorICAgICAg
ICAgICAgICAgICBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCwKKyAgICAgICAgICAgICAg
ICAgbV9sZWZ0ICArIGhhbGZXaWR0aCwgICAgbV9ib3R0b20sIG1fZmdDb2xvcik7CisgICAgICAg
IGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIENSQVNIKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1hcmtTdGF0ZSgp
OworICAgIG1fY2FudmFzLT5lbmRQbGF0Zm9ybVBhaW50KCk7Cit9CisKKy8vIEJlY2F1c2UgcmVu
ZGVyaW5nIGEgdGV4dCBmaWVsZCBpcyBkZXBlbmRlbnQgb24gaW5wdXQKKy8vIHBhcmFtZXRlcnMg
dGhlIG90aGVyIGNvbnRyb2xzIGRvbid0IGhhdmUsIHdlIHJlbmRlciBpdCBkaXJlY3RseQorLy8g
cmF0aGVyIHRoYW4gdHJ5aW5nIHRvIG92ZXJjb21wbGljYXRlIGRyYXcoKSBmdXJ0aGVyLgordm9p
ZCBXZWJUaGVtZUNvbnRyb2xEUlQ6OmRyYXdUZXh0RmllbGQoYm9vbCBkcmF3RWRnZXMsIGJvb2wg
ZmlsbENvbnRlbnRBcmVhLCBTa0NvbG9yIGNvbG9yKQoreworICAgIFNrUGFpbnQgcGFpbnQ7CisK
KyAgICBtX2NhbnZhcy0+YmVnaW5QbGF0Zm9ybVBhaW50KCk7CisgICAgaWYgKGZpbGxDb250ZW50
QXJlYSkgeworICAgICAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgICAgIHBhaW50LnNl
dFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICAgICAgbV9jYW52YXMtPmRyYXdJUmVj
dChtX2lyZWN0LCBwYWludCk7CisgICAgfQorICAgIGlmIChkcmF3RWRnZXMpIHsKKyAgICAgICAg
cGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgICAgICBwYWludC5zZXRTdHlsZShTa1Bh
aW50OjprU3Ryb2tlX1N0eWxlKTsKKyAgICAgICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0
LCBwYWludCk7CisgICAgfQorCisgICAgbWFya1N0YXRlKCk7CisgICAgbV9jYW52YXMtPmVuZFBs
YXRmb3JtUGFpbnQoKTsKK30KKwordm9pZAorV2ViVGhlbWVDb250cm9sRFJUOjpkcmF3UHJvZ3Jl
c3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3QpCit7CisgICAgU2tQYWludCBwYWludDsKKwor
ICAgIG1fY2FudmFzLT5iZWdpblBsYXRmb3JtUGFpbnQoKTsKKyAgICBwYWludC5zZXRDb2xvciht
X2JnQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAg
ICBtX2NhbnZhcy0+ZHJhd0lSZWN0KG1faXJlY3QsIHBhaW50KTsKKworICAgIC8vIEVtdWxhdGUg
Y2xpcHBpbmcKKyAgICBTa0lSZWN0IHRvZmlsbDsKKyAgICB0b2ZpbGwuaW50ZXJzZWN0KG1faXJl
Y3QsIGZpbGxSZWN0KTsKKyAgICBwYWludC5zZXRDb2xvcihtX2ZnQ29sb3IpOworICAgIHBhaW50
LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0
KHRvZmlsbCwgcGFpbnQpOworCisgICAgbWFya1N0YXRlKCk7CisgICAgbV9jYW52YXMtPmVuZFBs
YXRmb3JtUGFpbnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFNoZWxsV2ViVGhlbWUKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29u
dHJvbERSVC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVD
b250cm9sRFJULmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWQyZTc5YQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlRoZW1lQ29udHJvbERSVC5oCkBAIC0wLDAgKzEsMjA2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGVzdFNoZWxsV2ViVGhlbWU6
OkNvbnRyb2wgaW1wbGVtZW50cyB0aGUgZ2VuZXJpYyByZW5kZXJpbmcgb2YgY29udHJvbHMKKy8v
IG5lZWRlZCBieSBUZXN0U2hlbGxXZWJUaGVtZTo6RW5naW5lLiBTZWUgdGhlIGNvbW1lbnRzIGlu
IHRoYXQgY2xhc3MKKy8vIGhlYWRlciBmaWxlIGZvciB3aHkgdGhpcyBjbGFzcyBpcyBuZWVkZWQg
YW5kIHVzZWQuCisvLworLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgZ2VuZXJpYyBzZXQgb2Yg
d2lkZ2V0cyB1c2luZyBTa2lhLiBUaGUgd2lkZ2V0cworLy8gYXJlIG9wdGltaXplZCBmb3IgdGVz
dGFiaWxpdHksIG5vdCBhIHBsZWFzaW5nIGFwcGVhcmFuY2UuCisvLworCisjaWZuZGVmIFdlYlRo
ZW1lQ29udHJvbERSVF9oCisjZGVmaW5lIFdlYlRoZW1lQ29udHJvbERSVF9oCisKKyNpbmNsdWRl
ICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lh
L2luY2x1ZGUvY29yZS9Ta0NvbG9yLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisK
Ky8vIFNraWEgZm9yd2FyZCBkZWNsYXJhdGlvbnMKK3N0cnVjdCBTa0lSZWN0OworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVGhlbWVDb250cm9sRFJUIDogcHVibGljIE5vbmNvcHlh
YmxlIHsKK3B1YmxpYzoKKyAgICAvLyBUaGlzIGxpc3Qgb2Ygc3RhdGVzIG1vc3RseSBtaXJyb3Jz
IHRoZSBsaXN0IGluCisgICAgLy8gdGhpcmRfcGFydHkvV2ViS2l0L1dlYkNvcmUvcGxhdGZvcm0v
VGhlbWVUeXBlcy5oIGJ1dCBpcyBtYWludGFpbmVkCisgICAgLy8gc2VwYXJhdGVseSBzaW5jZSB0
aGF0IGlzbid0IHB1YmxpYyBhbmQgYWxzbyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMuCisgICAg
Ly8gTm90ZSB0aGF0IHRoZSBXZWJLaXQgVGhlbWVUeXBlcyBzZWVtIHRvIGltcGx5IHRoYXQgYSBj
b250cm9sIGNhbiBiZQorICAgIC8vIGluIG11bHRpcGxlIHN0YXRlcyBzaW11bHRhbmVvdXNseSBi
dXQgV2ViVGhlbWVFbmdpbmUgb25seSBhbGxvd3MgZm9yCisgICAgLy8gYSBzaW5nbGUgc3RhdGUg
YXQgYSB0aW1lLgorICAgIC8vCisgICAgLy8gU29tZSBkZWZpbml0aW9ucyBmb3IgdGhlIHZhcmlv
dXMgc3RhdGVzOgorICAgIC8vICAgRGlzYWJsZWQgLSBpbmRpY2F0ZXMgdGhhdCBhIGNvbnRyb2wg
Y2FuJ3QgYmUgbW9kaWZpZWQgb3Igc2VsZWN0ZWQKKyAgICAvLyAgICAgICAgICAgICAgKGNvcnJl
c3BvbmRzIHRvIEhUTUwgJ2Rpc2FibGVkJyBhdHRyaWJ1dGUpCisgICAgLy8gICBSZWFkT25seSAt
IGluZGljYXRlcyB0aGF0IGEgY29udHJvbCBjYW4ndCBiZSBtb2RpZmllZCBidXQgY2FuIGJlCisg
ICAgLy8gICAgICAgICAgICAgIHNlbGVjdGVkCisgICAgLy8gICBOb3JtYWwgICAtIHRoZSBub3Jt
YWwgc3RhdGUgb2YgY29udHJvbCBvbiB0aGUgcGFnZSB3aGVuIGl0IGlzbid0CisgICAgLy8gICAg
ICAgICAgICAgIGZvY3VzZWQgb3Igb3RoZXJ3aXNlIGFjdGl2ZQorICAgIC8vICAgSG90ICAgICAg
LSB3aGVuIHRoZSBtb3VzZSBpcyBob3ZlcmluZyBvdmVyIGEgcGFydCBvZiB0aGUgY29udHJvbCwK
KyAgICAvLyAgICAgICAgICAgICAgYWxsIHRoZSBvdGhlciBwYXJ0cyBhcmUgY29uc2lkZXJlZCAi
aG90IgorICAgIC8vICAgSG92ZXIgICAgLSB3aGVuIHRoZSBtb3VzZSBpcyBkaXJlY3RseSBvdmVy
IGEgY29udHJvbCAodGhlIENTUworICAgIC8vICAgICAgICAgICAgICAgOmhvdmVyIHBzZXVkby1j
bGFzcykKKyAgICAvLyAgIEZvY3VzZWQgIC0gd2hlbiB0aGUgY29udHJvbCBoYXMgdGhlIGtleWJv
YXJkIGZvY3VzCisgICAgLy8gICBQcmVzc2VkICAtIHdoZW4gdGhlIGNvbnRyb2wgaXMgYmVpbmcg
dHJpZ2dlcmVkIChieSBhIG1vdXNlZG93biBvcgorICAgIC8vICAgICAgICAgICAgICBhIGtleSBl
dmVudCkuCisgICAgLy8gICBJbmRldGVybWluYXRlIC0gd2hlbiBzZXQgdG8gaW5kZXRlcm1pbmF0
ZSAob25seSBmb3IgcHJvZ3Jlc3MgYmFyKQorICAgIGVudW0gU3RhdGUgeworICAgICAga1Vua25v
d25TdGF0ZSA9IDAsCisgICAgICBrRGlzYWJsZWRTdGF0ZSwKKyAgICAgIGtSZWFkT25seVN0YXRl
LAorICAgICAga05vcm1hbFN0YXRlLAorICAgICAga0hvdFN0YXRlLAorICAgICAga0hvdmVyU3Rh
dGUsCisgICAgICBrRm9jdXNlZFN0YXRlLAorICAgICAga1ByZXNzZWRTdGF0ZSwKKyAgICAgIGtJ
bmRldGVybWluYXRlU3RhdGUKKyAgICB9OworCisgICAgLy8gVGhpcyBsaXN0IG9mIHR5cGVzIG1v
c3RseSBtaXJyb3JzIHRoZSBsaXN0IGluCisgICAgLy8gV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5
cGVzLmggYnV0IGlzIG1haW50YWluZWQKKyAgICAvLyBzZXBhcmF0ZWx5IHNpbmNlIHRoYXQgaXNu
J3QgcHVibGljIGFuZCBhbHNvIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcy4KKyAgICAvLworICAg
IC8vIE5vdGUgdGhhdCB3aGF0IHRoZSB1c2VyIG1pZ2h0IHRoaW5rIG9mIGFzIGEgc2luZ2xlIGNv
bnRyb2wgY2FuIGJlCisgICAgLy8gbWFkZSB1cCBvZiBtdWx0aXBsZSBwYXJ0cy4gRm9yIGV4YW1w
bGUsIGEgc2luZ2xlIHNjcm9sbCBiYXIgY29udGFpbnMKKyAgICAvLyBzaXggY2xpY2thYmxlIHBh
cnRzIC0gdHdvIGFycm93cywgdGhlICJ0aHVtYiIgaW5kaWNhdGluZyB0aGUgY3VycmVudAorICAg
IC8vIHBvc2l0aW9uIG9uIHRoZSBiYXIsIHRoZSBvdGhlciB0d28gcGFydHMgb2YgdGhlIGJhciAo
YmVmb3JlIGFuZCBhZnRlcgorICAgIC8vIHRoZSB0aHVtYikgYW5kIHRoZSAiZ3JpcHBlciIgb24g
dGhlIHRodW1iIGl0c2VsZi4KKyAgICAvLworICAgIGVudW0gVHlwZSB7CisgICAgICBrVW5rbm93
blR5cGUgPSAwLAorICAgICAga1RleHRGaWVsZFR5cGUsCisgICAgICBrUHVzaEJ1dHRvblR5cGUs
CisgICAgICBrVW5jaGVja2VkQm94VHlwZSwKKyAgICAgIGtDaGVja2VkQm94VHlwZSwKKyAgICAg
IGtVbmNoZWNrZWRSYWRpb1R5cGUsCisgICAgICBrQ2hlY2tlZFJhZGlvVHlwZSwKKyAgICAgIGtI
b3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZSwKKyAgICAgIGtIb3Jpem9udGFsU2Nyb2xsVHJh
Y2tGb3J3YXJkVHlwZSwKKyAgICAgIGtIb3Jpem9udGFsU2Nyb2xsVGh1bWJUeXBlLAorICAgICAg
a0hvcml6b250YWxTY3JvbGxHcmlwVHlwZSwKKyAgICAgIGtWZXJ0aWNhbFNjcm9sbFRyYWNrQmFj
a1R5cGUsCisgICAgICBrVmVydGljYWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlLAorICAgICAga1Zl
cnRpY2FsU2Nyb2xsVGh1bWJUeXBlLAorICAgICAga1ZlcnRpY2FsU2Nyb2xsR3JpcFR5cGUsCisg
ICAgICBrTGVmdEFycm93VHlwZSwKKyAgICAgIGtSaWdodEFycm93VHlwZSwKKyAgICAgIGtVcEFy
cm93VHlwZSwKKyAgICAgIGtEb3duQXJyb3dUeXBlLAorICAgICAga0hvcml6b250YWxTbGlkZXJU
cmFja1R5cGUsCisgICAgICBrSG9yaXpvbnRhbFNsaWRlclRodW1iVHlwZSwKKyAgICAgIGtEcm9w
RG93bkJ1dHRvblR5cGUsCisgICAgICBrUHJvZ3Jlc3NCYXJUeXBlCisgICAgfTsKKworICAgIC8v
IGNhbnZhcyBpcyB0aGUgY2FudmFzIHRvIGRyYXcgb250bywgYW5kIHJlY3QgZ2l2ZXMgdGhlIHNp
emUgb2YgdGhlCisgICAgLy8gY29udHJvbC4gY3R5cGUgYW5kIGNzdGF0ZSBzcGVjaWZ5IHRoZSB0
eXBlIGFuZCBzdGF0ZSBvZiB0aGUgY29udHJvbC4KKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQoc2tp
YTo6UGxhdGZvcm1DYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U2tJUmVjdCYgcmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgVHlwZSBjdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgU3RhdGUgY3N0YXRlKTsKKyAgICB+V2ViVGhlbWVDb250cm9sRFJU
KCk7CisKKyAgICAvLyBEcmF3cyB0aGUgY29udHJvbC4KKyAgICB2b2lkIGRyYXcoKTsKKworICAg
IC8vIFVzZSB0aGlzIGZvciBUZXh0RmllbGQgY29udHJvbHMgaW5zdGVhZCwgYmVjYXVzZSB0aGUg
bG9naWMKKyAgICAvLyBmb3IgZHJhd2luZyB0aGVtIGlzIGRlcGVuZGVudCBvbiB3aGF0IFdlYktp
dCB0ZWxscyB1cyB0byBkby4KKyAgICAvLyBJZiBkcmF3X2VkZ2VzIGlzIHRydWUsIGRyYXcgYW4g
ZWRnZSBhcm91bmQgdGhlIGNvbnRyb2wuIElmCisgICAgLy8gZmlsbF9jb250ZW50X2FyZWEgaXMg
dHJ1ZSwgZmlsbCB0aGUgY29udGVudCBhcmVhIHdpdGggdGhlIGdpdmVuIGNvbG9yLgorICAgIHZv
aWQgZHJhd1RleHRGaWVsZChib29sIGRyYXdFZGdlcywgYm9vbCBmaWxsQ29udGVudEFyZWEsIFNr
Q29sb3IgY29sb3IpOworCisgICAgLy8gVXNlIHRoaXMgZm9yIGRyYXdpbmcgUHJvZ3Jlc3NCYXIg
Y29udHJvbHMgaW5zdGVhZCwgc2luY2Ugd2UKKyAgICAvLyBuZWVkIHRvIGtub3cgdGhlIHJlY3Qg
dG8gZmlsbCBpbnNpZGUgdGhlIGJhci4KKyAgICB2b2lkIGRyYXdQcm9ncmVzc0Jhcihjb25zdCBT
a0lSZWN0JiBmaWxsUmVjdCk7CisKK3ByaXZhdGU6CisgICAgLy8gRHJhd3MgYSBib3ggb2Ygc2l6
ZSBzcGVjaWZpZWQgYnkgaXJlY3QsIGZpbGxlZCB3aXRoIHRoZSBnaXZlbiBjb2xvci4KKyAgICAv
LyBUaGUgYm94IHdpbGwgaGF2ZSBhIGJvcmRlciBkcmF3biBpbiB0aGUgZGVmYXVsdCBlZGdlIGNv
bG9yLgorICAgIHZvaWQgYm94KGNvbnN0IFNrSVJlY3QmIGlyZWN0LCBTa0NvbG9yIGNvbG9yKTsK
KworCisgICAgLy8gRHJhd3MgYSB0cmlhbmdsZSBvZiBzaXplIHNwZWNpZmllZCBieSB0aGUgdGhy
ZWUgcGFpcnMgb2YgY29vcmRpbmF0ZXMsCisgICAgLy8gZmlsbGVkIHdpdGggdGhlIGdpdmVuIGNv
bG9yLiBUaGUgYm94IHdpbGwgaGF2ZSBhbiBlZGdlIGRyYXduIGluIHRoZQorICAgIC8vIGRlZmF1
bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIHRyaWFuZ2xlKGludCB4MCwgaW50IHkwLCBpbnQgeDEs
IGludCB5MSwgaW50IHgyLCBpbnQgeTIsIFNrQ29sb3IgY29sb3IpOworCisgICAgLy8gRHJhd3Mg
YSByZWN0YW5nbGUgdGhlIHNpemUgb2YgdGhlIGNvbnRyb2wgd2l0aCByb3VuZGVkIGNvcm5lcnMs
IGZpbGxlZAorICAgIC8vIHdpdGggdGhlIHNwZWNpZmllZCBjb2xvciAoYW5kIHdpdGggYSBib3Jk
ZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvcikuCisgICAgdm9pZCByb3VuZFJlY3QoU2tDb2xv
ciBjb2xvcik7CisKKyAgICAvLyBEcmF3cyBhbiBvdmFsIHRoZSBzaXplIG9mIHRoZSBjb250cm9s
LCBmaWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yCisgICAgLy8gYW5kIHdpdGggYSBib3Jk
ZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIG92YWwoU2tDb2xvciBjb2xv
cik7CisKKyAgICAvLyBEcmF3cyBhIGNpcmNsZSBjZW50ZXJlZCBpbiB0aGUgY29udHJvbCB3aXRo
IHRoZSBzcGVjaWZpZWQgcmFkaXVzLAorICAgIC8vIGZpbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQg
Y29sb3IsIGFuZCB3aXRoIGEgYm9yZGVyIGRyYXcgaW4gdGhlCisgICAgLy8gZGVmYXVsdCBlZGdl
IGNvbG9yLgorICAgIHZvaWQgY2lyY2xlKFNrU2NhbGFyIHJhZGl1cywgU2tDb2xvciBjb2xvcik7
CisKKyAgICAvLyBEcmF3cyBhIGJveCB0aGUgc2l6ZSBvZiB0aGUgY29udHJvbCwgZmlsbGVkIHdp
dGggdGhlIG91dGVyQ29sb3IgYW5kCisgICAgLy8gd2l0aCBhIGJvcmRlciBpbiB0aGUgZGVmYXVs
dCBlZGdlIGNvbG9yLCBhbmQgdGhlbiBkcmF3cyBhbm90aGVyIGJveAorICAgIC8vIGluZGVudGVk
IG9uIGFsbCBmb3VyIHNpZGVzIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50cywgZmlsbGVkIHdpdGgg
dGhlCisgICAgLy8gaW5uZXIgY29sb3IgYW5kIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQg
ZWRnZSBjb2xvci4KKyAgICB2b2lkIG5lc3RlZEJveGVzKGludCBpbmRlbnRMZWZ0LAorICAgICAg
ICAgICAgICAgICAgICAgaW50IGluZGVudFRvcCwKKyAgICAgICAgICAgICAgICAgICAgIGludCBp
bmRlbnRSaWdodCwKKyAgICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRCb3R0b20sCisgICAg
ICAgICAgICAgICAgICAgICBTa0NvbG9yIG91dGVyQ29sb3IsCisgICAgICAgICAgICAgICAgICAg
ICBTa0NvbG9yIGlubmVyQ29sb3IpOworCisgICAgLy8gRHJhd3MgYSBsaW5lIGJldHdlZW4gdGhl
IHR3byBwb2ludHMgaW4gdGhlIGdpdmVuIGNvbG9yLgorICAgIHZvaWQgbGluZShpbnQgeDAsIGlu
dCB5MCwgaW50IHgxLCBpbnQgeTEsIFNrQ29sb3IgY29sb3IpOworCisgICAgLy8gRHJhd3MgYSBk
aXN0aW5jdGl2ZSBtYXJrIG9uIHRoZSBjb250cm9sIGZvciBlYWNoIHN0YXRlLCBzbyB0aGF0IHRo
ZQorICAgIC8vIHN0YXRlIG9mIHRoZSBjb250cm9sIGNhbiBiZSBkZXRlcm1pbmVkIHdpdGhvdXQg
bmVlZGluZyB0byBrbm93IHdoaWNoCisgICAgLy8gY29sb3IgaXMgd2hpY2guCisgICAgdm9pZCBt
YXJrU3RhdGUoKTsKKworICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzKiBtX2NhbnZhczsKKyAgICBj
b25zdCBTa0lSZWN0IG1faXJlY3Q7CisgICAgY29uc3QgVHlwZSBtX3R5cGU7CisgICAgY29uc3Qg
U3RhdGUgbV9zdGF0ZTsKKyAgICBjb25zdCBTa0NvbG9yIG1fZWRnZUNvbG9yOworICAgIGNvbnN0
IFNrQ29sb3IgbV9iZ0NvbG9yOworICAgIGNvbnN0IFNrQ29sb3IgbV9mZ0NvbG9yOworCisgICAg
Ly8gVGhlIGZvbGxvd2luZyBhcmUgY29udmVuaWVuY2UgYWNjZXNzb3JzIGZvciBtX2lyZWN0Lgor
ICAgIGNvbnN0IGludCBtX2xlZnQ7CisgICAgY29uc3QgaW50IG1fcmlnaHQ7CisgICAgY29uc3Qg
aW50IG1fdG9wOworICAgIGNvbnN0IGludCBtX2JvdHRvbTsKKyAgICBjb25zdCBpbnQgbV93aWR0
aDsKKyAgICBjb25zdCBpbnQgbV9oZWlnaHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFdlYlRoZW1lQ29udHJvbERSVF9oCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWMyNDYxYwotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJULmNw
cApAQCAtMCwwICsxLDY5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUaGVt
ZUVuZ2luZURSVC5oIgorCisjaW5jbHVkZSAiV2ViVGhlbWVDb250cm9sRFJULmgiCisjaW5jbHVk
ZSAicHVibGljL1dlYlJlY3QuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUv
Y29yZS9Ta1JlY3QuaCIKKworLy8gQWx0aG91Z2ggYWxsIHRoaXMgY29kZSBpcyBnZW5lcmljLCB3
ZSBpbmNsdWRlIHRoZXNlIGhlYWRlcnMKKy8vIHRvIHB1bGwgaW4gdGhlIFdpbmRvd3MgI2RlZmlu
ZXMgZm9yIHRoZSBwYXJ0cyBhbmQgc3RhdGVzIG9mCisvLyB0aGUgY29udHJvbHMuCisjaW5jbHVk
ZSA8dnNzdHlsZS5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisKKyNpZm5kZWYgQ0hFQ0tfRVEKKyNkZWZpbmUgQ0hFQ0tfRVEoYSwgYikgXAor
ICAgIGRvIHtcCisgICAgICAgIGlmICghKChhKSA9PSAoYikpKSB7IFwKKyAgICAgICAgV1RGUmVw
b3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJ
T04sICNhICIgIT0gIiAjYik7IFwKKyAgICAgICAgICAgIENSQVNIKCk7IFwKKyAgICAgICAgfSBc
CisgICAgfSB3aGlsZSAoMCkKKyNlbmRpZgorCisjZGVmaW5lIE5PVF9SRUFDSEVEX0NSQVNIKCkg
XAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBcCisgICAgQ1JBU0goKTsKKworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIHsKKworLy8gV2UgZGVmaW5lIHRoaXMgZm9yIGNsYXJp
dHksIGFsdGhvdWdoIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgYSBERkNTX05PUk1BTCBpbiB3aW51
c2VyLmguCitjb25zdCBpbnQga0RGQ1NOb3JtYWwgPSAweDAwMDA7CisKK1NrSVJlY3Qgd2ViUmVj
dFRvU2tJUmVjdChjb25zdCBXZWJSZWN0JiB3ZWJSZWN0KQoreworICAgIFNrSVJlY3QgaXJlY3Q7
CisgICAgaXJlY3Quc2V0KHdlYlJlY3QueCwgd2ViUmVjdC55LCB3ZWJSZWN0LnggKyB3ZWJSZWN0
LndpZHRoLCB3ZWJSZWN0LnkgKyB3ZWJSZWN0LmhlaWdodCk7CisgICAgcmV0dXJuIGlyZWN0Owor
fQorCit2b2lkIGRyYXdDb250cm9sKFdlYkNhbnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJSZWN0JiByZWN0LAorICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xE
UlQ6OlR5cGUgY3R5cGUsCisgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVDo6U3Rh
dGUgY3N0YXRlKQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVCBjb250cm9sKGNhbnZhcywgd2Vi
UmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNzdGF0ZSk7CisgICAgY29udHJvbC5kcmF3KCk7
Cit9CisKK3ZvaWQgZHJhd1RleHRGaWVsZChXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0LAorICAgICAgICAgICAgICAgICAgIFdlYlRoZW1l
Q29udHJvbERSVDo6VHlwZSBjdHlwZSwKKyAgICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRy
b2xEUlQ6OlN0YXRlIGNzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICBib29sIGRyYXdFZGdlcywK
KyAgICAgICAgICAgICAgICAgICBib29sIGZpbGxDb250ZW50QXJlYSwKKyAgICAgICAgICAgICAg
ICAgICBXZWJDb2xvciBjb2xvcikKK3sKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQgY29udHJvbChj
YW52YXMsIHdlYlJlY3RUb1NrSVJlY3QocmVjdCksIGN0eXBlLCBjc3RhdGUpOworICAgIGNvbnRy
b2wuZHJhd1RleHRGaWVsZChkcmF3RWRnZXMsIGZpbGxDb250ZW50QXJlYSwgY29sb3IpOworfQor
Cit2b2lkIGRyYXdQcm9ncmVzc0JhcihXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAg
ICAgICAgIFdlYlRoZW1lQ29udHJvbERSVDo6VHlwZSBjdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgIFdlYlRoZW1lQ29udHJvbERSVDo6U3RhdGUgY3N0YXRlLAorICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViUmVjdCYgYmFyUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YlJlY3QmIGZpbGxSZWN0KQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVCBjb250cm9sKGNhbnZh
cywgd2ViUmVjdFRvU2tJUmVjdChiYXJSZWN0KSwgY3R5cGUsIGNzdGF0ZSk7CisgICAgY29udHJv
bC5kcmF3UHJvZ3Jlc3NCYXIod2ViUmVjdFRvU2tJUmVjdChmaWxsUmVjdCkpOworfQorCit9IC8v
IG5hbWVzcGFjZQorCisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50QnV0dG9uKFdlYkNh
bnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBh
cnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAg
ICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtV
bmtub3duVHlwZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVDo6a1Vua25vd25TdGF0ZTsKKworICAgIGlmIChwYXJ0ID09IEJQX0NIRUNL
Qk9YKSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBDQlNfVU5DSEVD
S0VETk9STUFMOgorICAgICAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBrREZDU05vcm1h
bCk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a1VuY2hlY2tlZEJv
eFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtOb3JtYWxT
dGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX1VOQ0hFQ0tFREhP
VDoKKyAgICAgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19CVVRUT05DSEVDSyB8
IERGQ1NfSE9UKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjprVW5j
aGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
a0hvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfVU5DSEVD
S0VEUFJFU1NFRDoKKyAgICAgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19CVVRU
T05DSEVDSyB8IERGQ1NfUFVTSEVEKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250
cm9sRFJUOjprVW5jaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVDo6a1ByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgQ0JTX1VOQ0hFQ0tFRERJU0FCTEVEOgorICAgICAgICAgICAgQ0hFQ0tfRVEoY2xhc3Np
Y1N0YXRlLCBERkNTX0JVVFRPTkNIRUNLIHwgREZDU19JTkFDVElWRSk7CisgICAgICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a1VuY2hlY2tlZEJveFR5cGU7CisgICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtEaXNhYmxlZFN0YXRlOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRE5PUk1BTDoKKyAgICAgICAgICAg
IENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCk7
CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a0NoZWNrZWRCb3hUeXBl
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprTm9ybWFsU3RhdGU7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCU19DSEVDS0VESE9UOgorICAg
ICAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBERkNTX0JVVFRPTkNIRUNLIHwgREZDU19D
SEVDS0VEIHwgREZDU19IT1QpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6OmtDaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVDo6a0hvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNf
Q0hFQ0tFRFBSRVNTRUQ6CisgICAgICAgICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIERGQ1Nf
QlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQgfCBERkNTX1BVU0hFRCk7CisgICAgICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a0NoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprUHJlc3NlZFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRERJU0FCTEVEOgorICAgICAgICAgICAg
Q0hFQ0tfRVEoY2xhc3NpY1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgREZDU19CVVRUT05D
SEVDSyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSU5BQ1RJVkUpOworICAgICAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtDaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a0Rpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTk9UX1JFQUNIRURfQ1JBU0goKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChCUF9SQURJT0JV
VFRPTiA9PSBwYXJ0KSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBS
QlNfVU5DSEVDS0VETk9STUFMOgorICAgICAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBE
RkNTX0JVVFRPTlJBRElPKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
OjprVW5jaGVja2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUOjprTm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IFJCU19VTkNIRUNLRURIT1Q6CisgICAgICAgICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIERG
Q1NfQlVUVE9OUkFESU8gfCBERkNTX0hPVCk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1l
Q29udHJvbERSVDo6a1VuY2hlY2tlZFJhZGlvVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVDo6a0hvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBSQlNfVU5DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAgIENIRUNLX0VRKGNsYXNz
aWNTdGF0ZSwgREZDU19CVVRUT05SQURJTyB8IERGQ1NfUFVTSEVEKTsKKyAgICAgICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjprVW5jaGVja2VkUmFkaW9UeXBlOworICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprUHJlc3NlZFN0YXRlOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VERElTQUJMRUQ6CisgICAgICAg
ICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0lOQUNU
SVZFKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjprVW5jaGVja2Vk
UmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprRGlz
YWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJTX0NIRUNL
RUROT1JNQUw6CisgICAgICAgICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIERGQ1NfQlVUVE9O
UkFESU8gfCBERkNTX0NIRUNLRUQpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6OmtDaGVja2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVD
b250cm9sRFJUOjprTm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIFJCU19DSEVDS0VESE9UOgorICAgICAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBE
RkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEIHwgREZDU19IT1QpOworICAgICAgICAgICAg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtDaGVja2VkUmFkaW9UeXBlOworICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprSG90U3RhdGU7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFJCU19DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAgIENI
RUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19CVVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tFRCB8IERG
Q1NfUFVTSEVEKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjprQ2hl
Y2tlZFJhZGlvVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
a1ByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJTX0NI
RUNLRURESVNBQkxFRDoKKyAgICAgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19C
VVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSU5BQ1RJVkUpOworICAgICAgICAgICAg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtDaGVja2VkUmFkaW9UeXBlOworICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprRGlzYWJsZWRTdGF0ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBOT1RfUkVBQ0hFRF9D
UkFTSCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKEJQ
X1BVU0hCVVRUT04gPT0gcGFydCkgeworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAg
IGNhc2UgUEJTX05PUk1BTDoKKyAgICAgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZD
U19CVVRUT05QVVNIKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpr
UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
OmtOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUEJTX0hP
VDoKKyAgICAgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19CVVRUT05QVVNIIHwg
REZDU19IT1QpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtQdXNo
QnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a0hv
dFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQQlNfUFJFU1NFRDoK
KyAgICAgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19CVVRUT05QVVNIIHwgREZD
U19QVVNIRUQpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtQdXNo
QnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a1By
ZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUEJTX0RJU0FC
TEVEOgorICAgICAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBERkNTX0JVVFRPTlBVU0gg
fCBERkNTX0lOQUNUSVZFKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
OjprUHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6OmtEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQ
QlNfREVGQVVMVEVEOgorICAgICAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBERkNTX0JV
VFRPTlBVU0gpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtQdXNo
QnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a0Zv
Y3VzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBOT1RfUkVBQ0hFRF9DUkFTSCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICBOT1RfUkVBQ0hFRF9DUkFTSCgpOworICAgIH0KKwor
ICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisKKwordm9p
ZCBXZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRNZW51TGlzdChXZWJDYW52YXMqIGNhbnZhcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtVbmtub3duVHlw
ZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVDo6a1Vua25vd25TdGF0ZTsKKworICAgIGlmIChDUF9EUk9QRE9XTkJVVFRPTiA9PSBwYXJ0
KSB7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjprRHJvcERvd25CdXR0b25U
eXBlOworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgQ0JYU19OT1JNQUw6
CisgICAgICAgICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIERGQ1NfTUVOVUFSUk9XKTsKKyAg
ICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a05vcm1hbFN0YXRlOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlhTX0hPVDoKKyAgICAgICAgICAgIENI
RUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19NRU5VQVJST1cgfCBERkNTX0hPVCk7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtIb3ZlclN0YXRlOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlhTX1BSRVNTRUQ6CisgICAgICAgICAgICBDSEVD
S19FUShjbGFzc2ljU3RhdGUsIERGQ1NfTUVOVUFSUk9XIHwgREZDU19QVVNIRUQpOworICAgICAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprUHJlc3NlZFN0YXRlOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlhTX0RJU0FCTEVEOgorICAgICAgICAgICAg
Q0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBERkNTX01FTlVBUlJPVyB8IERGQ1NfSU5BQ1RJVkUpOwor
ICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprRGlzYWJsZWRTdGF0ZTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBDUkFT
SCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBDUkFTSCgpOworICAgIH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUs
IGNzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50U2Nyb2xsYmFyQXJy
b3coV2ViQ2FudmFzKiBjYW52YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBXZWJUaGVtZUNvbnRy
b2xEUlQ6OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtVbmtub3duVHlwZTsKKyAg
ICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
a1Vua25vd25TdGF0ZTsKKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIEFCU19VUE5P
Uk1BTDoKKyAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBERkNTX1NDUk9MTFVQKTsKKyAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtVcEFycm93VHlwZTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprTm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBBQlNfRE9XTk5PUk1BTDoKKyAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0
YXRlLCBERkNTX1NDUk9MTERPV04pOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VDo6a0Rvd25BcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
a05vcm1hbFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0xFRlROT1JNQUw6
CisgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19TQ1JPTExMRUZUKTsKKyAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtMZWZ0QXJyb3dUeXBlOworICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIEFCU19SSUdIVE5PUk1BTDoKKyAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0
YXRlLCBERkNTX1NDUk9MTFJJR0hUKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6OmtSaWdodEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
OjprTm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfVVBIT1Q6Cisg
ICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19TQ1JPTExVUCB8IERGQ1NfSE9UKTsK
KyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtVcEFycm93VHlwZTsKKyAgICAg
ICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprSG90U3RhdGU7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBBQlNfRE9XTkhPVDoKKyAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRl
LCBERkNTX1NDUk9MTERPV04gfCBERkNTX0hPVCk7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUOjprRG93bkFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUOjprSG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfTEVGVEhP
VDoKKyAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBERkNTX1NDUk9MTExFRlQgfCBERkNT
X0hPVCk7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjprTGVmdEFycm93VHlw
ZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprSG90U3RhdGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfUklHSFRIT1Q6CisgICAgICAgIENIRUNLX0VRKGNs
YXNzaWNTdGF0ZSwgREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfSE9UKTsKKyAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtSaWdodEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUOjprSG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBBQlNfVVBIT1ZFUjoKKyAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBERkNTX1NDUk9M
TFVQKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtVcEFycm93VHlwZTsK
KyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprSG92ZXJTdGF0ZTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19ET1dOSE9WRVI6CisgICAgICAgIENIRUNLX0VRKGNs
YXNzaWNTdGF0ZSwgREZDU19TQ1JPTExET1dOKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6OmtEb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6OmtIb3ZlclN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0xFRlRI
T1ZFUjoKKyAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBERkNTX1NDUk9MTExFRlQpOwor
ICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a0xlZnRBcnJvd1R5cGU7CisgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a0hvdmVyU3RhdGU7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBBQlNfUklHSFRIT1ZFUjoKKyAgICAgICAgQ0hFQ0tfRVEoY2xhc3Np
Y1N0YXRlLCBERkNTX1NDUk9MTFJJR0hUKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6OmtSaWdodEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUOjprSG92ZXJTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19VUFBSRVNT
RUQ6CisgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19TQ1JPTExVUCB8IERGQ1Nf
UFVTSEVEIHwgREZDU19GTEFUKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
OmtVcEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprUHJl
c3NlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0RPV05QUkVTU0VEOgor
ICAgICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfUFVT
SEVEIHwgREZDU19GTEFUKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtE
b3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtQcmVz
c2VkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfTEVGVFBSRVNTRUQ6Cisg
ICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19TQ1JPTExMRUZUIHwgREZDU19QVVNI
RUQgfCBERkNTX0ZMQVQpOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a0xl
ZnRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a1ByZXNz
ZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19SSUdIVFBSRVNTRUQ6Cisg
ICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfUFVT
SEVEIHwgREZDU19GTEFUKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtS
aWdodEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprUHJl
c3NlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX1VQRElTQUJMRUQ6Cisg
ICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19TQ1JPTExVUCB8IERGQ1NfSU5BQ1RJ
VkUpOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a1VwQXJyb3dUeXBlOwor
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtEaXNhYmxlZFN0YXRlOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0RPV05ESVNBQkxFRDoKKyAgICAgICAgQ0hFQ0tf
RVEoY2xhc3NpY1N0YXRlLCBERkNTX1NDUk9MTERPV04gfCBERkNTX0lOQUNUSVZFKTsKKyAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtEb3duQXJyb3dUeXBlOworICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtEaXNhYmxlZFN0YXRlOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgQUJTX0xFRlRESVNBQkxFRDoKKyAgICAgICAgQ0hFQ0tfRVEoY2xhc3Np
Y1N0YXRlLCBERkNTX1NDUk9MTExFRlQgfCBERkNTX0lOQUNUSVZFKTsKKyAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtMZWZ0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlQ6OmtEaXNhYmxlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgQUJTX1JJR0hURElTQUJMRUQ6CisgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwg
REZDU19TQ1JPTExSSUdIVCB8IERGQ1NfSU5BQ1RJVkUpOworICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVDo6a1JpZ2h0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OmtEaXNhYmxlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1
bHQ6CisgICAgICAgIE5PVF9SRUFDSEVEX0NSQVNIKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisKK3Zv
aWQgV2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50U2Nyb2xsYmFyVGh1bWIoV2ViQ2FudmFzKiBjYW52
YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJ0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGFzc2lj
U3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpUeXBlIGN0eXBlID0g
V2ViVGhlbWVDb250cm9sRFJUOjprVW5rbm93blR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJU
OjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtVbmtub3duU3RhdGU7CisKKyAg
ICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBjYXNlIFNCUF9USFVNQkJUTkhPUlo6CisgICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjprSG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9USFVNQkJUTlZFUlQ6CisgICAgICAgIGN0eXBl
ID0gV2ViVGhlbWVDb250cm9sRFJUOjprVmVydGljYWxTY3JvbGxUaHVtYlR5cGU7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBTQlBfR1JJUFBFUkhPUlo6CisgICAgICAgIGN0eXBlID0gV2Vi
VGhlbWVDb250cm9sRFJUOjprSG9yaXpvbnRhbFNjcm9sbEdyaXBUeXBlOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgU0JQX0dSSVBQRVJWRVJUOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1l
Q29udHJvbERSVDo6a1ZlcnRpY2FsU2Nyb2xsR3JpcFR5cGU7CisgICAgICAgIGJyZWFrOworCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgTk9UX1JFQUNIRURfQ1JBU0goKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgU0NSQlNfTk9STUFMOgor
ICAgICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIGtERkNTTm9ybWFsKTsKKyAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprTm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBTQ1JCU19IT1Q6CisgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZD
U19IT1QpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtIb3RTdGF0ZTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX0hPVkVSOgorICAgICAgICBDSEVDS19F
UShjbGFzc2ljU3RhdGUsIGtERkNTTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVD
b250cm9sRFJUOjprSG92ZXJTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJT
X1BSRVNTRUQ6CisgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwga0RGQ1NOb3JtYWwpOwor
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtQcmVzc2VkU3RhdGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19ESVNBQkxFRDoKKyAgICAgICAgTk9UX1JFQUNI
RURfQ1JBU0goKTsgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLgorICAg
ICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIE5PVF9SRUFDSEVEX0NSQVNIKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwg
Y3R5cGUsIGNzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50U2Nyb2xs
YmFyVHJhY2soV2ViQ2FudmFzKiBjYW52YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBwYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIGFsaWduUmVjdCkKK3sK
KyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
OmtVbmtub3duVHlwZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVDo6a1Vua25vd25TdGF0ZTsKKworICAgIHN3aXRjaCAocGFydCkgewor
ICAgIGNhc2UgU0JQX1VQUEVSVFJBQ0tIT1JaOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVDo6a0hvcml6b250YWxTY3JvbGxUcmFja0JhY2tUeXBlOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgU0JQX0xPV0VSVFJBQ0tIT1JaOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1l
Q29udHJvbERSVDo6a0hvcml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgU0JQX1VQUEVSVFJBQ0tWRVJUOgorICAgICAgICBjdHlwZSA9IFdl
YlRoZW1lQ29udHJvbERSVDo6a1ZlcnRpY2FsU2Nyb2xsVHJhY2tCYWNrVHlwZTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIFNCUF9MT1dFUlRSQUNLVkVSVDoKKyAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlQ6OmtWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgTk9UX1JFQUNIRURfQ1JBU0goKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2Ug
U0NSQlNfTk9STUFMOgorICAgICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIGtERkNTTm9ybWFs
KTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprTm9ybWFsU3RhdGU7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19IT1Q6CisgICAgICAgIE5PVF9SRUFDSEVE
X0NSQVNIKCk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX0hPVkVSOgorICAgICAgICBDSEVDS19FUShjbGFz
c2ljU3RhdGUsIGtERkNTTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUOjprSG92ZXJTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX1BSRVNT
RUQ6CisgICAgICAgIE5PVF9SRUFDSEVEX0NSQVNIKCk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhh
cHBlbiBpbiBwcmFjdGljZS4KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX0RJU0FC
TEVEOgorICAgICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIERGQ1NfSU5BQ1RJVkUpOworICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtEaXNhYmxlZFN0YXRlOworICAgICAg
ICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIENSQVNIKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7
Cit9CisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50VGV4dEZpZWxkKFdlYkNhbnZhcyog
Y2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvbG9yIGNvbG9yLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmaWxsQ29udGVudEFy
ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRyYXdFZGdl
cykKK3sKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6OmtVbmtub3duVHlwZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a1Vua25vd25TdGF0ZTsKKworICAgIENIRUNLX0VRKEVQ
X0VESVRURVhULCBwYXJ0KTsKKyAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a1RleHRG
aWVsZFR5cGU7CisKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBFVFNfTk9STUFMOgor
ICAgICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIGtERkNTTm9ybWFsKTsKKyAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprTm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBFVFNfSE9UOgorICAgICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIERGQ1Nf
SE9UKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprSG90U3RhdGU7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVFNfRElTQUJMRUQ6CisgICAgICAgIENIRUNLX0VR
KGNsYXNzaWNTdGF0ZSwgREZDU19JTkFDVElWRSk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVDo6a0Rpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBF
VFNfU0VMRUNURUQ6CisgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwgREZDU19QVVNIRUQp
OworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtQcmVzc2VkU3RhdGU7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVFNfRk9DVVNFRDoKKyAgICAgICAgQ0hFQ0tfRVEo
Y2xhc3NpY1N0YXRlLCBrREZDU05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVDo6a0ZvY3VzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVUU19S
RUFET05MWToKKyAgICAgICAgQ0hFQ0tfRVEoY2xhc3NpY1N0YXRlLCBrREZDU05vcm1hbCk7Cisg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a1JlYWRPbmx5U3RhdGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgTk9UX1JFQUNIRURfQ1JBU0goKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZHJhd1RleHRGaWVsZChjYW52YXMsIHJlY3Qs
IGN0eXBlLCBjc3RhdGUsIGRyYXdFZGdlcywgZmlsbENvbnRlbnRBcmVhLCBjb2xvcik7Cit9CisK
K3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50VHJhY2tiYXIoV2ViQ2FudmFzKiBjYW52YXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2Vi
VGhlbWVDb250cm9sRFJUOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjprVW5rbm93
blR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6OmtVbmtub3duU3RhdGU7CisKKyAgICBpZiAoVEtQX1RIVU1CQk9UVE9NID09IHBh
cnQpIHsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtIb3Jpem9udGFsU2xp
ZGVyVGh1bWJUeXBlOworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgVFVT
X05PUk1BTDoKKyAgICAgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwga0RGQ1NOb3JtYWwp
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjprTm9ybWFsU3RhdGU7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFRVU19IT1Q6CisgICAgICAgICAg
ICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIERGQ1NfSE9UKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVDo6a0hvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBUVVNfRElTQUJMRUQ6CisgICAgICAgICAgICBDSEVDS19FUShjbGFzc2ljU3Rh
dGUsIERGQ1NfSU5BQ1RJVkUpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUOjprRGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
VFVTX1BSRVNTRUQ6CisgICAgICAgICAgICBDSEVDS19FUShjbGFzc2ljU3RhdGUsIERGQ1NfUFVT
SEVEKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6a1ByZXNzZWRT
dGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBOT1RfUkVBQ0hFRF9DUkFTSCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgaWYgKFRLUF9UUkFDSyA9PSBwYXJ0KSB7CisgICAgICAgIGN0eXBlID0gV2ViVGhl
bWVDb250cm9sRFJUOjprSG9yaXpvbnRhbFNsaWRlclRyYWNrVHlwZTsKKyAgICAgICAgQ0hFQ0tf
RVEocGFydCwgVFVTX05PUk1BTCk7CisgICAgICAgIENIRUNLX0VRKGNsYXNzaWNTdGF0ZSwga0RG
Q1NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtOb3JtYWxT
dGF0ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBOT1RfUkVBQ0hFRF9DUkFTSCgpOworICAgIH0K
KworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisKKwor
dm9pZCBXZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRQcm9ncmVzc0JhcihXZWJLaXQ6OldlYkNhbnZh
cyogY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJLaXQ6OldlYlJlY3QmIGJhclJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgdmFsdWVSZWN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRldGVybWluYXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUpCit7CisgICAgV2ViVGhl
bWVDb250cm9sRFJUOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjprUHJvZ3Jlc3NC
YXJUeXBlOworICAgIFdlYlRoZW1lQ29udHJvbERSVDo6U3RhdGUgY3N0YXRlID0gZGV0ZXJtaW5h
dGUgPyBXZWJUaGVtZUNvbnRyb2xEUlQ6OmtOb3JtYWxTdGF0ZSAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogV2ViVGhlbWVDb250cm9sRFJUOjprSW5k
ZXRlcm1pbmF0ZVN0YXRlOworICAgIGRyYXdQcm9ncmVzc0JhcihjYW52YXMsIGN0eXBlLCBjc3Rh
dGUsIGJhclJlY3QsIHZhbHVlUmVjdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdp
bmVEUlQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5n
aW5lRFJULmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzFiNWM3NAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRo
ZW1lRW5naW5lRFJULmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgaW1wbGVtZW50cyB0aGUgV2Vi
VGhlbWVFbmdpbmUgQVBJIHVzZWQgYnkgdGhlIFdpbmRvd3MgdmVyc2lvbiBvZgorLy8gQ2hyb21p
dW0gdG8gcmVuZGVyIG5hdGl2ZSBmb3JtIGNvbnRyb2xzIGxpa2UgY2hlY2tib3hlcywgcmFkaW8g
YnV0dG9ucywKKy8vIGFuZCBzY3JvbGwgYmFycy4KKy8vIFRoZSBub3JtYWwgaW1wbGVtZW50YXRp
b24gKG5hdGl2ZV90aGVtZSkgcmVuZGVycyB0aGUgY29udHJvbHMgdXNpbmcgZWl0aGVyCisvLyB0
aGUgVVhUaGVtZSB0aGVtaW5nIGVuZ2luZSBwcmVzZW50IGluIFhQLCBWaXN0YSwgYW5kIFdpbiA3
LCBvciB0aGUgImNsYXNzaWMiCisvLyB0aGVtZSB1c2VkIGlmIHRoYXQgdGhlbWUgaXMgc2VsZWN0
ZWQgaW4gdGhlIERlc2t0b3Agc2V0dGluZ3MuCisvLyBVbmZvcnR1bmF0ZWx5LCBib3RoIG9mIHRo
ZXNlIHRoZW1lcyByZW5kZXIgY29udHJvbHMgZGlmZmVyZW50bHkgb24gdGhlCisvLyBkaWZmZXJl
bnQgdmVyc2lvbnMgb2YgV2luZG93cy4KKy8vCisvLyBJbiBvcmRlciB0byBlbnN1cmUgbWF4aW11
bSBjb25zaXN0ZW5jeSBvZiBiYXNlbGluZXMgYWNyb3NzIHRoZSBkaWZmZXJlbnQKKy8vIFdpbmRv
d3MgdmVyc2lvbnMsIHdlIHByb3ZpZGUgYSBzaW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIERSVCBo
ZXJlCisvLyBpbnN0ZWFkLiBUaGVzZSBjb250cm9scyBhcmUgYWN0dWFsbHkgcGxhdGZvcm0taW5k
ZXBlbmRlbnQgKHRoZXkncmUgcmVuZGVyZWQKKy8vIHVzaW5nIFNraWEpIGFuZCBjb3VsZCBiZSB1
c2VkIG9uIExpbnV4IGFuZCB0aGUgTWFjIGFzIHdlbGwsIHNob3VsZCB3ZQorLy8gY2hvb3NlIHRv
IGRvIHNvIGF0IHNvbWUgcG9pbnQuCisvLworCisjaWZuZGVmIFdlYlRoZW1lRW5naW5lRFJUX2gK
KyNkZWZpbmUgV2ViVGhlbWVFbmdpbmVEUlRfaAorCisjaW5jbHVkZSAicHVibGljL1dlYlRoZW1l
RW5naW5lLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJUaGVtZUVuZ2luZURSVCA6IHB1YmxpYyBXZWJUaGVtZUVuZ2luZSwg
cHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBXZWJUaGVtZUVuZ2luZURSVCgpIHt9
CisKKyAgICAvLyBXZWJUaGVtZUVuZ2luZSBtZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEJ1dHRvbigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRl
LCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludE1lbnVMaXN0KAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZh
cyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0
IFdlYktpdDo6V2ViUmVjdCYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQXJy
b3coCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0
YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBwYWludFNjcm9sbGJhclRodW1iKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBw
YXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6
V2ViUmVjdCYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVHJhY2soCisgICAg
ICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNT
dGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwgY29uc3QgV2ViS2l0OjpXZWJS
ZWN0JiBhbGlnblJlY3QpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50VGV4dEZpZWxkKAorICAg
ICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2lj
U3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYsIFdlYktpdDo6V2ViQ29sb3Is
IGJvb2wgZmlsbENvbnRlbnRBcmVhLAorICAgICAgICBib29sIGRyYXdFZGdlcyk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUcmFja2JhcigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBp
bnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJL
aXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFByb2dyZXNzQmFyKAorICAg
ICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgYmFyUmVjdCwK
KyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiB2YWx1ZVJlY3QsCisgICAgICAgIGJvb2wg
ZGV0ZXJtaW5hdGUsIGRvdWJsZSB0aW1lKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViVGhlbWVFbmdpbmVEUlRfaAo=
</data>
<flag name="review"
          id="42804"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58103</attachid>
            <date>2010-06-07 19:38:17 -0700</date>
            <delta_ts>2010-06-08 00:00:04 -0700</delta_ts>
            <desc>patch - WebKit version of WebThemeEngine v2</desc>
            <filename>WebThemeEngine2.patch</filename>
            <type>text/plain</type>
            <size>58857</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjYzc3NTMwLi4yNjIyMTkyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDYt
MDMgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDQwMDUyIC0gW0RS
VC9DaHJvbWl1bV0gVXBzdHJlYW0gdGVzdF9zaGVsbF93ZWJ0aGVtZWVuZ2luZSBhcyBXZWJUaGVt
ZUVuZ2luZURSVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDAwNTIKKyAgICAgICAgCisgICAgICAgIEFkZCBXZWJUaGVtZUVuZ2luZURSVCBhbmQgV2Vi
VGhlbWVDb250cm9sRFJUIHBvcnRlZCBmcm9tIENocm9tZSByZXYuIDQ4OTA3CisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHA6CisgICAgICAgIChwbGF0Zm9ybUluaXQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVt
ZUNvbnRyb2xEUlQ6OldlYlRoZW1lQ29udHJvbERSVCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRo
ZW1lQ29udHJvbERSVDo6fldlYlRoZW1lQ29udHJvbERSVCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRoZW1lQ29udHJvbERSVDo6Ym94KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9s
RFJUOjpsaW5lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9sRFJUOjp0cmlhbmds
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lQ29udHJvbERSVDo6cm91bmRSZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9sRFJUOjpvdmFsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVGhlbWVDb250cm9sRFJUOjpjaXJjbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVt
ZUNvbnRyb2xEUlQ6Om5lc3RlZEJveGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250
cm9sRFJUOjptYXJrU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6
OmRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6OmRyYXdUZXh0Rmll
bGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6OmRyYXdQcm9ncmVzc0Jh
cik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJU
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6Oik6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVE
UlQ6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6OnBh
aW50TWVudUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRT
Y3JvbGxiYXJBcnJvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lRW5naW5lRFJUOjpwYWlu
dFNjcm9sbGJhclRodW1iKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6OnBh
aW50U2Nyb2xsYmFyVHJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZURSVDo6
cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZURSVDo6cGFp
bnRUcmFja2Jhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lRW5naW5lRFJUOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVu
Z2luZURSVC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6Oldl
YlRoZW1lRW5naW5lRFJUKToKKwogMjAxMC0wNi0wNCAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCAyODBjOGRk
Li41ZmM4ZGFiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cGkKQEAgLTM0LDUgKzM0LDE1IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5oJywKICAgICAg
ICAgXSwKKyAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICBbJ09TPT0id2luIics
IHsKKyAgICAgICAgICAgICAgICAnZHJ0X2ZpbGVzJzogWworICAgICAgICAgICAgICAgICAgICAn
Y2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJULmNwcCcsCisgICAgICAgICAgICAgICAgICAgICdj
aHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlQuaCcsCisgICAgICAgICAgICAgICAgICAgICdjaHJv
bWl1bS9XZWJUaGVtZUVuZ2luZURSVC5jcHAnLAorICAgICAgICAgICAgICAgICAgICAnY2hyb21p
dW0vV2ViVGhlbWVFbmdpbmVEUlQuaCcsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
IH1dLAorICAgICAgICBdLAogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwCmluZGV4IDM4ODRlOTQuLjVhNDEwNTgg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bFdpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsV2luLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlRlc3RTaGVsbC5oIgogCisjaW5jbHVkZSAiV2ViVGhlbWVFbmdpbmVEUlQuaCIKICNpbmNs
dWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGZjbnRsLmg+
CiAjaW5jbHVkZSA8aW8uaD4KQEAgLTM4LDYgKzM5LDkgQEAKICNpbmNsdWRlIDxzaGx3YXBpLmg+
CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAorLy8gVGhlbWUgZW5naW5lCitzdGF0aWMgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZURSVCB0aGVtZUVuZ2luZTsKKwogLy8gVGhyZWFkIG1haW4gdG8gcnVu
IGZvciB0aGUgdGhyZWFkIHdoaWNoIGp1c3QgdGVzdHMgZm9yIHRpbWVvdXQuCiB1bnNpZ25lZCBp
bnQgX19zdGRjYWxsIHdhdGNoRG9nVGhyZWFkKHZvaWQqIGFyZykKIHsKQEAgLTEwNSw2ICsxMDks
OSBAQCB2b2lkIHBsYXRmb3JtSW5pdCgpCiAgICAgX3NldG1vZGUoX2ZpbGVubyhzdGRvdXQpLCBf
T19CSU5BUlkpOwogICAgIF9zZXRtb2RlKF9maWxlbm8oc3RkZXJyKSwgX09fQklOQVJZKTsKIAor
ICAgIC8vIFNldCB0aGVtZSBlbmdpbmUuCisgICAgd2Via2l0X3N1cHBvcnQ6OlNldFRoZW1lRW5n
aW5lKCZ0aGVtZUVuZ2luZSk7CisKICAgICAvLyBMb2FkIEFoZW0gZm9udC4KICAgICAvLyBBSEVN
X19fXy5UVEYgaXMgY29waWVkIHRvIHRoZSBkaXJlY3Rvcnkgb2YgRHVtcFJlbmRlclRyZWUuZXhl
IGJ5IFdlYktpdC5neXAuCiAgICAgV0NIQVIgcGF0aFtfTUFYX1BBVEhdOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJULmNw
cCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERS
VC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzM1Y2I5MAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1l
Q29udHJvbERSVC5jcHAKQEAgLTAsMCArMSw1MTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
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
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBh
IHNpbXBsZSBnZW5lcmljIHZlcnNpb24gb2YgdGhlIFdlYktpdFRoZW1lRW5naW5lLAorLy8gd2hp
Y2ggaXMgdXNlZCB0byBkcmF3IGFsbCB0aGUgbmF0aXZlIGNvbnRyb2xzIG9uIGEgd2ViIHBhZ2Uu
IFdlIHVzZSB0aGlzCisvLyBmaWxlIHdoZW4gcnVubmluZyBpbiBsYXlvdXQgdGVzdCBtb2RlIGlu
IG9yZGVyIHRvIHJlbW92ZSBhbnkKKy8vIHBsYXRmb3JtLXNwZWNpZmljIHJlbmRlcmluZyBkaWZm
ZXJlbmNlcyBkdWUgdG8gdGhlbWVzLCBjb2xvcnMsIGV0Yy4KKy8vCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJUaGVtZUNvbnRyb2xEUlQuaCIKKworI2luY2x1ZGUgInNraWEv
ZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgorI2luY2x1ZGUgInNraWEvZXh0L3NraWFfdXRpbHNfd2lu
LmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tQYWludC5oIgor
I2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUGF0aC5oIgorI2luY2x1
ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgorCisjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKK3VzaW5nIG5hbWVzcGFj
ZSBza2lhOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGNvbnN0IFNrQ29sb3IgZWRn
ZUNvbG9yICAgICA9IFNLX0NvbG9yQkxBQ0s7CitzdGF0aWMgY29uc3QgU2tDb2xvciByZWFkT25s
eUNvbG9yID0gU2tDb2xvclNldFJHQigweGU5LCAweGMyLCAweGE2KTsKK3N0YXRpYyBjb25zdCBT
a0NvbG9yIGZnQ29sb3IgICAgICAgPSBTS19Db2xvckJMQUNLOworc3RhdGljIGNvbnN0IFNrQ29s
b3IgYmdDb2xvcnNbXSAgICA9IHsKKyAgICBTS19Db2xvckJMQUNLLCAgICAgICAgICAgICAgICAg
ICAvLyBVbmtub3duCisgICAgU2tDb2xvclNldFJHQigweGM5LCAweGM5LCAweGM5KSwgLy8gRGlz
YWJsZWQKKyAgICBTa0NvbG9yU2V0UkdCKDB4ZjMsIDB4ZTAsIDB4ZDApLCAvLyBSZWFkb25seQor
ICAgIFNrQ29sb3JTZXRSR0IoMHg4OSwgMHhjNCwgMHhmZiksIC8vIE5vcm1hbAorICAgIFNrQ29s
b3JTZXRSR0IoMHg0MywgMHhmOSwgMHhmZiksIC8vIEhvdAorICAgIFNrQ29sb3JTZXRSR0IoMHgy
MCwgMHhmNiwgMHhjYyksIC8vIEZvY3VzZWQKKyAgICBTa0NvbG9yU2V0UkdCKDB4MDAsIDB4ZjMs
IDB4YWMpLCAvLyBIb3ZlcgorICAgIFNrQ29sb3JTZXRSR0IoMHhhOSwgMHhmZiwgMHgxMiksIC8v
IFByZXNzZWQKKyAgICBTa0NvbG9yU2V0UkdCKDB4Y2MsIDB4Y2MsIDB4Y2MpICAvLyBJbmRldGVy
bWluYXRlCit9OworCitzdGF0aWMgU2tJUmVjdCB2YWxpZGF0ZShjb25zdCBTa0lSZWN0JiByZWN0
LCBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUpCit7CisgICAgc3dpdGNoIChjdHlwZSkg
eworICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUOjp1bmNoZWNrZWRCb3hUeXBlOgorICAgIGNh
c2UgV2ViVGhlbWVDb250cm9sRFJUOjpjaGVja2VkQm94VHlwZToKKyAgICBjYXNlIFdlYlRoZW1l
Q29udHJvbERSVDo6dW5jaGVja2VkUmFkaW9UeXBlOgorICAgIGNhc2UgV2ViVGhlbWVDb250cm9s
RFJUOjpjaGVja2VkUmFkaW9UeXBlOiB7CisgICAgICAgIFNrSVJlY3QgcmV0dmFsID0gcmVjdDsK
KworICAgICAgICAvLyBUaGUgbWF4aW11bSB3aWR0aCBhbmQgaGVpZ2h0IGlzIDEzLgorICAgICAg
ICAvLyBDZW50ZXIgdGhlIHNxdWFyZSBpbiB0aGUgcGFzc2VkIHJlY3RhbmdsZS4KKyAgICAgICAg
Y29uc3QgaW50IG1heENvbnRyb2xTaXplID0gMTM7CisgICAgICAgIGludCBjb250cm9sU2l6ZSA9
IG1pbihyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBjb250cm9sU2l6ZSA9
IG1pbihjb250cm9sU2l6ZSwgbWF4Q29udHJvbFNpemUpOworCisgICAgICAgIHJldHZhbC5mTGVm
dCAgID0gcmVjdC5mTGVmdCArIChyZWN0LndpZHRoKCkgLyAyKSAtIChjb250cm9sU2l6ZSAvIDIp
OworICAgICAgICByZXR2YWwuZlJpZ2h0ICA9IHJldHZhbC5mTGVmdCArIGNvbnRyb2xTaXplIC0g
MTsKKyAgICAgICAgcmV0dmFsLmZUb3AgICAgPSByZWN0LmZUb3AgKyAocmVjdC5oZWlnaHQoKSAv
IDIpIC0gKGNvbnRyb2xTaXplIC8gMik7CisgICAgICAgIHJldHZhbC5mQm90dG9tID0gcmV0dmFs
LmZUb3AgKyBjb250cm9sU2l6ZSAtIDE7CisKKyAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICB9
CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gcmVjdDsKKyAgICB9Cit9CisKKy8vIFdl
YlRoZW1lQ29udHJvbERSVAorCitXZWJUaGVtZUNvbnRyb2xEUlQ6OldlYlRoZW1lQ29udHJvbERS
VChQbGF0Zm9ybUNhbnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgU2tJUmVjdCYgaXJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUeXBlIGN0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU3RhdGUgY3N0YXRlKQorICAgIDogbV9jYW52YXMoY2FudmFzKQorICAgICwgbV9p
cmVjdCh2YWxpZGF0ZShpcmVjdCwgY3R5cGUpKQorICAgICwgbV90eXBlKGN0eXBlKQorICAgICwg
bV9zdGF0ZShjc3RhdGUpCisgICAgLCBtX2xlZnQobV9pcmVjdC5mTGVmdCkKKyAgICAsIG1fcmln
aHQobV9pcmVjdC5mUmlnaHQpCisgICAgLCBtX3RvcChtX2lyZWN0LmZUb3ApCisgICAgLCBtX2Jv
dHRvbShtX2lyZWN0LmZCb3R0b20pCisgICAgLCBtX2hlaWdodChtX2lyZWN0LmhlaWdodCgpKQor
ICAgICwgbV93aWR0aChtX2lyZWN0LndpZHRoKCkpCisgICAgLCBtX2VkZ2VDb2xvcihlZGdlQ29s
b3IpCisgICAgLCBtX2JnQ29sb3IoYmdDb2xvcnNbY3N0YXRlXSkKKyAgICAsIG1fZmdDb2xvcihm
Z0NvbG9yKQoreworfQorCitXZWJUaGVtZUNvbnRyb2xEUlQ6On5XZWJUaGVtZUNvbnRyb2xEUlQo
KQoreworfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVDo6Ym94KGNvbnN0IFNrSVJlY3QmIHJl
Y3QsIFNrQ29sb3IgZmlsbENvbG9yKQoreworICAgIFNrUGFpbnQgcGFpbnQ7CisKKyAgICBwYWlu
dC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgcGFpbnQuc2V0Q29sb3IoZmls
bENvbG9yKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsKKworICAgIHBh
aW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50Ojpr
U3Ryb2tlX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsKK30K
Kwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlQ6OmxpbmUoaW50IHgwLCBpbnQgeTAsIGludCB4MSwg
aW50IHkxLCBTa0NvbG9yIGNvbG9yKQoreworICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgcGFpbnQu
c2V0Q29sb3IoY29sb3IpOworICAgIG1fY2FudmFzLT5kcmF3TGluZShTa0ludFRvU2NhbGFyKHgw
KSwgU2tJbnRUb1NjYWxhcih5MCksCisgICAgICAgICAgICAgICAgICAgICAgU2tJbnRUb1NjYWxh
cih4MSksIFNrSW50VG9TY2FsYXIoeTEpLAorICAgICAgICAgICAgICAgICAgICAgIHBhaW50KTsK
K30KKwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlQ6OnRyaWFuZ2xlKGludCB4MCwgaW50IHkwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4MSwgaW50IHkxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4MiwgaW50IHkyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNrQ29sb3IgY29sb3IpCit7CisgICAgU2tQYXRoIHBhdGg7
CisgICAgU2tQYWludCBwYWludDsKKworICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAgICBw
YWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgcGF0aC5pbmNSZXNlcnZl
KDQpOworICAgIHBhdGgubW92ZVRvKFNrSW50VG9TY2FsYXIoeDApLCBTa0ludFRvU2NhbGFyKHkw
KSk7CisgICAgcGF0aC5saW5lVG8oU2tJbnRUb1NjYWxhcih4MSksIFNrSW50VG9TY2FsYXIoeTEp
KTsKKyAgICBwYXRoLmxpbmVUbyhTa0ludFRvU2NhbGFyKHgyKSwgU2tJbnRUb1NjYWxhcih5Mikp
OworICAgIHBhdGguY2xvc2UoKTsKKyAgICBtX2NhbnZhcy0+ZHJhd1BhdGgocGF0aCwgcGFpbnQp
OworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxl
KFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3UGF0aChwYXRoLCBw
YWludCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUOjpyb3VuZFJlY3QoU2tDb2xvciBj
b2xvcikKK3sKKyAgICBTa1JlY3QgcmVjdDsKKyAgICBTa1NjYWxhciByYWRpdXMgPSBTa0ludFRv
U2NhbGFyKDUpOworICAgIFNrUGFpbnQgcGFpbnQ7CisKKyAgICByZWN0LnNldChtX2lyZWN0KTsK
KyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6
a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3Um91bmRSZWN0KHJlY3QsIHJhZGl1cywg
cmFkaXVzLCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7CisgICAg
cGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRy
YXdSb3VuZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMsIHBhaW50KTsKK30KKwordm9pZCBXZWJU
aGVtZUNvbnRyb2xEUlQ6Om92YWwoU2tDb2xvciBjb2xvcikKK3sKKyAgICBTa1JlY3QgcmVjdDsK
KyAgICBTa1BhaW50IHBhaW50OworCisgICAgcmVjdC5zZXQobV9pcmVjdCk7CisgICAgcGFpbnQu
c2V0Q29sb3IoY29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxl
KTsKKyAgICBtX2NhbnZhcy0+ZHJhd092YWwocmVjdCwgcGFpbnQpOworCisgICAgcGFpbnQuc2V0
Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2Vf
U3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3T3ZhbChyZWN0LCBwYWludCk7Cit9CisKK3ZvaWQg
V2ViVGhlbWVDb250cm9sRFJUOjpjaXJjbGUoU2tTY2FsYXIgcmFkaXVzLCBTa0NvbG9yIGNvbG9y
KQoreworICAgIFNrU2NhbGFyIGN5ID0gU2tJbnRUb1NjYWxhcihtX3RvcCAgKyBtX2hlaWdodCAv
IDIpOworICAgIFNrU2NhbGFyIGN4ID0gU2tJbnRUb1NjYWxhcihtX2xlZnQgKyBtX3dpZHRoIC8g
Mik7CisgICAgU2tQYWludCBwYWludDsKKworICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAg
ICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRy
YXdDaXJjbGUoY3gsIGN5LCByYWRpdXMsIHBhaW50KTsKKworICAgIHBhaW50LnNldENvbG9yKG1f
ZWRnZUNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsK
KyAgICBtX2NhbnZhcy0+ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1cywgcGFpbnQpOworfQorCit2
b2lkIFdlYlRoZW1lQ29udHJvbERSVDo6bmVzdGVkQm94ZXMoaW50IGluZGVudExlZnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGVudFRvcCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZW50UmlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGVudEJvdHRvbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTa0NvbG9yIG91dGVyQ29sb3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBpbm5lckNvbG9yKQoreworICAgIFNr
SVJlY3QgbGlyZWN0OworICAgIGJveChtX2lyZWN0LCBvdXRlckNvbG9yKTsKKyAgICBsaXJlY3Qu
c2V0KG1faXJlY3QuZkxlZnQgKyBpbmRlbnRMZWZ0LAorICAgICAgICAgICAgICAgbV9pcmVjdC5m
VG9wICsgaW5kZW50VG9wLAorICAgICAgICAgICAgICAgbV9pcmVjdC5mUmlnaHQgLSBpbmRlbnRS
aWdodCwKKyAgICAgICAgICAgICAgIG1faXJlY3QuZkJvdHRvbSAtIGluZGVudEJvdHRvbSk7Cisg
ICAgYm94KGxpcmVjdCwgaW5uZXJDb2xvcik7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJU
OjptYXJrU3RhdGUoKQoreworICAgIC8vIFRoZSBob3Jpem9udGFsIGxpbmVzIGluIGEgcmVhZCBv
bmx5IGNvbnRyb2wgYXJlIHNwYWNlZCBieSB0aGlzIGFtb3VudC4KKyAgICBjb25zdCBpbnQgcmVh
ZE9ubHlMaW5lT2Zmc2V0ID0gNTsKKworICAgIC8vIFRoZSBsZW5ndGggb2YgYSB0cmlhbmdsZSBz
aWRlIGZvciB0aGUgY29ybmVyIG1hcmtzLgorICAgIGNvbnN0IGludCB0cmlhbmdsZVNpemUgPSA1
OworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSB1bmtub3duU3RhdGU6CisgICAg
Y2FzZSBkaXNhYmxlZFN0YXRlOgorICAgIGNhc2Ugbm9ybWFsU3RhdGU6CisgICAgICAgIC8vIERv
bid0IHZpc3VhbGx5IG1hcmsgdGhlc2Ugc3RhdGVzIChjb2xvciBpcyBlbm91Z2gpLgorICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgcmVhZE9ubHlTdGF0ZToKKyAgICAgICAgLy8gRHJhd2luZyBs
aW5lcyBhY3Jvc3MgdGhlIGNvbnRyb2wuCisgICAgICAgIGZvciAoaW50IGkgPSBtX3RvcCArIHJl
YWRPbmx5TGluZU9mZnNldDsgaSA8IG1fYm90dG9tOyBpICs9IHJlYWRPbmx5TGluZU9mZnNldCkK
KyAgICAgICAgICBsaW5lKG1fbGVmdCArIDEsIGksIG1fcmlnaHQgLSAxLCBpLCByZWFkT25seUNv
bG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGhvdFN0YXRlOgorICAgICAgICAvLyBE
cmF3IGEgdHJpYW5nbGUgaW4gdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBjb250cm9sLgor
ICAgICAgICB0cmlhbmdsZShtX2xlZnQsICAgICAgICAgICAgICAgICBtX3RvcCwKKyAgICAgICAg
ICAgICAgICAgbV9sZWZ0ICsgdHJpYW5nbGVTaXplLCAgbV90b3AsCisgICAgICAgICAgICAgICAg
IG1fbGVmdCwgICAgICAgICAgICAgICAgIG1fdG9wICsgdHJpYW5nbGVTaXplLCAgICBtX2VkZ2VD
b2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBob3ZlclN0YXRlOgorICAgICAgICAv
LyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIHVwcGVyIHJpZ2h0IGNvcm5lciBvZiB0aGUgY29udHJv
bC4KKyAgICAgICAgdHJpYW5nbGUobV9yaWdodCwgICAgICAgICAgICAgICAgbV90b3AsCisgICAg
ICAgICAgICAgICAgIG1fcmlnaHQsICAgICAgICAgICAgICAgIG1fdG9wICsgdHJpYW5nbGVTaXpl
LAorICAgICAgICAgICAgICAgICBtX3JpZ2h0IC0gdHJpYW5nbGVTaXplLCBtX3RvcCwgICAgICAg
ICAgICAgICAgICAgbV9lZGdlQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgZm9j
dXNlZFN0YXRlOgorICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIGJvdHRvbSByaWdo
dCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisgICAgICAgIHRyaWFuZ2xlKG1fcmlnaHQsICAgICAg
ICAgICAgICAgIG1fYm90dG9tLAorICAgICAgICAgICAgICAgICBtX3JpZ2h0IC0gdHJpYW5nbGVT
aXplLCBtX2JvdHRvbSwKKyAgICAgICAgICAgICAgICAgbV9yaWdodCwgICAgICAgICAgICAgICAg
bV9ib3R0b20gLSB0cmlhbmdsZVNpemUsIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIHByZXNzZWRTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGlu
IHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisgICAgICAgIHRyaWFuZ2xl
KG1fbGVmdCwgICAgICAgICAgICAgICAgbV9ib3R0b20sCisgICAgICAgICAgICAgICAgIG1fbGVm
dCwgICAgICAgICAgICAgICAgbV9ib3R0b20gLSB0cmlhbmdsZVNpemUsCisgICAgICAgICAgICAg
ICAgIG1fbGVmdCArIHRyaWFuZ2xlU2l6ZSwgbV9ib3R0b20sICAgICAgICAgICAgICAgICBtX2Vk
Z2VDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIENSQVNIKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlQ6OmRyYXcoKQoreworICAgIGludCBoYWxmV2lk
dGggPSBtX3dpZHRoIC8gMjsKKyAgICBpbnQgaGFsZkhlaWdodCA9IG1faGVpZ2h0IC8gMjsKKyAg
ICBpbnQgcXVhcnRlcldpZHRoID0gbV93aWR0aCAvIDQ7CisgICAgaW50IHF1YXJ0ZXJIZWlnaHQg
PSBtX2hlaWdodCAvIDQ7CisKKyAgICAvLyBJbmRlbnQgYW1vdW50cyBmb3IgdGhlIGNoZWNrIGlu
IGEgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLgorICAgIGNvbnN0IGludCBrQ2hlY2tJbmRlbnQg
PSAzOworCisgICAgLy8gSW5kZW50IGFtb3VudHMgZm9yIHNob3J0IGFuZCBsb25nIHNpZGVzIG9m
IHRoZSBzY3JvbGxiYXIgbm90Y2hlcy4KKyAgICBjb25zdCBpbnQga05vdGNoTG9uZ09mZnNldCA9
IDE7CisgICAgY29uc3QgaW50IGtOb3RjaFNob3J0T2Zmc2V0ID0gNDsKKyAgICBjb25zdCBpbnQg
a05vT2Zmc2V0ID0gMDsKKyAgICBpbnQgc2hvcnRPZmZzZXQ7CisgICAgaW50IGxvbmdPZmZzZXQ7
CisKKyAgICAvLyBJbmRlbnQgYW1vdW50cyBmb3IgdGhlIHNob3J0IGFuZCBsb25nIHNpZGVzIG9m
IGEgc2Nyb2xsIHRodW1iIGJveC4KKyAgICBjb25zdCBpbnQga1RodW1iTG9uZ0luZGVudCA9IDA7
CisgICAgY29uc3QgaW50IGtUaHVtYlNob3J0SW5kZW50ID0gMjsKKworICAgIC8vIEluZGVudHMg
Zm9yIHRoZSBjcm9zc2hhdGNoIG9uIGEgc2Nyb2xsIGdyaXAuCisgICAgY29uc3QgaW50IGtHcmlw
TG9uZ0luZGVudCA9IDM7CisgICAgY29uc3QgaW50IGtHcmlwU2hvcnRJbmRlbnQgPSA1OworCisg
ICAgLy8gSW5kZW50cyBmb3IgdGhlIHRoZSBzbGlkZXIgdHJhY2suCisgICAgY29uc3QgaW50IGtT
bGlkZXJJbmRlbnQgPSAyOworCisgICAgbV9jYW52YXMtPmJlZ2luUGxhdGZvcm1QYWludCgpOwor
CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIHVua25vd25UeXBlOgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIHRleHRGaWVsZFR5cGU6CisgICAgICAgIC8vIFdlIHJlbmRlciB0aGlzIGJ5IGhh
bmQgb3V0c2lkZSBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIHB1c2hCdXR0
b25UeXBlOgorICAgICAgICAvLyBwdXNoIGJ1dHRvbnMgcmVuZGVyIGFzIGEgcm91bmRlZCByZWN0
YW5nbGUKKyAgICAgICAgcm91bmRSZWN0KG1fYmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSB1bmNoZWNrZWRCb3hUeXBlOgorICAgICAgICAvLyBVbmNoZWNrZWQgYm94ZXMgYXJl
IHNpbXBseSBwbGFpbiBib3hlcy4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBjaGVja2VkQm94VHlwZToKKyAgICAgICAgbmVzdGVk
Qm94ZXMoa0NoZWNrSW5kZW50LCBrQ2hlY2tJbmRlbnQsIGtDaGVja0luZGVudCwga0NoZWNrSW5k
ZW50LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSB1
bmNoZWNrZWRSYWRpb1R5cGU6CisgICAgICAgIGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZIZWln
aHQpLCBtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgY2hlY2tlZFJhZGlv
VHlwZToKKyAgICAgICAgY2lyY2xlKFNrSW50VG9TY2FsYXIoaGFsZkhlaWdodCksIG1fYmdDb2xv
cik7CisgICAgICAgIGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZIZWlnaHQgLSBrQ2hlY2tJbmRl
bnQpLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgaG9yaXpvbnRhbFNj
cm9sbFRyYWNrQmFja1R5cGU6CisgICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0
IHRoZSBsZWZ0LgorICAgICAgICBsb25nT2Zmc2V0ID0gaGFsZkhlaWdodCAtIGtOb3RjaExvbmdP
ZmZzZXQ7CisgICAgICAgIHNob3J0T2Zmc2V0ID0gbV93aWR0aCAtIGtOb3RjaFNob3J0T2Zmc2V0
OworICAgICAgICBuZXN0ZWRCb3hlcyhrTm9PZmZzZXQsIGxvbmdPZmZzZXQsIHNob3J0T2Zmc2V0
LCBsb25nT2Zmc2V0LCBtX2JnQ29sb3IsIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIGhvcml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOgorICAgICAgICAvLyBE
cmF3IGEgYm94IHdpdGggYSBub3RjaCBhdCB0aGUgcmlnaHQuCisgICAgICAgIGxvbmdPZmZzZXQg
ID0gaGFsZkhlaWdodCAtIGtOb3RjaExvbmdPZmZzZXQ7CisgICAgICAgIHNob3J0T2Zmc2V0ID0g
bV93aWR0aCAtIGtOb3RjaFNob3J0T2Zmc2V0OworICAgICAgICBuZXN0ZWRCb3hlcyhzaG9ydE9m
ZnNldCwgbG9uZ09mZnNldCwga05vT2Zmc2V0LCBsb25nT2Zmc2V0LCBtX2JnQ29sb3IsIG1fZmdD
b2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSB2ZXJ0aWNhbFNjcm9sbFRyYWNrQmFj
a1R5cGU6CisgICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSB0b3AuCisg
ICAgICAgIGxvbmdPZmZzZXQgID0gaGFsZldpZHRoIC0ga05vdGNoTG9uZ09mZnNldDsKKyAgICAg
ICAgc2hvcnRPZmZzZXQgPSBtX2hlaWdodCAtIGtOb3RjaFNob3J0T2Zmc2V0OworICAgICAgICBu
ZXN0ZWRCb3hlcyhsb25nT2Zmc2V0LCBrTm9PZmZzZXQsIGxvbmdPZmZzZXQsIHNob3J0T2Zmc2V0
LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSB2ZXJ0
aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6CisgICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBh
IG5vdGNoIGF0IHRoZSBib3R0b20uCisgICAgICAgIGxvbmdPZmZzZXQgID0gaGFsZldpZHRoIC0g
a05vdGNoTG9uZ09mZnNldDsKKyAgICAgICAgc2hvcnRPZmZzZXQgPSBtX2hlaWdodCAtIGtOb3Rj
aFNob3J0T2Zmc2V0OworICAgICAgICBuZXN0ZWRCb3hlcyhsb25nT2Zmc2V0LCBzaG9ydE9mZnNl
dCwgbG9uZ09mZnNldCwga05vT2Zmc2V0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBob3Jpem9udGFsU2Nyb2xsVGh1bWJUeXBlOgorICAgICAgICAv
LyBEcmF3IGEgbmFycm93ZXIgYm94IG9uIHRvcCBvZiB0aGUgb3V0c2lkZSBib3guCisgICAgICAg
IG5lc3RlZEJveGVzKGtUaHVtYkxvbmdJbmRlbnQsIGtUaHVtYlNob3J0SW5kZW50LCBrVGh1bWJM
b25nSW5kZW50LCBrVGh1bWJTaG9ydEluZGVudCwgbV9iZ0NvbG9yLCBtX2JnQ29sb3IpOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgdmVydGljYWxTY3JvbGxUaHVtYlR5cGU6CisgICAgICAg
IC8vIERyYXcgYSBzaG9ydGVyIGJveCBvbiB0b3Agb2YgdGhlIG91dHNpZGUgYm94LgorICAgICAg
ICBuZXN0ZWRCb3hlcyhrVGh1bWJTaG9ydEluZGVudCwga1RodW1iTG9uZ0luZGVudCwga1RodW1i
U2hvcnRJbmRlbnQsIGtUaHVtYkxvbmdJbmRlbnQsIG1fYmdDb2xvciwgbV9iZ0NvbG9yKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGhvcml6b250YWxTbGlkZXJUaHVtYlR5cGU6CisgICAg
ICAgIC8vIFNsaWRlciB0aHVtYnMgYXJlIG92YWxzLgorICAgICAgICBvdmFsKG1fYmdDb2xvcik7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBob3Jpem9udGFsU2Nyb2xsR3JpcFR5cGU6Cisg
ICAgICAgIC8vIERyYXcgYSBob3Jpem9udGFsIGNyb3NzaGF0Y2ggZm9yIHRoZSBncmlwLgorICAg
ICAgICBsb25nT2Zmc2V0ID0gaGFsZldpZHRoIC0ga0dyaXBMb25nSW5kZW50OworICAgICAgICBs
aW5lKG1fbGVmdCAgKyBrR3JpcExvbmdJbmRlbnQsIG1fdG9wICAgICsgaGFsZkhlaWdodCwKKyAg
ICAgICAgICAgICBtX3JpZ2h0IC0ga0dyaXBMb25nSW5kZW50LCBtX3RvcCAgICArIGhhbGZIZWln
aHQsICAgICAgIG1fZmdDb2xvcik7CisgICAgICAgIGxpbmUobV9sZWZ0ICArIGxvbmdPZmZzZXQs
ICAgICAgbV90b3AgICAgKyBrR3JpcFNob3J0SW5kZW50LAorICAgICAgICAgICAgIG1fbGVmdCAg
KyBsb25nT2Zmc2V0LCAgICAgIG1fYm90dG9tIC0ga0dyaXBTaG9ydEluZGVudCwgbV9mZ0NvbG9y
KTsKKyAgICAgICAgbGluZShtX3JpZ2h0IC0gbG9uZ09mZnNldCwgICAgICBtX3RvcCAgICArIGtH
cmlwU2hvcnRJbmRlbnQsCisgICAgICAgICAgICAgbV9yaWdodCAtIGxvbmdPZmZzZXQsICAgICAg
bV9ib3R0b20gLSBrR3JpcFNob3J0SW5kZW50LCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgdmVydGljYWxTY3JvbGxHcmlwVHlwZToKKyAgICAgICAgLy8gRHJhdyBhIHZl
cnRpY2FsIGNyb3NzaGF0Y2ggZm9yIHRoZSBncmlwLgorICAgICAgICBsb25nT2Zmc2V0ID0gaGFs
ZkhlaWdodCAtIGtHcmlwTG9uZ0luZGVudDsKKyAgICAgICAgbGluZShtX2xlZnQgKyBoYWxmV2lk
dGgsICAgICAgICAgbV90b3AgICAgKyBrR3JpcExvbmdJbmRlbnQsCisgICAgICAgICAgICAgbV9s
ZWZ0ICsgaGFsZldpZHRoLCAgICAgICAgIG1fYm90dG9tIC0ga0dyaXBMb25nSW5kZW50LCBtX2Zn
Q29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCArIGtHcmlwU2hvcnRJbmRlbnQsICBtX3RvcCAg
ICArIGxvbmdPZmZzZXQsCisgICAgICAgICAgICAgbV9yaWdodCAtIGtHcmlwU2hvcnRJbmRlbnQs
IG1fdG9wICAgICsgbG9uZ09mZnNldCwgICAgICBtX2ZnQ29sb3IpOworICAgICAgICBsaW5lKG1f
bGVmdCArIGtHcmlwU2hvcnRJbmRlbnQsICBtX2JvdHRvbSAtIGxvbmdPZmZzZXQsCisgICAgICAg
ICAgICAgbV9yaWdodCAtIGtHcmlwU2hvcnRJbmRlbnQsIG1fYm90dG9tIC0gbG9uZ09mZnNldCwg
ICAgICBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgbGVmdEFycm93VHlw
ZToKKyAgICAgICAgLy8gRHJhdyBhIGxlZnQgYXJyb3cgaW5zaWRlIGEgYm94LgorICAgICAgICBi
b3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAgdHJpYW5nbGUobV9yaWdodCAtIHF1YXJ0
ZXJXaWR0aCwgbV90b3AgICAgKyBxdWFydGVySGVpZ2h0LAorICAgICAgICAgICAgICAgICBtX3Jp
Z2h0IC0gcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsCisgICAgICAgICAg
ICAgICAgIG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsgaGFsZkhlaWdodCwgICAg
bV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIHJpZ2h0QXJyb3dUeXBlOgor
ICAgICAgICAvLyBEcmF3IGEgbGVmdCBhcnJvdyBpbnNpZGUgYSBib3guCisgICAgICAgIGJveCht
X2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlhbmdsZShtX2xlZnQgICsgcXVhcnRlcldp
ZHRoLCBtX3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCisgICAgICAgICAgICAgICAgIG1fcmlnaHQg
LSBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsgaGFsZkhlaWdodCwKKyAgICAgICAgICAgICAgICAg
bV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2ZnQ29s
b3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgdXBBcnJvd1R5cGU6CisgICAgICAgIC8v
IERyYXcgYW4gdXAgYXJyb3cgaW5zaWRlIGEgYm94LgorICAgICAgICBib3gobV9pcmVjdCwgbV9i
Z0NvbG9yKTsKKyAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV9ib3R0
b20gLSBxdWFydGVySGVpZ2h0LAorICAgICAgICAgICAgICAgICBtX2xlZnQgICsgaGFsZldpZHRo
LCAgICBtX3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCisgICAgICAgICAgICAgICAgIG1fcmlnaHQg
LSBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwgbV9mZ0NvbG9yKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIGRvd25BcnJvd1R5cGU6CisgICAgICAgIC8vIERyYXcg
YSBkb3duIGFycm93IGluc2lkZSBhIGJveC4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xv
cik7CisgICAgICAgIHRyaWFuZ2xlKG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsg
cXVhcnRlckhlaWdodCwKKyAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwg
bV90b3AgICAgKyBxdWFydGVySGVpZ2h0LAorICAgICAgICAgICAgICAgICBtX2xlZnQgICsgaGFs
ZldpZHRoLCAgICBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBob3Jpem9udGFsU2xpZGVyVHJhY2tUeXBlOgorICAgICAgICAv
LyBEcmF3IGEgbmFycm93IHJlY3QgZm9yIHRoZSB0cmFjayBwbHVzIGJveCBoYXRjaGVzIG9uIHRo
ZSBlbmRzLgorICAgICAgICBTa0lSZWN0IGxpcmVjdDsKKyAgICAgICAgbGlyZWN0ID0gbV9pcmVj
dDsKKyAgICAgICAgbGlyZWN0Lmluc2V0KGtOb09mZnNldCwgaGFsZkhlaWdodCAtIGtTbGlkZXJJ
bmRlbnQpOworICAgICAgICBib3gobGlyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICBsaW5lKG1f
bGVmdCwgIG1fdG9wLCBtX2xlZnQsICBtX2JvdHRvbSwgbV9lZGdlQ29sb3IpOworICAgICAgICBs
aW5lKG1fcmlnaHQsIG1fdG9wLCBtX3JpZ2h0LCBtX2JvdHRvbSwgbV9lZGdlQ29sb3IpOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgZHJvcERvd25CdXR0b25UeXBlOgorICAgICAgICAvLyBE
cmF3IGEgYm94IHdpdGggYSBiaWcgZG93biBhcnJvdyBvbiB0b3AuCisgICAgICAgIGJveChtX2ly
ZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlhbmdsZShtX2xlZnQgICsgcXVhcnRlcldpZHRo
LCBtX3RvcCwKKyAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3As
CisgICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fYm90dG9tLCBtX2Zn
Q29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBDUkFTSCgpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBtYXJrU3RhdGUoKTsKKyAgICBtX2NhbnZhcy0+ZW5kUGxhdGZvcm1QYWludCgpOworfQor
CisvLyBCZWNhdXNlIHJlbmRlcmluZyBhIHRleHQgZmllbGQgaXMgZGVwZW5kZW50IG9uIGlucHV0
CisvLyBwYXJhbWV0ZXJzIHRoZSBvdGhlciBjb250cm9scyBkb24ndCBoYXZlLCB3ZSByZW5kZXIg
aXQgZGlyZWN0bHkKKy8vIHJhdGhlciB0aGFuIHRyeWluZyB0byBvdmVyY29tcGxpY2F0ZSBkcmF3
KCkgZnVydGhlci4KK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUOjpkcmF3VGV4dEZpZWxkKGJvb2wg
ZHJhd0VkZ2VzLCBib29sIGZpbGxDb250ZW50QXJlYSwgU2tDb2xvciBjb2xvcikKK3sKKyAgICBT
a1BhaW50IHBhaW50OworCisgICAgbV9jYW52YXMtPmJlZ2luUGxhdGZvcm1QYWludCgpOworICAg
IGlmIChmaWxsQ29udGVudEFyZWEpIHsKKyAgICAgICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOwor
ICAgICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgICAgIG1f
Y2FudmFzLT5kcmF3SVJlY3QobV9pcmVjdCwgcGFpbnQpOworICAgIH0KKyAgICBpZiAoZHJhd0Vk
Z2VzKSB7CisgICAgICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICAgICAgcGFp
bnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7CisgICAgICAgIG1fY2FudmFzLT5k
cmF3SVJlY3QobV9pcmVjdCwgcGFpbnQpOworICAgIH0KKworICAgIG1hcmtTdGF0ZSgpOworICAg
IG1fY2FudmFzLT5lbmRQbGF0Zm9ybVBhaW50KCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9s
RFJUOjpkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3QpCit7CisgICAgU2tQ
YWludCBwYWludDsKKworICAgIG1fY2FudmFzLT5iZWdpblBsYXRmb3JtUGFpbnQoKTsKKyAgICBw
YWludC5zZXRDb2xvcihtX2JnQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtG
aWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KG1faXJlY3QsIHBhaW50KTsKKwor
ICAgIC8vIEVtdWxhdGUgY2xpcHBpbmcKKyAgICBTa0lSZWN0IHRvZmlsbDsKKyAgICB0b2ZpbGwu
aW50ZXJzZWN0KG1faXJlY3QsIGZpbGxSZWN0KTsKKyAgICBwYWludC5zZXRDb2xvcihtX2ZnQ29s
b3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBtX2Nh
bnZhcy0+ZHJhd0lSZWN0KHRvZmlsbCwgcGFpbnQpOworCisgICAgbWFya1N0YXRlKCk7CisgICAg
bV9jYW52YXMtPmVuZFBsYXRmb3JtUGFpbnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFNo
ZWxsV2ViVGhlbWUKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlRoZW1lQ29udHJvbERSVC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVGhlbWVDb250cm9sRFJULmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMC4uY2RjZTNjYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVC5oCkBAIC0wLDAgKzEsMjA2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gV2Vi
VGhlbWVDb250cm9sRFJUIGltcGxlbWVudHMgdGhlIGdlbmVyaWMgcmVuZGVyaW5nIG9mIGNvbnRy
b2xzCisvLyBuZWVkZWQgYnkgV2ViVGhlbWVFbmdpbmVEUlQuIFNlZSB0aGUgY29tbWVudHMgaW4g
dGhhdCBjbGFzcworLy8gaGVhZGVyIGZpbGUgZm9yIHdoeSB0aGlzIGNsYXNzIGlzIG5lZWRlZCBh
bmQgdXNlZC4KKy8vCisvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgYSBnZW5lcmljIHNldCBvZiB3
aWRnZXRzIHVzaW5nIFNraWEuIFRoZSB3aWRnZXRzCisvLyBhcmUgb3B0aW1pemVkIGZvciB0ZXN0
YWJpbGl0eSwgbm90IGEgcGxlYXNpbmcgYXBwZWFyYW5jZS4KKy8vCisKKyNpZm5kZWYgV2ViVGhl
bWVDb250cm9sRFJUX2gKKyNkZWZpbmUgV2ViVGhlbWVDb250cm9sRFJUX2gKKworI2luY2x1ZGUg
InNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEv
aW5jbHVkZS9jb3JlL1NrQ29sb3IuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKwor
Ly8gU2tpYSBmb3J3YXJkIGRlY2xhcmF0aW9ucworc3RydWN0IFNrSVJlY3Q7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJUaGVtZUNvbnRyb2xEUlQgOiBwdWJsaWMgTm9uY29weWFi
bGUgeworcHVibGljOgorICAgIC8vIFRoaXMgbGlzdCBvZiBzdGF0ZXMgbW9zdGx5IG1pcnJvcnMg
dGhlIGxpc3QgaW4gV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKKyAgICAvLyBidXQgaXMg
bWFpbnRhaW5lZCBzZXBhcmF0ZWx5IHNpbmNlIHRoYXQgaXNuJ3QgcHVibGljIGFuZCBhbHNvIHRv
IG1pbmltaXplCisgICAgLy8gZGVwZW5kZW5jaWVzLgorICAgIC8vIE5vdGUgdGhhdCB0aGUgV2Vi
S2l0IFRoZW1lVHlwZXMgc2VlbSB0byBpbXBseSB0aGF0IGEgY29udHJvbCBjYW4gYmUKKyAgICAv
LyBpbiBtdWx0aXBsZSBzdGF0ZXMgc2ltdWx0YW5lb3VzbHkgYnV0IFdlYlRoZW1lRW5naW5lIG9u
bHkgYWxsb3dzIGZvcgorICAgIC8vIGEgc2luZ2xlIHN0YXRlIGF0IGEgdGltZS4KKyAgICAvLwor
ICAgIC8vIFNvbWUgZGVmaW5pdGlvbnMgZm9yIHRoZSB2YXJpb3VzIHN0YXRlczoKKyAgICAvLyAg
IERpc2FibGVkIC0gaW5kaWNhdGVzIHRoYXQgYSBjb250cm9sIGNhbid0IGJlIG1vZGlmaWVkIG9y
IHNlbGVjdGVkCisgICAgLy8gICAgICAgICAgICAgIChjb3JyZXNwb25kcyB0byBIVE1MICdkaXNh
YmxlZCcgYXR0cmlidXRlKQorICAgIC8vICAgUmVhZE9ubHkgLSBpbmRpY2F0ZXMgdGhhdCBhIGNv
bnRyb2wgY2FuJ3QgYmUgbW9kaWZpZWQgYnV0IGNhbiBiZQorICAgIC8vICAgICAgICAgICAgICBz
ZWxlY3RlZAorICAgIC8vICAgTm9ybWFsICAgLSB0aGUgbm9ybWFsIHN0YXRlIG9mIGNvbnRyb2wg
b24gdGhlIHBhZ2Ugd2hlbiBpdCBpc24ndAorICAgIC8vICAgICAgICAgICAgICBmb2N1c2VkIG9y
IG90aGVyd2lzZSBhY3RpdmUKKyAgICAvLyAgIEhvdCAgICAgIC0gd2hlbiB0aGUgbW91c2UgaXMg
aG92ZXJpbmcgb3ZlciBhIHBhcnQgb2YgdGhlIGNvbnRyb2wsCisgICAgLy8gICAgICAgICAgICAg
IGFsbCB0aGUgb3RoZXIgcGFydHMgYXJlIGNvbnNpZGVyZWQgImhvdCIKKyAgICAvLyAgIEhvdmVy
ICAgIC0gd2hlbiB0aGUgbW91c2UgaXMgZGlyZWN0bHkgb3ZlciBhIGNvbnRyb2wgKHRoZSBDU1MK
KyAgICAvLyAgICAgICAgICAgICAgIDpob3ZlciBwc2V1ZG8tY2xhc3MpCisgICAgLy8gICBGb2N1
c2VkICAtIHdoZW4gdGhlIGNvbnRyb2wgaGFzIHRoZSBrZXlib2FyZCBmb2N1cworICAgIC8vICAg
UHJlc3NlZCAgLSB3aGVuIHRoZSBjb250cm9sIGlzIGJlaW5nIHRyaWdnZXJlZCAoYnkgYSBtb3Vz
ZWRvd24gb3IKKyAgICAvLyAgICAgICAgICAgICAgYSBrZXkgZXZlbnQpLgorICAgIC8vICAgSW5k
ZXRlcm1pbmF0ZSAtIHdoZW4gc2V0IHRvIGluZGV0ZXJtaW5hdGUgKG9ubHkgZm9yIHByb2dyZXNz
IGJhcikKKyAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgdW5rbm93blN0YXRlID0gMCwKKyAgICAg
ICAgZGlzYWJsZWRTdGF0ZSwKKyAgICAgICAgcmVhZE9ubHlTdGF0ZSwKKyAgICAgICAgbm9ybWFs
U3RhdGUsCisgICAgICAgIGhvdFN0YXRlLAorICAgICAgICBob3ZlclN0YXRlLAorICAgICAgICBm
b2N1c2VkU3RhdGUsCisgICAgICAgIHByZXNzZWRTdGF0ZSwKKyAgICAgICAgaW5kZXRlcm1pbmF0
ZVN0YXRlCisgICAgfTsKKworICAgIC8vIFRoaXMgbGlzdCBvZiB0eXBlcyBtb3N0bHkgbWlycm9y
cyB0aGUgbGlzdCBpbgorICAgIC8vIFdlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oIGJ1dCBp
cyBtYWludGFpbmVkCisgICAgLy8gc2VwYXJhdGVseSBzaW5jZSB0aGF0IGlzbid0IHB1YmxpYyBh
bmQgYWxzbyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMuCisgICAgLy8KKyAgICAvLyBOb3RlIHRo
YXQgd2hhdCB0aGUgdXNlciBtaWdodCB0aGluayBvZiBhcyBhIHNpbmdsZSBjb250cm9sIGNhbiBi
ZQorICAgIC8vIG1hZGUgdXAgb2YgbXVsdGlwbGUgcGFydHMuIEZvciBleGFtcGxlLCBhIHNpbmds
ZSBzY3JvbGwgYmFyIGNvbnRhaW5zCisgICAgLy8gc2l4IGNsaWNrYWJsZSBwYXJ0cyAtIHR3byBh
cnJvd3MsIHRoZSAidGh1bWIiIGluZGljYXRpbmcgdGhlIGN1cnJlbnQKKyAgICAvLyBwb3NpdGlv
biBvbiB0aGUgYmFyLCB0aGUgb3RoZXIgdHdvIHBhcnRzIG9mIHRoZSBiYXIgKGJlZm9yZSBhbmQg
YWZ0ZXIKKyAgICAvLyB0aGUgdGh1bWIpIGFuZCB0aGUgImdyaXBwZXIiIG9uIHRoZSB0aHVtYiBp
dHNlbGYuCisgICAgLy8KKyAgICBlbnVtIFR5cGUgeworICAgICAgICB1bmtub3duVHlwZSA9IDAs
CisgICAgICAgIHRleHRGaWVsZFR5cGUsCisgICAgICAgIHB1c2hCdXR0b25UeXBlLAorICAgICAg
ICB1bmNoZWNrZWRCb3hUeXBlLAorICAgICAgICBjaGVja2VkQm94VHlwZSwKKyAgICAgICAgdW5j
aGVja2VkUmFkaW9UeXBlLAorICAgICAgICBjaGVja2VkUmFkaW9UeXBlLAorICAgICAgICBob3Jp
em9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZSwKKyAgICAgICAgaG9yaXpvbnRhbFNjcm9sbFRyYWNr
Rm9yd2FyZFR5cGUsCisgICAgICAgIGhvcml6b250YWxTY3JvbGxUaHVtYlR5cGUsCisgICAgICAg
IGhvcml6b250YWxTY3JvbGxHcmlwVHlwZSwKKyAgICAgICAgdmVydGljYWxTY3JvbGxUcmFja0Jh
Y2tUeXBlLAorICAgICAgICB2ZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGUsCisgICAgICAg
IHZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlLAorICAgICAgICB2ZXJ0aWNhbFNjcm9sbEdyaXBUeXBl
LAorICAgICAgICBsZWZ0QXJyb3dUeXBlLAorICAgICAgICByaWdodEFycm93VHlwZSwKKyAgICAg
ICAgdXBBcnJvd1R5cGUsCisgICAgICAgIGRvd25BcnJvd1R5cGUsCisgICAgICAgIGhvcml6b250
YWxTbGlkZXJUcmFja1R5cGUsCisgICAgICAgIGhvcml6b250YWxTbGlkZXJUaHVtYlR5cGUsCisg
ICAgICAgIGRyb3BEb3duQnV0dG9uVHlwZSwKKyAgICAgICAgcHJvZ3Jlc3NCYXJUeXBlCisgICAg
fTsKKworICAgIC8vIGNhbnZhcyBpcyB0aGUgY2FudmFzIHRvIGRyYXcgb250bywgYW5kIHJlY3Qg
Z2l2ZXMgdGhlIHNpemUgb2YgdGhlCisgICAgLy8gY29udHJvbC4gY3R5cGUgYW5kIGNzdGF0ZSBz
cGVjaWZ5IHRoZSB0eXBlIGFuZCBzdGF0ZSBvZiB0aGUgY29udHJvbC4KKyAgICBXZWJUaGVtZUNv
bnRyb2xEUlQoc2tpYTo6UGxhdGZvcm1DYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU2tJUmVjdCYgcmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgVHlwZSBj
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgY3N0YXRlKTsKKyAgICB+V2ViVGhl
bWVDb250cm9sRFJUKCk7CisKKyAgICAvLyBEcmF3cyB0aGUgY29udHJvbC4KKyAgICB2b2lkIGRy
YXcoKTsKKworICAgIC8vIFVzZSB0aGlzIGZvciBUZXh0RmllbGQgY29udHJvbHMgaW5zdGVhZCwg
YmVjYXVzZSB0aGUgbG9naWMKKyAgICAvLyBmb3IgZHJhd2luZyB0aGVtIGlzIGRlcGVuZGVudCBv
biB3aGF0IFdlYktpdCB0ZWxscyB1cyB0byBkby4KKyAgICAvLyBJZiBkcmF3RWRnZXMgaXMgdHJ1
ZSwgZHJhdyBhbiBlZGdlIGFyb3VuZCB0aGUgY29udHJvbC4gSWYKKyAgICAvLyBmaWxsQ29udGVu
dEFyZWEgaXMgdHJ1ZSwgZmlsbCB0aGUgY29udGVudCBhcmVhIHdpdGggdGhlIGdpdmVuIGNvbG9y
LgorICAgIHZvaWQgZHJhd1RleHRGaWVsZChib29sIGRyYXdFZGdlcywgYm9vbCBmaWxsQ29udGVu
dEFyZWEsIFNrQ29sb3IgY29sb3IpOworCisgICAgLy8gVXNlIHRoaXMgZm9yIGRyYXdpbmcgUHJv
Z3Jlc3NCYXIgY29udHJvbHMgaW5zdGVhZCwgc2luY2Ugd2UKKyAgICAvLyBuZWVkIHRvIGtub3cg
dGhlIHJlY3QgdG8gZmlsbCBpbnNpZGUgdGhlIGJhci4KKyAgICB2b2lkIGRyYXdQcm9ncmVzc0Jh
cihjb25zdCBTa0lSZWN0JiBmaWxsUmVjdCk7CisKK3ByaXZhdGU6CisgICAgLy8gRHJhd3MgYSBi
b3ggb2Ygc2l6ZSBzcGVjaWZpZWQgYnkgaXJlY3QsIGZpbGxlZCB3aXRoIHRoZSBnaXZlbiBjb2xv
ci4KKyAgICAvLyBUaGUgYm94IHdpbGwgaGF2ZSBhIGJvcmRlciBkcmF3biBpbiB0aGUgZGVmYXVs
dCBlZGdlIGNvbG9yLgorICAgIHZvaWQgYm94KGNvbnN0IFNrSVJlY3QmIGlyZWN0LCBTa0NvbG9y
IGNvbG9yKTsKKworCisgICAgLy8gRHJhd3MgYSB0cmlhbmdsZSBvZiBzaXplIHNwZWNpZmllZCBi
eSB0aGUgdGhyZWUgcGFpcnMgb2YgY29vcmRpbmF0ZXMsCisgICAgLy8gZmlsbGVkIHdpdGggdGhl
IGdpdmVuIGNvbG9yLiBUaGUgYm94IHdpbGwgaGF2ZSBhbiBlZGdlIGRyYXduIGluIHRoZQorICAg
IC8vIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIHRyaWFuZ2xlKGludCB4MCwgaW50IHkw
LCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIsIFNrQ29sb3IgY29sb3IpOworCisgICAg
Ly8gRHJhd3MgYSByZWN0YW5nbGUgdGhlIHNpemUgb2YgdGhlIGNvbnRyb2wgd2l0aCByb3VuZGVk
IGNvcm5lcnMsIGZpbGxlZAorICAgIC8vIHdpdGggdGhlIHNwZWNpZmllZCBjb2xvciAoYW5kIHdp
dGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvcikuCisgICAgdm9pZCByb3VuZFJl
Y3QoU2tDb2xvciBjb2xvcik7CisKKyAgICAvLyBEcmF3cyBhbiBvdmFsIHRoZSBzaXplIG9mIHRo
ZSBjb250cm9sLCBmaWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yCisgICAgLy8gYW5kIHdp
dGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIG92YWwoU2tD
b2xvciBjb2xvcik7CisKKyAgICAvLyBEcmF3cyBhIGNpcmNsZSBjZW50ZXJlZCBpbiB0aGUgY29u
dHJvbCB3aXRoIHRoZSBzcGVjaWZpZWQgcmFkaXVzLAorICAgIC8vIGZpbGxlZCB3aXRoIHRoZSBz
cGVjaWZpZWQgY29sb3IsIGFuZCB3aXRoIGEgYm9yZGVyIGRyYXcgaW4gdGhlCisgICAgLy8gZGVm
YXVsdCBlZGdlIGNvbG9yLgorICAgIHZvaWQgY2lyY2xlKFNrU2NhbGFyIHJhZGl1cywgU2tDb2xv
ciBjb2xvcik7CisKKyAgICAvLyBEcmF3cyBhIGJveCB0aGUgc2l6ZSBvZiB0aGUgY29udHJvbCwg
ZmlsbGVkIHdpdGggdGhlIG91dGVyQ29sb3IgYW5kCisgICAgLy8gd2l0aCBhIGJvcmRlciBpbiB0
aGUgZGVmYXVsdCBlZGdlIGNvbG9yLCBhbmQgdGhlbiBkcmF3cyBhbm90aGVyIGJveAorICAgIC8v
IGluZGVudGVkIG9uIGFsbCBmb3VyIHNpZGVzIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50cywgZmls
bGVkIHdpdGggdGhlCisgICAgLy8gaW5uZXIgY29sb3IgYW5kIHdpdGggYSBib3JkZXIgaW4gdGhl
IGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIG5lc3RlZEJveGVzKGludCBpbmRlbnRMZWZ0
LAorICAgICAgICAgICAgICAgICAgICAgaW50IGluZGVudFRvcCwKKyAgICAgICAgICAgICAgICAg
ICAgIGludCBpbmRlbnRSaWdodCwKKyAgICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRCb3R0
b20sCisgICAgICAgICAgICAgICAgICAgICBTa0NvbG9yIG91dGVyQ29sb3IsCisgICAgICAgICAg
ICAgICAgICAgICBTa0NvbG9yIGlubmVyQ29sb3IpOworCisgICAgLy8gRHJhd3MgYSBsaW5lIGJl
dHdlZW4gdGhlIHR3byBwb2ludHMgaW4gdGhlIGdpdmVuIGNvbG9yLgorICAgIHZvaWQgbGluZShp
bnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIFNrQ29sb3IgY29sb3IpOworCisgICAgLy8g
RHJhd3MgYSBkaXN0aW5jdGl2ZSBtYXJrIG9uIHRoZSBjb250cm9sIGZvciBlYWNoIHN0YXRlLCBz
byB0aGF0IHRoZQorICAgIC8vIHN0YXRlIG9mIHRoZSBjb250cm9sIGNhbiBiZSBkZXRlcm1pbmVk
IHdpdGhvdXQgbmVlZGluZyB0byBrbm93IHdoaWNoCisgICAgLy8gY29sb3IgaXMgd2hpY2guCisg
ICAgdm9pZCBtYXJrU3RhdGUoKTsKKworICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzKiBtX2NhbnZh
czsKKyAgICBjb25zdCBTa0lSZWN0IG1faXJlY3Q7CisgICAgY29uc3QgVHlwZSBtX3R5cGU7Cisg
ICAgY29uc3QgU3RhdGUgbV9zdGF0ZTsKKyAgICBjb25zdCBTa0NvbG9yIG1fZWRnZUNvbG9yOwor
ICAgIGNvbnN0IFNrQ29sb3IgbV9iZ0NvbG9yOworICAgIGNvbnN0IFNrQ29sb3IgbV9mZ0NvbG9y
OworCisgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgY29udmVuaWVuY2UgYWNjZXNzb3JzIGZvciBt
X2lyZWN0LgorICAgIGNvbnN0IGludCBtX2xlZnQ7CisgICAgY29uc3QgaW50IG1fcmlnaHQ7Cisg
ICAgY29uc3QgaW50IG1fdG9wOworICAgIGNvbnN0IGludCBtX2JvdHRvbTsKKyAgICBjb25zdCBp
bnQgbV93aWR0aDsKKyAgICBjb25zdCBpbnQgbV9oZWlnaHQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlRoZW1lQ29udHJvbERSVF9oCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5jcHAg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDJjMWE0MgotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5n
aW5lRFJULmNwcApAQCAtMCwwICsxLDY3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJUaGVtZUVuZ2luZURSVC5oIgorCisjaW5jbHVkZSAiV2ViVGhlbWVDb250cm9sRFJULmgi
CisjaW5jbHVkZSAicHVibGljL1dlYlJlY3QuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lh
L2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKKworLy8gQWx0aG91Z2ggYWxsIHRoaXMgY29kZSBpcyBn
ZW5lcmljLCB3ZSBpbmNsdWRlIHRoZXNlIGhlYWRlcnMKKy8vIHRvIHB1bGwgaW4gdGhlIFdpbmRv
d3MgI2RlZmluZXMgZm9yIHRoZSBwYXJ0cyBhbmQgc3RhdGVzIG9mCisvLyB0aGUgY29udHJvbHMu
CisjaW5jbHVkZSA8dnNzdHlsZS5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBXZSBkZWZpbmUg
dGhpcyBmb3IgY2xhcml0eSwgYWx0aG91Z2ggdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBhIERGQ1Nf
Tk9STUFMIGluIHdpbnVzZXIuaC4KK3N0YXRpYyBjb25zdCBpbnQgZGZjc05vcm1hbCA9IDB4MDAw
MDsKKworc3RhdGljIFNrSVJlY3Qgd2ViUmVjdFRvU2tJUmVjdChjb25zdCBXZWJSZWN0JiB3ZWJS
ZWN0KQoreworICAgIFNrSVJlY3QgaXJlY3Q7CisgICAgaXJlY3Quc2V0KHdlYlJlY3QueCwgd2Vi
UmVjdC55LCB3ZWJSZWN0LnggKyB3ZWJSZWN0LndpZHRoLCB3ZWJSZWN0LnkgKyB3ZWJSZWN0Lmhl
aWdodCk7CisgICAgcmV0dXJuIGlyZWN0OworfQorCitzdGF0aWMgdm9pZCBkcmF3Q29udHJvbChX
ZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3Qm
IHJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUg
Y3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRl
IGNzdGF0ZSkKK3sKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQgY29udHJvbChjYW52YXMsIHdlYlJl
Y3RUb1NrSVJlY3QocmVjdCksIGN0eXBlLCBjc3RhdGUpOworICAgIGNvbnRyb2wuZHJhdygpOwor
fQorCitzdGF0aWMgdm9pZCBkcmF3VGV4dEZpZWxkKFdlYkNhbnZhcyogY2FudmFzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVDo6U3RhdGUgY3N0YXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGRyYXdFZGdlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBmaWxsQ29udGVudEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNv
bG9yIGNvbG9yKQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVCBjb250cm9sKGNhbnZhcywgd2Vi
UmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNzdGF0ZSk7CisgICAgY29udHJvbC5kcmF3VGV4
dEZpZWxkKGRyYXdFZGdlcywgZmlsbENvbnRlbnRBcmVhLCBjb2xvcik7Cit9CisKK3N0YXRpYyB2
b2lkIGRyYXdQcm9ncmVzc0JhcihXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViVGhlbWVDb250cm9sRFJUOjpTdGF0ZSBjc3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgYmFyUmVjdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiBmaWxsUmVjdCkKK3sKKyAgICBXZWJUaGVt
ZUNvbnRyb2xEUlQgY29udHJvbChjYW52YXMsIHdlYlJlY3RUb1NrSVJlY3QoYmFyUmVjdCksIGN0
eXBlLCBjc3RhdGUpOworICAgIGNvbnRyb2wuZHJhd1Byb2dyZXNzQmFyKHdlYlJlY3RUb1NrSVJl
Y3QoZmlsbFJlY3QpKTsKK30KKworLy8gV2ViVGhlbWVFbmdpbmVEUlQKKwordm9pZCBXZWJUaGVt
ZUVuZ2luZURSVDo6cGFpbnRCdXR0b24oV2ViQ2FudmFzKiBjYW52YXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVDo6VHlwZSBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6dW5rbm93blR5cGU7CisgICAgV2ViVGhlbWVDb250
cm9sRFJUOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnVua25vd25TdGF0ZTsK
KworICAgIGlmIChwYXJ0ID09IEJQX0NIRUNLQk9YKSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUp
IHsKKyAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VETk9STUFMOgorICAgICAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhl
bWVDb250cm9sRFJUOjp1bmNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUOjpub3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgQ0JTX1VOQ0hFQ0tFREhPVDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0hPVCkpOworICAgICAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnVuY2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAgIEFTU0VSVChj
bGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX1BVU0hFRCkpOworICAgICAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnVuY2hlY2tlZEJveFR5cGU7CisgICAg
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnByZXNzZWRTdGF0ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX1VOQ0hFQ0tFRERJU0FCTEVEOgorICAg
ICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1Nf
SU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjp1bmNo
ZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpk
aXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hF
Q0tFRE5PUk1BTDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVU
VE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUOjpjaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVDo6bm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIENCU19DSEVDS0VESE9UOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAo
REZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSE9UKSk7CisgICAgICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6Y2hlY2tlZEJveFR5cGU7CisgICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmhvdFN0YXRlOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRFBSRVNTRUQ6CisgICAgICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZD
U19QVVNIRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpjaGVj
a2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6cHJl
c3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tF
RERJU0FCTEVEOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRU
T05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpjaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6ZGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChCUF9SQURJ
T0JVVFRPTiA9PSBwYXJ0KSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2Fz
ZSBSQlNfVU5DSEVDS0VETk9STUFMOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSBERkNTX0JVVFRPTlJBRElPKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9s
RFJUOjp1bmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6Om5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBSQlNfVU5DSEVDS0VESE9UOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAo
REZDU19CVVRUT05SQURJTyB8IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVDo6dW5jaGVja2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUOjpob3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgUkJTX1VOQ0hFQ0tFRFBSRVNTRUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19QVVNIRUQpKTsKKyAgICAgICAgICAg
IGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjp1bmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnByZXNzZWRTdGF0ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJTX1VOQ0hFQ0tFRERJU0FCTEVEOgorICAgICAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfSU5B
Q1RJVkUpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjp1bmNoZWNr
ZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmRp
c2FibGVkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19DSEVD
S0VETk9STUFMOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRU
T05SQURJTyB8IERGQ1NfQ0hFQ0tFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6OmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlQ6Om5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBSQlNfQ0hFQ0tFREhPVDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
KERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX0hPVCkpOworICAgICAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmhvdFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBSQlNfQ0hFQ0tFRFBSRVNTRUQ6CisgICAgICAgICAgICBB
U1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEIHwg
REZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpj
aGVja2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
OjpwcmVzc2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19D
SEVDS0VERElTQUJMRUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNT
X0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmRpc2FibGVkU3RhdGU7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
QlBfUFVTSEJVVFRPTiA9PSBwYXJ0KSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAg
ICAgY2FzZSBQQlNfTk9STUFMOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBE
RkNTX0JVVFRPTlBVU0gpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
OnB1c2hCdXR0b25UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
Ojpub3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUEJTX0hP
VDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUFVTSCB8
IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6cHVz
aEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Omhv
dFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQQlNfUFJFU1NFRDoK
KyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUFVTSCB8IERG
Q1NfUFVTSEVEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6cHVz
aEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnBy
ZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUEJTX0RJU0FC
TEVEOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05QVVNI
IHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6OnB1c2hCdXR0b25UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUOjpkaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQ
QlNfREVGQVVMVEVEOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JV
VFRPTlBVU0gpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnB1c2hC
dXR0b25UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpmb2N1
c2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKwor
ICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisKKwordm9p
ZCBXZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRNZW51TGlzdChXZWJDYW52YXMqIGNhbnZhcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnVua25vd25UeXBl
OworICAgIFdlYlRoZW1lQ29udHJvbERSVDo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUOjp1bmtub3duU3RhdGU7CisKKyAgICBpZiAoQ1BfRFJPUERPV05CVVRUT04gPT0gcGFydCkg
eworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6ZHJvcERvd25CdXR0b25UeXBl
OworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgQ0JYU19OT1JNQUw6Cisg
ICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfTUVOVUFSUk9XKTsKKyAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6bm9ybWFsU3RhdGU7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCWFNfSE9UOgorICAgICAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19NRU5VQVJST1cgfCBERkNTX0hPVCkpOworICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpob3ZlclN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlhTX1BSRVNTRUQ6CisgICAgICAgICAgICBBU1NFUlQo
Y2xhc3NpY1N0YXRlID09IChERkNTX01FTlVBUlJPVyB8IERGQ1NfUFVTSEVEKSk7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnByZXNzZWRTdGF0ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JYU19ESVNBQkxFRDoKKyAgICAgICAgICAgIEFT
U0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwgREZDU19JTkFDVElWRSkpOwor
ICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpkaXNhYmxlZFN0YXRlOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIENSQVNI
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IENSQVNIKCk7CisgICAgfQorCisgICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwg
Y3N0YXRlKTsKK30KKwordm9pZCBXZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRTY3JvbGxiYXJBcnJv
dyhXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdlYlRoZW1lQ29udHJv
bERSVDo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6dW5rbm93blR5cGU7CisgICAg
V2ViVGhlbWVDb250cm9sRFJUOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnVu
a25vd25TdGF0ZTsKKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIEFCU19VUE5PUk1B
TDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsKKyAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnVwQXJyb3dUeXBlOworICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Om5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgQUJTX0RPV05OT1JNQUw6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
REZDU19TQ1JPTExET1dOKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmRv
d25BcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6bm9ybWFs
U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfTEVGVE5PUk1BTDoKKyAgICAg
ICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTExFRlQpOworICAgICAgICBjdHlw
ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6bGVmdEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUOjpub3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIEFCU19SSUdIVE5PUk1BTDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNT
X1NDUk9MTFJJR0hUKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnJpZ2h0
QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Om5vcm1hbFN0
YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX1VQSE9UOgorICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19IT1QpKTsKKyAgICAgICAg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnVwQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmhvdFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgQUJTX0RPV05IT1Q6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NS
T0xMRE9XTiB8IERGQ1NfSE9UKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
Ojpkb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Omhv
dFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0xFRlRIT1Q6CisgICAgICAg
IEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVGVCB8IERGQ1NfSE9UKSk7Cisg
ICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpsZWZ0QXJyb3dUeXBlOworICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmhvdFN0YXRlOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgQUJTX1JJR0hUSE9UOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OnJpZ2h0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6OmhvdFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX1VQSE9W
RVI6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExVUCk7CisgICAg
ICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjp1cEFycm93VHlwZTsKKyAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpob3ZlclN0YXRlOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgQUJTX0RPV05IT1ZFUjoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBE
RkNTX1NDUk9MTERPV04pOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6ZG93
bkFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpob3ZlclN0
YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0xFRlRIT1ZFUjoKKyAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTExFRlQpOworICAgICAgICBjdHlwZSA9
IFdlYlRoZW1lQ29udHJvbERSVDo6bGVmdEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUOjpob3ZlclN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
QUJTX1JJR0hUSE9WRVI6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JP
TExSSUdIVCk7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpyaWdodEFycm93
VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpob3ZlclN0YXRlOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX1VQUFJFU1NFRDoKKyAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFU
KSk7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjp1cEFycm93VHlwZTsKKyAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpwcmVzc2VkU3RhdGU7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBBQlNfRE9XTlBSRVNTRUQ6CisgICAgICAgIEFTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7
CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpkb3duQXJyb3dUeXBlOworICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnByZXNzZWRTdGF0ZTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIEFCU19MRUZUUFJFU1NFRDoKKyAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19TQ1JPTExMRUZUIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsK
KyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmxlZnRBcnJvd1R5cGU7CisgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6cHJlc3NlZFN0YXRlOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgQUJTX1JJR0hUUFJFU1NFRDoKKyAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7
CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpyaWdodEFycm93VHlwZTsKKyAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpwcmVzc2VkU3RhdGU7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBBQlNfVVBESVNBQkxFRDoKKyAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnVwQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlQ6OmRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBBQlNfRE9XTkRJU0FCTEVEOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX1NDUk9MTERPV04gfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGhl
bWVDb250cm9sRFJUOjpkb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6OmRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNf
TEVGVERJU0FCTEVEOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9M
TExFRlQgfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9s
RFJUOjpsZWZ0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
OmRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfUklHSFRESVNB
QkxFRDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExSSUdIVCB8
IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnJp
Z2h0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OmRpc2Fi
bGVkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRyYXdDb250cm9s
KGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVE
UlQ6OnBhaW50U2Nyb2xsYmFyVGh1bWIoV2ViQ2FudmFzKiBjYW52YXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJ0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7
CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
Ojp1bmtub3duVHlwZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVDo6dW5rbm93blN0YXRlOworCisgICAgc3dpdGNoIChwYXJ0KSB7Cisg
ICAgY2FzZSBTQlBfVEhVTUJCVE5IT1JaOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJv
bERSVDo6aG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIFNCUF9USFVNQkJUTlZFUlQ6CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
Ojp2ZXJ0aWNhbFNjcm9sbFRodW1iVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNC
UF9HUklQUEVSSE9SWjoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Omhvcml6
b250YWxTY3JvbGxHcmlwVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9HUklQ
UEVSVkVSVDoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnZlcnRpY2FsU2Ny
b2xsR3JpcFR5cGU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAo
c3RhdGUpIHsKKyAgICBjYXNlIFNDUkJTX05PUk1BTDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
Ojpub3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX0hPVDoKKyAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7CisgICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVDo6aG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBTQ1JCU19IT1ZFUjoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFs
KTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpob3ZlclN0YXRlOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfUFJFU1NFRDoKKyAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUOjpwcmVzc2VkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19E
SVNBQkxFRDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIFRoaXMgc2hvdWxkIG5l
dmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKwordm9pZCBX
ZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRTY3JvbGxiYXJUcmFjayhXZWJDYW52YXMqIGNhbnZhcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
UmVjdCYgcmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViUmVjdCYgYWxpZ25SZWN0KQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVDo6VHlw
ZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6dW5rbm93blR5cGU7CisgICAgV2ViVGhlbWVD
b250cm9sRFJUOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnVua25vd25TdGF0
ZTsKKworICAgIHN3aXRjaCAocGFydCkgeworICAgIGNhc2UgU0JQX1VQUEVSVFJBQ0tIT1JaOgor
ICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6aG9yaXpvbnRhbFNjcm9sbFRyYWNr
QmFja1R5cGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQlBfTE9XRVJUUkFDS0hPUlo6
CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpob3Jpem9udGFsU2Nyb2xsVHJh
Y2tGb3J3YXJkVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9VUFBFUlRSQUNL
VkVSVDoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnZlcnRpY2FsU2Nyb2xs
VHJhY2tCYWNrVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9MT1dFUlRSQUNL
VkVSVDoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnZlcnRpY2FsU2Nyb2xs
VHJhY2tGb3J3YXJkVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dp
dGNoIChzdGF0ZSkgeworICAgIGNhc2UgU0NSQlNfTk9STUFMOgorICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6Om5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfSE9U
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFw
cGVuIGluIHByYWN0aWNlLgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfSE9WRVI6
CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6aG92ZXJTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFNDUkJTX1BSRVNTRUQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAv
LyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gcHJhY3RpY2UuCisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBTQ1JCU19ESVNBQkxFRDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSBERkNTX0lOQUNUSVZFKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpk
aXNhYmxlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIENS
QVNIKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywg
cmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50
VGV4dEZpZWxkKFdlYkNhbnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY2xhc3NpY1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViUmVjdCYgcmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYkNvbG9yIGNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBmaWxsQ29udGVudEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGRyYXdFZGdlcykKK3sKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnVua25vd25UeXBlOworICAgIFdlYlRoZW1lQ29u
dHJvbERSVDo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjp1bmtub3duU3RhdGU7
CisKKyAgICBBU1NFUlQoRVBfRURJVFRFWFQgPT0gcGFydCk7CisgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OnRleHRGaWVsZFR5cGU7CisKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAg
Y2FzZSBFVFNfTk9STUFMOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3Jt
YWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Om5vcm1hbFN0YXRlOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVRTX0hPVDoKKyAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBERkNTX0hPVCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VDo6aG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVFNfRElTQUJMRUQ6Cisg
ICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19JTkFDVElWRSk7CisgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6ZGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIEVUU19TRUxFQ1RFRDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSBERkNTX1BVU0hFRCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6cHJl
c3NlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVRTX0ZPQ1VTRUQ6CisgICAg
ICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVDo6Zm9jdXNlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgRVRTX1JFQURPTkxZOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NO
b3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OnJlYWRPbmx5U3Rh
dGU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRyYXdUZXh0RmllbGQoY2Fu
dmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlLCBkcmF3RWRnZXMsIGZpbGxDb250ZW50QXJlYSwgY29s
b3IpOworfQorCit2b2lkIFdlYlRoZW1lRW5naW5lRFJUOjpwYWludFRyYWNrYmFyKFdlYkNhbnZh
cyogY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFy
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQor
eworICAgIFdlYlRoZW1lQ29udHJvbERSVDo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VDo6dW5rbm93blR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpTdGF0ZSBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlQ6OnVua25vd25TdGF0ZTsKKworICAgIGlmIChUS1BfVEhVTUJCT1RU
T00gPT0gcGFydCkgeworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6aG9yaXpv
bnRhbFNsaWRlclRodW1iVHlwZTsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBj
YXNlIFRVU19OT1JNQUw6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NO
b3JtYWwpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpub3JtYWxT
dGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVFVTX0hPVDoKKyAgICAg
ICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19IT1QpOworICAgICAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpob3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgVFVTX0RJU0FCTEVEOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVDo6ZGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgVFVTX1BSRVNTRUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1Nf
UFVTSEVEKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6cHJlc3Nl
ZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKFRLUF9UUkFDSyA9PSBwYXJ0KSB7CisgICAgICAgIGN0eXBlID0gV2Vi
VGhlbWVDb250cm9sRFJUOjpob3Jpem9udGFsU2xpZGVyVHJhY2tUeXBlOworICAgICAgICBBU1NF
UlQocGFydCA9PSBUVVNfTk9STUFMKTsKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBk
ZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpub3JtYWxT
dGF0ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCisK
K3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50UHJvZ3Jlc3NCYXIoV2ViS2l0OjpXZWJDYW52
YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViS2l0OjpXZWJSZWN0JiBiYXJSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIHZhbHVlUmVjdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZXRlcm1pbmF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlKQoreworICAgIFdlYlRo
ZW1lQ29udHJvbERSVDo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6cHJvZ3Jlc3NC
YXJUeXBlOworICAgIFdlYlRoZW1lQ29udHJvbERSVDo6U3RhdGUgY3N0YXRlID0gZGV0ZXJtaW5h
dGUgPyBXZWJUaGVtZUNvbnRyb2xEUlQ6Om5vcm1hbFN0YXRlIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBXZWJUaGVtZUNvbnRyb2xEUlQ6Omlu
ZGV0ZXJtaW5hdGVTdGF0ZTsKKyAgICBkcmF3UHJvZ3Jlc3NCYXIoY2FudmFzLCBjdHlwZSwgY3N0
YXRlLCBiYXJSZWN0LCB2YWx1ZVJlY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5n
aW5lRFJULmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVu
Z2luZURSVC5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjMxYjVjNzQKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJU
aGVtZUVuZ2luZURSVC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
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
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIFdl
YlRoZW1lRW5naW5lIEFQSSB1c2VkIGJ5IHRoZSBXaW5kb3dzIHZlcnNpb24gb2YKKy8vIENocm9t
aXVtIHRvIHJlbmRlciBuYXRpdmUgZm9ybSBjb250cm9scyBsaWtlIGNoZWNrYm94ZXMsIHJhZGlv
IGJ1dHRvbnMsCisvLyBhbmQgc2Nyb2xsIGJhcnMuCisvLyBUaGUgbm9ybWFsIGltcGxlbWVudGF0
aW9uIChuYXRpdmVfdGhlbWUpIHJlbmRlcnMgdGhlIGNvbnRyb2xzIHVzaW5nIGVpdGhlcgorLy8g
dGhlIFVYVGhlbWUgdGhlbWluZyBlbmdpbmUgcHJlc2VudCBpbiBYUCwgVmlzdGEsIGFuZCBXaW4g
Nywgb3IgdGhlICJjbGFzc2ljIgorLy8gdGhlbWUgdXNlZCBpZiB0aGF0IHRoZW1lIGlzIHNlbGVj
dGVkIGluIHRoZSBEZXNrdG9wIHNldHRpbmdzLgorLy8gVW5mb3J0dW5hdGVseSwgYm90aCBvZiB0
aGVzZSB0aGVtZXMgcmVuZGVyIGNvbnRyb2xzIGRpZmZlcmVudGx5IG9uIHRoZQorLy8gZGlmZmVy
ZW50IHZlcnNpb25zIG9mIFdpbmRvd3MuCisvLworLy8gSW4gb3JkZXIgdG8gZW5zdXJlIG1heGlt
dW0gY29uc2lzdGVuY3kgb2YgYmFzZWxpbmVzIGFjcm9zcyB0aGUgZGlmZmVyZW50CisvLyBXaW5k
b3dzIHZlcnNpb25zLCB3ZSBwcm92aWRlIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIGZvciBEUlQg
aGVyZQorLy8gaW5zdGVhZC4gVGhlc2UgY29udHJvbHMgYXJlIGFjdHVhbGx5IHBsYXRmb3JtLWlu
ZGVwZW5kZW50ICh0aGV5J3JlIHJlbmRlcmVkCisvLyB1c2luZyBTa2lhKSBhbmQgY291bGQgYmUg
dXNlZCBvbiBMaW51eCBhbmQgdGhlIE1hYyBhcyB3ZWxsLCBzaG91bGQgd2UKKy8vIGNob29zZSB0
byBkbyBzbyBhdCBzb21lIHBvaW50LgorLy8KKworI2lmbmRlZiBXZWJUaGVtZUVuZ2luZURSVF9o
CisjZGVmaW5lIFdlYlRoZW1lRW5naW5lRFJUX2gKKworI2luY2x1ZGUgInB1YmxpYy9XZWJUaGVt
ZUVuZ2luZS5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViVGhlbWVFbmdpbmVEUlQgOiBwdWJsaWMgV2ViVGhlbWVFbmdpbmUs
IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgV2ViVGhlbWVFbmdpbmVEUlQoKSB7
fQorCisgICAgLy8gV2ViVGhlbWVFbmdpbmUgbWV0aG9kczoKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRCdXR0b24oCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0
ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRNZW51TGlzdCgKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52
YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25z
dCBXZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckFy
cm93KAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBzdGF0ZSwgaW50IGNsYXNzaWNT
dGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxiYXJUaHVtYigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQg
cGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6
OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRyYWNrKAorICAg
ICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2lj
U3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYsIGNvbnN0IFdlYktpdDo6V2Vi
UmVjdCYgYWxpZ25SZWN0KTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFRleHRGaWVsZCgKKyAg
ICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3Np
Y1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLCBXZWJLaXQ6OldlYkNvbG9y
LCBib29sIGZpbGxDb250ZW50QXJlYSwKKyAgICAgICAgYm9vbCBkcmF3RWRnZXMpOworCisgICAg
dmlydHVhbCB2b2lkIHBhaW50VHJhY2tiYXIoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwg
aW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2Vi
S2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRQcm9ncmVzc0JhcigKKyAg
ICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGJhclJlY3Qs
CisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgdmFsdWVSZWN0LAorICAgICAgICBib29s
IGRldGVybWluYXRlLCBkb3VibGUgdGltZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFdlYlRoZW1lRW5naW5lRFJUX2gK
</data>
<flag name="review"
          id="42944"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58118</attachid>
            <date>2010-06-08 00:00:04 -0700</date>
            <delta_ts>2010-06-08 20:59:15 -0700</delta_ts>
            <desc>patch - WebKit version of WebThemeEngine v2</desc>
            <filename>WebThemeEngine2b.patch</filename>
            <type>text/plain</type>
            <size>58911</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjYzc3NTMwLi4yNjIyMTkyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDYt
MDMgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDQwMDUyIC0gW0RS
VC9DaHJvbWl1bV0gVXBzdHJlYW0gdGVzdF9zaGVsbF93ZWJ0aGVtZWVuZ2luZSBhcyBXZWJUaGVt
ZUVuZ2luZURSVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDAwNTIKKyAgICAgICAgCisgICAgICAgIEFkZCBXZWJUaGVtZUVuZ2luZURSVCBhbmQgV2Vi
VGhlbWVDb250cm9sRFJUIHBvcnRlZCBmcm9tIENocm9tZSByZXYuIDQ4OTA3CisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHA6CisgICAgICAgIChwbGF0Zm9ybUluaXQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVt
ZUNvbnRyb2xEUlQ6OldlYlRoZW1lQ29udHJvbERSVCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRo
ZW1lQ29udHJvbERSVDo6fldlYlRoZW1lQ29udHJvbERSVCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRoZW1lQ29udHJvbERSVDo6Ym94KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9s
RFJUOjpsaW5lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9sRFJUOjp0cmlhbmds
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lQ29udHJvbERSVDo6cm91bmRSZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9sRFJUOjpvdmFsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVGhlbWVDb250cm9sRFJUOjpjaXJjbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVt
ZUNvbnRyb2xEUlQ6Om5lc3RlZEJveGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250
cm9sRFJUOjptYXJrU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6
OmRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6OmRyYXdUZXh0Rmll
bGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6OmRyYXdQcm9ncmVzc0Jh
cik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJU
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6Oik6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVE
UlQ6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6OnBh
aW50TWVudUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRT
Y3JvbGxiYXJBcnJvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lRW5naW5lRFJUOjpwYWlu
dFNjcm9sbGJhclRodW1iKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6OnBh
aW50U2Nyb2xsYmFyVHJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZURSVDo6
cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZURSVDo6cGFp
bnRUcmFja2Jhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lRW5naW5lRFJUOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVu
Z2luZURSVC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6Oldl
YlRoZW1lRW5naW5lRFJUKToKKwogMjAxMC0wNi0wNCAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCAyODBjOGRk
Li41ZmM4ZGFiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cGkKQEAgLTM0LDUgKzM0LDE1IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5oJywKICAgICAg
ICAgXSwKKyAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICBbJ09TPT0id2luIics
IHsKKyAgICAgICAgICAgICAgICAnZHJ0X2ZpbGVzJzogWworICAgICAgICAgICAgICAgICAgICAn
Y2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJULmNwcCcsCisgICAgICAgICAgICAgICAgICAgICdj
aHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlQuaCcsCisgICAgICAgICAgICAgICAgICAgICdjaHJv
bWl1bS9XZWJUaGVtZUVuZ2luZURSVC5jcHAnLAorICAgICAgICAgICAgICAgICAgICAnY2hyb21p
dW0vV2ViVGhlbWVFbmdpbmVEUlQuaCcsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
IH1dLAorICAgICAgICBdLAogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwCmluZGV4IDM4ODRlOTQuLmE5Y2E2YTkg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bFdpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsV2luLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlRlc3RTaGVsbC5oIgogCisjaW5jbHVkZSAiV2ViVGhlbWVFbmdpbmVEUlQuaCIKICNpbmNs
dWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGZjbnRsLmg+
CiAjaW5jbHVkZSA8aW8uaD4KQEAgLTM4LDYgKzM5LDkgQEAKICNpbmNsdWRlIDxzaGx3YXBpLmg+
CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAorLy8gVGhlbWUgZW5naW5lCitzdGF0aWMgV2ViVGhl
bWVFbmdpbmVEUlQgdGhlbWVFbmdpbmU7CisKIC8vIFRocmVhZCBtYWluIHRvIHJ1biBmb3IgdGhl
IHRocmVhZCB3aGljaCBqdXN0IHRlc3RzIGZvciB0aW1lb3V0LgogdW5zaWduZWQgaW50IF9fc3Rk
Y2FsbCB3YXRjaERvZ1RocmVhZCh2b2lkKiBhcmcpCiB7CkBAIC0xMDUsNiArMTA5LDkgQEAgdm9p
ZCBwbGF0Zm9ybUluaXQoKQogICAgIF9zZXRtb2RlKF9maWxlbm8oc3Rkb3V0KSwgX09fQklOQVJZ
KTsKICAgICBfc2V0bW9kZShfZmlsZW5vKHN0ZGVyciksIF9PX0JJTkFSWSk7CiAKKyAgICAvLyBT
ZXQgdGhlbWUgZW5naW5lLgorICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRUaGVtZUVuZ2luZSgmdGhl
bWVFbmdpbmUpOworCiAgICAgLy8gTG9hZCBBaGVtIGZvbnQuCiAgICAgLy8gQUhFTV9fX18uVFRG
IGlzIGNvcGllZCB0byB0aGUgZGlyZWN0b3J5IG9mIER1bXBSZW5kZXJUcmVlLmV4ZSBieSBXZWJL
aXQuZ3lwLgogICAgIFdDSEFSIHBhdGhbX01BWF9QQVRIXTsKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVC5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg0ZWRlZjEKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xE
UlQuY3BwCkBAIC0wLDAgKzEsNTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgYSBzaW1wbGUg
Z2VuZXJpYyB2ZXJzaW9uIG9mIHRoZSBXZWJUaGVtZUVuZ2luZSwKKy8vIHdoaWNoIGlzIHVzZWQg
dG8gZHJhdyBhbGwgdGhlIG5hdGl2ZSBjb250cm9scyBvbiBhIHdlYiBwYWdlLiBXZSB1c2UgdGhp
cworLy8gZmlsZSB3aGVuIHJ1bm5pbmcgaW4gbGF5b3V0IHRlc3QgbW9kZSBpbiBvcmRlciB0byBy
ZW1vdmUgYW55CisvLyBwbGF0Zm9ybS1zcGVjaWZpYyByZW5kZXJpbmcgZGlmZmVyZW5jZXMgZHVl
IHRvIHRoZW1lcywgY29sb3JzLCBldGMuCisvLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViVGhlbWVDb250cm9sRFJULmgiCisKKyNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9y
bV9jYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX3dpbi5oIgorI2luY2x1
ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUGFpbnQuaCIKKyNpbmNsdWRlICJ0
aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1BhdGguaCIKKyNpbmNsdWRlICJ0aGlyZF9w
YXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBuYW1lc3BhY2Ugc2tpYTsKKwor
c3RhdGljIGNvbnN0IFNrQ29sb3IgZWRnZUNvbG9yICAgICA9IFNLX0NvbG9yQkxBQ0s7CitzdGF0
aWMgY29uc3QgU2tDb2xvciByZWFkT25seUNvbG9yID0gU2tDb2xvclNldFJHQigweGU5LCAweGMy
LCAweGE2KTsKK3N0YXRpYyBjb25zdCBTa0NvbG9yIGZnQ29sb3IgICAgICAgPSBTS19Db2xvckJM
QUNLOworc3RhdGljIGNvbnN0IFNrQ29sb3IgYmdDb2xvcnNbXSAgICA9IHsKKyAgICBTS19Db2xv
ckJMQUNLLCAgICAgICAgICAgICAgICAgICAvLyBVbmtub3duCisgICAgU2tDb2xvclNldFJHQigw
eGM5LCAweGM5LCAweGM5KSwgLy8gRGlzYWJsZWQKKyAgICBTa0NvbG9yU2V0UkdCKDB4ZjMsIDB4
ZTAsIDB4ZDApLCAvLyBSZWFkb25seQorICAgIFNrQ29sb3JTZXRSR0IoMHg4OSwgMHhjNCwgMHhm
ZiksIC8vIE5vcm1hbAorICAgIFNrQ29sb3JTZXRSR0IoMHg0MywgMHhmOSwgMHhmZiksIC8vIEhv
dAorICAgIFNrQ29sb3JTZXRSR0IoMHgyMCwgMHhmNiwgMHhjYyksIC8vIEZvY3VzZWQKKyAgICBT
a0NvbG9yU2V0UkdCKDB4MDAsIDB4ZjMsIDB4YWMpLCAvLyBIb3ZlcgorICAgIFNrQ29sb3JTZXRS
R0IoMHhhOSwgMHhmZiwgMHgxMiksIC8vIFByZXNzZWQKKyAgICBTa0NvbG9yU2V0UkdCKDB4Y2Ms
IDB4Y2MsIDB4Y2MpICAvLyBJbmRldGVybWluYXRlCit9OworCitzdGF0aWMgU2tJUmVjdCB2YWxp
ZGF0ZShjb25zdCBTa0lSZWN0JiByZWN0LCBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUp
Cit7CisgICAgc3dpdGNoIChjdHlwZSkgeworICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUOjpV
bmNoZWNrZWRCb3hUeXBlOgorICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUOjpDaGVja2VkQm94
VHlwZToKKyAgICBjYXNlIFdlYlRoZW1lQ29udHJvbERSVDo6VW5jaGVja2VkUmFkaW9UeXBlOgor
ICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUOjpDaGVja2VkUmFkaW9UeXBlOiB7CisgICAgICAg
ICAgICBTa0lSZWN0IHJldHZhbCA9IHJlY3Q7CisKKyAgICAgICAgICAgIC8vIFRoZSBtYXhpbXVt
IHdpZHRoIGFuZCBoZWlnaHQgaXMgMTMuCisgICAgICAgICAgICAvLyBDZW50ZXIgdGhlIHNxdWFy
ZSBpbiB0aGUgcGFzc2VkIHJlY3RhbmdsZS4KKyAgICAgICAgICAgIGNvbnN0IGludCBtYXhDb250
cm9sU2l6ZSA9IDEzOworICAgICAgICAgICAgaW50IGNvbnRyb2xTaXplID0gbWluKHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgICAgICAgICBjb250cm9sU2l6ZSA9IG1pbihjb250
cm9sU2l6ZSwgbWF4Q29udHJvbFNpemUpOworCisgICAgICAgICAgICByZXR2YWwuZkxlZnQgICA9
IHJlY3QuZkxlZnQgKyAocmVjdC53aWR0aCgpIC8gMikgLSAoY29udHJvbFNpemUgLyAyKTsKKyAg
ICAgICAgICAgIHJldHZhbC5mUmlnaHQgID0gcmV0dmFsLmZMZWZ0ICsgY29udHJvbFNpemUgLSAx
OworICAgICAgICAgICAgcmV0dmFsLmZUb3AgICAgPSByZWN0LmZUb3AgKyAocmVjdC5oZWlnaHQo
KSAvIDIpIC0gKGNvbnRyb2xTaXplIC8gMik7CisgICAgICAgICAgICByZXR2YWwuZkJvdHRvbSA9
IHJldHZhbC5mVG9wICsgY29udHJvbFNpemUgLSAxOworCisgICAgICAgICAgICByZXR1cm4gcmV0
dmFsOworICAgICAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gcmVjdDsKKyAg
ICB9Cit9CisKKy8vIFdlYlRoZW1lQ29udHJvbERSVAorCitXZWJUaGVtZUNvbnRyb2xEUlQ6Oldl
YlRoZW1lQ29udHJvbERSVChQbGF0Zm9ybUNhbnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2tJUmVjdCYgaXJlY3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlIGN0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgY3N0YXRlKQorICAgIDogbV9jYW52YXMoY2Fu
dmFzKQorICAgICwgbV9pcmVjdCh2YWxpZGF0ZShpcmVjdCwgY3R5cGUpKQorICAgICwgbV90eXBl
KGN0eXBlKQorICAgICwgbV9zdGF0ZShjc3RhdGUpCisgICAgLCBtX2xlZnQobV9pcmVjdC5mTGVm
dCkKKyAgICAsIG1fcmlnaHQobV9pcmVjdC5mUmlnaHQpCisgICAgLCBtX3RvcChtX2lyZWN0LmZU
b3ApCisgICAgLCBtX2JvdHRvbShtX2lyZWN0LmZCb3R0b20pCisgICAgLCBtX2hlaWdodChtX2ly
ZWN0LmhlaWdodCgpKQorICAgICwgbV93aWR0aChtX2lyZWN0LndpZHRoKCkpCisgICAgLCBtX2Vk
Z2VDb2xvcihlZGdlQ29sb3IpCisgICAgLCBtX2JnQ29sb3IoYmdDb2xvcnNbY3N0YXRlXSkKKyAg
ICAsIG1fZmdDb2xvcihmZ0NvbG9yKQoreworfQorCitXZWJUaGVtZUNvbnRyb2xEUlQ6On5XZWJU
aGVtZUNvbnRyb2xEUlQoKQoreworfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVDo6Ym94KGNv
bnN0IFNrSVJlY3QmIHJlY3QsIFNrQ29sb3IgZmlsbENvbG9yKQoreworICAgIFNrUGFpbnQgcGFp
bnQ7CisKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgcGFp
bnQuc2V0Q29sb3IoZmlsbENvbG9yKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHJlY3QsIHBh
aW50KTsKKworICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICBwYWludC5zZXRT
dHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHJl
Y3QsIHBhaW50KTsKK30KKwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlQ6OmxpbmUoaW50IHgwLCBp
bnQgeTAsIGludCB4MSwgaW50IHkxLCBTa0NvbG9yIGNvbG9yKQoreworICAgIFNrUGFpbnQgcGFp
bnQ7CisgICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOworICAgIG1fY2FudmFzLT5kcmF3TGluZShT
a0ludFRvU2NhbGFyKHgwKSwgU2tJbnRUb1NjYWxhcih5MCksCisgICAgICAgICAgICAgICAgICAg
ICAgU2tJbnRUb1NjYWxhcih4MSksIFNrSW50VG9TY2FsYXIoeTEpLAorICAgICAgICAgICAgICAg
ICAgICAgIHBhaW50KTsKK30KKwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlQ6OnRyaWFuZ2xlKGlu
dCB4MCwgaW50IHkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4MSwg
aW50IHkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4MiwgaW50IHky
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrQ29sb3IgY29sb3IpCit7Cisg
ICAgU2tQYXRoIHBhdGg7CisgICAgU2tQYWludCBwYWludDsKKworICAgIHBhaW50LnNldENvbG9y
KGNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAg
cGF0aC5pbmNSZXNlcnZlKDQpOworICAgIHBhdGgubW92ZVRvKFNrSW50VG9TY2FsYXIoeDApLCBT
a0ludFRvU2NhbGFyKHkwKSk7CisgICAgcGF0aC5saW5lVG8oU2tJbnRUb1NjYWxhcih4MSksIFNr
SW50VG9TY2FsYXIoeTEpKTsKKyAgICBwYXRoLmxpbmVUbyhTa0ludFRvU2NhbGFyKHgyKSwgU2tJ
bnRUb1NjYWxhcih5MikpOworICAgIHBhdGguY2xvc2UoKTsKKyAgICBtX2NhbnZhcy0+ZHJhd1Bh
dGgocGF0aCwgcGFpbnQpOworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAg
IHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5k
cmF3UGF0aChwYXRoLCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUOjpyb3Vu
ZFJlY3QoU2tDb2xvciBjb2xvcikKK3sKKyAgICBTa1JlY3QgcmVjdDsKKyAgICBTa1NjYWxhciBy
YWRpdXMgPSBTa0ludFRvU2NhbGFyKDUpOworICAgIFNrUGFpbnQgcGFpbnQ7CisKKyAgICByZWN0
LnNldChtX2lyZWN0KTsKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgcGFpbnQuc2V0
U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3Um91bmRSZWN0
KHJlY3QsIHJhZGl1cywgcmFkaXVzLCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2Vk
Z2VDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Cisg
ICAgbV9jYW52YXMtPmRyYXdSb3VuZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMsIHBhaW50KTsK
K30KKwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlQ6Om92YWwoU2tDb2xvciBjb2xvcikKK3sKKyAg
ICBTa1JlY3QgcmVjdDsKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgcmVjdC5zZXQobV9pcmVj
dCk7CisgICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFp
bnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd092YWwocmVjdCwgcGFpbnQpOwor
CisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNr
UGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3T3ZhbChyZWN0LCBwYWlu
dCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUOjpjaXJjbGUoU2tTY2FsYXIgcmFkaXVz
LCBTa0NvbG9yIGNvbG9yKQoreworICAgIFNrU2NhbGFyIGN5ID0gU2tJbnRUb1NjYWxhcihtX3Rv
cCAgKyBtX2hlaWdodCAvIDIpOworICAgIFNrU2NhbGFyIGN4ID0gU2tJbnRUb1NjYWxhcihtX2xl
ZnQgKyBtX3dpZHRoIC8gMik7CisgICAgU2tQYWludCBwYWludDsKKworICAgIHBhaW50LnNldENv
bG9yKGNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Cisg
ICAgbV9jYW52YXMtPmRyYXdDaXJjbGUoY3gsIGN5LCByYWRpdXMsIHBhaW50KTsKKworICAgIHBh
aW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50Ojpr
U3Ryb2tlX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1cywg
cGFpbnQpOworfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVDo6bmVzdGVkQm94ZXMoaW50IGlu
ZGVudExlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGVu
dFRvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZW50Umln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGVudEJvdHRv
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0NvbG9yIG91dGVyQ29s
b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBpbm5lckNv
bG9yKQoreworICAgIFNrSVJlY3QgbGlyZWN0OworICAgIGJveChtX2lyZWN0LCBvdXRlckNvbG9y
KTsKKyAgICBsaXJlY3Quc2V0KG1faXJlY3QuZkxlZnQgKyBpbmRlbnRMZWZ0LAorICAgICAgICAg
ICAgICAgbV9pcmVjdC5mVG9wICsgaW5kZW50VG9wLAorICAgICAgICAgICAgICAgbV9pcmVjdC5m
UmlnaHQgLSBpbmRlbnRSaWdodCwKKyAgICAgICAgICAgICAgIG1faXJlY3QuZkJvdHRvbSAtIGlu
ZGVudEJvdHRvbSk7CisgICAgYm94KGxpcmVjdCwgaW5uZXJDb2xvcik7Cit9CisKK3ZvaWQgV2Vi
VGhlbWVDb250cm9sRFJUOjptYXJrU3RhdGUoKQoreworICAgIC8vIFRoZSBob3Jpem9udGFsIGxp
bmVzIGluIGEgcmVhZCBvbmx5IGNvbnRyb2wgYXJlIHNwYWNlZCBieSB0aGlzIGFtb3VudC4KKyAg
ICBjb25zdCBpbnQgcmVhZE9ubHlMaW5lT2Zmc2V0ID0gNTsKKworICAgIC8vIFRoZSBsZW5ndGgg
b2YgYSB0cmlhbmdsZSBzaWRlIGZvciB0aGUgY29ybmVyIG1hcmtzLgorICAgIGNvbnN0IGludCB0
cmlhbmdsZVNpemUgPSA1OworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBVbmtu
b3duU3RhdGU6CisgICAgY2FzZSBEaXNhYmxlZFN0YXRlOgorICAgIGNhc2UgTm9ybWFsU3RhdGU6
CisgICAgICAgIC8vIERvbid0IHZpc3VhbGx5IG1hcmsgdGhlc2Ugc3RhdGVzIChjb2xvciBpcyBl
bm91Z2gpLgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlYWRPbmx5U3RhdGU6CisgICAgICAg
IC8vIERyYXdpbmcgbGluZXMgYWNyb3NzIHRoZSBjb250cm9sLgorICAgICAgICBmb3IgKGludCBp
ID0gbV90b3AgKyByZWFkT25seUxpbmVPZmZzZXQ7IGkgPCBtX2JvdHRvbTsgaSArPSByZWFkT25s
eUxpbmVPZmZzZXQpCisgICAgICAgICAgbGluZShtX2xlZnQgKyAxLCBpLCBtX3JpZ2h0IC0gMSwg
aSwgcmVhZE9ubHlDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIb3RTdGF0ZToK
KyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0
aGUgY29udHJvbC4KKyAgICAgICAgdHJpYW5nbGUobV9sZWZ0LCAgICAgICAgICAgICAgICAgbV90
b3AsCisgICAgICAgICAgICAgICAgIG1fbGVmdCArIHRyaWFuZ2xlU2l6ZSwgIG1fdG9wLAorICAg
ICAgICAgICAgICAgICBtX2xlZnQsICAgICAgICAgICAgICAgICBtX3RvcCArIHRyaWFuZ2xlU2l6
ZSwgICAgbV9lZGdlQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSG92ZXJTdGF0
ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSB1cHBlciByaWdodCBjb3JuZXIg
b2YgdGhlIGNvbnRyb2wuCisgICAgICAgIHRyaWFuZ2xlKG1fcmlnaHQsICAgICAgICAgICAgICAg
IG1fdG9wLAorICAgICAgICAgICAgICAgICBtX3JpZ2h0LCAgICAgICAgICAgICAgICBtX3RvcCAr
IHRyaWFuZ2xlU2l6ZSwKKyAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHRyaWFuZ2xlU2l6ZSwg
bV90b3AsICAgICAgICAgICAgICAgICAgIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIEZvY3VzZWRTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRo
ZSBib3R0b20gcmlnaHQgY29ybmVyIG9mIHRoZSBjb250cm9sLgorICAgICAgICB0cmlhbmdsZSht
X3JpZ2h0LCAgICAgICAgICAgICAgICBtX2JvdHRvbSwKKyAgICAgICAgICAgICAgICAgbV9yaWdo
dCAtIHRyaWFuZ2xlU2l6ZSwgbV9ib3R0b20sCisgICAgICAgICAgICAgICAgIG1fcmlnaHQsICAg
ICAgICAgICAgICAgIG1fYm90dG9tIC0gdHJpYW5nbGVTaXplLCBtX2VkZ2VDb2xvcik7CisgICAg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQcmVzc2VkU3RhdGU6CisgICAgICAgIC8vIERyYXcg
YSB0cmlhbmdsZSBpbiB0aGUgYm90dG9tIGxlZnQgY29ybmVyIG9mIHRoZSBjb250cm9sLgorICAg
ICAgICB0cmlhbmdsZShtX2xlZnQsICAgICAgICAgICAgICAgICBtX2JvdHRvbSwKKyAgICAgICAg
ICAgICAgICAgbV9sZWZ0LCAgICAgICAgICAgICAgICAgbV9ib3R0b20gLSB0cmlhbmdsZVNpemUs
CisgICAgICAgICAgICAgICAgIG1fbGVmdCArIHRyaWFuZ2xlU2l6ZSwgIG1fYm90dG9tLCAgICAg
ICAgICAgICAgICBtX2VkZ2VDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIENSQVNIKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KK30KKwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlQ6OmRyYXcoKQorewor
ICAgIGludCBoYWxmV2lkdGggPSBtX3dpZHRoIC8gMjsKKyAgICBpbnQgaGFsZkhlaWdodCA9IG1f
aGVpZ2h0IC8gMjsKKyAgICBpbnQgcXVhcnRlcldpZHRoID0gbV93aWR0aCAvIDQ7CisgICAgaW50
IHF1YXJ0ZXJIZWlnaHQgPSBtX2hlaWdodCAvIDQ7CisKKyAgICAvLyBJbmRlbnQgYW1vdW50cyBm
b3IgdGhlIGNoZWNrIGluIGEgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLgorICAgIGNvbnN0IGlu
dCBjaGVja0luZGVudCA9IDM7CisKKyAgICAvLyBJbmRlbnQgYW1vdW50cyBmb3Igc2hvcnQgYW5k
IGxvbmcgc2lkZXMgb2YgdGhlIHNjcm9sbGJhciBub3RjaGVzLgorICAgIGNvbnN0IGludCBub3Rj
aExvbmdPZmZzZXQgPSAxOworICAgIGNvbnN0IGludCBub3RjaFNob3J0T2Zmc2V0ID0gNDsKKyAg
ICBjb25zdCBpbnQgbm9PZmZzZXQgPSAwOworCisgICAgLy8gSW5kZW50IGFtb3VudHMgZm9yIHRo
ZSBzaG9ydCBhbmQgbG9uZyBzaWRlcyBvZiBhIHNjcm9sbCB0aHVtYiBib3guCisgICAgY29uc3Qg
aW50IHRodW1iTG9uZ0luZGVudCA9IDA7CisgICAgY29uc3QgaW50IHRodW1iU2hvcnRJbmRlbnQg
PSAyOworCisgICAgLy8gSW5kZW50cyBmb3IgdGhlIGNyb3NzaGF0Y2ggb24gYSBzY3JvbGwgZ3Jp
cC4KKyAgICBjb25zdCBpbnQgZ3JpcExvbmdJbmRlbnQgPSAzOworICAgIGNvbnN0IGludCBncmlw
U2hvcnRJbmRlbnQgPSA1OworCisgICAgLy8gSW5kZW50cyBmb3IgdGhlIHRoZSBzbGlkZXIgdHJh
Y2suCisgICAgY29uc3QgaW50IHNsaWRlckluZGVudCA9IDI7CisKKyAgICBtX2NhbnZhcy0+YmVn
aW5QbGF0Zm9ybVBhaW50KCk7CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVW5r
bm93blR5cGU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBDUkFTSCgp
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVGV4dEZpZWxkVHlwZToKKyAgICAgICAgLy8g
V2UgcmVuZGVyIHRoaXMgYnkgaGFuZCBvdXRzaWRlIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBDUkFTSCgpOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgUHVzaEJ1dHRvblR5cGU6CisgICAgICAgIC8vIHB1c2ggYnV0dG9ucyByZW5k
ZXIgYXMgYSByb3VuZGVkIHJlY3RhbmdsZQorICAgICAgICByb3VuZFJlY3QobV9iZ0NvbG9yKTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFVuY2hlY2tlZEJveFR5cGU6CisgICAgICAgIC8v
IFVuY2hlY2tlZCBib3hlcyBhcmUgc2ltcGx5IHBsYWluIGJveGVzLgorICAgICAgICBib3gobV9p
cmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENoZWNrZWRCb3hU
eXBlOgorICAgICAgICBuZXN0ZWRCb3hlcyhjaGVja0luZGVudCwgY2hlY2tJbmRlbnQsIGNoZWNr
SW5kZW50LCBjaGVja0luZGVudCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgVW5jaGVja2VkUmFkaW9UeXBlOgorICAgICAgICBjaXJjbGUoU2tJbnRU
b1NjYWxhcihoYWxmSGVpZ2h0KSwgbV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIENoZWNrZWRSYWRpb1R5cGU6CisgICAgICAgIGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZI
ZWlnaHQpLCBtX2JnQ29sb3IpOworICAgICAgICBjaXJjbGUoU2tJbnRUb1NjYWxhcihoYWxmSGVp
Z2h0IC0gY2hlY2tJbmRlbnQpLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgSG9yaXpvbnRhbFNjcm9sbFRyYWNrQmFja1R5cGU6IHsKKyAgICAgICAgICAgIC8vIERyYXcg
YSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSBsZWZ0LgorICAgICAgICAgICAgaW50IGxvbmdPZmZz
ZXQgPSBoYWxmSGVpZ2h0IC0gbm90Y2hMb25nT2Zmc2V0OworICAgICAgICAgICAgaW50IHNob3J0
T2Zmc2V0ID0gbV93aWR0aCAtIG5vdGNoU2hvcnRPZmZzZXQ7CisgICAgICAgICAgICBuZXN0ZWRC
b3hlcyhub09mZnNldCwgbG9uZ09mZnNldCwgc2hvcnRPZmZzZXQsIGxvbmdPZmZzZXQsIG1fYmdD
b2xvciwgbV9lZGdlQ29sb3IpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBIb3Jpem9udGFsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZTogeworICAgICAgICAgICAgLy8gRHJh
dyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIHJpZ2h0LgorICAgICAgICAgICAgaW50IGxvbmdP
ZmZzZXQgID0gaGFsZkhlaWdodCAtIG5vdGNoTG9uZ09mZnNldDsKKyAgICAgICAgICAgIGludCBz
aG9ydE9mZnNldCA9IG1fd2lkdGggLSBub3RjaFNob3J0T2Zmc2V0OworICAgICAgICAgICAgbmVz
dGVkQm94ZXMoc2hvcnRPZmZzZXQsIGxvbmdPZmZzZXQsIG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBt
X2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIFZlcnRpY2FsU2Nyb2xsVHJhY2tCYWNrVHlwZTogeworICAgICAgICAgICAgLy8gRHJhdyBh
IGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIHRvcC4KKyAgICAgICAgICAgIGludCBsb25nT2Zmc2V0
ICA9IGhhbGZXaWR0aCAtIG5vdGNoTG9uZ09mZnNldDsKKyAgICAgICAgICAgIGludCBzaG9ydE9m
ZnNldCA9IG1faGVpZ2h0IC0gbm90Y2hTaG9ydE9mZnNldDsKKyAgICAgICAgICAgIG5lc3RlZEJv
eGVzKGxvbmdPZmZzZXQsIG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbV9iZ0Nv
bG9yLCBtX2ZnQ29sb3IpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBW
ZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6IHsKKyAgICAgICAgICAgIC8vIERyYXcgYSBi
b3ggd2l0aCBhIG5vdGNoIGF0IHRoZSBib3R0b20uCisgICAgICAgICAgICBpbnQgbG9uZ09mZnNl
dCAgPSBoYWxmV2lkdGggLSBub3RjaExvbmdPZmZzZXQ7CisgICAgICAgICAgICBpbnQgc2hvcnRP
ZmZzZXQgPSBtX2hlaWdodCAtIG5vdGNoU2hvcnRPZmZzZXQ7CisgICAgICAgICAgICBuZXN0ZWRC
b3hlcyhsb25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbm9PZmZzZXQsIG1fYmdD
b2xvciwgbV9mZ0NvbG9yKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
SG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZToKKyAgICAgICAgLy8gRHJhdyBhIG5hcnJvd2VyIGJv
eCBvbiB0b3Agb2YgdGhlIG91dHNpZGUgYm94LgorICAgICAgICBuZXN0ZWRCb3hlcyh0aHVtYkxv
bmdJbmRlbnQsIHRodW1iU2hvcnRJbmRlbnQsIHRodW1iTG9uZ0luZGVudCwgdGh1bWJTaG9ydElu
ZGVudCwgbV9iZ0NvbG9yLCBtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
VmVydGljYWxTY3JvbGxUaHVtYlR5cGU6CisgICAgICAgIC8vIERyYXcgYSBzaG9ydGVyIGJveCBv
biB0b3Agb2YgdGhlIG91dHNpZGUgYm94LgorICAgICAgICBuZXN0ZWRCb3hlcyh0aHVtYlNob3J0
SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIHRodW1iU2hvcnRJbmRlbnQsIHRodW1iTG9uZ0luZGVu
dCwgbV9iZ0NvbG9yLCBtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSG9y
aXpvbnRhbFNsaWRlclRodW1iVHlwZToKKyAgICAgICAgLy8gU2xpZGVyIHRodW1icyBhcmUgb3Zh
bHMuCisgICAgICAgIG92YWwobV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IEhvcml6b250YWxTY3JvbGxHcmlwVHlwZTogeworICAgICAgICAgICAgLy8gRHJhdyBhIGhvcml6
b250YWwgY3Jvc3NoYXRjaCBmb3IgdGhlIGdyaXAuCisgICAgICAgICAgICBpbnQgbG9uZ09mZnNl
dCA9IGhhbGZXaWR0aCAtIGdyaXBMb25nSW5kZW50OworICAgICAgICAgICAgbGluZShtX2xlZnQg
ICsgZ3JpcExvbmdJbmRlbnQsIG1fdG9wICAgICsgaGFsZkhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgbV9yaWdodCAtIGdyaXBMb25nSW5kZW50LCBtX3RvcCAgICArIGhhbGZIZWlnaHQsICAgICAg
bV9mZ0NvbG9yKTsKKyAgICAgICAgICAgIGxpbmUobV9sZWZ0ICArIGxvbmdPZmZzZXQsICAgICBt
X3RvcCAgICArIGdyaXBTaG9ydEluZGVudCwKKyAgICAgICAgICAgICAgICAgbV9sZWZ0ICArIGxv
bmdPZmZzZXQsICAgICBtX2JvdHRvbSAtIGdyaXBTaG9ydEluZGVudCwgbV9mZ0NvbG9yKTsKKyAg
ICAgICAgICAgIGxpbmUobV9yaWdodCAtIGxvbmdPZmZzZXQsICAgICBtX3RvcCAgICArIGdyaXBT
aG9ydEluZGVudCwKKyAgICAgICAgICAgICAgICAgbV9yaWdodCAtIGxvbmdPZmZzZXQsICAgICBt
X2JvdHRvbSAtIGdyaXBTaG9ydEluZGVudCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgVmVydGljYWxTY3JvbGxHcmlwVHlwZTogeworICAgICAgICAg
ICAgLy8gRHJhdyBhIHZlcnRpY2FsIGNyb3NzaGF0Y2ggZm9yIHRoZSBncmlwLgorICAgICAgICAg
ICAgaW50IGxvbmdPZmZzZXQgPSBoYWxmSGVpZ2h0IC0gZ3JpcExvbmdJbmRlbnQ7CisgICAgICAg
ICAgICBsaW5lKG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgICAgIG1fdG9wICAgICsgZ3JpcExvbmdJ
bmRlbnQsCisgICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgICAgIG1fYm90
dG9tIC0gZ3JpcExvbmdJbmRlbnQsIG1fZmdDb2xvcik7CisgICAgICAgICAgICBsaW5lKG1fbGVm
dCAgKyBncmlwU2hvcnRJbmRlbnQsIG1fdG9wICAgICsgbG9uZ09mZnNldCwKKyAgICAgICAgICAg
ICAgICAgbV9yaWdodCAtIGdyaXBTaG9ydEluZGVudCwgbV90b3AgICAgKyBsb25nT2Zmc2V0LCAg
ICAgbV9mZ0NvbG9yKTsKKyAgICAgICAgICAgIGxpbmUobV9sZWZ0ICArIGdyaXBTaG9ydEluZGVu
dCwgbV9ib3R0b20gLSBsb25nT2Zmc2V0LAorICAgICAgICAgICAgICAgICBtX3JpZ2h0IC0gZ3Jp
cFNob3J0SW5kZW50LCBtX2JvdHRvbSAtIGxvbmdPZmZzZXQsICAgICBtX2ZnQ29sb3IpOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBMZWZ0QXJyb3dUeXBlOgorICAgICAg
ICAvLyBEcmF3IGEgbGVmdCBhcnJvdyBpbnNpZGUgYSBib3guCisgICAgICAgIGJveChtX2lyZWN0
LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlhbmdsZShtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBt
X3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCisgICAgICAgICAgICAgICAgIG1fcmlnaHQgLSBxdWFy
dGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwKKyAgICAgICAgICAgICAgICAgbV9s
ZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBoYWxmSGVpZ2h0LCAgICBtX2ZnQ29sb3Ip
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUmlnaHRBcnJvd1R5cGU6CisgICAgICAgIC8v
IERyYXcgYSBsZWZ0IGFycm93IGluc2lkZSBhIGJveC4KKyAgICAgICAgYm94KG1faXJlY3QsIG1f
YmdDb2xvcik7CisgICAgICAgIHRyaWFuZ2xlKG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9w
ICAgICsgcXVhcnRlckhlaWdodCwKKyAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJX
aWR0aCwgbV90b3AgICAgKyBoYWxmSGVpZ2h0LAorICAgICAgICAgICAgICAgICBtX2xlZnQgICsg
cXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBVcEFycm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBhbiB1
cCBhcnJvdyBpbnNpZGUgYSBib3guCisgICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOwor
ICAgICAgICB0cmlhbmdsZShtX2xlZnQgICsgcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0
ZXJIZWlnaHQsCisgICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fdG9w
ICAgICsgcXVhcnRlckhlaWdodCwKKyAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJX
aWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2ZnQ29sb3IpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgRG93bkFycm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBhIGRvd24gYXJy
b3cgaW5zaWRlIGEgYm94LgorICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAg
ICAgdHJpYW5nbGUobV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBxdWFydGVySGVp
Z2h0LAorICAgICAgICAgICAgICAgICBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCAgICAr
IHF1YXJ0ZXJIZWlnaHQsCisgICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAg
IG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIEhvcml6b250YWxTbGlkZXJUcmFja1R5cGU6IHsKKyAgICAgICAgICAgIC8vIERy
YXcgYSBuYXJyb3cgcmVjdCBmb3IgdGhlIHRyYWNrIHBsdXMgYm94IGhhdGNoZXMgb24gdGhlIGVu
ZHMuCisgICAgICAgICAgICBTa0lSZWN0IGxpcmVjdDsKKyAgICAgICAgICAgIGxpcmVjdCA9IG1f
aXJlY3Q7CisgICAgICAgICAgICBsaXJlY3QuaW5zZXQobm9PZmZzZXQsIGhhbGZIZWlnaHQgLSBz
bGlkZXJJbmRlbnQpOworICAgICAgICAgICAgYm94KGxpcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAg
ICAgfQorICAgICAgICBsaW5lKG1fbGVmdCwgIG1fdG9wLCBtX2xlZnQsICBtX2JvdHRvbSwgbV9l
ZGdlQ29sb3IpOworICAgICAgICBsaW5lKG1fcmlnaHQsIG1fdG9wLCBtX3JpZ2h0LCBtX2JvdHRv
bSwgbV9lZGdlQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRHJvcERvd25CdXR0
b25UeXBlOgorICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBiaWcgZG93biBhcnJvdyBvbiB0
b3AuCisgICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlhbmdsZSht
X2xlZnQgICsgcXVhcnRlcldpZHRoLCBtX3RvcCwKKyAgICAgICAgICAgICAgICAgbV9yaWdodCAt
IHF1YXJ0ZXJXaWR0aCwgbV90b3AsCisgICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lk
dGgsICAgIG1fYm90dG9tLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBDUkFTSCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBtYXJrU3RhdGUoKTsKKyAgICBtX2NhbnZhcy0+ZW5k
UGxhdGZvcm1QYWludCgpOworfQorCisvLyBCZWNhdXNlIHJlbmRlcmluZyBhIHRleHQgZmllbGQg
aXMgZGVwZW5kZW50IG9uIGlucHV0CisvLyBwYXJhbWV0ZXJzIHRoZSBvdGhlciBjb250cm9scyBk
b24ndCBoYXZlLCB3ZSByZW5kZXIgaXQgZGlyZWN0bHkKKy8vIHJhdGhlciB0aGFuIHRyeWluZyB0
byBvdmVyY29tcGxpY2F0ZSBkcmF3KCkgZnVydGhlci4KK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJU
OjpkcmF3VGV4dEZpZWxkKGJvb2wgZHJhd0VkZ2VzLCBib29sIGZpbGxDb250ZW50QXJlYSwgU2tD
b2xvciBjb2xvcikKK3sKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgbV9jYW52YXMtPmJlZ2lu
UGxhdGZvcm1QYWludCgpOworICAgIGlmIChmaWxsQ29udGVudEFyZWEpIHsKKyAgICAgICAgcGFp
bnQuc2V0Q29sb3IoY29sb3IpOworICAgICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmls
bF9TdHlsZSk7CisgICAgICAgIG1fY2FudmFzLT5kcmF3SVJlY3QobV9pcmVjdCwgcGFpbnQpOwor
ICAgIH0KKyAgICBpZiAoZHJhd0VkZ2VzKSB7CisgICAgICAgIHBhaW50LnNldENvbG9yKG1fZWRn
ZUNvbG9yKTsKKyAgICAgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7
CisgICAgICAgIG1fY2FudmFzLT5kcmF3SVJlY3QobV9pcmVjdCwgcGFpbnQpOworICAgIH0KKwor
ICAgIG1hcmtTdGF0ZSgpOworICAgIG1fY2FudmFzLT5lbmRQbGF0Zm9ybVBhaW50KCk7Cit9CisK
K3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUOjpkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYg
ZmlsbFJlY3QpCit7CisgICAgU2tQYWludCBwYWludDsKKworICAgIG1fY2FudmFzLT5iZWdpblBs
YXRmb3JtUGFpbnQoKTsKKyAgICBwYWludC5zZXRDb2xvcihtX2JnQ29sb3IpOworICAgIHBhaW50
LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0
KG1faXJlY3QsIHBhaW50KTsKKworICAgIC8vIEVtdWxhdGUgY2xpcHBpbmcKKyAgICBTa0lSZWN0
IHRvZmlsbDsKKyAgICB0b2ZpbGwuaW50ZXJzZWN0KG1faXJlY3QsIGZpbGxSZWN0KTsKKyAgICBw
YWludC5zZXRDb2xvcihtX2ZnQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtG
aWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHRvZmlsbCwgcGFpbnQpOworCisg
ICAgbWFya1N0YXRlKCk7CisgICAgbV9jYW52YXMtPmVuZFBsYXRmb3JtUGFpbnQoKTsKK30KKwpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVD
b250cm9sRFJULmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVt
ZUNvbnRyb2xEUlQuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZjczNjEw
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVGhlbWVDb250cm9sRFJULmgKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBXZWJUaGVtZUNvbnRyb2xE
UlQgaW1wbGVtZW50cyB0aGUgZ2VuZXJpYyByZW5kZXJpbmcgb2YgY29udHJvbHMKKy8vIG5lZWRl
ZCBieSBXZWJUaGVtZUVuZ2luZURSVC4gU2VlIHRoZSBjb21tZW50cyBpbiB0aGF0IGNsYXNzCisv
LyBoZWFkZXIgZmlsZSBmb3Igd2h5IHRoaXMgY2xhc3MgaXMgbmVlZGVkIGFuZCB1c2VkLgorLy8K
Ky8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGdlbmVyaWMgc2V0IG9mIHdpZGdldHMgdXNpbmcg
U2tpYS4gVGhlIHdpZGdldHMKKy8vIGFyZSBvcHRpbWl6ZWQgZm9yIHRlc3RhYmlsaXR5LCBub3Qg
YSBwbGVhc2luZyBhcHBlYXJhbmNlLgorLy8KKworI2lmbmRlZiBXZWJUaGVtZUNvbnRyb2xEUlRf
aAorI2RlZmluZSBXZWJUaGVtZUNvbnRyb2xEUlRfaAorCisjaW5jbHVkZSAic2tpYS9leHQvcGxh
dGZvcm1fY2FudmFzLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUv
U2tDb2xvci5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCisvLyBTa2lhIGZvcndh
cmQgZGVjbGFyYXRpb25zCitzdHJ1Y3QgU2tJUmVjdDsKKworY2xhc3MgV2ViVGhlbWVDb250cm9s
RFJUIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICAvLyBUaGlzIGxpc3Qgb2Yg
c3RhdGVzIG1vc3RseSBtaXJyb3JzIHRoZSBsaXN0IGluIFdlYkNvcmUvcGxhdGZvcm0vVGhlbWVU
eXBlcy5oCisgICAgLy8gYnV0IGlzIG1haW50YWluZWQgc2VwYXJhdGVseSBzaW5jZSB0aGF0IGlz
bid0IHB1YmxpYyBhbmQgYWxzbyB0byBtaW5pbWl6ZQorICAgIC8vIGRlcGVuZGVuY2llcy4KKyAg
ICAvLyBOb3RlIHRoYXQgdGhlIFdlYktpdCBUaGVtZVR5cGVzIHNlZW0gdG8gaW1wbHkgdGhhdCBh
IGNvbnRyb2wgY2FuIGJlCisgICAgLy8gaW4gbXVsdGlwbGUgc3RhdGVzIHNpbXVsdGFuZW91c2x5
IGJ1dCBXZWJUaGVtZUVuZ2luZSBvbmx5IGFsbG93cyBmb3IKKyAgICAvLyBhIHNpbmdsZSBzdGF0
ZSBhdCBhIHRpbWUuCisgICAgLy8KKyAgICAvLyBTb21lIGRlZmluaXRpb25zIGZvciB0aGUgdmFy
aW91cyBzdGF0ZXM6CisgICAgLy8gICBEaXNhYmxlZCAtIGluZGljYXRlcyB0aGF0IGEgY29udHJv
bCBjYW4ndCBiZSBtb2RpZmllZCBvciBzZWxlY3RlZAorICAgIC8vICAgICAgICAgICAgICAoY29y
cmVzcG9uZHMgdG8gSFRNTCAnZGlzYWJsZWQnIGF0dHJpYnV0ZSkKKyAgICAvLyAgIFJlYWRPbmx5
IC0gaW5kaWNhdGVzIHRoYXQgYSBjb250cm9sIGNhbid0IGJlIG1vZGlmaWVkIGJ1dCBjYW4gYmUK
KyAgICAvLyAgICAgICAgICAgICAgc2VsZWN0ZWQKKyAgICAvLyAgIE5vcm1hbCAgIC0gdGhlIG5v
cm1hbCBzdGF0ZSBvZiBjb250cm9sIG9uIHRoZSBwYWdlIHdoZW4gaXQgaXNuJ3QKKyAgICAvLyAg
ICAgICAgICAgICAgZm9jdXNlZCBvciBvdGhlcndpc2UgYWN0aXZlCisgICAgLy8gICBIb3QgICAg
ICAtIHdoZW4gdGhlIG1vdXNlIGlzIGhvdmVyaW5nIG92ZXIgYSBwYXJ0IG9mIHRoZSBjb250cm9s
LAorICAgIC8vICAgICAgICAgICAgICBhbGwgdGhlIG90aGVyIHBhcnRzIGFyZSBjb25zaWRlcmVk
ICJob3QiCisgICAgLy8gICBIb3ZlciAgICAtIHdoZW4gdGhlIG1vdXNlIGlzIGRpcmVjdGx5IG92
ZXIgYSBjb250cm9sICh0aGUgQ1NTCisgICAgLy8gICAgICAgICAgICAgICA6aG92ZXIgcHNldWRv
LWNsYXNzKQorICAgIC8vICAgRm9jdXNlZCAgLSB3aGVuIHRoZSBjb250cm9sIGhhcyB0aGUga2V5
Ym9hcmQgZm9jdXMKKyAgICAvLyAgIFByZXNzZWQgIC0gd2hlbiB0aGUgY29udHJvbCBpcyBiZWlu
ZyB0cmlnZ2VyZWQgKGJ5IGEgbW91c2Vkb3duIG9yCisgICAgLy8gICAgICAgICAgICAgIGEga2V5
IGV2ZW50KS4KKyAgICAvLyAgIEluZGV0ZXJtaW5hdGUgLSB3aGVuIHNldCB0byBpbmRldGVybWlu
YXRlIChvbmx5IGZvciBwcm9ncmVzcyBiYXIpCisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIFVu
a25vd25TdGF0ZSA9IDAsCisgICAgICAgIERpc2FibGVkU3RhdGUsCisgICAgICAgIFJlYWRPbmx5
U3RhdGUsCisgICAgICAgIE5vcm1hbFN0YXRlLAorICAgICAgICBIb3RTdGF0ZSwKKyAgICAgICAg
SG92ZXJTdGF0ZSwKKyAgICAgICAgRm9jdXNlZFN0YXRlLAorICAgICAgICBQcmVzc2VkU3RhdGUs
CisgICAgICAgIEluZGV0ZXJtaW5hdGVTdGF0ZQorICAgIH07CisKKyAgICAvLyBUaGlzIGxpc3Qg
b2YgdHlwZXMgbW9zdGx5IG1pcnJvcnMgdGhlIGxpc3QgaW4KKyAgICAvLyBXZWJDb3JlL3BsYXRm
b3JtL1RoZW1lVHlwZXMuaCBidXQgaXMgbWFpbnRhaW5lZAorICAgIC8vIHNlcGFyYXRlbHkgc2lu
Y2UgdGhhdCBpc24ndCBwdWJsaWMgYW5kIGFsc28gdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzLgor
ICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdoYXQgdGhlIHVzZXIgbWlnaHQgdGhpbmsgb2YgYXMg
YSBzaW5nbGUgY29udHJvbCBjYW4gYmUKKyAgICAvLyBtYWRlIHVwIG9mIG11bHRpcGxlIHBhcnRz
LiBGb3IgZXhhbXBsZSwgYSBzaW5nbGUgc2Nyb2xsIGJhciBjb250YWlucworICAgIC8vIHNpeCBj
bGlja2FibGUgcGFydHMgLSB0d28gYXJyb3dzLCB0aGUgInRodW1iIiBpbmRpY2F0aW5nIHRoZSBj
dXJyZW50CisgICAgLy8gcG9zaXRpb24gb24gdGhlIGJhciwgdGhlIG90aGVyIHR3byBwYXJ0cyBv
ZiB0aGUgYmFyIChiZWZvcmUgYW5kIGFmdGVyCisgICAgLy8gdGhlIHRodW1iKSBhbmQgdGhlICJn
cmlwcGVyIiBvbiB0aGUgdGh1bWIgaXRzZWxmLgorICAgIC8vCisgICAgZW51bSBUeXBlIHsKKyAg
ICAgICAgVW5rbm93blR5cGUgPSAwLAorICAgICAgICBUZXh0RmllbGRUeXBlLAorICAgICAgICBQ
dXNoQnV0dG9uVHlwZSwKKyAgICAgICAgVW5jaGVja2VkQm94VHlwZSwKKyAgICAgICAgQ2hlY2tl
ZEJveFR5cGUsCisgICAgICAgIFVuY2hlY2tlZFJhZGlvVHlwZSwKKyAgICAgICAgQ2hlY2tlZFJh
ZGlvVHlwZSwKKyAgICAgICAgSG9yaXpvbnRhbFNjcm9sbFRyYWNrQmFja1R5cGUsCisgICAgICAg
IEhvcml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlLAorICAgICAgICBIb3Jpem9udGFsU2Ny
b2xsVGh1bWJUeXBlLAorICAgICAgICBIb3Jpem9udGFsU2Nyb2xsR3JpcFR5cGUsCisgICAgICAg
IFZlcnRpY2FsU2Nyb2xsVHJhY2tCYWNrVHlwZSwKKyAgICAgICAgVmVydGljYWxTY3JvbGxUcmFj
a0ZvcndhcmRUeXBlLAorICAgICAgICBWZXJ0aWNhbFNjcm9sbFRodW1iVHlwZSwKKyAgICAgICAg
VmVydGljYWxTY3JvbGxHcmlwVHlwZSwKKyAgICAgICAgTGVmdEFycm93VHlwZSwKKyAgICAgICAg
UmlnaHRBcnJvd1R5cGUsCisgICAgICAgIFVwQXJyb3dUeXBlLAorICAgICAgICBEb3duQXJyb3dU
eXBlLAorICAgICAgICBIb3Jpem9udGFsU2xpZGVyVHJhY2tUeXBlLAorICAgICAgICBIb3Jpem9u
dGFsU2xpZGVyVGh1bWJUeXBlLAorICAgICAgICBEcm9wRG93bkJ1dHRvblR5cGUsCisgICAgICAg
IFByb2dyZXNzQmFyVHlwZQorICAgIH07CisKKyAgICAvLyBjYW52YXMgaXMgdGhlIGNhbnZhcyB0
byBkcmF3IG9udG8sIGFuZCByZWN0IGdpdmVzIHRoZSBzaXplIG9mIHRoZQorICAgIC8vIGNvbnRy
b2wuIGN0eXBlIGFuZCBjc3RhdGUgc3BlY2lmeSB0aGUgdHlwZSBhbmQgc3RhdGUgb2YgdGhlIGNv
bnRyb2wuCisgICAgV2ViVGhlbWVDb250cm9sRFJUKHNraWE6OlBsYXRmb3JtQ2FudmFzKiBjYW52
YXMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNrSVJlY3QmIHJlY3QsCisgICAgICAg
ICAgICAgICAgICAgICAgIFR5cGUgY3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgIFN0YXRl
IGNzdGF0ZSk7CisgICAgfldlYlRoZW1lQ29udHJvbERSVCgpOworCisgICAgLy8gRHJhd3MgdGhl
IGNvbnRyb2wuCisgICAgdm9pZCBkcmF3KCk7CisKKyAgICAvLyBVc2UgdGhpcyBmb3IgVGV4dEZp
ZWxkIGNvbnRyb2xzIGluc3RlYWQsIGJlY2F1c2UgdGhlIGxvZ2ljCisgICAgLy8gZm9yIGRyYXdp
bmcgdGhlbSBpcyBkZXBlbmRlbnQgb24gd2hhdCBXZWJLaXQgdGVsbHMgdXMgdG8gZG8uCisgICAg
Ly8gSWYgZHJhd0VkZ2VzIGlzIHRydWUsIGRyYXcgYW4gZWRnZSBhcm91bmQgdGhlIGNvbnRyb2wu
IElmCisgICAgLy8gZmlsbENvbnRlbnRBcmVhIGlzIHRydWUsIGZpbGwgdGhlIGNvbnRlbnQgYXJl
YSB3aXRoIHRoZSBnaXZlbiBjb2xvci4KKyAgICB2b2lkIGRyYXdUZXh0RmllbGQoYm9vbCBkcmF3
RWRnZXMsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBTa0NvbG9yIGNvbG9yKTsKKworICAgIC8vIFVz
ZSB0aGlzIGZvciBkcmF3aW5nIFByb2dyZXNzQmFyIGNvbnRyb2xzIGluc3RlYWQsIHNpbmNlIHdl
CisgICAgLy8gbmVlZCB0byBrbm93IHRoZSByZWN0IHRvIGZpbGwgaW5zaWRlIHRoZSBiYXIuCisg
ICAgdm9pZCBkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3QpOworCitwcml2
YXRlOgorICAgIC8vIERyYXdzIGEgYm94IG9mIHNpemUgc3BlY2lmaWVkIGJ5IGlyZWN0LCBmaWxs
ZWQgd2l0aCB0aGUgZ2l2ZW4gY29sb3IuCisgICAgLy8gVGhlIGJveCB3aWxsIGhhdmUgYSBib3Jk
ZXIgZHJhd24gaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIGJveChjb25zdCBT
a0lSZWN0JiBpcmVjdCwgU2tDb2xvciBjb2xvcik7CisKKworICAgIC8vIERyYXdzIGEgdHJpYW5n
bGUgb2Ygc2l6ZSBzcGVjaWZpZWQgYnkgdGhlIHRocmVlIHBhaXJzIG9mIGNvb3JkaW5hdGVzLAor
ICAgIC8vIGZpbGxlZCB3aXRoIHRoZSBnaXZlbiBjb2xvci4gVGhlIGJveCB3aWxsIGhhdmUgYW4g
ZWRnZSBkcmF3biBpbiB0aGUKKyAgICAvLyBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9pZCB0
cmlhbmdsZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBT
a0NvbG9yIGNvbG9yKTsKKworICAgIC8vIERyYXdzIGEgcmVjdGFuZ2xlIHRoZSBzaXplIG9mIHRo
ZSBjb250cm9sIHdpdGggcm91bmRlZCBjb3JuZXJzLCBmaWxsZWQKKyAgICAvLyB3aXRoIHRoZSBz
cGVjaWZpZWQgY29sb3IgKGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29s
b3IpLgorICAgIHZvaWQgcm91bmRSZWN0KFNrQ29sb3IgY29sb3IpOworCisgICAgLy8gRHJhd3Mg
YW4gb3ZhbCB0aGUgc2l6ZSBvZiB0aGUgY29udHJvbCwgZmlsbGVkIHdpdGggdGhlIHNwZWNpZmll
ZCBjb2xvcgorICAgIC8vIGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29s
b3IuCisgICAgdm9pZCBvdmFsKFNrQ29sb3IgY29sb3IpOworCisgICAgLy8gRHJhd3MgYSBjaXJj
bGUgY2VudGVyZWQgaW4gdGhlIGNvbnRyb2wgd2l0aCB0aGUgc3BlY2lmaWVkIHJhZGl1cywKKyAg
ICAvLyBmaWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yLCBhbmQgd2l0aCBhIGJvcmRlciBk
cmF3IGluIHRoZQorICAgIC8vIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIGNpcmNsZShT
a1NjYWxhciByYWRpdXMsIFNrQ29sb3IgY29sb3IpOworCisgICAgLy8gRHJhd3MgYSBib3ggdGhl
IHNpemUgb2YgdGhlIGNvbnRyb2wsIGZpbGxlZCB3aXRoIHRoZSBvdXRlckNvbG9yIGFuZAorICAg
IC8vIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvciwgYW5kIHRoZW4gZHJh
d3MgYW5vdGhlciBib3gKKyAgICAvLyBpbmRlbnRlZCBvbiBhbGwgZm91ciBzaWRlcyBieSB0aGUg
c3BlY2lmaWVkIGFtb3VudHMsIGZpbGxlZCB3aXRoIHRoZQorICAgIC8vIGlubmVyIGNvbG9yIGFu
ZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9pZCBuZXN0
ZWRCb3hlcyhpbnQgaW5kZW50TGVmdCwKKyAgICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRU
b3AsCisgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZW50UmlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICBpbnQgaW5kZW50Qm90dG9tLAorICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBv
dXRlckNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBpbm5lckNvbG9yKTsKKwor
ICAgIC8vIERyYXdzIGEgbGluZSBiZXR3ZWVuIHRoZSB0d28gcG9pbnRzIGluIHRoZSBnaXZlbiBj
b2xvci4KKyAgICB2b2lkIGxpbmUoaW50IHgwLCBpbnQgeTAsIGludCB4MSwgaW50IHkxLCBTa0Nv
bG9yIGNvbG9yKTsKKworICAgIC8vIERyYXdzIGEgZGlzdGluY3RpdmUgbWFyayBvbiB0aGUgY29u
dHJvbCBmb3IgZWFjaCBzdGF0ZSwgc28gdGhhdCB0aGUKKyAgICAvLyBzdGF0ZSBvZiB0aGUgY29u
dHJvbCBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRob3V0IG5lZWRpbmcgdG8ga25vdyB3aGljaAorICAg
IC8vIGNvbG9yIGlzIHdoaWNoLgorICAgIHZvaWQgbWFya1N0YXRlKCk7CisKKyAgICBza2lhOjpQ
bGF0Zm9ybUNhbnZhcyogbV9jYW52YXM7CisgICAgY29uc3QgU2tJUmVjdCBtX2lyZWN0OworICAg
IGNvbnN0IFR5cGUgbV90eXBlOworICAgIGNvbnN0IFN0YXRlIG1fc3RhdGU7CisgICAgY29uc3Qg
U2tDb2xvciBtX2VkZ2VDb2xvcjsKKyAgICBjb25zdCBTa0NvbG9yIG1fYmdDb2xvcjsKKyAgICBj
b25zdCBTa0NvbG9yIG1fZmdDb2xvcjsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIGNvbnZl
bmllbmNlIGFjY2Vzc29ycyBmb3IgbV9pcmVjdC4KKyAgICBjb25zdCBpbnQgbV9sZWZ0OworICAg
IGNvbnN0IGludCBtX3JpZ2h0OworICAgIGNvbnN0IGludCBtX3RvcDsKKyAgICBjb25zdCBpbnQg
bV9ib3R0b207CisgICAgY29uc3QgaW50IG1fd2lkdGg7CisgICAgY29uc3QgaW50IG1faGVpZ2h0
OworfTsKKworI2VuZGlmIC8vIFdlYlRoZW1lQ29udHJvbERSVF9oCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjMwOTJjYwotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5l
RFJULmNwcApAQCAtMCwwICsxLDY3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJUaGVtZUVuZ2luZURSVC5oIgorCisjaW5jbHVkZSAiV2ViVGhlbWVDb250cm9sRFJULmgiCisj
aW5jbHVkZSAicHVibGljL1dlYlJlY3QuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2lu
Y2x1ZGUvY29yZS9Ta1JlY3QuaCIKKworLy8gQWx0aG91Z2ggYWxsIHRoaXMgY29kZSBpcyBnZW5l
cmljLCB3ZSBpbmNsdWRlIHRoZXNlIGhlYWRlcnMKKy8vIHRvIHB1bGwgaW4gdGhlIFdpbmRvd3Mg
I2RlZmluZXMgZm9yIHRoZSBwYXJ0cyBhbmQgc3RhdGVzIG9mCisvLyB0aGUgY29udHJvbHMuCisj
aW5jbHVkZSA8dnNzdHlsZS5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8vIFdlIGRlZmlu
ZSB0aGlzIGZvciBjbGFyaXR5LCBhbHRob3VnaCB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIGEgREZD
U19OT1JNQUwgaW4gd2ludXNlci5oLgorc3RhdGljIGNvbnN0IGludCBkZmNzTm9ybWFsID0gMHgw
MDAwOworCitzdGF0aWMgU2tJUmVjdCB3ZWJSZWN0VG9Ta0lSZWN0KGNvbnN0IFdlYlJlY3QmIHdl
YlJlY3QpCit7CisgICAgU2tJUmVjdCBpcmVjdDsKKyAgICBpcmVjdC5zZXQod2ViUmVjdC54LCB3
ZWJSZWN0LnksIHdlYlJlY3QueCArIHdlYlJlY3Qud2lkdGgsIHdlYlJlY3QueSArIHdlYlJlY3Qu
aGVpZ2h0KTsKKyAgICByZXR1cm4gaXJlY3Q7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdDb250cm9s
KFdlYkNhbnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVj
dCYgcmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVDo6VHlw
ZSBjdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVDo6U3Rh
dGUgY3N0YXRlKQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVCBjb250cm9sKGNhbnZhcywgd2Vi
UmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNzdGF0ZSk7CisgICAgY29udHJvbC5kcmF3KCk7
Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdUZXh0RmllbGQoV2ViQ2FudmFzKiBjYW52YXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVDo6VHlwZSBjdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViVGhlbWVDb250cm9sRFJUOjpTdGF0ZSBjc3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgZHJhd0VkZ2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGZpbGxDb250ZW50QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
Q29sb3IgY29sb3IpCit7CisgICAgV2ViVGhlbWVDb250cm9sRFJUIGNvbnRyb2woY2FudmFzLCB3
ZWJSZWN0VG9Ta0lSZWN0KHJlY3QpLCBjdHlwZSwgY3N0YXRlKTsKKyAgICBjb250cm9sLmRyYXdU
ZXh0RmllbGQoZHJhd0VkZ2VzLCBmaWxsQ29udGVudEFyZWEsIGNvbG9yKTsKK30KKworc3RhdGlj
IHZvaWQgZHJhd1Byb2dyZXNzQmFyKFdlYkNhbnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVDo6VHlwZSBjdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiBiYXJSZWN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIGZpbGxSZWN0KQoreworICAgIFdlYlRo
ZW1lQ29udHJvbERSVCBjb250cm9sKGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChiYXJSZWN0KSwg
Y3R5cGUsIGNzdGF0ZSk7CisgICAgY29udHJvbC5kcmF3UHJvZ3Jlc3NCYXIod2ViUmVjdFRvU2tJ
UmVjdChmaWxsUmVjdCkpOworfQorCisvLyBXZWJUaGVtZUVuZ2luZURSVAorCit2b2lkIFdlYlRo
ZW1lRW5naW5lRFJUOjpwYWludEJ1dHRvbihXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJ0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpUeXBl
IGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpVbmtub3duVHlwZTsKKyAgICBXZWJUaGVtZUNv
bnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5rbm93blN0YXRl
OworCisgICAgaWYgKHBhcnQgPT0gQlBfQ0hFQ0tCT1gpIHsKKyAgICAgICAgc3dpdGNoIChzdGF0
ZSkgeworICAgICAgICBjYXNlIENCU19VTkNIRUNLRUROT1JNQUw6CisgICAgICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlQ6OlVuY2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlQ6Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBDQlNfVU5DSEVDS0VESE9UOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjdHlw
ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5jaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6SG90U3RhdGU7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIENCU19VTkNIRUNLRURQUkVTU0VEOgorICAgICAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfUFVTSEVEKSk7CisgICAg
ICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5jaGVja2VkQm94VHlwZTsKKyAg
ICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6UHJlc3NlZFN0YXRlOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VERElTQUJMRUQ6Cisg
ICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZD
U19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlVu
Y2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCU19D
SEVDS0VETk9STUFMOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19C
VVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OkNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhl
bWVDb250cm9sRFJUOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgQ0JTX0NIRUNLRURIT1Q6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19IT1QpKTsKKyAgICAgICAg
ICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpDaGVja2VkQm94VHlwZTsKKyAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6SG90U3RhdGU7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIENCU19DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAgIEFT
U0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQgfCBE
RkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkNo
ZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpQ
cmVzc2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCU19DSEVD
S0VERElTQUJMRUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JV
VFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKEJQX1JB
RElPQlVUVE9OID09IHBhcnQpIHsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBj
YXNlIFJCU19VTkNIRUNLRUROT1JNQUw6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IERGQ1NfQlVUVE9OUkFESU8pOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6OlVuY2hlY2tlZFJhZGlvVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVDo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIFJCU19VTkNIRUNLRURIT1Q6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2Vi
VGhlbWVDb250cm9sRFJUOjpVbmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBSQlNfVU5DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX1BVU0hFRCkpOworICAgICAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlVuY2hlY2tlZFJhZGlvVHlwZTsKKyAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6UHJlc3NlZFN0YXRlOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VERElTQUJMRUQ6CisgICAg
ICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19J
TkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlVuY2hl
Y2tlZFJhZGlvVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJTX0NI
RUNLRUROT1JNQUw6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JV
VFRPTlJBRElPIHwgREZDU19DSEVDS0VEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1l
Q29udHJvbERSVDo6Q2hlY2tlZFJhZGlvVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVDo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIFJCU19DSEVDS0VESE9UOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSE9UKSk7CisgICAgICAg
ICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6Q2hlY2tlZFJhZGlvVHlwZTsKKyAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6SG90U3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAg
IEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQg
fCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
OkNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJT
X0NIRUNLRURESVNBQkxFRDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAg
ICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6Q2hlY2tlZFJhZGlvVHlwZTsKKyAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6RGlzYWJsZWRTdGF0ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlm
IChCUF9QVVNIQlVUVE9OID09IHBhcnQpIHsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAg
ICAgICBjYXNlIFBCU19OT1JNQUw6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IERGQ1NfQlVUVE9OUFVTSCk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VDo6UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQQlNf
SE9UOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05QVVNI
IHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpQ
dXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
SG90U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFBCU19QUkVTU0VE
OgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05QVVNIIHwg
REZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpQ
dXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQQlNfRElT
QUJMRUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlBV
U0ggfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJv
bERSVDo6UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IFBCU19ERUZBVUxURUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1Nf
QlVUVE9OUFVTSCk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6UHVz
aEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkZv
Y3VzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
CisgICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKworCit2
b2lkIFdlYlRoZW1lRW5naW5lRFJUOjpwYWludE1lbnVMaXN0KFdlYkNhbnZhcyogY2FudmFzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdlYlRo
ZW1lQ29udHJvbERSVDo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5rbm93blR5
cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6OlVua25vd25TdGF0ZTsKKworICAgIGlmIChDUF9EUk9QRE9XTkJVVFRPTiA9PSBwYXJ0
KSB7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpEcm9wRG93bkJ1dHRvblR5
cGU7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBDQlhTX05PUk1BTDoK
KyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19NRU5VQVJST1cpOworICAg
ICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpOb3JtYWxTdGF0ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JYU19IT1Q6CisgICAgICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX01FTlVBUlJPVyB8IERGQ1NfSE9UKSk7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdmVyU3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIENCWFNfUFJFU1NFRDoKKyAgICAgICAgICAgIEFTU0VS
VChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwgREZDU19QVVNIRUQpKTsKKyAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6UHJlc3NlZFN0YXRlOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlhTX0RJU0FCTEVEOgorICAgICAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19NRU5VQVJST1cgfCBERkNTX0lOQUNUSVZFKSk7
CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkRpc2FibGVkU3RhdGU7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQ1JB
U0goKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBl
LCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRoZW1lRW5naW5lRFJUOjpwYWludFNjcm9sbGJhckFy
cm93KFdlYkNhbnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2ViVGhlbWVDb250
cm9sRFJUOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpVbmtub3duVHlwZTsKKyAg
ICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
VW5rbm93blN0YXRlOworCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgQUJTX1VQTk9S
TUFMOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMVVApOworICAg
ICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VXBBcnJvd1R5cGU7CisgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6Tm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBBQlNfRE9XTk5PUk1BTDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSBERkNTX1NDUk9MTERPV04pOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
RG93bkFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpOb3Jt
YWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19MRUZUTk9STUFMOgorICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMTEVGVCk7CisgICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpMZWZ0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlQ6Ok5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgQUJTX1JJR0hUTk9STUFMOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERG
Q1NfU0NST0xMUklHSFQpOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6Umln
aHRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6Tm9ybWFs
U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfVVBIT1Q6CisgICAgICAgIEFT
U0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0hPVCkpOworICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VXBBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6SG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBBQlNfRE9XTkhPVDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19T
Q1JPTExET1dOIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6OkRvd25BcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
SG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfTEVGVEhPVDoKKyAgICAg
ICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExMRUZUIHwgREZDU19IT1QpKTsK
KyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkxlZnRBcnJvd1R5cGU7CisgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6SG90U3RhdGU7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBBQlNfUklHSFRIT1Q6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfU0NST0xMUklHSFQgfCBERkNTX0hPVCkpOworICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVDo6UmlnaHRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVDo6SG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfVVBI
T1ZFUjoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsKKyAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlVwQXJyb3dUeXBlOworICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBBQlNfRE9XTkhPVkVSOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IERGQ1NfU0NST0xMRE9XTik7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpE
b3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdmVy
U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfTEVGVEhPVkVSOgorICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMTEVGVCk7CisgICAgICAgIGN0eXBl
ID0gV2ViVGhlbWVDb250cm9sRFJUOjpMZWZ0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBBQlNfUklHSFRIT1ZFUjoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1ND
Uk9MTFJJR0hUKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlJpZ2h0QXJy
b3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdmVyU3RhdGU7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfVVBQUkVTU0VEOgorICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19QVVNIRUQgfCBERkNTX0ZM
QVQpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlVwQXJyb3dUeXBlOwor
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlByZXNzZWRTdGF0ZTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19ET1dOUFJFU1NFRDoKKyAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQp
KTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkRvd25BcnJvd1R5cGU7Cisg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6UHJlc3NlZFN0YXRlOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgQUJTX0xFRlRQUkVTU0VEOgorICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IChERkNTX1NDUk9MTExFRlQgfCBERkNTX1BVU0hFRCB8IERGQ1NfRkxBVCkp
OworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6TGVmdEFycm93VHlwZTsKKyAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpQcmVzc2VkU3RhdGU7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBBQlNfUklHSFRQUkVTU0VEOgorICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQp
KTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlJpZ2h0QXJyb3dUeXBlOwor
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlByZXNzZWRTdGF0ZTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19VUERJU0FCTEVEOgorICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VXBBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVDo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIEFCU19ET1dORElTQUJMRUQ6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
KERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlQ6OkRvd25BcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVDo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFC
U19MRUZURElTQUJMRUQ6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NS
T0xMTEVGVCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6OkxlZnRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VDo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19SSUdIVERJ
U0FCTEVEOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFJJR0hU
IHwgREZDU19JTkFDVElWRSkpOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
UmlnaHRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6RGlz
YWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZHJhd0NvbnRy
b2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKwordm9pZCBXZWJUaGVtZUVuZ2lu
ZURSVDo6cGFpbnRTY3JvbGxiYXJUaHVtYihXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCkK
K3sKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6OlVua25vd25UeXBlOworICAgIFdlYlRoZW1lQ29udHJvbERSVDo6U3RhdGUgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUOjpVbmtub3duU3RhdGU7CisKKyAgICBzd2l0Y2ggKHBhcnQpIHsK
KyAgICBjYXNlIFNCUF9USFVNQkJUTkhPUlo6CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250
cm9sRFJUOjpIb3Jpem9udGFsU2Nyb2xsVGh1bWJUeXBlOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgU0JQX1RIVU1CQlROVkVSVDoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6OlZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
U0JQX0dSSVBQRVJIT1JaOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6SG9y
aXpvbnRhbFNjcm9sbEdyaXBUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX0dS
SVBQRVJWRVJUOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VmVydGljYWxT
Y3JvbGxHcmlwVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNo
IChzdGF0ZSkgeworICAgIGNhc2UgU0NSQlNfTk9STUFMOgorICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6Ok5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfSE9UOgor
ICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsKKyAgICAgICAgY3N0YXRl
ID0gV2ViVGhlbWVDb250cm9sRFJUOjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIFNDUkJTX0hPVkVSOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3Jt
YWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdmVyU3RhdGU7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19QUkVTU0VEOgorICAgICAgICBBU1NFUlQo
Y2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJT
X0RJU0FCTEVEOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhpcyBzaG91bGQg
bmV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLgorICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lk
IFdlYlRoZW1lRW5naW5lRFJUOjpwYWludFNjcm9sbGJhclRyYWNrKFdlYkNhbnZhcyogY2FudmFz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJSZWN0JiByZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJSZWN0JiBhbGlnblJlY3QpCit7CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpU
eXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpVbmtub3duVHlwZTsKKyAgICBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5rbm93blN0
YXRlOworCisgICAgc3dpdGNoIChwYXJ0KSB7CisgICAgY2FzZSBTQlBfVVBQRVJUUkFDS0hPUlo6
CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpIb3Jpem9udGFsU2Nyb2xsVHJh
Y2tCYWNrVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9MT1dFUlRSQUNLSE9S
WjoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Okhvcml6b250YWxTY3JvbGxU
cmFja0ZvcndhcmRUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX1VQUEVSVFJB
Q0tWRVJUOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VmVydGljYWxTY3Jv
bGxUcmFja0JhY2tUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX0xPV0VSVFJB
Q0tWRVJUOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VmVydGljYWxTY3Jv
bGxUcmFja0ZvcndhcmRUeXBlOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBz
d2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBTQ1JCU19OT1JNQUw6CisgICAgICAgIEFTU0VSVChj
bGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVDo6Tm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19I
T1Q6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGlzIHNob3VsZCBuZXZlciBo
YXBwZW4gaW4gcHJhY3RpY2UuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19IT1ZF
UjoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpIb3ZlclN0YXRlOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgU0NSQlNfUFJFU1NFRDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIFNDUkJTX0RJU0FCTEVEOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IERGQ1NfSU5BQ1RJVkUpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
OkRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAg
Q1JBU0goKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZHJhd0NvbnRyb2woY2FudmFz
LCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKwordm9pZCBXZWJUaGVtZUVuZ2luZURSVDo6cGFp
bnRUZXh0RmllbGQoV2ViQ2FudmFzKiBjYW52YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgcGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJSZWN0JiByZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViQ29sb3IgY29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGZpbGxDb250ZW50QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZHJhd0VkZ2VzKQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVDo6VHlw
ZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5rbm93blR5cGU7CisgICAgV2ViVGhlbWVD
b250cm9sRFJUOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlVua25vd25TdGF0
ZTsKKworICAgIEFTU0VSVChFUF9FRElUVEVYVCA9PSBwYXJ0KTsKKyAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVDo6VGV4dEZpZWxkVHlwZTsKKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAg
ICBjYXNlIEVUU19OT1JNQUw6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05v
cm1hbCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6Tm9ybWFsU3RhdGU7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVFNfSE9UOgorICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfSE9UKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUOjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVUU19ESVNBQkxFRDoK
KyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpEaXNhYmxlZFN0YXRlOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgRVRTX1NFTEVDVEVEOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IERGQ1NfUFVTSEVEKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpQ
cmVzc2VkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVFNfRk9DVVNFRDoKKyAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRl
ID0gV2ViVGhlbWVDb250cm9sRFJUOjpGb2N1c2VkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBFVFNfUkVBRE9OTFk6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZj
c05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6UmVhZE9ubHlT
dGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZHJhd1RleHRGaWVsZChj
YW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUsIGRyYXdFZGdlcywgZmlsbENvbnRlbnRBcmVhLCBj
b2xvcik7Cit9CisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50VHJhY2tiYXIoV2ViQ2Fu
dmFzKiBjYW52YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBw
YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3Qp
Cit7CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9s
RFJUOjpVbmtub3duVHlwZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVDo6VW5rbm93blN0YXRlOworCisgICAgaWYgKFRLUF9USFVNQkJP
VFRPTSA9PSBwYXJ0KSB7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpIb3Jp
em9udGFsU2xpZGVyVGh1bWJUeXBlOworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAg
IGNhc2UgVFVTX05PUk1BTDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZj
c05vcm1hbCk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Ok5vcm1h
bFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBUVVNfSE9UOgorICAg
ICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7CisgICAgICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBUVVNfRElTQUJMRUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVD
b250cm9sRFJUOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBUVVNfUFJFU1NFRDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZD
U19QVVNIRUQpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpQcmVz
c2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAoVEtQX1RSQUNLID09IHBhcnQpIHsKKyAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlQ6Okhvcml6b250YWxTbGlkZXJUcmFja1R5cGU7CisgICAgICAgIEFT
U0VSVChwYXJ0ID09IFRVU19OT1JNQUwpOworICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Ok5vcm1h
bFN0YXRlOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisK
Kwordm9pZCBXZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRQcm9ncmVzc0JhcihXZWJLaXQ6OldlYkNh
bnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJLaXQ6OldlYlJlY3QmIGJhclJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgdmFsdWVSZWN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRldGVybWluYXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUpCit7CisgICAgV2Vi
VGhlbWVDb250cm9sRFJUOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpQcm9ncmVz
c0JhclR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpTdGF0ZSBjc3RhdGUgPSBkZXRlcm1p
bmF0ZSA/IFdlYlRoZW1lQ29udHJvbERSVDo6Tm9ybWFsU3RhdGUgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFdlYlRoZW1lQ29udHJvbERSVDo6
SW5kZXRlcm1pbmF0ZVN0YXRlOworICAgIGRyYXdQcm9ncmVzc0JhcihjYW52YXMsIGN0eXBlLCBj
c3RhdGUsIGJhclJlY3QsIHZhbHVlUmVjdCk7Cit9CisKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJULmggYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg5ODA1YjEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5oCkBAIC0w
LDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIFdlYlRoZW1lRW5naW5lIEFQSSB1c2Vk
IGJ5IHRoZSBXaW5kb3dzIHZlcnNpb24gb2YKKy8vIENocm9taXVtIHRvIHJlbmRlciBuYXRpdmUg
Zm9ybSBjb250cm9scyBsaWtlIGNoZWNrYm94ZXMsIHJhZGlvIGJ1dHRvbnMsCisvLyBhbmQgc2Ny
b2xsIGJhcnMuCisvLyBUaGUgbm9ybWFsIGltcGxlbWVudGF0aW9uIChuYXRpdmVfdGhlbWUpIHJl
bmRlcnMgdGhlIGNvbnRyb2xzIHVzaW5nIGVpdGhlcgorLy8gdGhlIFVYVGhlbWUgdGhlbWluZyBl
bmdpbmUgcHJlc2VudCBpbiBYUCwgVmlzdGEsIGFuZCBXaW4gNywgb3IgdGhlICJjbGFzc2ljIgor
Ly8gdGhlbWUgdXNlZCBpZiB0aGF0IHRoZW1lIGlzIHNlbGVjdGVkIGluIHRoZSBEZXNrdG9wIHNl
dHRpbmdzLgorLy8gVW5mb3J0dW5hdGVseSwgYm90aCBvZiB0aGVzZSB0aGVtZXMgcmVuZGVyIGNv
bnRyb2xzIGRpZmZlcmVudGx5IG9uIHRoZQorLy8gZGlmZmVyZW50IHZlcnNpb25zIG9mIFdpbmRv
d3MuCisvLworLy8gSW4gb3JkZXIgdG8gZW5zdXJlIG1heGltdW0gY29uc2lzdGVuY3kgb2YgYmFz
ZWxpbmVzIGFjcm9zcyB0aGUgZGlmZmVyZW50CisvLyBXaW5kb3dzIHZlcnNpb25zLCB3ZSBwcm92
aWRlIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIGZvciBEUlQgaGVyZQorLy8gaW5zdGVhZC4gVGhl
c2UgY29udHJvbHMgYXJlIGFjdHVhbGx5IHBsYXRmb3JtLWluZGVwZW5kZW50ICh0aGV5J3JlIHJl
bmRlcmVkCisvLyB1c2luZyBTa2lhKSBhbmQgY291bGQgYmUgdXNlZCBvbiBMaW51eCBhbmQgdGhl
IE1hYyBhcyB3ZWxsLCBzaG91bGQgd2UKKy8vIGNob29zZSB0byBkbyBzbyBhdCBzb21lIHBvaW50
LgorLy8KKworI2lmbmRlZiBXZWJUaGVtZUVuZ2luZURSVF9oCisjZGVmaW5lIFdlYlRoZW1lRW5n
aW5lRFJUX2gKKworI2luY2x1ZGUgInB1YmxpYy9XZWJUaGVtZUVuZ2luZS5oIgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorCitjbGFzcyBXZWJUaGVtZUVuZ2luZURSVCA6IHB1YmxpYyBX
ZWJLaXQ6OldlYlRoZW1lRW5naW5lLCBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAg
IFdlYlRoZW1lRW5naW5lRFJUKCkge30KKworICAgIC8vIFdlYlRoZW1lRW5naW5lIG1ldGhvZHM6
CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZh
cyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0
IFdlYktpdDo6V2ViUmVjdCYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50TWVudUxpc3QoCisg
ICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNz
aWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRTY3JvbGxiYXJBcnJvdygKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBp
bnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVj
dCYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVGh1bWIoCisgICAgICAgIFdl
YktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwK
KyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRTY3JvbGxiYXJUcmFjaygKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwg
aW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJl
Y3QmLCBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGFsaWduUmVjdCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUZXh0RmllbGQoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQs
IGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJS
ZWN0JiwgV2ViS2l0OjpXZWJDb2xvciwgYm9vbCBmaWxsQ29udGVudEFyZWEsCisgICAgICAgIGJv
b2wgZHJhd0VkZ2VzKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrYmFyKAorICAgICAg
ICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3Rh
dGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOworCisgICAgdmlydHVhbCB2b2lk
IHBhaW50UHJvZ3Jlc3NCYXIoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgY29uc3QgV2Vi
S2l0OjpXZWJSZWN0JiBiYXJSZWN0LAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIHZh
bHVlUmVjdCwKKyAgICAgICAgYm9vbCBkZXRlcm1pbmF0ZSwgZG91YmxlIHRpbWUpOworfTsKKwor
I2VuZGlmIC8vIFdlYlRoZW1lRW5naW5lRFJUX2gK
</data>
<flag name="review"
          id="42973"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58207</attachid>
            <date>2010-06-08 20:59:15 -0700</date>
            <delta_ts>2010-06-08 21:04:17 -0700</delta_ts>
            <desc>patch - WebKit version of WebThemeEngine v2</desc>
            <filename>WebThemeEngine2b.patch</filename>
            <type>text/plain</type>
            <size>58689</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjYzc3NTMwLi4yNjIyMTkyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDYt
MDMgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDQwMDUyIC0gW0RS
VC9DaHJvbWl1bV0gVXBzdHJlYW0gdGVzdF9zaGVsbF93ZWJ0aGVtZWVuZ2luZSBhcyBXZWJUaGVt
ZUVuZ2luZURSVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDAwNTIKKyAgICAgICAgCisgICAgICAgIEFkZCBXZWJUaGVtZUVuZ2luZURSVCBhbmQgV2Vi
VGhlbWVDb250cm9sRFJUIHBvcnRlZCBmcm9tIENocm9tZSByZXYuIDQ4OTA3CisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHA6CisgICAgICAgIChwbGF0Zm9ybUluaXQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVt
ZUNvbnRyb2xEUlQ6OldlYlRoZW1lQ29udHJvbERSVCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRo
ZW1lQ29udHJvbERSVDo6fldlYlRoZW1lQ29udHJvbERSVCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRoZW1lQ29udHJvbERSVDo6Ym94KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9s
RFJUOjpsaW5lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9sRFJUOjp0cmlhbmds
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lQ29udHJvbERSVDo6cm91bmRSZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250cm9sRFJUOjpvdmFsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVGhlbWVDb250cm9sRFJUOjpjaXJjbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVt
ZUNvbnRyb2xEUlQ6Om5lc3RlZEJveGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVDb250
cm9sRFJUOjptYXJrU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6
OmRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6OmRyYXdUZXh0Rmll
bGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6OmRyYXdQcm9ncmVzc0Jh
cik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJU
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUNvbnRyb2xEUlQ6Oik6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVE
UlQ6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6OnBh
aW50TWVudUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRT
Y3JvbGxiYXJBcnJvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lRW5naW5lRFJUOjpwYWlu
dFNjcm9sbGJhclRodW1iKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6OnBh
aW50U2Nyb2xsYmFyVHJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZURSVDo6
cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUaGVtZUVuZ2luZURSVDo6cGFp
bnRUcmFja2Jhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlRoZW1lRW5naW5lRFJUOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVu
Z2luZURSVC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmVEUlQ6Oldl
YlRoZW1lRW5naW5lRFJUKToKKwogMjAxMC0wNi0wNCAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCAyODBjOGRk
Li41ZmM4ZGFiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cGkKQEAgLTM0LDUgKzM0LDE1IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5oJywKICAgICAg
ICAgXSwKKyAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICBbJ09TPT0id2luIics
IHsKKyAgICAgICAgICAgICAgICAnZHJ0X2ZpbGVzJzogWworICAgICAgICAgICAgICAgICAgICAn
Y2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJULmNwcCcsCisgICAgICAgICAgICAgICAgICAgICdj
aHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlQuaCcsCisgICAgICAgICAgICAgICAgICAgICdjaHJv
bWl1bS9XZWJUaGVtZUVuZ2luZURSVC5jcHAnLAorICAgICAgICAgICAgICAgICAgICAnY2hyb21p
dW0vV2ViVGhlbWVFbmdpbmVEUlQuaCcsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
IH1dLAorICAgICAgICBdLAogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwCmluZGV4IDM4ODRlOTQuLmE5Y2E2YTkg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bFdpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsV2luLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlRlc3RTaGVsbC5oIgogCisjaW5jbHVkZSAiV2ViVGhlbWVFbmdpbmVEUlQuaCIKICNpbmNs
dWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPGZjbnRsLmg+
CiAjaW5jbHVkZSA8aW8uaD4KQEAgLTM4LDYgKzM5LDkgQEAKICNpbmNsdWRlIDxzaGx3YXBpLmg+
CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAorLy8gVGhlbWUgZW5naW5lCitzdGF0aWMgV2ViVGhl
bWVFbmdpbmVEUlQgdGhlbWVFbmdpbmU7CisKIC8vIFRocmVhZCBtYWluIHRvIHJ1biBmb3IgdGhl
IHRocmVhZCB3aGljaCBqdXN0IHRlc3RzIGZvciB0aW1lb3V0LgogdW5zaWduZWQgaW50IF9fc3Rk
Y2FsbCB3YXRjaERvZ1RocmVhZCh2b2lkKiBhcmcpCiB7CkBAIC0xMDUsNiArMTA5LDkgQEAgdm9p
ZCBwbGF0Zm9ybUluaXQoKQogICAgIF9zZXRtb2RlKF9maWxlbm8oc3Rkb3V0KSwgX09fQklOQVJZ
KTsKICAgICBfc2V0bW9kZShfZmlsZW5vKHN0ZGVyciksIF9PX0JJTkFSWSk7CiAKKyAgICAvLyBT
ZXQgdGhlbWUgZW5naW5lLgorICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRUaGVtZUVuZ2luZSgmdGhl
bWVFbmdpbmUpOworCiAgICAgLy8gTG9hZCBBaGVtIGZvbnQuCiAgICAgLy8gQUhFTV9fX18uVFRG
IGlzIGNvcGllZCB0byB0aGUgZGlyZWN0b3J5IG9mIER1bXBSZW5kZXJUcmVlLmV4ZSBieSBXZWJL
aXQuZ3lwLgogICAgIFdDSEFSIHBhdGhbX01BWF9QQVRIXTsKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVC5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmI3YTdmNmQKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xE
UlQuY3BwCkBAIC0wLDAgKzEsNTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgYSBzaW1wbGUg
Z2VuZXJpYyB2ZXJzaW9uIG9mIHRoZSBXZWJUaGVtZUVuZ2luZSwKKy8vIHdoaWNoIGlzIHVzZWQg
dG8gZHJhdyBhbGwgdGhlIG5hdGl2ZSBjb250cm9scyBvbiBhIHdlYiBwYWdlLiBXZSB1c2UgdGhp
cworLy8gZmlsZSB3aGVuIHJ1bm5pbmcgaW4gbGF5b3V0IHRlc3QgbW9kZSBpbiBvcmRlciB0byBy
ZW1vdmUgYW55CisvLyBwbGF0Zm9ybS1zcGVjaWZpYyByZW5kZXJpbmcgZGlmZmVyZW5jZXMgZHVl
IHRvIHRoZW1lcywgY29sb3JzLCBldGMuCisvLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViVGhlbWVDb250cm9sRFJULmgiCisKKyNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9y
bV9jYW52YXMuaCIKKyNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX3dpbi5oIgorI2luY2x1
ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUGFpbnQuaCIKKyNpbmNsdWRlICJ0
aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1BhdGguaCIKKyNpbmNsdWRlICJ0aGlyZF9w
YXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBuYW1lc3BhY2Ugc2tpYTsKKwor
c3RhdGljIGNvbnN0IFNrQ29sb3IgZWRnZUNvbG9yICAgICA9IFNLX0NvbG9yQkxBQ0s7CitzdGF0
aWMgY29uc3QgU2tDb2xvciByZWFkT25seUNvbG9yID0gU2tDb2xvclNldFJHQigweGU5LCAweGMy
LCAweGE2KTsKK3N0YXRpYyBjb25zdCBTa0NvbG9yIGZnQ29sb3IgICAgICAgPSBTS19Db2xvckJM
QUNLOworc3RhdGljIGNvbnN0IFNrQ29sb3IgYmdDb2xvcnNbXSAgICA9IHsKKyAgICBTS19Db2xv
ckJMQUNLLCAgICAgICAgICAgICAgICAgICAvLyBVbmtub3duCisgICAgU2tDb2xvclNldFJHQigw
eGM5LCAweGM5LCAweGM5KSwgLy8gRGlzYWJsZWQKKyAgICBTa0NvbG9yU2V0UkdCKDB4ZjMsIDB4
ZTAsIDB4ZDApLCAvLyBSZWFkb25seQorICAgIFNrQ29sb3JTZXRSR0IoMHg4OSwgMHhjNCwgMHhm
ZiksIC8vIE5vcm1hbAorICAgIFNrQ29sb3JTZXRSR0IoMHg0MywgMHhmOSwgMHhmZiksIC8vIEhv
dAorICAgIFNrQ29sb3JTZXRSR0IoMHgyMCwgMHhmNiwgMHhjYyksIC8vIEZvY3VzZWQKKyAgICBT
a0NvbG9yU2V0UkdCKDB4MDAsIDB4ZjMsIDB4YWMpLCAvLyBIb3ZlcgorICAgIFNrQ29sb3JTZXRS
R0IoMHhhOSwgMHhmZiwgMHgxMiksIC8vIFByZXNzZWQKKyAgICBTa0NvbG9yU2V0UkdCKDB4Y2Ms
IDB4Y2MsIDB4Y2MpICAvLyBJbmRldGVybWluYXRlCit9OworCitzdGF0aWMgU2tJUmVjdCB2YWxp
ZGF0ZShjb25zdCBTa0lSZWN0JiByZWN0LCBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUp
Cit7CisgICAgc3dpdGNoIChjdHlwZSkgeworICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUOjpV
bmNoZWNrZWRCb3hUeXBlOgorICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUOjpDaGVja2VkQm94
VHlwZToKKyAgICBjYXNlIFdlYlRoZW1lQ29udHJvbERSVDo6VW5jaGVja2VkUmFkaW9UeXBlOgor
ICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUOjpDaGVja2VkUmFkaW9UeXBlOiB7CisgICAgICAg
IFNrSVJlY3QgcmV0dmFsID0gcmVjdDsKKworICAgICAgICAvLyBUaGUgbWF4aW11bSB3aWR0aCBh
bmQgaGVpZ2h0IGlzIDEzLgorICAgICAgICAvLyBDZW50ZXIgdGhlIHNxdWFyZSBpbiB0aGUgcGFz
c2VkIHJlY3RhbmdsZS4KKyAgICAgICAgY29uc3QgaW50IG1heENvbnRyb2xTaXplID0gMTM7Cisg
ICAgICAgIGludCBjb250cm9sU2l6ZSA9IG1pbihyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OworICAgICAgICBjb250cm9sU2l6ZSA9IG1pbihjb250cm9sU2l6ZSwgbWF4Q29udHJvbFNpemUp
OworCisgICAgICAgIHJldHZhbC5mTGVmdCAgID0gcmVjdC5mTGVmdCArIChyZWN0LndpZHRoKCkg
LyAyKSAtIChjb250cm9sU2l6ZSAvIDIpOworICAgICAgICByZXR2YWwuZlJpZ2h0ICA9IHJldHZh
bC5mTGVmdCArIGNvbnRyb2xTaXplIC0gMTsKKyAgICAgICAgcmV0dmFsLmZUb3AgICAgPSByZWN0
LmZUb3AgKyAocmVjdC5oZWlnaHQoKSAvIDIpIC0gKGNvbnRyb2xTaXplIC8gMik7CisgICAgICAg
IHJldHZhbC5mQm90dG9tID0gcmV0dmFsLmZUb3AgKyBjb250cm9sU2l6ZSAtIDE7CisKKyAgICAg
ICAgcmV0dXJuIHJldHZhbDsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
cmVjdDsKKyAgICB9Cit9CisKKy8vIFdlYlRoZW1lQ29udHJvbERSVAorCitXZWJUaGVtZUNvbnRy
b2xEUlQ6OldlYlRoZW1lQ29udHJvbERSVChQbGF0Zm9ybUNhbnZhcyogY2FudmFzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2tJUmVjdCYgaXJlY3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlIGN0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgY3N0YXRlKQorICAgIDogbV9j
YW52YXMoY2FudmFzKQorICAgICwgbV9pcmVjdCh2YWxpZGF0ZShpcmVjdCwgY3R5cGUpKQorICAg
ICwgbV90eXBlKGN0eXBlKQorICAgICwgbV9zdGF0ZShjc3RhdGUpCisgICAgLCBtX2xlZnQobV9p
cmVjdC5mTGVmdCkKKyAgICAsIG1fcmlnaHQobV9pcmVjdC5mUmlnaHQpCisgICAgLCBtX3RvcCht
X2lyZWN0LmZUb3ApCisgICAgLCBtX2JvdHRvbShtX2lyZWN0LmZCb3R0b20pCisgICAgLCBtX2hl
aWdodChtX2lyZWN0LmhlaWdodCgpKQorICAgICwgbV93aWR0aChtX2lyZWN0LndpZHRoKCkpCisg
ICAgLCBtX2VkZ2VDb2xvcihlZGdlQ29sb3IpCisgICAgLCBtX2JnQ29sb3IoYmdDb2xvcnNbY3N0
YXRlXSkKKyAgICAsIG1fZmdDb2xvcihmZ0NvbG9yKQoreworfQorCitXZWJUaGVtZUNvbnRyb2xE
UlQ6On5XZWJUaGVtZUNvbnRyb2xEUlQoKQoreworfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERS
VDo6Ym94KGNvbnN0IFNrSVJlY3QmIHJlY3QsIFNrQ29sb3IgZmlsbENvbG9yKQoreworICAgIFNr
UGFpbnQgcGFpbnQ7CisKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7
CisgICAgcGFpbnQuc2V0Q29sb3IoZmlsbENvbG9yKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0
KHJlY3QsIHBhaW50KTsKKworICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICBw
YWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJh
d0lSZWN0KHJlY3QsIHBhaW50KTsKK30KKwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlQ6OmxpbmUo
aW50IHgwLCBpbnQgeTAsIGludCB4MSwgaW50IHkxLCBTa0NvbG9yIGNvbG9yKQoreworICAgIFNr
UGFpbnQgcGFpbnQ7CisgICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOworICAgIG1fY2FudmFzLT5k
cmF3TGluZShTa0ludFRvU2NhbGFyKHgwKSwgU2tJbnRUb1NjYWxhcih5MCksCisgICAgICAgICAg
ICAgICAgICAgICAgIFNrSW50VG9TY2FsYXIoeDEpLCBTa0ludFRvU2NhbGFyKHkxKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgcGFpbnQpOworfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVDo6
dHJpYW5nbGUoaW50IHgwLCBpbnQgeTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHgxLCBpbnQgeTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHgyLCBpbnQgeTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBj
b2xvcikKK3sKKyAgICBTa1BhdGggcGF0aDsKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgcGFp
bnQuc2V0Q29sb3IoY29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0
eWxlKTsKKyAgICBwYXRoLmluY1Jlc2VydmUoNCk7CisgICAgcGF0aC5tb3ZlVG8oU2tJbnRUb1Nj
YWxhcih4MCksIFNrSW50VG9TY2FsYXIoeTApKTsKKyAgICBwYXRoLmxpbmVUbyhTa0ludFRvU2Nh
bGFyKHgxKSwgU2tJbnRUb1NjYWxhcih5MSkpOworICAgIHBhdGgubGluZVRvKFNrSW50VG9TY2Fs
YXIoeDIpLCBTa0ludFRvU2NhbGFyKHkyKSk7CisgICAgcGF0aC5jbG9zZSgpOworICAgIG1fY2Fu
dmFzLT5kcmF3UGF0aChwYXRoLCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VD
b2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7CisgICAg
bV9jYW52YXMtPmRyYXdQYXRoKHBhdGgsIHBhaW50KTsKK30KKwordm9pZCBXZWJUaGVtZUNvbnRy
b2xEUlQ6OnJvdW5kUmVjdChTa0NvbG9yIGNvbG9yKQoreworICAgIFNrUmVjdCByZWN0OworICAg
IFNrU2NhbGFyIHJhZGl1cyA9IFNrSW50VG9TY2FsYXIoNSk7CisgICAgU2tQYWludCBwYWludDsK
KworICAgIHJlY3Quc2V0KG1faXJlY3QpOworICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAg
ICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRy
YXdSb3VuZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMsIHBhaW50KTsKKworICAgIHBhaW50LnNl
dENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tl
X1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd1JvdW5kUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1
cywgcGFpbnQpOworfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVDo6b3ZhbChTa0NvbG9yIGNv
bG9yKQoreworICAgIFNrUmVjdCByZWN0OworICAgIFNrUGFpbnQgcGFpbnQ7CisKKyAgICByZWN0
LnNldChtX2lyZWN0KTsKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgcGFpbnQuc2V0
U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3T3ZhbChyZWN0
LCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7CisgICAgcGFpbnQu
c2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRyYXdPdmFs
KHJlY3QsIHBhaW50KTsKK30KKwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlQ6OmNpcmNsZShTa1Nj
YWxhciByYWRpdXMsIFNrQ29sb3IgY29sb3IpCit7CisgICAgU2tTY2FsYXIgY3kgPSBTa0ludFRv
U2NhbGFyKG1fdG9wICArIG1faGVpZ2h0IC8gMik7CisgICAgU2tTY2FsYXIgY3ggPSBTa0ludFRv
U2NhbGFyKG1fbGVmdCArIG1fd2lkdGggLyAyKTsKKyAgICBTa1BhaW50IHBhaW50OworCisgICAg
cGFpbnQuc2V0Q29sb3IoY29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxs
X1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1cywgcGFpbnQp
OworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxl
KFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3Q2lyY2xlKGN4LCBj
eSwgcmFkaXVzLCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUOjpuZXN0ZWRC
b3hlcyhpbnQgaW5kZW50TGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5kZW50VG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBpbmRlbnRSaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aW5kZW50Qm90dG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrQ29s
b3Igb3V0ZXJDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0Nv
bG9yIGlubmVyQ29sb3IpCit7CisgICAgU2tJUmVjdCBsaXJlY3Q7CisgICAgYm94KG1faXJlY3Qs
IG91dGVyQ29sb3IpOworICAgIGxpcmVjdC5zZXQobV9pcmVjdC5mTGVmdCArIGluZGVudExlZnQs
CisgICAgICAgICAgICAgICBtX2lyZWN0LmZUb3AgKyBpbmRlbnRUb3AsCisgICAgICAgICAgICAg
ICBtX2lyZWN0LmZSaWdodCAtIGluZGVudFJpZ2h0LAorICAgICAgICAgICAgICAgbV9pcmVjdC5m
Qm90dG9tIC0gaW5kZW50Qm90dG9tKTsKKyAgICBib3gobGlyZWN0LCBpbm5lckNvbG9yKTsKK30K
Kwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlQ6Om1hcmtTdGF0ZSgpCit7CisgICAgLy8gVGhlIGhv
cml6b250YWwgbGluZXMgaW4gYSByZWFkIG9ubHkgY29udHJvbCBhcmUgc3BhY2VkIGJ5IHRoaXMg
YW1vdW50LgorICAgIGNvbnN0IGludCByZWFkT25seUxpbmVPZmZzZXQgPSA1OworCisgICAgLy8g
VGhlIGxlbmd0aCBvZiBhIHRyaWFuZ2xlIHNpZGUgZm9yIHRoZSBjb3JuZXIgbWFya3MuCisgICAg
Y29uc3QgaW50IHRyaWFuZ2xlU2l6ZSA9IDU7CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAg
ICBjYXNlIFVua25vd25TdGF0ZToKKyAgICBjYXNlIERpc2FibGVkU3RhdGU6CisgICAgY2FzZSBO
b3JtYWxTdGF0ZToKKyAgICAgICAgLy8gRG9uJ3QgdmlzdWFsbHkgbWFyayB0aGVzZSBzdGF0ZXMg
KGNvbG9yIGlzIGVub3VnaCkuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVhZE9ubHlTdGF0
ZToKKyAgICAgICAgLy8gRHJhd2luZyBsaW5lcyBhY3Jvc3MgdGhlIGNvbnRyb2wuCisgICAgICAg
IGZvciAoaW50IGkgPSBtX3RvcCArIHJlYWRPbmx5TGluZU9mZnNldDsgaSA8IG1fYm90dG9tOyBp
ICs9IHJlYWRPbmx5TGluZU9mZnNldCkKKyAgICAgICAgICBsaW5lKG1fbGVmdCArIDEsIGksIG1f
cmlnaHQgLSAxLCBpLCByZWFkT25seUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IEhvdFN0YXRlOgorICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIHVwcGVyIGxlZnQg
Y29ybmVyIG9mIHRoZSBjb250cm9sLgorICAgICAgICB0cmlhbmdsZShtX2xlZnQsICAgICAgICAg
ICAgICAgICBtX3RvcCwKKyAgICAgICAgICAgICAgICAgbV9sZWZ0ICsgdHJpYW5nbGVTaXplLCAg
bV90b3AsCisgICAgICAgICAgICAgICAgIG1fbGVmdCwgICAgICAgICAgICAgICAgIG1fdG9wICsg
dHJpYW5nbGVTaXplLCAgICBtX2VkZ2VDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBIb3ZlclN0YXRlOgorICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIHVwcGVyIHJp
Z2h0IGNvcm5lciBvZiB0aGUgY29udHJvbC4KKyAgICAgICAgdHJpYW5nbGUobV9yaWdodCwgICAg
ICAgICAgICAgICAgbV90b3AsCisgICAgICAgICAgICAgICAgIG1fcmlnaHQsICAgICAgICAgICAg
ICAgIG1fdG9wICsgdHJpYW5nbGVTaXplLAorICAgICAgICAgICAgICAgICBtX3JpZ2h0IC0gdHJp
YW5nbGVTaXplLCBtX3RvcCwgICAgICAgICAgICAgICAgICAgbV9lZGdlQ29sb3IpOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgRm9jdXNlZFN0YXRlOgorICAgICAgICAvLyBEcmF3IGEgdHJp
YW5nbGUgaW4gdGhlIGJvdHRvbSByaWdodCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisgICAgICAg
IHRyaWFuZ2xlKG1fcmlnaHQsICAgICAgICAgICAgICAgIG1fYm90dG9tLAorICAgICAgICAgICAg
ICAgICBtX3JpZ2h0IC0gdHJpYW5nbGVTaXplLCBtX2JvdHRvbSwKKyAgICAgICAgICAgICAgICAg
bV9yaWdodCwgICAgICAgICAgICAgICAgbV9ib3R0b20gLSB0cmlhbmdsZVNpemUsIG1fZWRnZUNv
bG9yKTsKKyAgICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFByZXNzZWRTdGF0ZToKKyAgICAg
ICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgdGhlIGNv
bnRyb2wuCisgICAgICAgIHRyaWFuZ2xlKG1fbGVmdCwgICAgICAgICAgICAgICAgIG1fYm90dG9t
LAorICAgICAgICAgICAgICAgICBtX2xlZnQsICAgICAgICAgICAgICAgICBtX2JvdHRvbSAtIHRy
aWFuZ2xlU2l6ZSwKKyAgICAgICAgICAgICAgICAgbV9sZWZ0ICsgdHJpYW5nbGVTaXplLCAgbV9i
b3R0b20sICAgICAgICAgICAgICAgIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgQ1JBU0go
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVDo6
ZHJhdygpCit7CisgICAgaW50IGhhbGZXaWR0aCA9IG1fd2lkdGggLyAyOworICAgIGludCBoYWxm
SGVpZ2h0ID0gbV9oZWlnaHQgLyAyOworICAgIGludCBxdWFydGVyV2lkdGggPSBtX3dpZHRoIC8g
NDsKKyAgICBpbnQgcXVhcnRlckhlaWdodCA9IG1faGVpZ2h0IC8gNDsKKworICAgIC8vIEluZGVu
dCBhbW91bnRzIGZvciB0aGUgY2hlY2sgaW4gYSBjaGVja2JveCBvciByYWRpbyBidXR0b24uCisg
ICAgY29uc3QgaW50IGNoZWNrSW5kZW50ID0gMzsKKworICAgIC8vIEluZGVudCBhbW91bnRzIGZv
ciBzaG9ydCBhbmQgbG9uZyBzaWRlcyBvZiB0aGUgc2Nyb2xsYmFyIG5vdGNoZXMuCisgICAgY29u
c3QgaW50IG5vdGNoTG9uZ09mZnNldCA9IDE7CisgICAgY29uc3QgaW50IG5vdGNoU2hvcnRPZmZz
ZXQgPSA0OworICAgIGNvbnN0IGludCBub09mZnNldCA9IDA7CisKKyAgICAvLyBJbmRlbnQgYW1v
dW50cyBmb3IgdGhlIHNob3J0IGFuZCBsb25nIHNpZGVzIG9mIGEgc2Nyb2xsIHRodW1iIGJveC4K
KyAgICBjb25zdCBpbnQgdGh1bWJMb25nSW5kZW50ID0gMDsKKyAgICBjb25zdCBpbnQgdGh1bWJT
aG9ydEluZGVudCA9IDI7CisKKyAgICAvLyBJbmRlbnRzIGZvciB0aGUgY3Jvc3NoYXRjaCBvbiBh
IHNjcm9sbCBncmlwLgorICAgIGNvbnN0IGludCBncmlwTG9uZ0luZGVudCA9IDM7CisgICAgY29u
c3QgaW50IGdyaXBTaG9ydEluZGVudCA9IDU7CisKKyAgICAvLyBJbmRlbnRzIGZvciB0aGUgdGhl
IHNsaWRlciB0cmFjay4KKyAgICBjb25zdCBpbnQgc2xpZGVySW5kZW50ID0gMjsKKworICAgIG1f
Y2FudmFzLT5iZWdpblBsYXRmb3JtUGFpbnQoKTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgY2FzZSBVbmtub3duVHlwZToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIENSQVNIKCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBUZXh0RmllbGRUeXBlOgor
ICAgICAgICAvLyBXZSByZW5kZXIgdGhpcyBieSBoYW5kIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlv
bi4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIENSQVNIKCk7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBQdXNoQnV0dG9uVHlwZToKKyAgICAgICAgLy8gcHVzaCBi
dXR0b25zIHJlbmRlciBhcyBhIHJvdW5kZWQgcmVjdGFuZ2xlCisgICAgICAgIHJvdW5kUmVjdCht
X2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVW5jaGVja2VkQm94VHlwZToK
KyAgICAgICAgLy8gVW5jaGVja2VkIGJveGVzIGFyZSBzaW1wbHkgcGxhaW4gYm94ZXMuCisgICAg
ICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
Q2hlY2tlZEJveFR5cGU6CisgICAgICAgIG5lc3RlZEJveGVzKGNoZWNrSW5kZW50LCBjaGVja0lu
ZGVudCwgY2hlY2tJbmRlbnQsIGNoZWNrSW5kZW50LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBVbmNoZWNrZWRSYWRpb1R5cGU6CisgICAgICAgIGNp
cmNsZShTa0ludFRvU2NhbGFyKGhhbGZIZWlnaHQpLCBtX2JnQ29sb3IpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgQ2hlY2tlZFJhZGlvVHlwZToKKyAgICAgICAgY2lyY2xlKFNrSW50VG9T
Y2FsYXIoaGFsZkhlaWdodCksIG1fYmdDb2xvcik7CisgICAgICAgIGNpcmNsZShTa0ludFRvU2Nh
bGFyKGhhbGZIZWlnaHQgLSBjaGVja0luZGVudCksIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZTogeworICAgICAgICAv
LyBEcmF3IGEgYm94IHdpdGggYSBub3RjaCBhdCB0aGUgbGVmdC4KKyAgICAgICAgaW50IGxvbmdP
ZmZzZXQgPSBoYWxmSGVpZ2h0IC0gbm90Y2hMb25nT2Zmc2V0OworICAgICAgICBpbnQgc2hvcnRP
ZmZzZXQgPSBtX3dpZHRoIC0gbm90Y2hTaG9ydE9mZnNldDsKKyAgICAgICAgbmVzdGVkQm94ZXMo
bm9PZmZzZXQsIGxvbmdPZmZzZXQsIHNob3J0T2Zmc2V0LCBsb25nT2Zmc2V0LCBtX2JnQ29sb3Is
IG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBIb3Jpem9u
dGFsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGgg
YSBub3RjaCBhdCB0aGUgcmlnaHQuCisgICAgICAgIGludCBsb25nT2Zmc2V0ICA9IGhhbGZIZWln
aHQgLSBub3RjaExvbmdPZmZzZXQ7CisgICAgICAgIGludCBzaG9ydE9mZnNldCA9IG1fd2lkdGgg
LSBub3RjaFNob3J0T2Zmc2V0OworICAgICAgICBuZXN0ZWRCb3hlcyhzaG9ydE9mZnNldCwgbG9u
Z09mZnNldCwgbm9PZmZzZXQsIGxvbmdPZmZzZXQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBWZXJ0aWNhbFNjcm9sbFRyYWNrQmFja1R5
cGU6IHsKKyAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIHRvcC4KKyAg
ICAgICAgaW50IGxvbmdPZmZzZXQgID0gaGFsZldpZHRoIC0gbm90Y2hMb25nT2Zmc2V0OworICAg
ICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX2hlaWdodCAtIG5vdGNoU2hvcnRPZmZzZXQ7CisgICAg
ICAgIG5lc3RlZEJveGVzKGxvbmdPZmZzZXQsIG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBzaG9ydE9m
ZnNldCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIFZlcnRpY2FsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZTogeworICAgICAgICAvLyBEcmF3
IGEgYm94IHdpdGggYSBub3RjaCBhdCB0aGUgYm90dG9tLgorICAgICAgICBpbnQgbG9uZ09mZnNl
dCAgPSBoYWxmV2lkdGggLSBub3RjaExvbmdPZmZzZXQ7CisgICAgICAgIGludCBzaG9ydE9mZnNl
dCA9IG1faGVpZ2h0IC0gbm90Y2hTaG9ydE9mZnNldDsKKyAgICAgICAgbmVzdGVkQm94ZXMobG9u
Z09mZnNldCwgc2hvcnRPZmZzZXQsIGxvbmdPZmZzZXQsIG5vT2Zmc2V0LCBtX2JnQ29sb3IsIG1f
ZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgSG9yaXpvbnRhbFNj
cm9sbFRodW1iVHlwZToKKyAgICAgICAgLy8gRHJhdyBhIG5hcnJvd2VyIGJveCBvbiB0b3Agb2Yg
dGhlIG91dHNpZGUgYm94LgorICAgICAgICBuZXN0ZWRCb3hlcyh0aHVtYkxvbmdJbmRlbnQsIHRo
dW1iU2hvcnRJbmRlbnQsIHRodW1iTG9uZ0luZGVudCwgdGh1bWJTaG9ydEluZGVudCwgbV9iZ0Nv
bG9yLCBtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVmVydGljYWxTY3Jv
bGxUaHVtYlR5cGU6CisgICAgICAgIC8vIERyYXcgYSBzaG9ydGVyIGJveCBvbiB0b3Agb2YgdGhl
IG91dHNpZGUgYm94LgorICAgICAgICBuZXN0ZWRCb3hlcyh0aHVtYlNob3J0SW5kZW50LCB0aHVt
YkxvbmdJbmRlbnQsIHRodW1iU2hvcnRJbmRlbnQsIHRodW1iTG9uZ0luZGVudCwgbV9iZ0NvbG9y
LCBtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSG9yaXpvbnRhbFNsaWRl
clRodW1iVHlwZToKKyAgICAgICAgLy8gU2xpZGVyIHRodW1icyBhcmUgb3ZhbHMuCisgICAgICAg
IG92YWwobV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhvcml6b250YWxT
Y3JvbGxHcmlwVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgaG9yaXpvbnRhbCBjcm9zc2hhdGNo
IGZvciB0aGUgZ3JpcC4KKyAgICAgICAgaW50IGxvbmdPZmZzZXQgPSBoYWxmV2lkdGggLSBncmlw
TG9uZ0luZGVudDsKKyAgICAgICAgbGluZShtX2xlZnQgICsgZ3JpcExvbmdJbmRlbnQsIG1fdG9w
ICAgICsgaGFsZkhlaWdodCwKKyAgICAgICAgICAgICBtX3JpZ2h0IC0gZ3JpcExvbmdJbmRlbnQs
IG1fdG9wICAgICsgaGFsZkhlaWdodCwgICAgICBtX2ZnQ29sb3IpOworICAgICAgICBsaW5lKG1f
bGVmdCAgKyBsb25nT2Zmc2V0LCAgICAgbV90b3AgICAgKyBncmlwU2hvcnRJbmRlbnQsCisgICAg
ICAgICAgICAgbV9sZWZ0ICArIGxvbmdPZmZzZXQsICAgICBtX2JvdHRvbSAtIGdyaXBTaG9ydElu
ZGVudCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgbGluZShtX3JpZ2h0IC0gbG9uZ09mZnNldCwgICAg
IG1fdG9wICAgICsgZ3JpcFNob3J0SW5kZW50LAorICAgICAgICAgICAgIG1fcmlnaHQgLSBsb25n
T2Zmc2V0LCAgICAgbV9ib3R0b20gLSBncmlwU2hvcnRJbmRlbnQsIG1fZmdDb2xvcik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgVmVydGljYWxTY3JvbGxHcmlwVHlwZTogewor
ICAgICAgICAvLyBEcmF3IGEgdmVydGljYWwgY3Jvc3NoYXRjaCBmb3IgdGhlIGdyaXAuCisgICAg
ICAgIGludCBsb25nT2Zmc2V0ID0gaGFsZkhlaWdodCAtIGdyaXBMb25nSW5kZW50OworICAgICAg
ICBsaW5lKG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgICAgIG1fdG9wICAgICsgZ3JpcExvbmdJbmRl
bnQsCisgICAgICAgICAgICAgbV9sZWZ0ICArIGhhbGZXaWR0aCwgICAgICAgbV9ib3R0b20gLSBn
cmlwTG9uZ0luZGVudCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgbGluZShtX2xlZnQgICsgZ3JpcFNo
b3J0SW5kZW50LCBtX3RvcCAgICArIGxvbmdPZmZzZXQsCisgICAgICAgICAgICAgbV9yaWdodCAt
IGdyaXBTaG9ydEluZGVudCwgbV90b3AgICAgKyBsb25nT2Zmc2V0LCAgICAgbV9mZ0NvbG9yKTsK
KyAgICAgICAgbGluZShtX2xlZnQgICsgZ3JpcFNob3J0SW5kZW50LCBtX2JvdHRvbSAtIGxvbmdP
ZmZzZXQsCisgICAgICAgICAgICAgbV9yaWdodCAtIGdyaXBTaG9ydEluZGVudCwgbV9ib3R0b20g
LSBsb25nT2Zmc2V0LCAgICAgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgY2FzZSBMZWZ0QXJyb3dUeXBlOgorICAgICAgICAvLyBEcmF3IGEgbGVmdCBhcnJvdyBpbnNp
ZGUgYSBib3guCisgICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlh
bmdsZShtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCisg
ICAgICAgICAgICAgICAgIG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRl
ckhlaWdodCwKKyAgICAgICAgICAgICAgICAgbV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV90b3Ag
ICAgKyBoYWxmSGVpZ2h0LCAgICBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgUmlnaHRBcnJvd1R5cGU6CisgICAgICAgIC8vIERyYXcgYSBsZWZ0IGFycm93IGluc2lkZSBh
IGJveC4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIHRyaWFuZ2xl
KG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsgcXVhcnRlckhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBoYWxmSGVpZ2h0
LAorICAgICAgICAgICAgICAgICBtX2xlZnQgICsgcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1
YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBVcEFy
cm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBhbiB1cCBhcnJvdyBpbnNpZGUgYSBib3guCisgICAg
ICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlhbmdsZShtX2xlZnQgICsg
cXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsCisgICAgICAgICAgICAgICAg
IG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fdG9wICAgICsgcXVhcnRlckhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVp
Z2h0LCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG93bkFycm93VHlw
ZToKKyAgICAgICAgLy8gRHJhdyBhIGRvd24gYXJyb3cgaW5zaWRlIGEgYm94LgorICAgICAgICBi
b3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICArIHF1YXJ0
ZXJXaWR0aCwgbV90b3AgICAgKyBxdWFydGVySGVpZ2h0LAorICAgICAgICAgICAgICAgICBtX3Jp
Z2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCisgICAgICAgICAg
ICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwg
bV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhvcml6b250YWxTbGlkZXJU
cmFja1R5cGU6IHsKKyAgICAgICAgLy8gRHJhdyBhIG5hcnJvdyByZWN0IGZvciB0aGUgdHJhY2sg
cGx1cyBib3ggaGF0Y2hlcyBvbiB0aGUgZW5kcy4KKyAgICAgICAgU2tJUmVjdCBsaXJlY3Q7Cisg
ICAgICAgIGxpcmVjdCA9IG1faXJlY3Q7CisgICAgICAgIGxpcmVjdC5pbnNldChub09mZnNldCwg
aGFsZkhlaWdodCAtIHNsaWRlckluZGVudCk7CisgICAgICAgIGJveChsaXJlY3QsIG1fYmdDb2xv
cik7CisgICAgICAgIGxpbmUobV9sZWZ0LCAgbV90b3AsIG1fbGVmdCwgIG1fYm90dG9tLCBtX2Vk
Z2VDb2xvcik7CisgICAgICAgIGxpbmUobV9yaWdodCwgbV90b3AsIG1fcmlnaHQsIG1fYm90dG9t
LCBtX2VkZ2VDb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgRHJvcERv
d25CdXR0b25UeXBlOgorICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBiaWcgZG93biBhcnJv
dyBvbiB0b3AuCisgICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlh
bmdsZShtX2xlZnQgICsgcXVhcnRlcldpZHRoLCBtX3RvcCwKKyAgICAgICAgICAgICAgICAgbV9y
aWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AsCisgICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBo
YWxmV2lkdGgsICAgIG1fYm90dG9tLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBDUkFTSCgp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBtYXJrU3RhdGUoKTsKKyAgICBtX2NhbnZh
cy0+ZW5kUGxhdGZvcm1QYWludCgpOworfQorCisvLyBCZWNhdXNlIHJlbmRlcmluZyBhIHRleHQg
ZmllbGQgaXMgZGVwZW5kZW50IG9uIGlucHV0CisvLyBwYXJhbWV0ZXJzIHRoZSBvdGhlciBjb250
cm9scyBkb24ndCBoYXZlLCB3ZSByZW5kZXIgaXQgZGlyZWN0bHkKKy8vIHJhdGhlciB0aGFuIHRy
eWluZyB0byBvdmVyY29tcGxpY2F0ZSBkcmF3KCkgZnVydGhlci4KK3ZvaWQgV2ViVGhlbWVDb250
cm9sRFJUOjpkcmF3VGV4dEZpZWxkKGJvb2wgZHJhd0VkZ2VzLCBib29sIGZpbGxDb250ZW50QXJl
YSwgU2tDb2xvciBjb2xvcikKK3sKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgbV9jYW52YXMt
PmJlZ2luUGxhdGZvcm1QYWludCgpOworICAgIGlmIChmaWxsQ29udGVudEFyZWEpIHsKKyAgICAg
ICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOworICAgICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50
OjprRmlsbF9TdHlsZSk7CisgICAgICAgIG1fY2FudmFzLT5kcmF3SVJlY3QobV9pcmVjdCwgcGFp
bnQpOworICAgIH0KKyAgICBpZiAoZHJhd0VkZ2VzKSB7CisgICAgICAgIHBhaW50LnNldENvbG9y
KG1fZWRnZUNvbG9yKTsKKyAgICAgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9T
dHlsZSk7CisgICAgICAgIG1fY2FudmFzLT5kcmF3SVJlY3QobV9pcmVjdCwgcGFpbnQpOworICAg
IH0KKworICAgIG1hcmtTdGF0ZSgpOworICAgIG1fY2FudmFzLT5lbmRQbGF0Zm9ybVBhaW50KCk7
Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUOjpkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJ
UmVjdCYgZmlsbFJlY3QpCit7CisgICAgU2tQYWludCBwYWludDsKKworICAgIG1fY2FudmFzLT5i
ZWdpblBsYXRmb3JtUGFpbnQoKTsKKyAgICBwYWludC5zZXRDb2xvcihtX2JnQ29sb3IpOworICAg
IHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJh
d0lSZWN0KG1faXJlY3QsIHBhaW50KTsKKworICAgIC8vIEVtdWxhdGUgY2xpcHBpbmcKKyAgICBT
a0lSZWN0IHRvZmlsbDsKKyAgICB0b2ZpbGwuaW50ZXJzZWN0KG1faXJlY3QsIGZpbGxSZWN0KTsK
KyAgICBwYWludC5zZXRDb2xvcihtX2ZnQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFp
bnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHRvZmlsbCwgcGFpbnQp
OworCisgICAgbWFya1N0YXRlKCk7CisgICAgbV9jYW52YXMtPmVuZFBsYXRmb3JtUGFpbnQoKTsK
K30KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
VGhlbWVDb250cm9sRFJULmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJUaGVtZUNvbnRyb2xEUlQuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4x
ZjczNjEwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVGhlbWVDb250cm9sRFJULmgKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBXZWJUaGVtZUNv
bnRyb2xEUlQgaW1wbGVtZW50cyB0aGUgZ2VuZXJpYyByZW5kZXJpbmcgb2YgY29udHJvbHMKKy8v
IG5lZWRlZCBieSBXZWJUaGVtZUVuZ2luZURSVC4gU2VlIHRoZSBjb21tZW50cyBpbiB0aGF0IGNs
YXNzCisvLyBoZWFkZXIgZmlsZSBmb3Igd2h5IHRoaXMgY2xhc3MgaXMgbmVlZGVkIGFuZCB1c2Vk
LgorLy8KKy8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGdlbmVyaWMgc2V0IG9mIHdpZGdldHMg
dXNpbmcgU2tpYS4gVGhlIHdpZGdldHMKKy8vIGFyZSBvcHRpbWl6ZWQgZm9yIHRlc3RhYmlsaXR5
LCBub3QgYSBwbGVhc2luZyBhcHBlYXJhbmNlLgorLy8KKworI2lmbmRlZiBXZWJUaGVtZUNvbnRy
b2xEUlRfaAorI2RlZmluZSBXZWJUaGVtZUNvbnRyb2xEUlRfaAorCisjaW5jbHVkZSAic2tpYS9l
eHQvcGxhdGZvcm1fY2FudmFzLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRl
L2NvcmUvU2tDb2xvci5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCisvLyBTa2lh
IGZvcndhcmQgZGVjbGFyYXRpb25zCitzdHJ1Y3QgU2tJUmVjdDsKKworY2xhc3MgV2ViVGhlbWVD
b250cm9sRFJUIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICAvLyBUaGlzIGxp
c3Qgb2Ygc3RhdGVzIG1vc3RseSBtaXJyb3JzIHRoZSBsaXN0IGluIFdlYkNvcmUvcGxhdGZvcm0v
VGhlbWVUeXBlcy5oCisgICAgLy8gYnV0IGlzIG1haW50YWluZWQgc2VwYXJhdGVseSBzaW5jZSB0
aGF0IGlzbid0IHB1YmxpYyBhbmQgYWxzbyB0byBtaW5pbWl6ZQorICAgIC8vIGRlcGVuZGVuY2ll
cy4KKyAgICAvLyBOb3RlIHRoYXQgdGhlIFdlYktpdCBUaGVtZVR5cGVzIHNlZW0gdG8gaW1wbHkg
dGhhdCBhIGNvbnRyb2wgY2FuIGJlCisgICAgLy8gaW4gbXVsdGlwbGUgc3RhdGVzIHNpbXVsdGFu
ZW91c2x5IGJ1dCBXZWJUaGVtZUVuZ2luZSBvbmx5IGFsbG93cyBmb3IKKyAgICAvLyBhIHNpbmds
ZSBzdGF0ZSBhdCBhIHRpbWUuCisgICAgLy8KKyAgICAvLyBTb21lIGRlZmluaXRpb25zIGZvciB0
aGUgdmFyaW91cyBzdGF0ZXM6CisgICAgLy8gICBEaXNhYmxlZCAtIGluZGljYXRlcyB0aGF0IGEg
Y29udHJvbCBjYW4ndCBiZSBtb2RpZmllZCBvciBzZWxlY3RlZAorICAgIC8vICAgICAgICAgICAg
ICAoY29ycmVzcG9uZHMgdG8gSFRNTCAnZGlzYWJsZWQnIGF0dHJpYnV0ZSkKKyAgICAvLyAgIFJl
YWRPbmx5IC0gaW5kaWNhdGVzIHRoYXQgYSBjb250cm9sIGNhbid0IGJlIG1vZGlmaWVkIGJ1dCBj
YW4gYmUKKyAgICAvLyAgICAgICAgICAgICAgc2VsZWN0ZWQKKyAgICAvLyAgIE5vcm1hbCAgIC0g
dGhlIG5vcm1hbCBzdGF0ZSBvZiBjb250cm9sIG9uIHRoZSBwYWdlIHdoZW4gaXQgaXNuJ3QKKyAg
ICAvLyAgICAgICAgICAgICAgZm9jdXNlZCBvciBvdGhlcndpc2UgYWN0aXZlCisgICAgLy8gICBI
b3QgICAgICAtIHdoZW4gdGhlIG1vdXNlIGlzIGhvdmVyaW5nIG92ZXIgYSBwYXJ0IG9mIHRoZSBj
b250cm9sLAorICAgIC8vICAgICAgICAgICAgICBhbGwgdGhlIG90aGVyIHBhcnRzIGFyZSBjb25z
aWRlcmVkICJob3QiCisgICAgLy8gICBIb3ZlciAgICAtIHdoZW4gdGhlIG1vdXNlIGlzIGRpcmVj
dGx5IG92ZXIgYSBjb250cm9sICh0aGUgQ1NTCisgICAgLy8gICAgICAgICAgICAgICA6aG92ZXIg
cHNldWRvLWNsYXNzKQorICAgIC8vICAgRm9jdXNlZCAgLSB3aGVuIHRoZSBjb250cm9sIGhhcyB0
aGUga2V5Ym9hcmQgZm9jdXMKKyAgICAvLyAgIFByZXNzZWQgIC0gd2hlbiB0aGUgY29udHJvbCBp
cyBiZWluZyB0cmlnZ2VyZWQgKGJ5IGEgbW91c2Vkb3duIG9yCisgICAgLy8gICAgICAgICAgICAg
IGEga2V5IGV2ZW50KS4KKyAgICAvLyAgIEluZGV0ZXJtaW5hdGUgLSB3aGVuIHNldCB0byBpbmRl
dGVybWluYXRlIChvbmx5IGZvciBwcm9ncmVzcyBiYXIpCisgICAgZW51bSBTdGF0ZSB7CisgICAg
ICAgIFVua25vd25TdGF0ZSA9IDAsCisgICAgICAgIERpc2FibGVkU3RhdGUsCisgICAgICAgIFJl
YWRPbmx5U3RhdGUsCisgICAgICAgIE5vcm1hbFN0YXRlLAorICAgICAgICBIb3RTdGF0ZSwKKyAg
ICAgICAgSG92ZXJTdGF0ZSwKKyAgICAgICAgRm9jdXNlZFN0YXRlLAorICAgICAgICBQcmVzc2Vk
U3RhdGUsCisgICAgICAgIEluZGV0ZXJtaW5hdGVTdGF0ZQorICAgIH07CisKKyAgICAvLyBUaGlz
IGxpc3Qgb2YgdHlwZXMgbW9zdGx5IG1pcnJvcnMgdGhlIGxpc3QgaW4KKyAgICAvLyBXZWJDb3Jl
L3BsYXRmb3JtL1RoZW1lVHlwZXMuaCBidXQgaXMgbWFpbnRhaW5lZAorICAgIC8vIHNlcGFyYXRl
bHkgc2luY2UgdGhhdCBpc24ndCBwdWJsaWMgYW5kIGFsc28gdG8gbWluaW1pemUgZGVwZW5kZW5j
aWVzLgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHdoYXQgdGhlIHVzZXIgbWlnaHQgdGhpbmsg
b2YgYXMgYSBzaW5nbGUgY29udHJvbCBjYW4gYmUKKyAgICAvLyBtYWRlIHVwIG9mIG11bHRpcGxl
IHBhcnRzLiBGb3IgZXhhbXBsZSwgYSBzaW5nbGUgc2Nyb2xsIGJhciBjb250YWlucworICAgIC8v
IHNpeCBjbGlja2FibGUgcGFydHMgLSB0d28gYXJyb3dzLCB0aGUgInRodW1iIiBpbmRpY2F0aW5n
IHRoZSBjdXJyZW50CisgICAgLy8gcG9zaXRpb24gb24gdGhlIGJhciwgdGhlIG90aGVyIHR3byBw
YXJ0cyBvZiB0aGUgYmFyIChiZWZvcmUgYW5kIGFmdGVyCisgICAgLy8gdGhlIHRodW1iKSBhbmQg
dGhlICJncmlwcGVyIiBvbiB0aGUgdGh1bWIgaXRzZWxmLgorICAgIC8vCisgICAgZW51bSBUeXBl
IHsKKyAgICAgICAgVW5rbm93blR5cGUgPSAwLAorICAgICAgICBUZXh0RmllbGRUeXBlLAorICAg
ICAgICBQdXNoQnV0dG9uVHlwZSwKKyAgICAgICAgVW5jaGVja2VkQm94VHlwZSwKKyAgICAgICAg
Q2hlY2tlZEJveFR5cGUsCisgICAgICAgIFVuY2hlY2tlZFJhZGlvVHlwZSwKKyAgICAgICAgQ2hl
Y2tlZFJhZGlvVHlwZSwKKyAgICAgICAgSG9yaXpvbnRhbFNjcm9sbFRyYWNrQmFja1R5cGUsCisg
ICAgICAgIEhvcml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlLAorICAgICAgICBIb3Jpem9u
dGFsU2Nyb2xsVGh1bWJUeXBlLAorICAgICAgICBIb3Jpem9udGFsU2Nyb2xsR3JpcFR5cGUsCisg
ICAgICAgIFZlcnRpY2FsU2Nyb2xsVHJhY2tCYWNrVHlwZSwKKyAgICAgICAgVmVydGljYWxTY3Jv
bGxUcmFja0ZvcndhcmRUeXBlLAorICAgICAgICBWZXJ0aWNhbFNjcm9sbFRodW1iVHlwZSwKKyAg
ICAgICAgVmVydGljYWxTY3JvbGxHcmlwVHlwZSwKKyAgICAgICAgTGVmdEFycm93VHlwZSwKKyAg
ICAgICAgUmlnaHRBcnJvd1R5cGUsCisgICAgICAgIFVwQXJyb3dUeXBlLAorICAgICAgICBEb3du
QXJyb3dUeXBlLAorICAgICAgICBIb3Jpem9udGFsU2xpZGVyVHJhY2tUeXBlLAorICAgICAgICBI
b3Jpem9udGFsU2xpZGVyVGh1bWJUeXBlLAorICAgICAgICBEcm9wRG93bkJ1dHRvblR5cGUsCisg
ICAgICAgIFByb2dyZXNzQmFyVHlwZQorICAgIH07CisKKyAgICAvLyBjYW52YXMgaXMgdGhlIGNh
bnZhcyB0byBkcmF3IG9udG8sIGFuZCByZWN0IGdpdmVzIHRoZSBzaXplIG9mIHRoZQorICAgIC8v
IGNvbnRyb2wuIGN0eXBlIGFuZCBjc3RhdGUgc3BlY2lmeSB0aGUgdHlwZSBhbmQgc3RhdGUgb2Yg
dGhlIGNvbnRyb2wuCisgICAgV2ViVGhlbWVDb250cm9sRFJUKHNraWE6OlBsYXRmb3JtQ2FudmFz
KiBjYW52YXMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNrSVJlY3QmIHJlY3QsCisg
ICAgICAgICAgICAgICAgICAgICAgIFR5cGUgY3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
IFN0YXRlIGNzdGF0ZSk7CisgICAgfldlYlRoZW1lQ29udHJvbERSVCgpOworCisgICAgLy8gRHJh
d3MgdGhlIGNvbnRyb2wuCisgICAgdm9pZCBkcmF3KCk7CisKKyAgICAvLyBVc2UgdGhpcyBmb3Ig
VGV4dEZpZWxkIGNvbnRyb2xzIGluc3RlYWQsIGJlY2F1c2UgdGhlIGxvZ2ljCisgICAgLy8gZm9y
IGRyYXdpbmcgdGhlbSBpcyBkZXBlbmRlbnQgb24gd2hhdCBXZWJLaXQgdGVsbHMgdXMgdG8gZG8u
CisgICAgLy8gSWYgZHJhd0VkZ2VzIGlzIHRydWUsIGRyYXcgYW4gZWRnZSBhcm91bmQgdGhlIGNv
bnRyb2wuIElmCisgICAgLy8gZmlsbENvbnRlbnRBcmVhIGlzIHRydWUsIGZpbGwgdGhlIGNvbnRl
bnQgYXJlYSB3aXRoIHRoZSBnaXZlbiBjb2xvci4KKyAgICB2b2lkIGRyYXdUZXh0RmllbGQoYm9v
bCBkcmF3RWRnZXMsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBTa0NvbG9yIGNvbG9yKTsKKworICAg
IC8vIFVzZSB0aGlzIGZvciBkcmF3aW5nIFByb2dyZXNzQmFyIGNvbnRyb2xzIGluc3RlYWQsIHNp
bmNlIHdlCisgICAgLy8gbmVlZCB0byBrbm93IHRoZSByZWN0IHRvIGZpbGwgaW5zaWRlIHRoZSBi
YXIuCisgICAgdm9pZCBkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3QpOwor
Citwcml2YXRlOgorICAgIC8vIERyYXdzIGEgYm94IG9mIHNpemUgc3BlY2lmaWVkIGJ5IGlyZWN0
LCBmaWxsZWQgd2l0aCB0aGUgZ2l2ZW4gY29sb3IuCisgICAgLy8gVGhlIGJveCB3aWxsIGhhdmUg
YSBib3JkZXIgZHJhd24gaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIGJveChj
b25zdCBTa0lSZWN0JiBpcmVjdCwgU2tDb2xvciBjb2xvcik7CisKKworICAgIC8vIERyYXdzIGEg
dHJpYW5nbGUgb2Ygc2l6ZSBzcGVjaWZpZWQgYnkgdGhlIHRocmVlIHBhaXJzIG9mIGNvb3JkaW5h
dGVzLAorICAgIC8vIGZpbGxlZCB3aXRoIHRoZSBnaXZlbiBjb2xvci4gVGhlIGJveCB3aWxsIGhh
dmUgYW4gZWRnZSBkcmF3biBpbiB0aGUKKyAgICAvLyBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAg
dm9pZCB0cmlhbmdsZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50
IHkyLCBTa0NvbG9yIGNvbG9yKTsKKworICAgIC8vIERyYXdzIGEgcmVjdGFuZ2xlIHRoZSBzaXpl
IG9mIHRoZSBjb250cm9sIHdpdGggcm91bmRlZCBjb3JuZXJzLCBmaWxsZWQKKyAgICAvLyB3aXRo
IHRoZSBzcGVjaWZpZWQgY29sb3IgKGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVk
Z2UgY29sb3IpLgorICAgIHZvaWQgcm91bmRSZWN0KFNrQ29sb3IgY29sb3IpOworCisgICAgLy8g
RHJhd3MgYW4gb3ZhbCB0aGUgc2l6ZSBvZiB0aGUgY29udHJvbCwgZmlsbGVkIHdpdGggdGhlIHNw
ZWNpZmllZCBjb2xvcgorICAgIC8vIGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVk
Z2UgY29sb3IuCisgICAgdm9pZCBvdmFsKFNrQ29sb3IgY29sb3IpOworCisgICAgLy8gRHJhd3Mg
YSBjaXJjbGUgY2VudGVyZWQgaW4gdGhlIGNvbnRyb2wgd2l0aCB0aGUgc3BlY2lmaWVkIHJhZGl1
cywKKyAgICAvLyBmaWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yLCBhbmQgd2l0aCBhIGJv
cmRlciBkcmF3IGluIHRoZQorICAgIC8vIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIGNp
cmNsZShTa1NjYWxhciByYWRpdXMsIFNrQ29sb3IgY29sb3IpOworCisgICAgLy8gRHJhd3MgYSBi
b3ggdGhlIHNpemUgb2YgdGhlIGNvbnRyb2wsIGZpbGxlZCB3aXRoIHRoZSBvdXRlckNvbG9yIGFu
ZAorICAgIC8vIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvciwgYW5kIHRo
ZW4gZHJhd3MgYW5vdGhlciBib3gKKyAgICAvLyBpbmRlbnRlZCBvbiBhbGwgZm91ciBzaWRlcyBi
eSB0aGUgc3BlY2lmaWVkIGFtb3VudHMsIGZpbGxlZCB3aXRoIHRoZQorICAgIC8vIGlubmVyIGNv
bG9yIGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9p
ZCBuZXN0ZWRCb3hlcyhpbnQgaW5kZW50TGVmdCwKKyAgICAgICAgICAgICAgICAgICAgIGludCBp
bmRlbnRUb3AsCisgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZW50UmlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICBpbnQgaW5kZW50Qm90dG9tLAorICAgICAgICAgICAgICAgICAgICAgU2tD
b2xvciBvdXRlckNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBpbm5lckNvbG9y
KTsKKworICAgIC8vIERyYXdzIGEgbGluZSBiZXR3ZWVuIHRoZSB0d28gcG9pbnRzIGluIHRoZSBn
aXZlbiBjb2xvci4KKyAgICB2b2lkIGxpbmUoaW50IHgwLCBpbnQgeTAsIGludCB4MSwgaW50IHkx
LCBTa0NvbG9yIGNvbG9yKTsKKworICAgIC8vIERyYXdzIGEgZGlzdGluY3RpdmUgbWFyayBvbiB0
aGUgY29udHJvbCBmb3IgZWFjaCBzdGF0ZSwgc28gdGhhdCB0aGUKKyAgICAvLyBzdGF0ZSBvZiB0
aGUgY29udHJvbCBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRob3V0IG5lZWRpbmcgdG8ga25vdyB3aGlj
aAorICAgIC8vIGNvbG9yIGlzIHdoaWNoLgorICAgIHZvaWQgbWFya1N0YXRlKCk7CisKKyAgICBz
a2lhOjpQbGF0Zm9ybUNhbnZhcyogbV9jYW52YXM7CisgICAgY29uc3QgU2tJUmVjdCBtX2lyZWN0
OworICAgIGNvbnN0IFR5cGUgbV90eXBlOworICAgIGNvbnN0IFN0YXRlIG1fc3RhdGU7CisgICAg
Y29uc3QgU2tDb2xvciBtX2VkZ2VDb2xvcjsKKyAgICBjb25zdCBTa0NvbG9yIG1fYmdDb2xvcjsK
KyAgICBjb25zdCBTa0NvbG9yIG1fZmdDb2xvcjsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJl
IGNvbnZlbmllbmNlIGFjY2Vzc29ycyBmb3IgbV9pcmVjdC4KKyAgICBjb25zdCBpbnQgbV9sZWZ0
OworICAgIGNvbnN0IGludCBtX3JpZ2h0OworICAgIGNvbnN0IGludCBtX3RvcDsKKyAgICBjb25z
dCBpbnQgbV9ib3R0b207CisgICAgY29uc3QgaW50IG1fd2lkdGg7CisgICAgY29uc3QgaW50IG1f
aGVpZ2h0OworfTsKKworI2VuZGlmIC8vIFdlYlRoZW1lQ29udHJvbERSVF9oCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5j
cHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURS
VC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjMwOTJjYwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1l
RW5naW5lRFJULmNwcApAQCAtMCwwICsxLDY3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJUaGVtZUVuZ2luZURSVC5oIgorCisjaW5jbHVkZSAiV2ViVGhlbWVDb250cm9sRFJU
LmgiCisjaW5jbHVkZSAicHVibGljL1dlYlJlY3QuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9z
a2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKKworLy8gQWx0aG91Z2ggYWxsIHRoaXMgY29kZSBp
cyBnZW5lcmljLCB3ZSBpbmNsdWRlIHRoZXNlIGhlYWRlcnMKKy8vIHRvIHB1bGwgaW4gdGhlIFdp
bmRvd3MgI2RlZmluZXMgZm9yIHRoZSBwYXJ0cyBhbmQgc3RhdGVzIG9mCisvLyB0aGUgY29udHJv
bHMuCisjaW5jbHVkZSA8dnNzdHlsZS5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKy8vIFdl
IGRlZmluZSB0aGlzIGZvciBjbGFyaXR5LCBhbHRob3VnaCB0aGVyZSByZWFsbHkgc2hvdWxkIGJl
IGEgREZDU19OT1JNQUwgaW4gd2ludXNlci5oLgorc3RhdGljIGNvbnN0IGludCBkZmNzTm9ybWFs
ID0gMHgwMDAwOworCitzdGF0aWMgU2tJUmVjdCB3ZWJSZWN0VG9Ta0lSZWN0KGNvbnN0IFdlYlJl
Y3QmIHdlYlJlY3QpCit7CisgICAgU2tJUmVjdCBpcmVjdDsKKyAgICBpcmVjdC5zZXQod2ViUmVj
dC54LCB3ZWJSZWN0LnksIHdlYlJlY3QueCArIHdlYlJlY3Qud2lkdGgsIHdlYlJlY3QueSArIHdl
YlJlY3QuaGVpZ2h0KTsKKyAgICByZXR1cm4gaXJlY3Q7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdD
b250cm9sKFdlYkNhbnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V2ViUmVjdCYgcmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERS
VDo6VHlwZSBjdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERS
VDo6U3RhdGUgY3N0YXRlKQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVCBjb250cm9sKGNhbnZh
cywgd2ViUmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNzdGF0ZSk7CisgICAgY29udHJvbC5k
cmF3KCk7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdUZXh0RmllbGQoV2ViQ2FudmFzKiBjYW52YXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVDo6VHlwZSBjdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViVGhlbWVDb250cm9sRFJUOjpTdGF0ZSBjc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZHJhd0VkZ2VzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGZpbGxDb250ZW50QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViQ29sb3IgY29sb3IpCit7CisgICAgV2ViVGhlbWVDb250cm9sRFJUIGNvbnRyb2woY2Fu
dmFzLCB3ZWJSZWN0VG9Ta0lSZWN0KHJlY3QpLCBjdHlwZSwgY3N0YXRlKTsKKyAgICBjb250cm9s
LmRyYXdUZXh0RmllbGQoZHJhd0VkZ2VzLCBmaWxsQ29udGVudEFyZWEsIGNvbG9yKTsKK30KKwor
c3RhdGljIHZvaWQgZHJhd1Byb2dyZXNzQmFyKFdlYkNhbnZhcyogY2FudmFzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVDo6VHlwZSBjdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiBiYXJSZWN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIGZpbGxSZWN0KQoreworICAg
IFdlYlRoZW1lQ29udHJvbERSVCBjb250cm9sKGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChiYXJS
ZWN0KSwgY3R5cGUsIGNzdGF0ZSk7CisgICAgY29udHJvbC5kcmF3UHJvZ3Jlc3NCYXIod2ViUmVj
dFRvU2tJUmVjdChmaWxsUmVjdCkpOworfQorCisvLyBXZWJUaGVtZUVuZ2luZURSVAorCit2b2lk
IFdlYlRoZW1lRW5naW5lRFJUOjpwYWludEJ1dHRvbihXZWJDYW52YXMqIGNhbnZhcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJ0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2ViVGhlbWVDb250cm9sRFJU
OjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpVbmtub3duVHlwZTsKKyAgICBXZWJU
aGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5rbm93
blN0YXRlOworCisgICAgaWYgKHBhcnQgPT0gQlBfQ0hFQ0tCT1gpIHsKKyAgICAgICAgc3dpdGNo
IChzdGF0ZSkgeworICAgICAgICBjYXNlIENCU19VTkNIRUNLRUROT1JNQUw6CisgICAgICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlVuY2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VESE9UOgorICAgICAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfSE9UKSk7CisgICAgICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5jaGVja2VkQm94VHlwZTsKKyAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6SG90U3RhdGU7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIENCU19VTkNIRUNLRURQUkVTU0VEOgorICAgICAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfUFVTSEVEKSk7
CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5jaGVja2VkQm94VHlw
ZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6UHJlc3NlZFN0YXRl
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VERElTQUJM
RUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNL
IHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6OlVuY2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IENCU19DSEVDS0VETk9STUFMOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAo
REZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlQ6OkNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgQ0JTX0NIRUNLRURIT1Q6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19IT1QpKTsKKyAg
ICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpDaGVja2VkQm94VHlwZTsKKyAg
ICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6SG90U3RhdGU7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCU19DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAg
ICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNL
RUQgfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6OkNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUOjpQcmVzc2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENC
U19DSEVDS0VERElTQUJMRUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19JTkFDVElWRSkpOworICAgICAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkNoZWNrZWRCb3hUeXBlOworICAgICAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpEaXNhYmxlZFN0YXRlOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYg
KEJQX1JBRElPQlVUVE9OID09IHBhcnQpIHsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAg
ICAgICBjYXNlIFJCU19VTkNIRUNLRUROT1JNQUw6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IERGQ1NfQlVUVE9OUkFESU8pOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OlVuY2hlY2tlZFJhZGlvVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVDo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIFJCU19VTkNIRUNLRURIT1Q6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0eXBl
ID0gV2ViVGhlbWVDb250cm9sRFJUOjpVbmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAgIEFTU0VS
VChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX1BVU0hFRCkpOworICAg
ICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlVuY2hlY2tlZFJhZGlvVHlwZTsK
KyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6UHJlc3NlZFN0YXRlOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VERElTQUJMRUQ6
CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwg
REZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
OlVuY2hlY2tlZFJhZGlvVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVDo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
UkJTX0NIRUNLRUROT1JNQUw6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdl
YlRoZW1lQ29udHJvbERSVDo6Q2hlY2tlZFJhZGlvVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVDo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIFJCU19DSEVDS0VESE9UOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSE9UKSk7Cisg
ICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6Q2hlY2tlZFJhZGlvVHlwZTsK
KyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6SG90U3RhdGU7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19DSEVDS0VEUFJFU1NFRDoKKyAgICAg
ICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NI
RUNLRUQgfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6OkNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgUkJTX0NIRUNLRURESVNBQkxFRDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX0lOQUNUSVZFKSk7Cisg
ICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6Q2hlY2tlZFJhZGlvVHlwZTsK
KyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6RGlzYWJsZWRTdGF0ZTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBl
bHNlIGlmIChCUF9QVVNIQlVUVE9OID09IHBhcnQpIHsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkg
eworICAgICAgICBjYXNlIFBCU19OT1JNQUw6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IERGQ1NfQlVUVE9OUFVTSCk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVDo6UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBQQlNfSE9UOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRU
T05QVVNIIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9s
RFJUOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVDo6SG90U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFBCU19Q
UkVTU0VEOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05Q
VVNIIHwgREZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9s
RFJUOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVDo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQ
QlNfRElTQUJMRUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JV
VFRPTlBVU0ggfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1l
Q29udHJvbERSVDo6UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIFBCU19ERUZBVUxURUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IERGQ1NfQlVUVE9OUFVTSCk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VDo6UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlQ6OkZvY3VzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorCisgICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30K
KworCit2b2lkIFdlYlRoZW1lRW5naW5lRFJUOjpwYWludE1lbnVMaXN0KFdlYkNhbnZhcyogY2Fu
dmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAg
IFdlYlRoZW1lQ29udHJvbERSVDo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5r
bm93blR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OlVua25vd25TdGF0ZTsKKworICAgIGlmIChDUF9EUk9QRE9XTkJVVFRPTiA9
PSBwYXJ0KSB7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpEcm9wRG93bkJ1
dHRvblR5cGU7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBDQlhTX05P
Uk1BTDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19NRU5VQVJST1cp
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpOb3JtYWxTdGF0ZTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JYU19IT1Q6CisgICAgICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX01FTlVBUlJPVyB8IERGQ1NfSE9UKSk7Cisg
ICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdmVyU3RhdGU7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCWFNfUFJFU1NFRDoKKyAgICAgICAgICAg
IEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwgREZDU19QVVNIRUQpKTsK
KyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6UHJlc3NlZFN0YXRlOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlhTX0RJU0FCTEVEOgorICAgICAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19NRU5VQVJST1cgfCBERkNTX0lOQUNU
SVZFKSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkRpc2FibGVk
U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgQ1JBU0goKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3Qs
IGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRoZW1lRW5naW5lRFJUOjpwYWludFNjcm9s
bGJhckFycm93KFdlYkNhbnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2ViVGhl
bWVDb250cm9sRFJUOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpVbmtub3duVHlw
ZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVDo6VW5rbm93blN0YXRlOworCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgQUJT
X1VQTk9STUFMOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMVVAp
OworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VXBBcnJvd1R5cGU7CisgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6Tm9ybWFsU3RhdGU7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBBQlNfRE9XTk5PUk1BTDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSBERkNTX1NDUk9MTERPV04pOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJv
bERSVDo6RG93bkFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
OjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19MRUZUTk9STUFM
OgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMTEVGVCk7CisgICAg
ICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpMZWZ0QXJyb3dUeXBlOworICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Ok5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgQUJTX1JJR0hUTk9STUFMOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IERGQ1NfU0NST0xMUklHSFQpOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VDo6UmlnaHRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6
Tm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfVVBIT1Q6CisgICAg
ICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0hPVCkpOwor
ICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VXBBcnJvd1R5cGU7CisgICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6SG90U3RhdGU7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBBQlNfRE9XTkhPVDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAo
REZDU19TQ1JPTExET1dOIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6OkRvd25BcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVDo6SG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfTEVGVEhPVDoK
KyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExMRUZUIHwgREZDU19I
T1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkxlZnRBcnJvd1R5cGU7
CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6SG90U3RhdGU7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBBQlNfUklHSFRIT1Q6CisgICAgICAgIEFTU0VSVChjbGFzc2lj
U3RhdGUgPT0gKERGQ1NfU0NST0xMUklHSFQgfCBERkNTX0hPVCkpOworICAgICAgICBjdHlwZSA9
IFdlYlRoZW1lQ29udHJvbERSVDo6UmlnaHRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVDo6SG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBB
QlNfVVBIT1ZFUjoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQ
KTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlVwQXJyb3dUeXBlOworICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdmVyU3RhdGU7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBBQlNfRE9XTkhPVkVSOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IERGQ1NfU0NST0xMRE9XTik7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9s
RFJUOjpEb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfTEVGVEhPVkVSOgor
ICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMTEVGVCk7CisgICAgICAg
IGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpMZWZ0QXJyb3dUeXBlOworICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBBQlNfUklHSFRIT1ZFUjoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBE
RkNTX1NDUk9MTFJJR0hUKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlJp
Z2h0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdmVy
U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfVVBQUkVTU0VEOgorICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19QVVNIRUQgfCBE
RkNTX0ZMQVQpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlVwQXJyb3dU
eXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlByZXNzZWRTdGF0ZTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19ET1dOUFJFU1NFRDoKKyAgICAgICAgQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19QVVNIRUQgfCBERkNT
X0ZMQVQpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkRvd25BcnJvd1R5
cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6UHJlc3NlZFN0YXRlOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0xFRlRQUkVTU0VEOgorICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTExFRlQgfCBERkNTX1BVU0hFRCB8IERGQ1Nf
RkxBVCkpOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6TGVmdEFycm93VHlw
ZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpQcmVzc2VkU3RhdGU7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfUklHSFRQUkVTU0VEOgorICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19QVVNIRUQgfCBERkNT
X0ZMQVQpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlJpZ2h0QXJyb3dU
eXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlByZXNzZWRTdGF0ZTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19VUERJU0FCTEVEOgorICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19JTkFDVElWRSkpOworICAg
ICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VXBBcnJvd1R5cGU7CisgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIEFCU19ET1dORElTQUJMRUQ6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkRvd25BcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVDo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIEFCU19MRUZURElTQUJMRUQ6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfU0NST0xMTEVGVCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlQ6OkxlZnRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVDo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19S
SUdIVERJU0FCTEVEOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9M
TFJJR0hUIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJv
bERSVDo6UmlnaHRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VDo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZHJh
d0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKwordm9pZCBXZWJUaGVt
ZUVuZ2luZURSVDo6cGFpbnRTY3JvbGxiYXJUaHVtYihXZWJDYW52YXMqIGNhbnZhcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYg
cmVjdCkKK3sKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6OlVua25vd25UeXBlOworICAgIFdlYlRoZW1lQ29udHJvbERSVDo6U3RhdGUgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpVbmtub3duU3RhdGU7CisKKyAgICBzd2l0Y2ggKHBh
cnQpIHsKKyAgICBjYXNlIFNCUF9USFVNQkJUTkhPUlo6CisgICAgICAgIGN0eXBlID0gV2ViVGhl
bWVDb250cm9sRFJUOjpIb3Jpem9udGFsU2Nyb2xsVGh1bWJUeXBlOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgU0JQX1RIVU1CQlROVkVSVDoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6OlZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgU0JQX0dSSVBQRVJIT1JaOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VDo6SG9yaXpvbnRhbFNjcm9sbEdyaXBUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
U0JQX0dSSVBQRVJWRVJUOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VmVy
dGljYWxTY3JvbGxHcmlwVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
c3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgU0NSQlNfTk9STUFMOgorICAgICAgICBBU1NFUlQo
Y2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlQ6Ok5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNf
SE9UOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFNDUkJTX0hPVkVSOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRm
Y3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdmVyU3Rh
dGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19QUkVTU0VEOgorICAgICAgICBB
U1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlQ6OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IFNDUkJTX0RJU0FCTEVEOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhpcyBz
aG91bGQgbmV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLgorICAgICAgICBicmVhazsKKworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQor
Cit2b2lkIFdlYlRoZW1lRW5naW5lRFJUOjpwYWludFNjcm9sbGJhclRyYWNrKFdlYkNhbnZhcyog
Y2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
cGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xh
c3NpY1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJSZWN0JiByZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJSZWN0JiBhbGlnblJlY3QpCit7CisgICAgV2ViVGhlbWVDb250cm9s
RFJUOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpVbmtub3duVHlwZTsKKyAgICBX
ZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5r
bm93blN0YXRlOworCisgICAgc3dpdGNoIChwYXJ0KSB7CisgICAgY2FzZSBTQlBfVVBQRVJUUkFD
S0hPUlo6CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpIb3Jpem9udGFsU2Ny
b2xsVHJhY2tCYWNrVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9MT1dFUlRS
QUNLSE9SWjoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Okhvcml6b250YWxT
Y3JvbGxUcmFja0ZvcndhcmRUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX1VQ
UEVSVFJBQ0tWRVJUOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VmVydGlj
YWxTY3JvbGxUcmFja0JhY2tUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX0xP
V0VSVFJBQ0tWRVJUOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VmVydGlj
YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBTQ1JCU19OT1JNQUw6CisgICAgICAgIEFT
U0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVDo6Tm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBT
Q1JCU19IT1Q6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGlzIHNob3VsZCBu
ZXZlciBoYXBwZW4gaW4gcHJhY3RpY2UuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JC
U19IT1ZFUjoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpIb3ZlclN0YXRlOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgU0NSQlNfUFJFU1NFRDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX0RJU0FCTEVEOgorICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlQ6OkRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZHJhd0NvbnRyb2wo
Y2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKwordm9pZCBXZWJUaGVtZUVuZ2luZURS
VDo6cGFpbnRUZXh0RmllbGQoV2ViQ2FudmFzKiBjYW52YXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViQ29sb3IgY29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGZpbGxDb250ZW50QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZHJhd0VkZ2VzKQoreworICAgIFdlYlRoZW1lQ29udHJvbERS
VDo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5rbm93blR5cGU7CisgICAgV2Vi
VGhlbWVDb250cm9sRFJUOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OlVua25v
d25TdGF0ZTsKKworICAgIEFTU0VSVChFUF9FRElUVEVYVCA9PSBwYXJ0KTsKKyAgICBjdHlwZSA9
IFdlYlRoZW1lQ29udHJvbERSVDo6VGV4dEZpZWxkVHlwZTsKKworICAgIHN3aXRjaCAoc3RhdGUp
IHsKKyAgICBjYXNlIEVUU19OT1JNQUw6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
ZGZjc05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6Tm9ybWFs
U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVFNfSE9UOgorICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVD
b250cm9sRFJUOjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVUU19ESVNB
QkxFRDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKKyAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpEaXNhYmxlZFN0YXRlOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgRVRTX1NFTEVDVEVEOgorICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IERGQ1NfUFVTSEVEKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUOjpQcmVzc2VkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVFNfRk9DVVNF
RDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUOjpGb2N1c2VkU3RhdGU7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBFVFNfUkVBRE9OTFk6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6UmVh
ZE9ubHlTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZHJhd1RleHRG
aWVsZChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUsIGRyYXdFZGdlcywgZmlsbENvbnRlbnRB
cmVhLCBjb2xvcik7Cit9CisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlQ6OnBhaW50VHJhY2tiYXIo
V2ViQ2FudmFzKiBjYW52YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBwYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGFzc2ljU3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3Qm
IHJlY3QpCit7CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUOjpVbmtub3duVHlwZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlQ6OlN0YXRlIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVDo6VW5rbm93blN0YXRlOworCisgICAgaWYgKFRLUF9U
SFVNQkJPVFRPTSA9PSBwYXJ0KSB7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
OjpIb3Jpem9udGFsU2xpZGVyVGh1bWJUeXBlOworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Cisg
ICAgICAgIGNhc2UgVFVTX05PUk1BTDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gZGZjc05vcm1hbCk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBUVVNfSE9U
OgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6OkhvdFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBUVVNfRElTQUJMRUQ6CisgICAgICAgICAgICBBU1NFUlQo
Y2xhc3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOworICAgICAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBUVVNfUFJFU1NFRDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gREZDU19QVVNIRUQpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
OjpQcmVzc2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSBpZiAoVEtQX1RSQUNLID09IHBhcnQpIHsKKyAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6Okhvcml6b250YWxTbGlkZXJUcmFja1R5cGU7CisgICAg
ICAgIEFTU0VSVChwYXJ0ID09IFRVU19OT1JNQUwpOworICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlQ6
Ok5vcm1hbFN0YXRlOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7
Cit9CisKKwordm9pZCBXZWJUaGVtZUVuZ2luZURSVDo6cGFpbnRQcm9ncmVzc0JhcihXZWJLaXQ6
OldlYkNhbnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGJhclJlY3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgdmFsdWVSZWN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRldGVybWluYXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUpCit7Cisg
ICAgV2ViVGhlbWVDb250cm9sRFJUOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUOjpQ
cm9ncmVzc0JhclR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUOjpTdGF0ZSBjc3RhdGUgPSBk
ZXRlcm1pbmF0ZSA/IFdlYlRoZW1lQ29udHJvbERSVDo6Tm9ybWFsU3RhdGUgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFdlYlRoZW1lQ29udHJv
bERSVDo6SW5kZXRlcm1pbmF0ZVN0YXRlOworICAgIGRyYXdQcm9ncmVzc0JhcihjYW52YXMsIGN0
eXBlLCBjc3RhdGUsIGJhclJlY3QsIHZhbHVlUmVjdCk7Cit9CisKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJULmggYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5oCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg5ODA1YjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVC5o
CkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIFdlYlRoZW1lRW5naW5lIEFQ
SSB1c2VkIGJ5IHRoZSBXaW5kb3dzIHZlcnNpb24gb2YKKy8vIENocm9taXVtIHRvIHJlbmRlciBu
YXRpdmUgZm9ybSBjb250cm9scyBsaWtlIGNoZWNrYm94ZXMsIHJhZGlvIGJ1dHRvbnMsCisvLyBh
bmQgc2Nyb2xsIGJhcnMuCisvLyBUaGUgbm9ybWFsIGltcGxlbWVudGF0aW9uIChuYXRpdmVfdGhl
bWUpIHJlbmRlcnMgdGhlIGNvbnRyb2xzIHVzaW5nIGVpdGhlcgorLy8gdGhlIFVYVGhlbWUgdGhl
bWluZyBlbmdpbmUgcHJlc2VudCBpbiBYUCwgVmlzdGEsIGFuZCBXaW4gNywgb3IgdGhlICJjbGFz
c2ljIgorLy8gdGhlbWUgdXNlZCBpZiB0aGF0IHRoZW1lIGlzIHNlbGVjdGVkIGluIHRoZSBEZXNr
dG9wIHNldHRpbmdzLgorLy8gVW5mb3J0dW5hdGVseSwgYm90aCBvZiB0aGVzZSB0aGVtZXMgcmVu
ZGVyIGNvbnRyb2xzIGRpZmZlcmVudGx5IG9uIHRoZQorLy8gZGlmZmVyZW50IHZlcnNpb25zIG9m
IFdpbmRvd3MuCisvLworLy8gSW4gb3JkZXIgdG8gZW5zdXJlIG1heGltdW0gY29uc2lzdGVuY3kg
b2YgYmFzZWxpbmVzIGFjcm9zcyB0aGUgZGlmZmVyZW50CisvLyBXaW5kb3dzIHZlcnNpb25zLCB3
ZSBwcm92aWRlIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIGZvciBEUlQgaGVyZQorLy8gaW5zdGVh
ZC4gVGhlc2UgY29udHJvbHMgYXJlIGFjdHVhbGx5IHBsYXRmb3JtLWluZGVwZW5kZW50ICh0aGV5
J3JlIHJlbmRlcmVkCisvLyB1c2luZyBTa2lhKSBhbmQgY291bGQgYmUgdXNlZCBvbiBMaW51eCBh
bmQgdGhlIE1hYyBhcyB3ZWxsLCBzaG91bGQgd2UKKy8vIGNob29zZSB0byBkbyBzbyBhdCBzb21l
IHBvaW50LgorLy8KKworI2lmbmRlZiBXZWJUaGVtZUVuZ2luZURSVF9oCisjZGVmaW5lIFdlYlRo
ZW1lRW5naW5lRFJUX2gKKworI2luY2x1ZGUgInB1YmxpYy9XZWJUaGVtZUVuZ2luZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCitjbGFzcyBXZWJUaGVtZUVuZ2luZURSVCA6IHB1
YmxpYyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lLCBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGlj
OgorICAgIFdlYlRoZW1lRW5naW5lRFJUKCkge30KKworICAgIC8vIFdlYlRoZW1lRW5naW5lIG1l
dGhvZHM6CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKAorICAgICAgICBXZWJLaXQ6Oldl
YkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAg
IGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50TWVudUxp
c3QoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50
IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJBcnJvdygKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52
YXMqLCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6
V2ViUmVjdCYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVGh1bWIoCisgICAg
ICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNT
dGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxiYXJUcmFjaygKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQg
cGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6
OldlYlJlY3QmLCBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGFsaWduUmVjdCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUZXh0RmllbGQoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50
IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0
OjpXZWJSZWN0JiwgV2ViS2l0OjpXZWJDb2xvciwgYm9vbCBmaWxsQ29udGVudEFyZWEsCisgICAg
ICAgIGJvb2wgZHJhd0VkZ2VzKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrYmFyKAor
ICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFz
c2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOworCisgICAgdmlydHVh
bCB2b2lkIHBhaW50UHJvZ3Jlc3NCYXIoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgY29u
c3QgV2ViS2l0OjpXZWJSZWN0JiBiYXJSZWN0LAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJl
Y3QmIHZhbHVlUmVjdCwKKyAgICAgICAgYm9vbCBkZXRlcm1pbmF0ZSwgZG91YmxlIHRpbWUpOwor
fTsKKworI2VuZGlmIC8vIFdlYlRoZW1lRW5naW5lRFJUX2gK
</data>
<flag name="review"
          id="43119"
          type_id="1"
          status="+"
          setter="tkent"
    />
    <flag name="commit-queue"
          id="43120"
          type_id="3"
          status="-"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>