<?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>32504</bug_id>
          
          <creation_ts>2009-12-13 22:52:41 -0800</creation_ts>
          <short_desc>Provide Example Printing Implementation</short_desc>
          <delta_ts>2009-12-19 23:01:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>sfalken</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>171295</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-12-13 22:52:41 -0800</bug_when>
    <thetext>Extend the existing WinLauncher application with an example printing implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171299</commentid>
    <comment_count>1</comment_count>
      <attachid>44775</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-12-13 23:28:42 -0800</bug_when>
    <thetext>Created attachment 44775
Add an example printing implementation the WinLauncher example program.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171300</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-13 23:30:27 -0800</bug_when>
    <thetext>Attachment 44775 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
WebKitTools/WinLauncher/WinLauncher.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
WebKitTools/WinLauncher/PrintWebUIDelegate.h:33:  This { should be at the end of the previous line  [whitespace/braces] [4]
WebKitTools/WinLauncher/WinLauncher.h:102:  Extra space after ( in function call  [whitespace/parens] [4]
WebKitTools/WinLauncher/PrintWebUIDelegate.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/WinLauncher/PrintWebUIDelegate.cpp:28:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/WinLauncher/PrintWebUIDelegate.cpp:76:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171709</commentid>
    <comment_count>3</comment_count>
      <attachid>44842</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-12-14 21:54:06 -0800</bug_when>
    <thetext>Created attachment 44842
Extend WinLauncher with printing support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171710</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-14 21:58:20 -0800</bug_when>
    <thetext>Attachment 44842 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
WebKitTools/WinLauncher/PrintWebUIDelegate.h:33:  This { should be at the end of the previous line  [whitespace/braces] [4]
WebKitTools/WinLauncher/WinLauncher.h:102:  Extra space after ( in function call  [whitespace/parens] [4]
WebKitTools/WinLauncher/PrintWebUIDelegate.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/WinLauncher/PrintWebUIDelegate.cpp:28:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/WinLauncher/PrintWebUIDelegate.cpp:76:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171723</commentid>
    <comment_count>5</comment_count>
      <attachid>44846</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-12-14 22:26:52 -0800</bug_when>
    <thetext>Created attachment 44846
Revised patch to clean up check-webkit-style warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171724</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-14 22:30:22 -0800</bug_when>
    <thetext>Attachment 44846 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
WebKitTools/WinLauncher/PrintWebUIDelegate.cpp:27:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/WinLauncher/PrintWebUIDelegate.cpp:28:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKitTools/WinLauncher/PrintWebUIDelegate.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173289</commentid>
    <comment_count>7</comment_count>
      <attachid>44846</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-12-18 13:09:42 -0800</bug_when>
    <thetext>Comment on attachment 44846
Revised patch to clean up check-webkit-style warnings.

&gt; +HRESULT STDMETHODCALLTYPE PrintWebUIDelegate::QueryInterface(REFIID riid, void** ppvObject)

There&apos;s no need for STDMETHODCALLTYPE on any function defintions in this file. Having it on the declaration is all that matters.

&gt; +{
&gt; +    *ppvObject = 0;
&gt; +    if (IsEqualGUID(riid, IID_IUnknown))
&gt; +        *ppvObject = static_cast&lt;IWebUIDelegate*&gt;(this);
&gt; +    else if (IsEqualGUID(riid, IID_IWebUIDelegate))
&gt; +        *ppvObject = static_cast&lt;IWebUIDelegate*&gt;(this);

IsEqualIID would be a little better.

&gt; +ULONG STDMETHODCALLTYPE PrintWebUIDelegate::Release(void)
&gt; +{
&gt; +    ULONG newRef = --m_refCount;
&gt; +    if (!newRef)
&gt; +        delete(this);

No need for the parentheses around &quot;this&quot;.

&gt; +    IWebFramePrivate* privateFrame = 0;
&gt; +    if (FAILED(mainFrame-&gt;QueryInterface(IID_IWebFramePrivate, (void**)&amp;privateFrame))) {
&gt; +        mainFrame-&gt;Release();
&gt; +        return E_FAIL;
&gt; +    }

You should be able to use the single-parameter version of QueryInterface here, which also removes the need for the cast. You can also unconditionally release mainFrame right after calling QueryInterface:

IWebFramePrivate* privateFrame = 0;
HRESULT hr = mainFrame-&gt;QueryInterface(&amp;privateFrame);
mainFrame-&gt;Release();
if (FAILED(hr))
    return E_FAIL;

&gt; +    rect-&gt;left += 20;
&gt; +    rect-&gt;top += 20;
&gt; +    rect-&gt;right -= 20; 
&gt; +    rect-&gt;bottom -= 20;

Can we put this 20 in a constant?

&gt; +    gPrintDelegate = new PrintWebUIDelegate();

No need for parentheses here.

&gt; +BOOL CALLBACK AbortProc(HDC hDC, int Error)

Can this be marked static?

&gt; +{
&gt; +    MSG msg;
&gt; +    while (::PeekMessage(&amp;msg, 0, 0, 0, PM_REMOVE)) {

Why not use GetMessage? Do you need to check for a -1 return value?

&gt; +    IWebFramePrivate* framePrivate = 0;
&gt; +    if (FAILED (frame-&gt;QueryInterface(&amp;framePrivate)))
&gt; +        goto exit;

Extra space after FAILED. You can release frame uncoditionally after calling QueryInterface. Then you won&apos;t need the goto.

&gt; +    void* graphicsContext = 0;
&gt; +    for (size_t page = 0; page &lt; pageCount; ++page) {
&gt; +        ::StartPage(printDC);
&gt; +        framePrivate-&gt;spoolPages(printDC, page, page, graphicsContext);
&gt; +        ::EndPage(printDC);
&gt; +    }

This won&apos;t work in CG builds. It would be nice to detect that we&apos;re in a CG build and show a message to the user.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173640</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-12-19 23:01:07 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/52400.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44775</attachid>
            <date>2009-12-13 23:28:42 -0800</date>
            <delta_ts>2009-12-14 21:54:06 -0800</delta_ts>
            <desc>Add an example printing implementation the WinLauncher example program.</desc>
            <filename>printing_example.patch</filename>
            <type>text/plain</type>
            <size>30181</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUyMDgxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE1IEBACisyMDA5LTEyLTEzICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcm92aWRlIGFuIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIHByaW50
aW5nIHVuZGVyIFdpbmRvd3MuCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyNTA0LmAKKworICAgICAgICAqIFdpbkxhdW5jaGVyL1ByaW50V2ViVUlEZWxl
Z2F0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpRdWVyeUludGVy
ZmFjZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OkFkZFJlZik6CisgICAgICAgIChQ
cmludFdlYlVJRGVsZWdhdGU6OlJlbGVhc2UpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRl
Ojp3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KToKKyAgICAgICAgKiBXaW5MYXVuY2hlci9Qcmlu
dFdlYlVJRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OlBy
aW50V2ViVUlEZWxlZ2F0ZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmNyZWF0ZVdl
YlZpZXdXaXRoUmVxdWVzdCk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdT
aG93KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0Nsb3NlKToKKyAgICAg
ICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0ZvY3VzKToKKyAgICAgICAgKFByaW50V2Vi
VUlEZWxlZ2F0ZTo6d2ViVmlld1VuZm9jdXMpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRl
Ojp3ZWJWaWV3Rmlyc3RSZXNwb25kZXIpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpt
YWtlRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpzZXRTdGF0
dXNUZXh0KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld1N0YXR1c1RleHQp
OgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjp3ZWJWaWV3QXJlVG9vbGJhcnNWaXNpYmxl
KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6c2V0VG9vbGJhcnNWaXNpYmxlKToKKyAg
ICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0lzU3RhdHVzQmFyVmlzaWJsZSk6Cisg
ICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnNldFN0YXR1c0JhclZpc2libGUpOgorICAgICAg
ICAoUHJpbnRXZWJVSURlbGVnYXRlOjp3ZWJWaWV3SXNSZXNpemFibGUpOgorICAgICAgICAoUHJp
bnRXZWJVSURlbGVnYXRlOjpzZXRSZXNpemFibGUpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVn
YXRlOjpzZXRGcmFtZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdGcmFt
ZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnNldENvbnRlbnRSZWN0KToKKyAgICAg
ICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0NvbnRlbnRSZWN0KToKKyAgICAgICAgKFBy
aW50V2ViVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZSk6Cisg
ICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRo
TWVzc2FnZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0
SW5wdXRQYW5lbFdpdGhQcm9tcHQpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZSk6CisgICAgICAgIChQcmludFdlYlVJ
RGVsZWdhdGU6OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXIpOgor
ICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6Cisg
ICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KToK
KyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6dmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbSk6
CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnNob3VsZFBlcmZvcm1BY3Rpb24pOgorICAg
ICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJh
Z2dpbmdJbmZvKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpkcmFnU291
cmNlQWN0aW9uTWFza0ZvclBvaW50KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpo
YXNDdXN0b21NZW51SW1wbGVtZW50YXRpb24pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRl
Ojp0cmFja0N1c3RvbVBvcHVwTWVudSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6Om1l
YXN1cmVDdXN0b21NZW51SXRlbSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmRyYXdD
dXN0b21NZW51SXRlbSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmFkZEN1c3RvbU1l
bnVEcmF3aW5nRGF0YSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmNsZWFuVXBDdXN0
b21NZW51RHJhd2luZ0RhdGEpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpjYW5UYWtl
Rm9jdXMpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjp0YWtlRm9jdXMpOgorICAgICAg
ICAoUHJpbnRXZWJVSURlbGVnYXRlOjpyZWdpc3RlclVuZG9XaXRoVGFyZ2V0KToKKyAgICAgICAg
KFByaW50V2ViVUlEZWxlZ2F0ZTo6cmVtb3ZlQWxsQWN0aW9uc1dpdGhUYXJnZXQpOgorICAgICAg
ICAoUHJpbnRXZWJVSURlbGVnYXRlOjpzZXRBY3Rpb25UaXRsZSk6CisgICAgICAgIChQcmludFdl
YlVJRGVsZWdhdGU6OnVuZG8pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpyZWRvKToK
KyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6Y2FuVW5kbyk6CisgICAgICAgIChQcmludFdl
YlVJRGVsZWdhdGU6OmNhblJlZG8pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpwcmlu
dEZyYW1lKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6ZnRwRGlyZWN0b3J5VGVtcGxh
dGVQYXRoKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0hlYWRlckhlaWdo
dCk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdGb290ZXJIZWlnaHQpOgor
ICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpkcmF3SGVhZGVySW5SZWN0KToKKyAgICAgICAg
KFByaW50V2ViVUlEZWxlZ2F0ZTo6ZHJhd0Zvb3RlckluUmVjdCk6CisgICAgICAgIChQcmludFdl
YlVJRGVsZWdhdGU6OmNhblJ1bk1vZGFsKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6
Y3JlYXRlTW9kYWxEaWFsb2cpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpydW5Nb2Rh
bCk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmlzTWVudUJhclZpc2libGUpOgorICAg
ICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpzZXRNZW51QmFyVmlzaWJsZSk6CisgICAgICAgIChQ
cmludFdlYlVJRGVsZWdhdGU6OnJ1bkRhdGFiYXNlU2l6ZUxpbWl0UHJvbXB0KToKKyAgICAgICAg
KFByaW50V2ViVUlEZWxlZ2F0ZTo6cGFpbnRDdXN0b21TY3JvbGxiYXIpOgorICAgICAgICAoUHJp
bnRXZWJVSURlbGVnYXRlOjpwYWludEN1c3RvbVNjcm9sbENvcm5lcik6CisgICAgICAgICogV2lu
TGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwOiBBZGQgbmV3IFVJIGRlbGVnYXRlIGZvciBwcmludCBz
dXBwb3J0LgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0Ojp1cGRhdGVBZGRyZXNzQmFyKTog
Y2hlY2std2Via2l0LXN0eWxlIGZpeGVzLgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpR
dWVyeUludGVyZmFjZSk6IGNoZWNrLXdlYmtpdC1zdHlsZSBmaXhlcy4KKyAgICAgICAgKFdpbkxh
dW5jaGVyV2ViSG9zdDo6QWRkUmVmKTogY2hlY2std2Via2l0LXN0eWxlIGZpeGVzLgorICAgICAg
ICAoV2luTGF1bmNoZXJXZWJIb3N0OjpSZWxlYXNlKTogY2hlY2std2Via2l0LXN0eWxlIGZpeGVz
LgorICAgICAgICAocmVzaXplU3ViVmlld3MpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisg
ICAgICAgIChfdFdpbk1haW4pOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgIChN
eVJlZ2lzdGVyQ2xhc3MpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgIChJbml0
SW5zdGFuY2UpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgIChBYm9ydFByb2Mp
OiBOZXcgcHJpbnQgc3VwcG9ydCBmdW5jdGlvbi4KKyAgICAgICAgKGdldFByaW50ZXJEQyk6IE5l
dyBwcmludCBzdXBwb3J0IGZ1bmN0aW9uLgorICAgICAgICAoaW5pdERvY1N0cnVjdCk6IE5ldyBw
cmludCBzdXBwb3J0IGZ1bmN0aW9uLgorICAgICAgICAoUHJpbnRWaWV3KTogTmV3IHByaW50aW5n
IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV25kUHJvYyk6IEFkZCBzdXBwb3J0IGZvciBwcmlu
dGluZy4KKyAgICAgICAgKE15RWRpdFByb2MpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisg
ICAgICAgIChBYm91dCk6IGNoZWNrLXdlYmtpdC1zdHlsZSBmaXhlcy4KKyAgICAgICAgKGxvYWRV
UkwpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgICogV2luTGF1bmNoZXIvV2lu
TGF1bmNoZXIuaDoKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6V2luTGF1bmNoZXJXZWJI
b3N0KToKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldlYkhvc3Q6OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdpbkxhdW5j
aGVyV2ViSG9zdDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcik6CisgICAgICAgIChX
aW5MYXVuY2hlcldlYkhvc3Q6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXaW5M
YXVuY2hlcldlYkhvc3Q6OmRpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldl
Ykhvc3Q6OmRpZFJlY2VpdmVJY29uKToKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkRmFp
bExvYWRXaXRoRXJyb3IpOgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRDaGFuZ2VM
b2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldlYkhvc3Q6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTCk6CisgICAgICAgIChXaW5MYXVuY2hlcldl
Ykhvc3Q6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOgorICAgICAgICAoV2luTGF1
bmNoZXJXZWJIb3N0Ojp3aWxsQ2xvc2VGcmFtZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldlYkhv
c3Q6OndpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSk6CisgICAgICAgICogV2luTGF1bmNoZXIv
V2luTGF1bmNoZXIucmM6IEFkZCBtZW51IGVudHJ5IGZvciBwcmludGluZy4KKyAgICAgICAgKiBX
aW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3Byb2o6IEFkZCBuZXcgZmlsZXMuCisgICAgICAgICog
V2luTGF1bmNoZXIvcmVzb3VyY2UuaDogQWRkIG1lbnUgZW50cnkgZm9yIHByaW50aW5nLgorCiAy
MDA5LTEyLTEzICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbGF1Z2guCkluZGV4OiBXZWJLaXRUb29scy9XaW5MYXVu
Y2hlci9QcmludFdlYlVJRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dp
bkxhdW5jaGVyL1ByaW50V2ViVUlEZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXRU
b29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBCcmVudCBGdWxnaGFtLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgInN0ZGFmeC5oIgorI2luY2x1ZGUgIlByaW50V2ViVUlEZWxlZ2F0ZS5o
IgorI2luY2x1ZGUgPFdlYktpdC9XZWJLaXRDT01BUEkuaD4KKworI2luY2x1ZGUgPGNvbW1jdHJs
Lmg+CisjaW5jbHVkZSA8Y29tbWRsZy5oPgorI2luY2x1ZGUgPG9iamJhc2UuaD4KKyNpbmNsdWRl
IDxzaGx3YXBpLmg+CisjaW5jbHVkZSA8d2luaW5ldC5oPgorCitIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFByaW50V2ViVUlEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZv
aWQqKiBwcHZPYmplY3QpCit7CisgICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKElzRXF1YWxH
VUlEKHJpaWQsIElJRF9JVW5rbm93bikpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2Fz
dDxJV2ViVUlEZWxlZ2F0ZSo+KHRoaXMpOworICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQs
IElJRF9JV2ViVUlEZWxlZ2F0ZSkpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJ
V2ViVUlEZWxlZ2F0ZSo+KHRoaXMpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEVfTk9JTlRF
UkZBQ0U7CisKKyAgICBBZGRSZWYoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworVUxPTkcgU1RE
TUVUSE9EQ0FMTFRZUEUgUHJpbnRXZWJVSURlbGVnYXRlOjpBZGRSZWYodm9pZCkKK3sKKyAgICBy
ZXR1cm4gKyttX3JlZkNvdW50OworfQorCitVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBQcmludFdl
YlVJRGVsZWdhdGU6OlJlbGVhc2Uodm9pZCkKK3sKKyAgICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVm
Q291bnQ7CisgICAgaWYgKCFuZXdSZWYpCisgICAgICAgIGRlbGV0ZSh0aGlzKTsKKworICAgIHJl
dHVybiBuZXdSZWY7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUHJpbnRXZWJVSURl
bGVnYXRlOjp3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KElXZWJWaWV3KiB2aWV3LCBSRUNUKiBy
ZWN0KQoreworICAgIGlmICghdmlldyB8fCAhcmVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKKworICAgIElXZWJGcmFtZSogbWFpbkZyYW1lID0gMDsKKyAgICBpZiAoRkFJTEVEKHZpZXct
Pm1haW5GcmFtZSgmbWFpbkZyYW1lKSkpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKKyAgICBJ
V2ViRnJhbWVQcml2YXRlKiBwcml2YXRlRnJhbWUgPSAwOworICAgIGlmIChGQUlMRUQobWFpbkZy
YW1lLT5RdWVyeUludGVyZmFjZShJSURfSVdlYkZyYW1lUHJpdmF0ZSwgKHZvaWQqKikmcHJpdmF0
ZUZyYW1lKSkpCisgICAgeworICAgICAgICBtYWluRnJhbWUtPlJlbGVhc2UoKTsKKyAgICAgICAg
cmV0dXJuIEVfRkFJTDsKKyAgICB9CisKKyAgICBwcml2YXRlRnJhbWUtPmZyYW1lQm91bmRzKHJl
Y3QpOworCisgICAgcmVjdC0+bGVmdCArPSAyMDsKKyAgICByZWN0LT50b3AgKz0gMjA7CisgICAg
cmVjdC0+cmlnaHQgLT0gMjA7IAorICAgIHJlY3QtPmJvdHRvbSAtPSAyMDsKKworICAgIHByaXZh
dGVGcmFtZS0+UmVsZWFzZSgpOworICAgIG1haW5GcmFtZS0+UmVsZWFzZSgpOworCisgICAgcmV0
dXJuIFNfT0s7Cit9CkluZGV4OiBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJRGVs
ZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJ
RGVsZWdhdGUuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1ByaW50
V2ViVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQnJlbnQgRnVsZ2hhbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUHJpbnRXZWJV
SURlbGVnYXRlX2gKKyNkZWZpbmUgUHJpbnRXZWJVSURlbGVnYXRlX2gKKworI2luY2x1ZGUgPFdl
YktpdC9XZWJLaXQuaD4KKworY2xhc3MgUHJpbnRXZWJVSURlbGVnYXRlIDogcHVibGljIElXZWJV
SURlbGVnYXRlCit7CitwdWJsaWM6CisgICAgUHJpbnRXZWJVSURlbGVnYXRlKCkgOiBtX3JlZkNv
dW50KDEpIHt9CisKKyAgICAvLyBJVW5rbm93bgorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7
CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7CisgICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdChJ
V2ViVmlldyosIElXZWJVUkxSZXF1ZXN0KiwgSVdlYlZpZXcqKikgeyByZXR1cm4gRV9OT1RJTVBM
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdTaG93KElX
ZWJWaWV3KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHdlYlZpZXdDbG9zZShJV2ViVmlldyopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3Rm9jdXMoSVdl
YlZpZXcqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgd2ViVmlld1VuZm9jdXMoSVdlYlZpZXcqKSB7IHJldHVybiBFX05PVElNUEw7
IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0ZpcnN0UmVz
cG9uZGVyKElXZWJWaWV3KiwgT0xFX0hBTkRMRSopICB7IHJldHVybiBFX05PVElNUEw7IH0KKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFrZUZpcnN0UmVzcG9uZGVyKElX
ZWJWaWV3KiwgT0xFX0hBTkRMRSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFN0YXR1c1RleHQoSVdlYlZpZXcqLCBCU1RSKSB7
IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgd2ViVmlld1N0YXR1c1RleHQoSVdlYlZpZXcqLCBCU1RSKikgeyByZXR1cm4gRV9OT1RJTVBM
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdBcmVUb29s
YmFyc1Zpc2libGUoSVdlYlZpZXcqLCBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRvb2xiYXJzVmlzaWJsZShJV2Vi
VmlldyosIEJPT0wpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3SXNTdGF0dXNCYXJWaXNpYmxlKElXZWJWaWV3KiwgQk9P
TCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRTdGF0dXNCYXJWaXNpYmxlKElXZWJWaWV3KiwgQk9PTCkgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdJ
c1Jlc2l6YWJsZShJV2ViVmlldyosIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UmVzaXphYmxlKElXZWJWaWV3Kiwg
Qk9PTCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldEZyYW1lKElXZWJWaWV3KiwgUkVDVCopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3RnJhbWUoSVdl
YlZpZXcqLCBSRUNUKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldENvbnRlbnRSZWN0KElXZWJWaWV3KiwgUkVDVCopIHsgcmV0
dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3
ZWJWaWV3Q29udGVudFJlY3QoSVdlYlZpZXcqLCBSRUNUKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bkphdmFTY3JpcHRBbGVy
dFBhbmVsV2l0aE1lc3NhZ2UoSVdlYlZpZXcqLCBCU1RSKSB7IHJldHVybiBFX05PVElNUEw7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuSmF2YVNjcmlwdENvbmZp
cm1QYW5lbFdpdGhNZXNzYWdlKElXZWJWaWV3KiwgQlNUUiwgQk9PTCopIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5KYXZhU2Ny
aXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0KElXZWJWaWV3KiwgQlNUUiwgQlNUUiwgQlNUUiop
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZShJV2ViVmlldyosIEJT
VFIsIElXZWJGcmFtZSosIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhS
ZXN1bHRMaXN0ZW5lcihJV2ViVmlldyosIElXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciopIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChJV2ViVmlldyosIElQcm9wZXJ0eUJhZyosIFVJTlQp
IHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBjb250ZXh0TWVudUl0ZW1zRm9yRWxlbWVudChJV2ViVmlldyosIElQcm9wZXJ0eUJhZyos
IE9MRV9IQU5ETEUsIE9MRV9IQU5ETEUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbShJ
V2ViVmlldyosIFVJTlQsIEJPT0wsIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkUGVyZm9ybUFjdGlvbihJV2Vi
VmlldyosIFVJTlQsIFVJTlQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dp
bmdJbmZvKElXZWJWaWV3KiwgSURhdGFPYmplY3QqLCBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24q
KSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oSVdlYlZpZXcqLCBXZWJEcmFn
RGVzdGluYXRpb25BY3Rpb24sIElEYXRhT2JqZWN0KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYWdTb3VyY2VBY3Rpb25NYXNr
Rm9yUG9pbnQoSVdlYlZpZXcqLCBMUFBPSU5ULCBXZWJEcmFnU291cmNlQWN0aW9uKikgeyByZXR1
cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdp
bGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihJV2ViVmlldyosIFdlYkRyYWdTb3VyY2VBY3Rpb24s
IExQUE9JTlQsIElEYXRhT2JqZWN0KiwgSURhdGFPYmplY3QqKikgeyByZXR1cm4gRV9OT1RJTVBM
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKElXZWJWaWV3Kiwgdm9pZCosIElQcm9wZXJ0eUJhZyopIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNDdXN0b21N
ZW51SW1wbGVtZW50YXRpb24oQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0cmFja0N1c3RvbVBvcHVwTWVudShJV2ViVmll
dyosIE9MRV9IQU5ETEUsIExQUE9JTlQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtZWFzdXJlQ3VzdG9tTWVudUl0ZW0oSVdlYlZp
ZXcqLCB2b2lkKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGRyYXdDdXN0b21NZW51SXRlbShJV2ViVmlldyosIHZvaWQqKSB7IHJl
dHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
YWRkQ3VzdG9tTWVudURyYXdpbmdEYXRhKElXZWJWaWV3KiwgT0xFX0hBTkRMRSkgeyByZXR1cm4g
RV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFu
VXBDdXN0b21NZW51RHJhd2luZ0RhdGEoSVdlYlZpZXcqLCBPTEVfSEFORExFKSB7IHJldHVybiBF
X05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuVGFr
ZUZvY3VzKElXZWJWaWV3KiwgQk9PTCwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YWtlRm9jdXMoSVdlYlZpZXcqLCBC
T09MKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcmVnaXN0ZXJVbmRvV2l0aFRhcmdldChJV2ViVW5kb1RhcmdldCosIEJTVFIsIElV
bmtub3duKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHJlbW92ZUFsbEFjdGlvbnNXaXRoVGFyZ2V0KElXZWJVbmRvVGFyZ2V0Kikg
eyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldEFjdGlvblRpdGxlKEJTVFIpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bmRvKCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlZG8oKSB7IHJldHVybiBF
X05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuVW5k
byhCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGNhblJlZG8oQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmludEZyYW1lKElXZWJWaWV3KiwgSVdl
YkZyYW1lICopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBmdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoSVdlYlZpZXcqLCBCU1RSKikg
eyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHdlYlZpZXdIZWFkZXJIZWlnaHQoSVdlYlZpZXcqLCBmbG9hdCopIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3Rm9v
dGVySGVpZ2h0KElXZWJWaWV3KiwgZmxvYXQqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0hlYWRlckluUmVjdChJV2ViVmll
dyosIFJFQ1QqLCBPTEVfSEFORExFKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0Zvb3RlckluUmVjdChJV2ViVmlldyosIFJF
Q1QqLCBPTEVfSEFORExFLCBVSU5ULCBVSU5UKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld1ByaW50aW5nTWFyZ2luUmVj
dChJV2ViVmlldyosIFJFQ1QqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY2FuUnVuTW9kYWwoSVdlYlZpZXcqLCBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZU1vZGFsRGlhbG9nKElX
ZWJWaWV3KiwgSVdlYlVSTFJlcXVlc3QqLCBJV2ViVmlldyoqKSB7IHJldHVybiBFX05PVElNUEw7
IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuTW9kYWwoSVdlYlZp
ZXcqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaXNNZW51QmFyVmlzaWJsZShJV2ViVmlldyosIEJPT0wqKSB7IHJldHVybiBFX05P
VElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TWVudUJh
clZpc2libGUoSVdlYlZpZXcqLCBCT09MKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuRGF0YWJhc2VTaXplTGltaXRQcm9tcHQo
SVdlYlZpZXcqLCBCU1RSLCBJV2ViRnJhbWUqLCBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhaW50Q3VzdG9tU2Nyb2xs
YmFyKElXZWJWaWV3KiwgSERDLCBSRUNULCBXZWJTY3JvbGxCYXJDb250cm9sU2l6ZSwgV2ViU2Ny
b2xsYmFyQ29udHJvbFN0YXRlLCBXZWJTY3JvbGxiYXJDb250cm9sUGFydCwgQk9PTCwgZmxvYXQs
IGZsb2F0LCBXZWJTY3JvbGxiYXJDb250cm9sUGFydE1hc2spIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWludEN1c3RvbVNjcm9s
bENvcm5lcihJV2ViVmlldyosIEhEQywgUkVDVCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisKK3By
aXZhdGU6CisgICAgaW50IG1fcmVmQ291bnQ7Cit9OworCisjZW5kaWYKSW5kZXg6IFdlYktpdFRv
b2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5jcHAJKHJldmlzaW9uIDUyMDUyKQorKysgV2ViS2l0
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwx
MyArMjUsMTkgQEAKIAogI2luY2x1ZGUgInN0ZGFmeC5oIgogI2luY2x1ZGUgIldpbkxhdW5jaGVy
LmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dlYktpdENPTUFQSS5oPgogCiAjaW5jbHVkZSA8Y29tbWN0
cmwuaD4KKyNpbmNsdWRlIDxjb21tZGxnLmg+CiAjaW5jbHVkZSA8b2JqYmFzZS5oPgogI2luY2x1
ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3aW5pbmV0Lmg+CiAKKyNpbmNsdWRlIDxXZWJLaXQv
V2ViS2l0Q09NQVBJLmg+CisKKyNpbmNsdWRlICJQcmludFdlYlVJRGVsZWdhdGUuaCIKKworY2xh
c3MgUHJpbnRXZWJVSURlbGVnYXRlOworCiAjZGVmaW5lIE1BWF9MT0FEU1RSSU5HIDEwMAogI2Rl
ZmluZSBVUkxCQVJfSEVJR0hUICAyNAogCkBAIC00Myw2ICs0OSw3IEBAIGxvbmcgRGVmRWRpdFBy
b2M7CiBJV2ViVmlldyogZ1dlYlZpZXcgPSAwOwogSFdORCBnVmlld1dpbmRvdyA9IDA7CiBXaW5M
YXVuY2hlcldlYkhvc3QqIGdXZWJIb3N0ID0gMDsKK1ByaW50V2ViVUlEZWxlZ2F0ZSogZ1ByaW50
RGVsZWdhdGUgPSAwOwogVENIQVIgc3pUaXRsZVtNQVhfTE9BRFNUUklOR107ICAgICAgICAgICAg
ICAgICAgICAvLyBUaGUgdGl0bGUgYmFyIHRleHQKIFRDSEFSIHN6V2luZG93Q2xhc3NbTUFYX0xP
QURTVFJJTkddOyAgICAgICAgICAgIC8vIHRoZSBtYWluIHdpbmRvdyBjbGFzcyBuYW1lCiAKQEAg
LTE2NCw3ICsxNzEsNyBAQCBpbnQgQVBJRU5UUlkgX3RXaW5NYWluKEhJTlNUQU5DRSBoSW5zdGFu
CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIC8vIEluaXQgQ09NCi0gICAgT2xlSW5pdGlh
bGl6ZShOVUxMKTsKKyAgICBPbGVJbml0aWFsaXplKDApOwogCiAgICAgaFVSTEJhclduZCA9IENy
ZWF0ZVdpbmRvdyhMIkVESVQiLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgV1NfQ0hJTEQg
fCBXU19WSVNJQkxFIHwgV1NfQk9SREVSIHwgRVNfTEVGVCB8IEVTX0FVVE9WU0NST0xMLCAKQEAg
LTE3NCw3ICsxODEsNyBAQCBpbnQgQVBJRU5UUlkgX3RXaW5NYWluKEhJTlNUQU5DRSBoSW5zdGFu
CiAgICAgICAgICAgICAgICAgICAgICAgICBoSW5zdGFuY2UsIDApOwogCiAgICAgRGVmRWRpdFBy
b2MgPSBHZXRXaW5kb3dMb25nKGhVUkxCYXJXbmQsIEdXTF9XTkRQUk9DKTsKLSAgICBTZXRXaW5k
b3dMb25nKGhVUkxCYXJXbmQsIEdXTF9XTkRQUk9DLChsb25nKU15RWRpdFByb2MpOworICAgIFNl
dFdpbmRvd0xvbmcoaFVSTEJhclduZCwgR1dMX1dORFBST0MsIChsb25nKU15RWRpdFByb2MpOwog
ICAgIFNldEZvY3VzKGhVUkxCYXJXbmQpOwogCiAgICAgSFJFU1VMVCBociA9IFdlYktpdENyZWF0
ZUluc3RhbmNlKENMU0lEX1dlYlZpZXcsIDAsIElJRF9JV2ViVmlldywgKHZvaWQqKikmZ1dlYlZp
ZXcpOwpAQCAtMTg3LDYgKzE5NCwxMiBAQCBpbnQgQVBJRU5UUlkgX3RXaW5NYWluKEhJTlNUQU5D
RSBoSW5zdGFuCiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIGdvdG8gZXhpdDsKIAorICAg
IGdQcmludERlbGVnYXRlID0gbmV3IFByaW50V2ViVUlEZWxlZ2F0ZSgpOworICAgIGdQcmludERl
bGVnYXRlLT5BZGRSZWYoKTsKKyAgICBociA9IGdXZWJWaWV3LT5zZXRVSURlbGVnYXRlKGdQcmlu
dERlbGVnYXRlKTsKKyAgICBpZiAoRkFJTEVEIChocikpCisgICAgICAgIGdvdG8gZXhpdDsKKwog
ICAgIGhyID0gZ1dlYlZpZXctPnNldEhvc3RXaW5kb3coKE9MRV9IQU5ETEUpIGhNYWluV25kKTsK
ICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgZ290byBleGl0OwpAQCAtMjI0LDcgKzIzNyw3
IEBAIGludCBBUElFTlRSWSBfdFdpbk1haW4oSElOU1RBTkNFIGhJbnN0YW4KICAgICBoQWNjZWxU
YWJsZSA9IExvYWRBY2NlbGVyYXRvcnMoaEluc3RhbmNlLCBNQUtFSU5UUkVTT1VSQ0UoSURDX1dJ
TkxBVU5DSEVSKSk7CiAKICAgICAvLyBNYWluIG1lc3NhZ2UgbG9vcDoKLSAgICB3aGlsZSAoR2V0
TWVzc2FnZSgmbXNnLCBOVUxMLCAwLCAwKSkgeworICAgIHdoaWxlIChHZXRNZXNzYWdlKCZtc2cs
IDAsIDAsIDApKSB7CiAgICAgICAgIGlmICghVHJhbnNsYXRlQWNjZWxlcmF0b3IobXNnLmh3bmQs
IGhBY2NlbFRhYmxlLCAmbXNnKSkgewogICAgICAgICAgICAgVHJhbnNsYXRlTWVzc2FnZSgmbXNn
KTsKICAgICAgICAgICAgIERpc3BhdGNoTWVzc2FnZSgmbXNnKTsKQEAgLTIzMiw2ICsyNDUsNyBA
QCBpbnQgQVBJRU5UUlkgX3RXaW5NYWluKEhJTlNUQU5DRSBoSW5zdGFuCiAgICAgfQogCiBleGl0
OgorICAgIGdQcmludERlbGVnYXRlLT5SZWxlYXNlKCk7CiAgICAgZ1dlYlZpZXctPlJlbGVhc2Uo
KTsKICAgICBzaHV0RG93bldlYktpdCgpOwogI2lmZGVmIF9DUlREQkdfTUFQX0FMTE9DCkBAIC0y
NTYsNyArMjcwLDcgQEAgQVRPTSBNeVJlZ2lzdGVyQ2xhc3MoSElOU1RBTkNFIGhJbnN0YW5jZQog
ICAgIHdjZXguY2JXbmRFeHRyYSAgICAgPSAwOwogICAgIHdjZXguaEluc3RhbmNlICAgICAgPSBo
SW5zdGFuY2U7CiAgICAgd2NleC5oSWNvbiAgICAgICAgICA9IExvYWRJY29uKGhJbnN0YW5jZSwg
TUFLRUlOVFJFU09VUkNFKElESV9XSU5MQVVOQ0hFUikpOwotICAgIHdjZXguaEN1cnNvciAgICAg
ICAgPSBMb2FkQ3Vyc29yKE5VTEwsIElEQ19BUlJPVyk7CisgICAgd2NleC5oQ3Vyc29yICAgICAg
ICA9IExvYWRDdXJzb3IoMCwgSURDX0FSUk9XKTsKICAgICB3Y2V4LmhickJhY2tncm91bmQgID0g
MDsKICAgICB3Y2V4Lmxwc3pNZW51TmFtZSAgID0gTUFLRUlOVFJFU09VUkNFKElEQ19XSU5MQVVO
Q0hFUik7CiAgICAgd2NleC5scHN6Q2xhc3NOYW1lICA9IHN6V2luZG93Q2xhc3M7CkBAIC0yNjcs
MTggKzI4MSw5NyBAQCBBVE9NIE15UmVnaXN0ZXJDbGFzcyhISU5TVEFOQ0UgaEluc3RhbmNlCiAK
IEJPT0wgSW5pdEluc3RhbmNlKEhJTlNUQU5DRSBoSW5zdGFuY2UsIGludCBuQ21kU2hvdykKIHsK
LSAgIGhJbnN0ID0gaEluc3RhbmNlOyAvLyBTdG9yZSBpbnN0YW5jZSBoYW5kbGUgaW4gb3VyIGds
b2JhbCB2YXJpYWJsZQorICAgIGhJbnN0ID0gaEluc3RhbmNlOyAvLyBTdG9yZSBpbnN0YW5jZSBo
YW5kbGUgaW4gb3VyIGdsb2JhbCB2YXJpYWJsZQorCisgICAgaE1haW5XbmQgPSBDcmVhdGVXaW5k
b3coc3pXaW5kb3dDbGFzcywgc3pUaXRsZSwgV1NfT1ZFUkxBUFBFRFdJTkRPVywKKyAgICAgICAg
Q1dfVVNFREVGQVVMVCwgMCwgQ1dfVVNFREVGQVVMVCwgMCwgMCwgMCwgaEluc3RhbmNlLCAwKTsK
KworICAgIGlmICghaE1haW5XbmQpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIFNob3dX
aW5kb3coaE1haW5XbmQsIG5DbWRTaG93KTsKKyAgICBVcGRhdGVXaW5kb3coaE1haW5XbmQpOwor
CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK0JPT0wgQ0FMTEJBQ0sgQWJvcnRQcm9jKEhEQyBoREMs
IGludCBFcnJvcikKK3sKKyAgICBNU0cgbXNnOworICAgIHdoaWxlICg6OlBlZWtNZXNzYWdlKCZt
c2csIDAsIDAsIDAsIFBNX1JFTU9WRSkpIHsKKyAgICAgICAgOjpUcmFuc2xhdGVNZXNzYWdlKCZt
c2cpOworICAgICAgICA6OkRpc3BhdGNoTWVzc2FnZSgmbXNnKTsKKyAgICB9CisKKyAgICByZXR1
cm4gVFJVRTsKK30KKworc3RhdGljIEhEQyBnZXRQcmludGVyREMoKQoreworICAgIFBSSU5URExH
IHBkbGc7CisgICAgbWVtc2V0KCZwZGxnLCAwLCBzaXplb2YoUFJJTlRETEcpKTsKKyAgICBwZGxn
LmxTdHJ1Y3RTaXplID0gc2l6ZW9mKFBSSU5URExHKTsKKyAgICBwZGxnLkZsYWdzID0gUERfUFJJ
TlRTRVRVUCB8IFBEX1JFVFVSTkRDOworCisgICAgOjpQcmludERsZygmcGRsZyk7CisKKyAgICBy
ZXR1cm4gcGRsZy5oREM7Cit9CisKK3ZvaWQgaW5pdERvY1N0cnVjdChET0NJTkZPKiBkaSwgVENI
QVIqIGRvY25hbWUpCit7CisgICAgbWVtc2V0KGRpLCAwLCBzaXplb2YoRE9DSU5GTykpOworICAg
IGRpLT5jYlNpemUgPSBzaXplb2YoRE9DSU5GTyk7CisgICAgZGktPmxwc3pEb2NOYW1lID0gZG9j
bmFtZTsKK30KKwordm9pZCBQcmludFZpZXcoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJB
TSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAgSERDIHByaW50REMgPSBnZXRQcmludGVy
REMoKTsKKyAgICBpZiAoIXByaW50REMpIHsKKyAgICAgICAgOjpNZXNzYWdlQm94KDAsIF9UKCJF
cnJvciBjcmVhdGluZyBwcmludGluZyBEQyIpLCBfVCgiRXJyb3IiKSwgTUJfQVBQTE1PREFMIHwg
TUJfT0spOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKDo6U2V0QWJvcnRQcm9j
KHByaW50REMsIEFib3J0UHJvYykgPT0gU1BfRVJST1IpIHsKKyAgICAgICAgOjpNZXNzYWdlQm94
KDAsIF9UKCJFcnJvciBzZXR0aW5nIHVwIEFib3J0UHJvYyIpLCBfVCgiRXJyb3IiKSwgTUJfQVBQ
TE1PREFMIHwgTUJfT0spOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSVdlYkZyYW1l
KiBmcmFtZSA9IDA7CisgICAgaWYgKEZBSUxFRChnV2ViVmlldy0+bWFpbkZyYW1lKCZmcmFtZSkp
KQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBJV2ViRnJhbWVQcml2YXRlKiBmcmFtZVByaXZh
dGUgPSAwOworICAgIGlmIChGQUlMRUQgKGZyYW1lLT5RdWVyeUludGVyZmFjZSgmZnJhbWVQcml2
YXRlKSkpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIGZyYW1lUHJpdmF0ZS0+c2V0SW5Qcmlu
dGluZ01vZGUoVFJVRSwgcHJpbnREQyk7CiAKLSAgIGhNYWluV25kID0gQ3JlYXRlV2luZG93KHN6
V2luZG93Q2xhc3MsIHN6VGl0bGUsIFdTX09WRVJMQVBQRURXSU5ET1csCi0gICAgICBDV19VU0VE
RUZBVUxULCAwLCBDV19VU0VERUZBVUxULCAwLCBOVUxMLCBOVUxMLCBoSW5zdGFuY2UsIE5VTEwp
OworICAgIFVJTlQgcGFnZUNvdW50ID0gMDsKKyAgICBmcmFtZVByaXZhdGUtPmdldFByaW50ZWRQ
YWdlQ291bnQocHJpbnREQywgJnBhZ2VDb3VudCk7CisKKyAgICBET0NJTkZPIGRpOworICAgIGlu
aXREb2NTdHJ1Y3QoJmRpLCBfVCgiV2ViS2l0IERvYyIpKTsKKyAgICA6OlN0YXJ0RG9jKHByaW50
REMsICZkaSk7CisKKyAgICB2b2lkKiBncmFwaGljc0NvbnRleHQgPSAwOworICAgIGZvciAoc2l6
ZV90IHBhZ2UgPSAwOyBwYWdlIDwgcGFnZUNvdW50OyArK3BhZ2UpIHsKKyAgICAgICAgOjpTdGFy
dFBhZ2UocHJpbnREQyk7CisgICAgICAgIGZyYW1lUHJpdmF0ZS0+c3Bvb2xQYWdlcyhwcmludERD
LCBwYWdlLCBwYWdlLCBncmFwaGljc0NvbnRleHQpOworICAgICAgICA6OkVuZFBhZ2UocHJpbnRE
Qyk7CisgICAgfQogCi0gICBpZiAoIWhNYWluV25kKQotICAgICAgcmV0dXJuIEZBTFNFOworICAg
IGZyYW1lUHJpdmF0ZS0+c2V0SW5QcmludGluZ01vZGUoRkFMU0UsIHByaW50REMpOwogCi0gICBT
aG93V2luZG93KGhNYWluV25kLCBuQ21kU2hvdyk7Ci0gICBVcGRhdGVXaW5kb3coaE1haW5XbmQp
OworICAgIDo6RW5kRG9jKHByaW50REMpOworICAgIDo6RGVsZXRlREMocHJpbnREQyk7CiAKLSAg
IHJldHVybiBUUlVFOworZXhpdDoKKyAgICBpZiAoZnJhbWUpCisgICAgICAgIGZyYW1lLT5SZWxl
YXNlKCk7CisgICAgaWYgKGZyYW1lUHJpdmF0ZSkKKyAgICAgICAgZnJhbWVQcml2YXRlLT5SZWxl
YXNlKCk7CiB9CiAKIExSRVNVTFQgQ0FMTEJBQ0sgV25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVz
c2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKQEAgLTI5MywxNCArMzg2LDE3IEBA
IExSRVNVTFQgQ0FMTEJBQ0sgV25kUHJvYyhIV05EIGhXbmQsIFVJTlQKICAgICAgICAgd21FdmVu
dCA9IEhJV09SRCh3UGFyYW0pOwogICAgICAgICAvLyBQYXJzZSB0aGUgbWVudSBzZWxlY3Rpb25z
OgogICAgICAgICBzd2l0Y2ggKHdtSWQpIHsKLSAgICAgICAgICAgIGNhc2UgSURNX0FCT1VUOgot
ICAgICAgICAgICAgICAgIERpYWxvZ0JveChoSW5zdCwgTUFLRUlOVFJFU09VUkNFKElERF9BQk9V
VEJPWCksIGhXbmQsIEFib3V0KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgSURNX0VYSVQ6Ci0gICAgICAgICAgICAgICAgRGVzdHJveVdpbmRvdyhoV25kKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIERlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwor
ICAgICAgICBjYXNlIElETV9BQk9VVDoKKyAgICAgICAgICAgIERpYWxvZ0JveChoSW5zdCwgTUFL
RUlOVFJFU09VUkNFKElERF9BQk9VVEJPWCksIGhXbmQsIEFib3V0KTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIElETV9FWElUOgorICAgICAgICAgICAgRGVzdHJveVdpbmRvdyho
V25kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElETV9QUklOVDoKKyAgICAg
ICAgICAgIFByaW50VmlldyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBEZWZXaW5k
b3dQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFdNX0RFU1RST1k6CkBAIC0zMjMsMjIgKzQxOSwyMiBAQCBMUkVT
VUxUIENBTExCQUNLIFduZFByb2MoSFdORCBoV25kLCBVSU5UCiBMUkVTVUxUIENBTExCQUNLIE15
RWRpdFByb2MoSFdORCBoRGxnLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pCiB7CiAgICAgc3dpdGNoIChtZXNzYWdlKSB7Ci0gICAgICAgIGNhc2UgV01fQ0hBUjoK
LSAgICAgICAgICAgIGlmICh3UGFyYW0gPT0gMTMpIHsgLy8gRW50ZXIgS2V5Ci0gICAgICAgICAg
ICAgICAgd2NoYXJfdCBzdHJQdHJbTUFYX1VSTF9MRU5HVEhdOwotICAgICAgICAgICAgICAgICoo
KExQV09SRClzdHJQdHIpID0gTUFYX1VSTF9MRU5HVEg7IAotICAgICAgICAgICAgICAgIGludCBz
dHJMZW4gPSBTZW5kTWVzc2FnZShoRGxnLCBFTV9HRVRMSU5FLCAwLCAoTFBBUkFNKXN0clB0cik7
Ci0KLSAgICAgICAgICAgICAgICBCU1RSIGJzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbihzdHJQdHIs
IHN0ckxlbik7Ci0gICAgICAgICAgICAgICAgbG9hZFVSTChic3RyKTsKLSAgICAgICAgICAgICAg
ICBTeXNGcmVlU3RyaW5nKGJzdHIpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gKExSRVNVTFQpQ2FsbFdpbmRv
d1Byb2MoKFdORFBST0MpRGVmRWRpdFByb2MsaERsZyxtZXNzYWdlLHdQYXJhbSxsUGFyYW0pOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgcmV0dXJu
IChMUkVTVUxUKUNhbGxXaW5kb3dQcm9jKChXTkRQUk9DKURlZkVkaXRQcm9jLGhEbGcsbWVzc2Fn
ZSx3UGFyYW0sbFBhcmFtKTsKKyAgICBjYXNlIFdNX0NIQVI6CisgICAgICAgIGlmICh3UGFyYW0g
PT0gMTMpIHsgLy8gRW50ZXIgS2V5CisgICAgICAgICAgICB3Y2hhcl90IHN0clB0cltNQVhfVVJM
X0xFTkdUSF07CisgICAgICAgICAgICAqKChMUFdPUkQpc3RyUHRyKSA9IE1BWF9VUkxfTEVOR1RI
OyAKKyAgICAgICAgICAgIGludCBzdHJMZW4gPSBTZW5kTWVzc2FnZShoRGxnLCBFTV9HRVRMSU5F
LCAwLCAoTFBBUkFNKXN0clB0cik7CisKKyAgICAgICAgICAgIEJTVFIgYnN0ciA9IFN5c0FsbG9j
U3RyaW5nTGVuKHN0clB0ciwgc3RyTGVuKTsKKyAgICAgICAgICAgIGxvYWRVUkwoYnN0cik7Cisg
ICAgICAgICAgICBTeXNGcmVlU3RyaW5nKGJzdHIpOworCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gKExSRVNVTFQpQ2FsbFdpbmRvd1Byb2MoKFdORFBS
T0MpRGVmRWRpdFByb2MsIGhEbGcsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIChMUkVTVUxUKUNhbGxXaW5kb3dQ
cm9jKChXTkRQUk9DKURlZkVkaXRQcm9jLCBoRGxnLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTM3Miw3ICs0NjgsNyBA
QCBzdGF0aWMgdm9pZCBsb2FkVVJMKEJTVFIgdXJsQlN0cikKIAogICAgIGlmICh1cmxCU3RyICYm
IHVybEJTdHJbMF0gJiYgKFBhdGhGaWxlRXhpc3RzKHVybEJTdHIpIHx8IFBhdGhJc1VOQyh1cmxC
U3RyKSkpIHsKICAgICAgICAgVENIQVIgZmlsZVVSTFtJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSF07
Ci0gICAgICAgIERXT1JEIGZpbGVVUkxMZW5ndGggPSBzaXplb2YoZmlsZVVSTCkvc2l6ZW9mKGZp
bGVVUkxbMF0pOworICAgICAgICBEV09SRCBmaWxlVVJMTGVuZ3RoID0gc2l6ZW9mKGZpbGVVUkwp
IC8gc2l6ZW9mKGZpbGVVUkxbMF0pOwogCiAgICAgICAgIGlmIChTVUNDRUVERUQoVXJsQ3JlYXRl
RnJvbVBhdGgodXJsQlN0ciwgZmlsZVVSTCwgJmZpbGVVUkxMZW5ndGgsIDApKSkKICAgICAgICAg
ICAgIFN5c1JlQWxsb2NTdHJpbmcoJnVybEJTdHIsIGZpbGVVUkwpOwpJbmRleDogV2ViS2l0VG9v
bHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9X
aW5MYXVuY2hlci9XaW5MYXVuY2hlci5oCShyZXZpc2lvbiA1MjA1MikKKysrIFdlYktpdFRvb2xz
L1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDExICs5OSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gSlNDb250ZXh0UmVmIGNvbnRleHQsCiAg
ICAgICAgIC8qIFtpbl0gKi8gSlNPYmplY3RSZWYgd2luZG93U2NyaXB0T2JqZWN0KSAgeyByZXR1
cm4gU19PSzsgfQogCi0gICAgdmlydHVhbCAvKiBbbG9jYWxdICovIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkQ2xlYXJXaW5kb3dPYmplY3QoIA0KLSAgICAgICAgLyogW2luXSAqLyBJV2Vi
VmlldyAqd2ViVmlldywNCi0gICAgICAgIC8qIFtpbl0gKi8gSlNDb250ZXh0UmVmIGNvbnRleHQs
DQotICAgICAgICAvKiBbaW5dICovIEpTT2JqZWN0UmVmIHdpbmRvd1NjcmlwdE9iamVjdCwNCi0g
ICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KKyAg
ICB2aXJ0dWFsIC8qIFtsb2NhbF0gKi8gSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRDbGVh
cldpbmRvd09iamVjdCggCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCisg
ICAgICAgIC8qIFtpbl0gKi8gSlNDb250ZXh0UmVmIGNvbnRleHQsCisgICAgICAgIC8qIFtpbl0g
Ki8gSlNPYmplY3RSZWYgd2luZG93U2NyaXB0T2JqZWN0LAorICAgICAgICAvKiBbaW5dICovIElX
ZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIFNfT0s7IH0KIAogICAgIC8vIFdpbkxhdW5jaGVyV2Vi
SG9zdAogCkluZGV4OiBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5yYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5yYwkocmV2aXNp
b24gNTIwNTIpCisrKyBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5yYwkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBJRENfV0lOTEFVTkNIRVIgTUVOVSAKIEJFR0lO
CiAgICAgUE9QVVAgIiZGaWxlIgogICAgIEJFR0lOCisgICAgICAgIE1FTlVJVEVNICImUHJpbnRc
dEN0cmwtUCIsICAgICAgICAgICAgICBJRE1fUFJJTlQKICAgICAgICAgTUVOVUlURU0gIkUmeGl0
IiwgICAgICAgICAgICAgICAgICAgICAgIElETV9FWElUCiAgICAgRU5ECiAgICAgUE9QVVAgIiZI
ZWxwIgpAQCAtNzQsOCArNzUsOCBAQCBDQVBUSU9OICJBYm91dCIKIEZPTlQgOCwgIlN5c3RlbSIs
IDAsIDAsIDB4MAogQkVHSU4KICAgICBJQ09OICAgICAgICAgICAgSURJX1dJTkxBVU5DSEVSLElE
Q19NWUlDT04sMTQsOSwyMCwyMAotICAgIExURVhUICAgICAgICAgICAiV2luTGF1bmNoZXIgVmVy
c2lvbiAxLjEiLElEQ19TVEFUSUMsNDksMTAsMTE5LDgsU1NfTk9QUkVGSVgKLSAgICBMVEVYVCAg
ICAgICAgICAgIkNvcHlyaWdodCAoQykgMjAwOCIsSURDX1NUQVRJQyw0OSwyMCwxMTksOAorICAg
IExURVhUICAgICAgICAgICAiV2luTGF1bmNoZXIgVmVyc2lvbiAxLjIiLElEQ19TVEFUSUMsNDks
MTAsMTE5LDgsU1NfTk9QUkVGSVgKKyAgICBMVEVYVCAgICAgICAgICAgIkNvcHlyaWdodCAoQykg
MjAwOSIsSURDX1NUQVRJQyw0OSwyMCwxMTksOAogICAgIERFRlBVU0hCVVRUT04gICAiT0siLElE
T0ssMTk1LDYsMzAsMTEsV1NfR1JPVVAKIEVORAogCkluZGV4OiBXZWJLaXRUb29scy9XaW5MYXVu
Y2hlci9XaW5MYXVuY2hlci52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2luTGF1
bmNoZXIvV2luTGF1bmNoZXIudmNwcm9qCShyZXZpc2lvbiA1MjA1MikKKysrIFdlYktpdFRvb2xz
L1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNDA5LDYg
KzQwOSwxMCBAQAogCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2
LTJBMzJENzUyQTJGRn0iDQogCQkJPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLlxQ
cmludFdlYlVJRGVsZWdhdGUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQog
CQkJCVJlbGF0aXZlUGF0aD0iLlxzdGRhZnguY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KQEAgLTQ2Myw2ICs0NjcsMTAgQEAKIAkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5Mzk5
NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9Ig0KIAkJCT4NCiAJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii5cUHJpbnRXZWJVSURlbGVnYXRlLmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuXFJlc291cmNlLmgiDQogCQkJCT4N
CiAJCQk8L0ZpbGU+DQpJbmRleDogV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvcmVzb3VyY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9yZXNvdXJjZS5oCShyZXZpc2lv
biA1MjA1MikKKysrIFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL3Jlc291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcsNyArNyw4IEBACiAjZGVmaW5lIElEU19BUFBfVElUTEUgICAgICAgICAgICAg
ICAgICAgMTAzCiAjZGVmaW5lIElERF9BQk9VVEJPWCAgICAgICAgICAgICAgICAgICAgMTAzCiAj
ZGVmaW5lIElETV9BQk9VVCAgICAgICAgICAgICAgICAgICAgICAgMTA0Ci0jZGVmaW5lIElETV9F
WElUICAgICAgICAgICAgICAgICAgICAgICAgMTA1CisjZGVmaW5lIElETV9QUklOVCAgICAgICAg
ICAgICAgICAgICAgICAgMTA1CisjZGVmaW5lIElETV9FWElUICAgICAgICAgICAgICAgICAgICAg
ICAgMTA2CiAjZGVmaW5lIElESV9XSU5MQVVOQ0hFUiAgICAgICAgICAgICAgICAgMTA3CiAjZGVm
aW5lIElESV9TTUFMTCAgICAgICAgICAgICAgICAgICAgICAgMTA4CiAjZGVmaW5lIElEQ19XSU5M
QVVOQ0hFUiAgICAgICAgICAgICAgICAgMTA5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44842</attachid>
            <date>2009-12-14 21:54:06 -0800</date>
            <delta_ts>2009-12-14 22:26:52 -0800</delta_ts>
            <desc>Extend WinLauncher with printing support.</desc>
            <filename>print_example.patch</filename>
            <type>text/plain</type>
            <size>25340</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUyMTIxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE1IEBACisyMDA5LTEyLTEzICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcm92aWRlIGFuIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIHByaW50
aW5nIHVuZGVyIFdpbmRvd3MuCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyNTA0LmAKKworICAgICAgICAqIFdpbkxhdW5jaGVyL1ByaW50V2ViVUlEZWxl
Z2F0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpRdWVyeUludGVy
ZmFjZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OkFkZFJlZik6CisgICAgICAgIChQ
cmludFdlYlVJRGVsZWdhdGU6OlJlbGVhc2UpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRl
Ojp3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KToKKyAgICAgICAgKiBXaW5MYXVuY2hlci9Qcmlu
dFdlYlVJRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OlBy
aW50V2ViVUlEZWxlZ2F0ZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmNyZWF0ZVdl
YlZpZXdXaXRoUmVxdWVzdCk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdT
aG93KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0Nsb3NlKToKKyAgICAg
ICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0ZvY3VzKToKKyAgICAgICAgKFByaW50V2Vi
VUlEZWxlZ2F0ZTo6d2ViVmlld1VuZm9jdXMpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRl
Ojp3ZWJWaWV3Rmlyc3RSZXNwb25kZXIpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpt
YWtlRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpzZXRTdGF0
dXNUZXh0KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld1N0YXR1c1RleHQp
OgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjp3ZWJWaWV3QXJlVG9vbGJhcnNWaXNpYmxl
KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6c2V0VG9vbGJhcnNWaXNpYmxlKToKKyAg
ICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0lzU3RhdHVzQmFyVmlzaWJsZSk6Cisg
ICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnNldFN0YXR1c0JhclZpc2libGUpOgorICAgICAg
ICAoUHJpbnRXZWJVSURlbGVnYXRlOjp3ZWJWaWV3SXNSZXNpemFibGUpOgorICAgICAgICAoUHJp
bnRXZWJVSURlbGVnYXRlOjpzZXRSZXNpemFibGUpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVn
YXRlOjpzZXRGcmFtZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdGcmFt
ZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnNldENvbnRlbnRSZWN0KToKKyAgICAg
ICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0NvbnRlbnRSZWN0KToKKyAgICAgICAgKFBy
aW50V2ViVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZSk6Cisg
ICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRo
TWVzc2FnZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0
SW5wdXRQYW5lbFdpdGhQcm9tcHQpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZSk6CisgICAgICAgIChQcmludFdlYlVJ
RGVsZWdhdGU6OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXIpOgor
ICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6Cisg
ICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KToK
KyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6dmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbSk6
CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnNob3VsZFBlcmZvcm1BY3Rpb24pOgorICAg
ICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJh
Z2dpbmdJbmZvKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpkcmFnU291
cmNlQWN0aW9uTWFza0ZvclBvaW50KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpo
YXNDdXN0b21NZW51SW1wbGVtZW50YXRpb24pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRl
Ojp0cmFja0N1c3RvbVBvcHVwTWVudSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6Om1l
YXN1cmVDdXN0b21NZW51SXRlbSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmRyYXdD
dXN0b21NZW51SXRlbSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmFkZEN1c3RvbU1l
bnVEcmF3aW5nRGF0YSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmNsZWFuVXBDdXN0
b21NZW51RHJhd2luZ0RhdGEpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpjYW5UYWtl
Rm9jdXMpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjp0YWtlRm9jdXMpOgorICAgICAg
ICAoUHJpbnRXZWJVSURlbGVnYXRlOjpyZWdpc3RlclVuZG9XaXRoVGFyZ2V0KToKKyAgICAgICAg
KFByaW50V2ViVUlEZWxlZ2F0ZTo6cmVtb3ZlQWxsQWN0aW9uc1dpdGhUYXJnZXQpOgorICAgICAg
ICAoUHJpbnRXZWJVSURlbGVnYXRlOjpzZXRBY3Rpb25UaXRsZSk6CisgICAgICAgIChQcmludFdl
YlVJRGVsZWdhdGU6OnVuZG8pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpyZWRvKToK
KyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6Y2FuVW5kbyk6CisgICAgICAgIChQcmludFdl
YlVJRGVsZWdhdGU6OmNhblJlZG8pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpwcmlu
dEZyYW1lKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6ZnRwRGlyZWN0b3J5VGVtcGxh
dGVQYXRoKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0hlYWRlckhlaWdo
dCk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdGb290ZXJIZWlnaHQpOgor
ICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpkcmF3SGVhZGVySW5SZWN0KToKKyAgICAgICAg
KFByaW50V2ViVUlEZWxlZ2F0ZTo6ZHJhd0Zvb3RlckluUmVjdCk6CisgICAgICAgIChQcmludFdl
YlVJRGVsZWdhdGU6OmNhblJ1bk1vZGFsKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6
Y3JlYXRlTW9kYWxEaWFsb2cpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpydW5Nb2Rh
bCk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmlzTWVudUJhclZpc2libGUpOgorICAg
ICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpzZXRNZW51QmFyVmlzaWJsZSk6CisgICAgICAgIChQ
cmludFdlYlVJRGVsZWdhdGU6OnJ1bkRhdGFiYXNlU2l6ZUxpbWl0UHJvbXB0KToKKyAgICAgICAg
KFByaW50V2ViVUlEZWxlZ2F0ZTo6cGFpbnRDdXN0b21TY3JvbGxiYXIpOgorICAgICAgICAoUHJp
bnRXZWJVSURlbGVnYXRlOjpwYWludEN1c3RvbVNjcm9sbENvcm5lcik6CisgICAgICAgICogV2lu
TGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwOiBBZGQgbmV3IFVJIGRlbGVnYXRlIGZvciBwcmludCBz
dXBwb3J0LgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0Ojp1cGRhdGVBZGRyZXNzQmFyKTog
Y2hlY2std2Via2l0LXN0eWxlIGZpeGVzLgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpR
dWVyeUludGVyZmFjZSk6IGNoZWNrLXdlYmtpdC1zdHlsZSBmaXhlcy4KKyAgICAgICAgKFdpbkxh
dW5jaGVyV2ViSG9zdDo6QWRkUmVmKTogY2hlY2std2Via2l0LXN0eWxlIGZpeGVzLgorICAgICAg
ICAoV2luTGF1bmNoZXJXZWJIb3N0OjpSZWxlYXNlKTogY2hlY2std2Via2l0LXN0eWxlIGZpeGVz
LgorICAgICAgICAocmVzaXplU3ViVmlld3MpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisg
ICAgICAgIChfdFdpbk1haW4pOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgIChN
eVJlZ2lzdGVyQ2xhc3MpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgIChJbml0
SW5zdGFuY2UpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgIChBYm9ydFByb2Mp
OiBOZXcgcHJpbnQgc3VwcG9ydCBmdW5jdGlvbi4KKyAgICAgICAgKGdldFByaW50ZXJEQyk6IE5l
dyBwcmludCBzdXBwb3J0IGZ1bmN0aW9uLgorICAgICAgICAoaW5pdERvY1N0cnVjdCk6IE5ldyBw
cmludCBzdXBwb3J0IGZ1bmN0aW9uLgorICAgICAgICAoUHJpbnRWaWV3KTogTmV3IHByaW50aW5n
IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV25kUHJvYyk6IEFkZCBzdXBwb3J0IGZvciBwcmlu
dGluZy4KKyAgICAgICAgKE15RWRpdFByb2MpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisg
ICAgICAgIChBYm91dCk6IGNoZWNrLXdlYmtpdC1zdHlsZSBmaXhlcy4KKyAgICAgICAgKGxvYWRV
UkwpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgICogV2luTGF1bmNoZXIvV2lu
TGF1bmNoZXIuaDoKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6V2luTGF1bmNoZXJXZWJI
b3N0KToKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldlYkhvc3Q6OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdpbkxhdW5j
aGVyV2ViSG9zdDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcik6CisgICAgICAgIChX
aW5MYXVuY2hlcldlYkhvc3Q6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXaW5M
YXVuY2hlcldlYkhvc3Q6OmRpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldl
Ykhvc3Q6OmRpZFJlY2VpdmVJY29uKToKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkRmFp
bExvYWRXaXRoRXJyb3IpOgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRDaGFuZ2VM
b2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldlYkhvc3Q6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTCk6CisgICAgICAgIChXaW5MYXVuY2hlcldl
Ykhvc3Q6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOgorICAgICAgICAoV2luTGF1
bmNoZXJXZWJIb3N0Ojp3aWxsQ2xvc2VGcmFtZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldlYkhv
c3Q6OndpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSk6CisgICAgICAgICogV2luTGF1bmNoZXIv
V2luTGF1bmNoZXIucmM6IEFkZCBtZW51IGVudHJ5IGZvciBwcmludGluZy4KKyAgICAgICAgKiBX
aW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3Byb2o6IEFkZCBuZXcgZmlsZXMuCisgICAgICAgICog
V2luTGF1bmNoZXIvcmVzb3VyY2UuaDogQWRkIG1lbnUgZW50cnkgZm9yIHByaW50aW5nLgorCiAy
MDA5LTEyLTE0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0VG9vbHMvV2luTGF1bmNo
ZXIvUHJpbnRXZWJVSURlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XaW5M
YXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9v
bHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVnYXRlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQnJlbnQgRnVsZ2hhbS4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJzdGRhZnguaCIKKyNpbmNsdWRlICJQcmludFdlYlVJRGVsZWdhdGUuaCIK
KyNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJLmg+CisKKyNpbmNsdWRlIDxjb21tY3RybC5o
PgorI2luY2x1ZGUgPGNvbW1kbGcuaD4KKyNpbmNsdWRlIDxvYmpiYXNlLmg+CisjaW5jbHVkZSA8
c2hsd2FwaS5oPgorI2luY2x1ZGUgPHdpbmluZXQuaD4KKworSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBQcmludFdlYlVJRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lk
KiogcHB2T2JqZWN0KQoreworICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmIChJc0VxdWFsR1VJ
RChyaWlkLCBJSURfSVVua25vd24pKQorICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SVdlYlVJRGVsZWdhdGUqPih0aGlzKTsKKyAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJ
SURfSVdlYlVJRGVsZWdhdGUpKQorICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SVdl
YlVJRGVsZWdhdGUqPih0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBFX05PSU5URVJG
QUNFOworCisgICAgQWRkUmVmKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK1VMT05HIFNURE1F
VEhPRENBTExUWVBFIFByaW50V2ViVUlEZWxlZ2F0ZTo6QWRkUmVmKHZvaWQpCit7CisgICAgcmV0
dXJuICsrbV9yZWZDb3VudDsKK30KKworVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUHJpbnRXZWJV
SURlbGVnYXRlOjpSZWxlYXNlKHZvaWQpCit7CisgICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNv
dW50OworICAgIGlmICghbmV3UmVmKQorICAgICAgICBkZWxldGUodGhpcyk7CisKKyAgICByZXR1
cm4gbmV3UmVmOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFByaW50V2ViVUlEZWxl
Z2F0ZTo6d2ViVmlld1ByaW50aW5nTWFyZ2luUmVjdChJV2ViVmlldyogdmlldywgUkVDVCogcmVj
dCkKK3sKKyAgICBpZiAoIXZpZXcgfHwgIXJlY3QpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CisKKyAgICBJV2ViRnJhbWUqIG1haW5GcmFtZSA9IDA7CisgICAgaWYgKEZBSUxFRCh2aWV3LT5t
YWluRnJhbWUoJm1haW5GcmFtZSkpKQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgSVdl
YkZyYW1lUHJpdmF0ZSogcHJpdmF0ZUZyYW1lID0gMDsKKyAgICBpZiAoRkFJTEVEKG1haW5GcmFt
ZS0+UXVlcnlJbnRlcmZhY2UoSUlEX0lXZWJGcmFtZVByaXZhdGUsICh2b2lkKiopJnByaXZhdGVG
cmFtZSkpKQorICAgIHsKKyAgICAgICAgbWFpbkZyYW1lLT5SZWxlYXNlKCk7CisgICAgICAgIHJl
dHVybiBFX0ZBSUw7CisgICAgfQorCisgICAgcHJpdmF0ZUZyYW1lLT5mcmFtZUJvdW5kcyhyZWN0
KTsKKworICAgIHJlY3QtPmxlZnQgKz0gMjA7CisgICAgcmVjdC0+dG9wICs9IDIwOworICAgIHJl
Y3QtPnJpZ2h0IC09IDIwOyAKKyAgICByZWN0LT5ib3R0b20gLT0gMjA7CisKKyAgICBwcml2YXRl
RnJhbWUtPlJlbGVhc2UoKTsKKyAgICBtYWluRnJhbWUtPlJlbGVhc2UoKTsKKworICAgIHJldHVy
biBTX09LOworfQpJbmRleDogV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVn
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURl
bGVnYXRlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9QcmludFdl
YlVJRGVsZWdhdGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEJyZW50IEZ1bGdoYW0uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFByaW50V2ViVUlE
ZWxlZ2F0ZV9oCisjZGVmaW5lIFByaW50V2ViVUlEZWxlZ2F0ZV9oCisKKyNpbmNsdWRlIDxXZWJL
aXQvV2ViS2l0Lmg+CisKK2NsYXNzIFByaW50V2ViVUlEZWxlZ2F0ZSA6IHB1YmxpYyBJV2ViVUlE
ZWxlZ2F0ZQoreworcHVibGljOgorICAgIFByaW50V2ViVUlEZWxlZ2F0ZSgpIDogbV9yZWZDb3Vu
dCgxKSB7fQorCisgICAgLy8gSVVua25vd24KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOwor
ICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpOworICAgIHZp
cnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKTsKKworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3QoSVdl
YlZpZXcqLCBJV2ViVVJMUmVxdWVzdCosIElXZWJWaWV3KiopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3U2hvdyhJV2Vi
VmlldyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB3ZWJWaWV3Q2xvc2UoSVdlYlZpZXcqKSB7IHJldHVybiBFX05PVElNUEw7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0ZvY3VzKElXZWJW
aWV3KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHdlYlZpZXdVbmZvY3VzKElXZWJWaWV3KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdGaXJzdFJlc3Bv
bmRlcihJV2ViVmlldyosIE9MRV9IQU5ETEUqKSAgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1ha2VGaXJzdFJlc3BvbmRlcihJV2Vi
VmlldyosIE9MRV9IQU5ETEUpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTdGF0dXNUZXh0KElXZWJWaWV3KiwgQlNUUikgeyBy
ZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHdlYlZpZXdTdGF0dXNUZXh0KElXZWJWaWV3KiwgQlNUUiopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3QXJlVG9vbGJh
cnNWaXNpYmxlKElXZWJWaWV3KiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUb29sYmFyc1Zpc2libGUoSVdlYlZp
ZXcqLCBCT09MKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgd2ViVmlld0lzU3RhdHVzQmFyVmlzaWJsZShJV2ViVmlldyosIEJPT0wq
KSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0U3RhdHVzQmFyVmlzaWJsZShJV2ViVmlldyosIEJPT0wpIHsgcmV0dXJuIEVfTk9U
SU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3SXNS
ZXNpemFibGUoSVdlYlZpZXcqLCBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFJlc2l6YWJsZShJV2ViVmlldyosIEJP
T0wpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRGcmFtZShJV2ViVmlldyosIFJFQ1QqKSB7IHJldHVybiBFX05PVElNUEw7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0ZyYW1lKElXZWJW
aWV3KiwgUkVDVCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRDb250ZW50UmVjdChJV2ViVmlldyosIFJFQ1QqKSB7IHJldHVy
biBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2Vi
Vmlld0NvbnRlbnRSZWN0KElXZWJWaWV3KiwgUkVDVCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5KYXZhU2NyaXB0QWxlcnRQ
YW5lbFdpdGhNZXNzYWdlKElXZWJWaWV3KiwgQlNUUikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bkphdmFTY3JpcHRDb25maXJt
UGFuZWxXaXRoTWVzc2FnZShJV2ViVmlldyosIEJTVFIsIEJPT0wqKSB7IHJldHVybiBFX05PVElN
UEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuSmF2YVNjcmlw
dFRleHRJbnB1dFBhbmVsV2l0aFByb21wdChJV2ViVmlldyosIEJTVFIsIEJTVFIsIEJTVFIqKSB7
IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoSVdlYlZpZXcqLCBCU1RS
LCBJV2ViRnJhbWUqLCBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVz
dWx0TGlzdGVuZXIoSVdlYlZpZXcqLCBJV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIqKSB7IHJl
dHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoSVdlYlZpZXcqLCBJUHJvcGVydHlCYWcqLCBVSU5UKSB7
IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY29udGV4dE1lbnVJdGVtc0ZvckVsZW1lbnQoSVdlYlZpZXcqLCBJUHJvcGVydHlCYWcqLCBP
TEVfSEFORExFLCBPTEVfSEFORExFKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW0oSVdl
YlZpZXcqLCBVSU5ULCBCT09MLCBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZFBlcmZvcm1BY3Rpb24oSVdlYlZp
ZXcqLCBVSU5ULCBVSU5UKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5n
SW5mbyhJV2ViVmlldyosIElEYXRhT2JqZWN0KiwgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKikg
eyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKElXZWJWaWV3KiwgV2ViRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uLCBJRGF0YU9iamVjdCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkcmFnU291cmNlQWN0aW9uTWFza0Zv
clBvaW50KElXZWJWaWV3KiwgTFBQT0lOVCwgV2ViRHJhZ1NvdXJjZUFjdGlvbiopIHsgcmV0dXJu
IEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxs
UGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oSVdlYlZpZXcqLCBXZWJEcmFnU291cmNlQWN0aW9uLCBM
UFBPSU5ULCBJRGF0YU9iamVjdCosIElEYXRhT2JqZWN0KiopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250ZXh0TWVudUl0ZW1T
ZWxlY3RlZChJV2ViVmlldyosIHZvaWQqLCBJUHJvcGVydHlCYWcqKSB7IHJldHVybiBFX05PVElN
UEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQ3VzdG9tTWVu
dUltcGxlbWVudGF0aW9uKEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdHJhY2tDdXN0b21Qb3B1cE1lbnUoSVdlYlZpZXcq
LCBPTEVfSEFORExFLCBMUFBPSU5UKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWVhc3VyZUN1c3RvbU1lbnVJdGVtKElXZWJWaWV3
Kiwgdm9pZCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBkcmF3Q3VzdG9tTWVudUl0ZW0oSVdlYlZpZXcqLCB2b2lkKikgeyByZXR1
cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFk
ZEN1c3RvbU1lbnVEcmF3aW5nRGF0YShJV2ViVmlldyosIE9MRV9IQU5ETEUpIHsgcmV0dXJuIEVf
Tk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGVhblVw
Q3VzdG9tTWVudURyYXdpbmdEYXRhKElXZWJWaWV3KiwgT0xFX0hBTkRMRSkgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhblRha2VG
b2N1cyhJV2ViVmlldyosIEJPT0wsIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGFrZUZvY3VzKElXZWJWaWV3KiwgQk9P
TCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHJlZ2lzdGVyVW5kb1dpdGhUYXJnZXQoSVdlYlVuZG9UYXJnZXQqLCBCU1RSLCBJVW5r
bm93biopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZW1vdmVBbGxBY3Rpb25zV2l0aFRhcmdldChJV2ViVW5kb1RhcmdldCopIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRBY3Rpb25UaXRsZShCU1RSKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdW5kbygpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZWRvKCkgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhblVuZG8o
Qk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjYW5SZWRvKEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJpbnRGcmFtZShJV2ViVmlldyosIElXZWJG
cmFtZSAqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKElXZWJWaWV3KiwgQlNUUiopIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB3ZWJWaWV3SGVhZGVySGVpZ2h0KElXZWJWaWV3KiwgZmxvYXQqKSB7IHJldHVybiBFX05PVElN
UEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0Zvb3Rl
ckhlaWdodChJV2ViVmlldyosIGZsb2F0KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYXdIZWFkZXJJblJlY3QoSVdlYlZpZXcq
LCBSRUNUKiwgT0xFX0hBTkRMRSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYXdGb290ZXJJblJlY3QoSVdlYlZpZXcqLCBSRUNU
KiwgT0xFX0hBTkRMRSwgVUlOVCwgVUlOVCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdQcmludGluZ01hcmdpblJlY3Qo
SVdlYlZpZXcqLCBSRUNUKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNhblJ1bk1vZGFsKElXZWJWaWV3KiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVhdGVNb2RhbERpYWxvZyhJV2Vi
VmlldyosIElXZWJVUkxSZXF1ZXN0KiwgSVdlYlZpZXcqKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bk1vZGFsKElXZWJWaWV3
KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGlzTWVudUJhclZpc2libGUoSVdlYlZpZXcqLCBCT09MKikgeyByZXR1cm4gRV9OT1RJ
TVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE1lbnVCYXJW
aXNpYmxlKElXZWJWaWV3KiwgQk9PTCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bkRhdGFiYXNlU2l6ZUxpbWl0UHJvbXB0KElX
ZWJWaWV3KiwgQlNUUiwgSVdlYkZyYW1lKiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWludEN1c3RvbVNjcm9sbGJh
cihJV2ViVmlldyosIEhEQywgUkVDVCwgV2ViU2Nyb2xsQmFyQ29udHJvbFNpemUsIFdlYlNjcm9s
bGJhckNvbnRyb2xTdGF0ZSwgV2ViU2Nyb2xsYmFyQ29udHJvbFBhcnQsIEJPT0wsIGZsb2F0LCBm
bG9hdCwgV2ViU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrKSB7IHJldHVybiBFX05PVElNUEw7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFpbnRDdXN0b21TY3JvbGxD
b3JuZXIoSVdlYlZpZXcqLCBIREMsIFJFQ1QpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorCitwcml2
YXRlOgorICAgIGludCBtX3JlZkNvdW50OworfTsKKworI2VuZGlmCkluZGV4OiBXZWJLaXRUb29s
cy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
V2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCShyZXZpc2lvbiA1MjEyMSkKKysrIFdlYktpdFRv
b2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAg
KzI4LDEzIEBACiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdENPTUFQSS5oPgogCiAjaW5jbHVkZSA8
Y29tbWN0cmwuaD4KKyNpbmNsdWRlIDxjb21tZGxnLmg+CiAjaW5jbHVkZSA8b2JqYmFzZS5oPgog
I2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3aW5pbmV0Lmg+CiAKKyNpbmNsdWRlICJQ
cmludFdlYlVJRGVsZWdhdGUuaCIKKwogI2RlZmluZSBNQVhfTE9BRFNUUklORyAxMDAKICNkZWZp
bmUgVVJMQkFSX0hFSUdIVCAgMjQKIApAQCAtNDMsNiArNDYsNyBAQCBsb25nIERlZkVkaXRQcm9j
OwogSVdlYlZpZXcqIGdXZWJWaWV3ID0gMDsKIEhXTkQgZ1ZpZXdXaW5kb3cgPSAwOwogV2luTGF1
bmNoZXJXZWJIb3N0KiBnV2ViSG9zdCA9IDA7CitQcmludFdlYlVJRGVsZWdhdGUqIGdQcmludERl
bGVnYXRlID0gMDsKIFRDSEFSIHN6VGl0bGVbTUFYX0xPQURTVFJJTkddOyAgICAgICAgICAgICAg
ICAgICAgLy8gVGhlIHRpdGxlIGJhciB0ZXh0CiBUQ0hBUiBzeldpbmRvd0NsYXNzW01BWF9MT0FE
U1RSSU5HXTsgICAgICAgICAgICAvLyB0aGUgbWFpbiB3aW5kb3cgY2xhc3MgbmFtZQogCkBAIC0x
ODcsNiArMTkxLDEyIEBAIGludCBBUElFTlRSWSBfdFdpbk1haW4oSElOU1RBTkNFIGhJbnN0YW4K
ICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgZ290byBleGl0OwogCisgICAgZ1ByaW50RGVs
ZWdhdGUgPSBuZXcgUHJpbnRXZWJVSURlbGVnYXRlKCk7CisgICAgZ1ByaW50RGVsZWdhdGUtPkFk
ZFJlZigpOworICAgIGhyID0gZ1dlYlZpZXctPnNldFVJRGVsZWdhdGUoZ1ByaW50RGVsZWdhdGUp
OworICAgIGlmIChGQUlMRUQgKGhyKSkKKyAgICAgICAgZ290byBleGl0OworCiAgICAgaHIgPSBn
V2ViVmlldy0+c2V0SG9zdFdpbmRvdygoT0xFX0hBTkRMRSkgaE1haW5XbmQpOwogICAgIGlmIChG
QUlMRUQoaHIpKQogICAgICAgICBnb3RvIGV4aXQ7CkBAIC0yMzIsNiArMjQyLDcgQEAgaW50IEFQ
SUVOVFJZIF90V2luTWFpbihISU5TVEFOQ0UgaEluc3RhbgogICAgIH0KIAogZXhpdDoKKyAgICBn
UHJpbnREZWxlZ2F0ZS0+UmVsZWFzZSgpOwogICAgIGdXZWJWaWV3LT5SZWxlYXNlKCk7CiAgICAg
c2h1dERvd25XZWJLaXQoKTsKICNpZmRlZiBfQ1JUREJHX01BUF9BTExPQwpAQCAtMjgxLDYgKzI5
Miw4NSBAQCBCT09MIEluaXRJbnN0YW5jZShISU5TVEFOQ0UgaEluc3RhbmNlLCBpCiAgICByZXR1
cm4gVFJVRTsKIH0KIAorQk9PTCBDQUxMQkFDSyBBYm9ydFByb2MoSERDIGhEQywgaW50IEVycm9y
KQoreworICAgIE1TRyBtc2c7CisgICAgd2hpbGUgKDo6UGVla01lc3NhZ2UoJm1zZywgMCwgMCwg
MCwgUE1fUkVNT1ZFKSkgeworICAgICAgICA6OlRyYW5zbGF0ZU1lc3NhZ2UoJm1zZyk7CisgICAg
ICAgIDo6RGlzcGF0Y2hNZXNzYWdlKCZtc2cpOworICAgIH0KKworICAgIHJldHVybiBUUlVFOwor
fQorCitzdGF0aWMgSERDIGdldFByaW50ZXJEQygpCit7CisgICAgUFJJTlRETEcgcGRsZzsKKyAg
ICBtZW1zZXQoJnBkbGcsIDAsIHNpemVvZihQUklOVERMRykpOworICAgIHBkbGcubFN0cnVjdFNp
emUgPSBzaXplb2YoUFJJTlRETEcpOworICAgIHBkbGcuRmxhZ3MgPSBQRF9QUklOVFNFVFVQIHwg
UERfUkVUVVJOREM7CisKKyAgICA6OlByaW50RGxnKCZwZGxnKTsKKworICAgIHJldHVybiBwZGxn
LmhEQzsKK30KKworc3RhdGljIHZvaWQgaW5pdERvY1N0cnVjdChET0NJTkZPKiBkaSwgVENIQVIq
IGRvY25hbWUpCit7CisgICAgbWVtc2V0KGRpLCAwLCBzaXplb2YoRE9DSU5GTykpOworICAgIGRp
LT5jYlNpemUgPSBzaXplb2YoRE9DSU5GTyk7CisgICAgZGktPmxwc3pEb2NOYW1lID0gZG9jbmFt
ZTsKK30KKwordm9pZCBQcmludFZpZXcoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3
UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAgSERDIHByaW50REMgPSBnZXRQcmludGVyREMo
KTsKKyAgICBpZiAoIXByaW50REMpIHsKKyAgICAgICAgOjpNZXNzYWdlQm94KDAsIF9UKCJFcnJv
ciBjcmVhdGluZyBwcmludGluZyBEQyIpLCBfVCgiRXJyb3IiKSwgTUJfQVBQTE1PREFMIHwgTUJf
T0spOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKDo6U2V0QWJvcnRQcm9jKHBy
aW50REMsIEFib3J0UHJvYykgPT0gU1BfRVJST1IpIHsKKyAgICAgICAgOjpNZXNzYWdlQm94KDAs
IF9UKCJFcnJvciBzZXR0aW5nIHVwIEFib3J0UHJvYyIpLCBfVCgiRXJyb3IiKSwgTUJfQVBQTE1P
REFMIHwgTUJfT0spOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSVdlYkZyYW1lKiBm
cmFtZSA9IDA7CisgICAgaWYgKEZBSUxFRChnV2ViVmlldy0+bWFpbkZyYW1lKCZmcmFtZSkpKQor
ICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBJV2ViRnJhbWVQcml2YXRlKiBmcmFtZVByaXZhdGUg
PSAwOworICAgIGlmIChGQUlMRUQgKGZyYW1lLT5RdWVyeUludGVyZmFjZSgmZnJhbWVQcml2YXRl
KSkpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIGZyYW1lUHJpdmF0ZS0+c2V0SW5QcmludGlu
Z01vZGUoVFJVRSwgcHJpbnREQyk7CisKKyAgICBVSU5UIHBhZ2VDb3VudCA9IDA7CisgICAgZnJh
bWVQcml2YXRlLT5nZXRQcmludGVkUGFnZUNvdW50KHByaW50REMsICZwYWdlQ291bnQpOworCisg
ICAgRE9DSU5GTyBkaTsKKyAgICBpbml0RG9jU3RydWN0KCZkaSwgX1QoIldlYktpdCBEb2MiKSk7
CisgICAgOjpTdGFydERvYyhwcmludERDLCAmZGkpOworCisgICAgdm9pZCogZ3JhcGhpY3NDb250
ZXh0ID0gMDsKKyAgICBmb3IgKHNpemVfdCBwYWdlID0gMDsgcGFnZSA8IHBhZ2VDb3VudDsgKytw
YWdlKSB7CisgICAgICAgIDo6U3RhcnRQYWdlKHByaW50REMpOworICAgICAgICBmcmFtZVByaXZh
dGUtPnNwb29sUGFnZXMocHJpbnREQywgcGFnZSwgcGFnZSwgZ3JhcGhpY3NDb250ZXh0KTsKKyAg
ICAgICAgOjpFbmRQYWdlKHByaW50REMpOworICAgIH0KKworICAgIGZyYW1lUHJpdmF0ZS0+c2V0
SW5QcmludGluZ01vZGUoRkFMU0UsIHByaW50REMpOworCisgICAgOjpFbmREb2MocHJpbnREQyk7
CisgICAgOjpEZWxldGVEQyhwcmludERDKTsKKworZXhpdDoKKyAgICBpZiAoZnJhbWUpCisgICAg
ICAgIGZyYW1lLT5SZWxlYXNlKCk7CisgICAgaWYgKGZyYW1lUHJpdmF0ZSkKKyAgICAgICAgZnJh
bWVQcml2YXRlLT5SZWxlYXNlKCk7Cit9CisKIExSRVNVTFQgQ0FMTEJBQ0sgV25kUHJvYyhIV05E
IGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAg
ICBpbnQgd21JZCwgd21FdmVudDsKQEAgLTI5OSw2ICszODksOSBAQCBMUkVTVUxUIENBTExCQUNL
IFduZFByb2MoSFdORCBoV25kLCBVSU5UCiAgICAgICAgICAgICBjYXNlIElETV9FWElUOgogICAg
ICAgICAgICAgICAgIERlc3Ryb3lXaW5kb3coaFduZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIElETV9QUklOVDoKKyAgICAgICAgICAgICAgICBQcmludFZpZXco
aFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXR1cm4gRGVmV2luZG93UHJv
YyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAgICAgIH0KSW5kZXg6IFdlYktp
dFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkocmV2aXNpb24gNTIxMjEpCisrKyBXZWJLaXRU
b29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSwxMSAr
OTksMTEgQEAgcHVibGljOgogICAgICAgICAvKiBbaW5dICovIEpTQ29udGV4dFJlZiBjb250ZXh0
LAogICAgICAgICAvKiBbaW5dICovIEpTT2JqZWN0UmVmIHdpbmRvd1NjcmlwdE9iamVjdCkgIHsg
cmV0dXJuIFNfT0s7IH0KIAotICAgIHZpcnR1YWwgLyogW2xvY2FsXSAqLyBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpZENsZWFyV2luZG93T2JqZWN0KCANCi0gICAgICAgIC8qIFtpbl0gKi8g
SVdlYlZpZXcgKndlYlZpZXcsDQotICAgICAgICAvKiBbaW5dICovIEpTQ29udGV4dFJlZiBjb250
ZXh0LA0KLSAgICAgICAgLyogW2luXSAqLyBKU09iamVjdFJlZiB3aW5kb3dTY3JpcHRPYmplY3Qs
DQotICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIFNfT0s7IH0N
CisgICAgdmlydHVhbCAvKiBbbG9jYWxdICovIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlk
Q2xlYXJXaW5kb3dPYmplY3QoIAorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3
LAorICAgICAgICAvKiBbaW5dICovIEpTQ29udGV4dFJlZiBjb250ZXh0LAorICAgICAgICAvKiBb
aW5dICovIEpTT2JqZWN0UmVmIHdpbmRvd1NjcmlwdE9iamVjdCwKKyAgICAgICAgLyogW2luXSAq
LyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9CiAKICAgICAvLyBXaW5MYXVuY2hl
cldlYkhvc3QKIApJbmRleDogV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIucmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIucmMJKHJl
dmlzaW9uIDUyMTIxKQorKysgV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIucmMJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgSURDX1dJTkxBVU5DSEVSIE1FTlUgCiBC
RUdJTgogICAgIFBPUFVQICImRmlsZSIKICAgICBCRUdJTgorICAgICAgICBNRU5VSVRFTSAiJlBy
aW50XHRDdHJsLVAiLCAgICAgICAgICAgICAgSURNX1BSSU5UCiAgICAgICAgIE1FTlVJVEVNICJF
JnhpdCIsICAgICAgICAgICAgICAgICAgICAgICBJRE1fRVhJVAogICAgIEVORAogICAgIFBPUFVQ
ICImSGVscCIKQEAgLTc0LDggKzc1LDggQEAgQ0FQVElPTiAiQWJvdXQiCiBGT05UIDgsICJTeXN0
ZW0iLCAwLCAwLCAweDAKIEJFR0lOCiAgICAgSUNPTiAgICAgICAgICAgIElESV9XSU5MQVVOQ0hF
UixJRENfTVlJQ09OLDE0LDksMjAsMjAKLSAgICBMVEVYVCAgICAgICAgICAgIldpbkxhdW5jaGVy
IFZlcnNpb24gMS4xIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LFNTX05PUFJFRklYCi0gICAgTFRF
WFQgICAgICAgICAgICJDb3B5cmlnaHQgKEMpIDIwMDgiLElEQ19TVEFUSUMsNDksMjAsMTE5LDgK
KyAgICBMVEVYVCAgICAgICAgICAgIldpbkxhdW5jaGVyIFZlcnNpb24gMS4yIixJRENfU1RBVElD
LDQ5LDEwLDExOSw4LFNTX05PUFJFRklYCisgICAgTFRFWFQgICAgICAgICAgICJDb3B5cmlnaHQg
KEMpIDIwMDkiLElEQ19TVEFUSUMsNDksMjAsMTE5LDgKICAgICBERUZQVVNIQlVUVE9OICAgIk9L
IixJRE9LLDE5NSw2LDMwLDExLFdTX0dST1VQCiBFTkQKIApJbmRleDogV2ViS2l0VG9vbHMvV2lu
TGF1bmNoZXIvV2luTGF1bmNoZXIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dp
bkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjcHJvagkocmV2aXNpb24gNTIxMjEpCisrKyBXZWJLaXRU
b29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQw
OSw2ICs0MDksMTAgQEAKIAkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYt
QTA2Ni0yQTMyRDc1MkEyRkZ9Ig0KIAkJCT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9
Ii5cUHJpbnRXZWJVSURlbGVnYXRlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii5cc3RkYWZ4LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCkBAIC00NjMsNiArNDY3LDEwIEBACiAJCQlVbmlxdWVJZGVudGlmaWVyPSJ7
OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSINCiAJCQk+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuXFByaW50V2ViVUlEZWxlZ2F0ZS5oIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLlxSZXNvdXJjZS5oIg0KIAkJ
CQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL3Jlc291cmNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvcmVzb3VyY2UuaAkocmV2
aXNpb24gNTIxMjEpCisrKyBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9yZXNvdXJjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDcgKzcsOCBAQAogI2RlZmluZSBJRFNfQVBQX1RJVExFICAgICAgICAg
ICAgICAgICAgIDEwMwogI2RlZmluZSBJRERfQUJPVVRCT1ggICAgICAgICAgICAgICAgICAgIDEw
MwogI2RlZmluZSBJRE1fQUJPVVQgICAgICAgICAgICAgICAgICAgICAgIDEwNAotI2RlZmluZSBJ
RE1fRVhJVCAgICAgICAgICAgICAgICAgICAgICAgIDEwNQorI2RlZmluZSBJRE1fUFJJTlQgICAg
ICAgICAgICAgICAgICAgICAgIDEwNQorI2RlZmluZSBJRE1fRVhJVCAgICAgICAgICAgICAgICAg
ICAgICAgIDEwNgogI2RlZmluZSBJRElfV0lOTEFVTkNIRVIgICAgICAgICAgICAgICAgIDEwNwog
I2RlZmluZSBJRElfU01BTEwgICAgICAgICAgICAgICAgICAgICAgIDEwOAogI2RlZmluZSBJRENf
V0lOTEFVTkNIRVIgICAgICAgICAgICAgICAgIDEwOQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44846</attachid>
            <date>2009-12-14 22:26:52 -0800</date>
            <delta_ts>2009-12-18 17:01:54 -0800</delta_ts>
            <desc>Revised patch to clean up check-webkit-style warnings.</desc>
            <filename>print_example.patch</filename>
            <type>text/plain</type>
            <size>24401</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUyMTIxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE1IEBACisyMDA5LTEyLTEzICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcm92aWRlIGFuIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIHByaW50
aW5nIHVuZGVyIFdpbmRvd3MuCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyNTA0LmAKKworICAgICAgICAqIFdpbkxhdW5jaGVyL1ByaW50V2ViVUlEZWxl
Z2F0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpRdWVyeUludGVy
ZmFjZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OkFkZFJlZik6CisgICAgICAgIChQ
cmludFdlYlVJRGVsZWdhdGU6OlJlbGVhc2UpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRl
Ojp3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KToKKyAgICAgICAgKiBXaW5MYXVuY2hlci9Qcmlu
dFdlYlVJRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OlBy
aW50V2ViVUlEZWxlZ2F0ZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmNyZWF0ZVdl
YlZpZXdXaXRoUmVxdWVzdCk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdT
aG93KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0Nsb3NlKToKKyAgICAg
ICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0ZvY3VzKToKKyAgICAgICAgKFByaW50V2Vi
VUlEZWxlZ2F0ZTo6d2ViVmlld1VuZm9jdXMpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRl
Ojp3ZWJWaWV3Rmlyc3RSZXNwb25kZXIpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpt
YWtlRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpzZXRTdGF0
dXNUZXh0KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld1N0YXR1c1RleHQp
OgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjp3ZWJWaWV3QXJlVG9vbGJhcnNWaXNpYmxl
KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6c2V0VG9vbGJhcnNWaXNpYmxlKToKKyAg
ICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0lzU3RhdHVzQmFyVmlzaWJsZSk6Cisg
ICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnNldFN0YXR1c0JhclZpc2libGUpOgorICAgICAg
ICAoUHJpbnRXZWJVSURlbGVnYXRlOjp3ZWJWaWV3SXNSZXNpemFibGUpOgorICAgICAgICAoUHJp
bnRXZWJVSURlbGVnYXRlOjpzZXRSZXNpemFibGUpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVn
YXRlOjpzZXRGcmFtZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdGcmFt
ZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnNldENvbnRlbnRSZWN0KToKKyAgICAg
ICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0NvbnRlbnRSZWN0KToKKyAgICAgICAgKFBy
aW50V2ViVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZSk6Cisg
ICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRo
TWVzc2FnZSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0
SW5wdXRQYW5lbFdpdGhQcm9tcHQpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZSk6CisgICAgICAgIChQcmludFdlYlVJ
RGVsZWdhdGU6OnJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXIpOgor
ICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6Cisg
ICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmNvbnRleHRNZW51SXRlbXNGb3JFbGVtZW50KToK
KyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6dmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbSk6
CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OnNob3VsZFBlcmZvcm1BY3Rpb24pOgorICAg
ICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJh
Z2dpbmdJbmZvKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpkcmFnU291
cmNlQWN0aW9uTWFza0ZvclBvaW50KToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpo
YXNDdXN0b21NZW51SW1wbGVtZW50YXRpb24pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRl
Ojp0cmFja0N1c3RvbVBvcHVwTWVudSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6Om1l
YXN1cmVDdXN0b21NZW51SXRlbSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmRyYXdD
dXN0b21NZW51SXRlbSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmFkZEN1c3RvbU1l
bnVEcmF3aW5nRGF0YSk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmNsZWFuVXBDdXN0
b21NZW51RHJhd2luZ0RhdGEpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpjYW5UYWtl
Rm9jdXMpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjp0YWtlRm9jdXMpOgorICAgICAg
ICAoUHJpbnRXZWJVSURlbGVnYXRlOjpyZWdpc3RlclVuZG9XaXRoVGFyZ2V0KToKKyAgICAgICAg
KFByaW50V2ViVUlEZWxlZ2F0ZTo6cmVtb3ZlQWxsQWN0aW9uc1dpdGhUYXJnZXQpOgorICAgICAg
ICAoUHJpbnRXZWJVSURlbGVnYXRlOjpzZXRBY3Rpb25UaXRsZSk6CisgICAgICAgIChQcmludFdl
YlVJRGVsZWdhdGU6OnVuZG8pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpyZWRvKToK
KyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6Y2FuVW5kbyk6CisgICAgICAgIChQcmludFdl
YlVJRGVsZWdhdGU6OmNhblJlZG8pOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpwcmlu
dEZyYW1lKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6ZnRwRGlyZWN0b3J5VGVtcGxh
dGVQYXRoKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld0hlYWRlckhlaWdo
dCk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OndlYlZpZXdGb290ZXJIZWlnaHQpOgor
ICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpkcmF3SGVhZGVySW5SZWN0KToKKyAgICAgICAg
KFByaW50V2ViVUlEZWxlZ2F0ZTo6ZHJhd0Zvb3RlckluUmVjdCk6CisgICAgICAgIChQcmludFdl
YlVJRGVsZWdhdGU6OmNhblJ1bk1vZGFsKToKKyAgICAgICAgKFByaW50V2ViVUlEZWxlZ2F0ZTo6
Y3JlYXRlTW9kYWxEaWFsb2cpOgorICAgICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpydW5Nb2Rh
bCk6CisgICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmlzTWVudUJhclZpc2libGUpOgorICAg
ICAgICAoUHJpbnRXZWJVSURlbGVnYXRlOjpzZXRNZW51QmFyVmlzaWJsZSk6CisgICAgICAgIChQ
cmludFdlYlVJRGVsZWdhdGU6OnJ1bkRhdGFiYXNlU2l6ZUxpbWl0UHJvbXB0KToKKyAgICAgICAg
KFByaW50V2ViVUlEZWxlZ2F0ZTo6cGFpbnRDdXN0b21TY3JvbGxiYXIpOgorICAgICAgICAoUHJp
bnRXZWJVSURlbGVnYXRlOjpwYWludEN1c3RvbVNjcm9sbENvcm5lcik6CisgICAgICAgICogV2lu
TGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwOiBBZGQgbmV3IFVJIGRlbGVnYXRlIGZvciBwcmludCBz
dXBwb3J0LgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0Ojp1cGRhdGVBZGRyZXNzQmFyKTog
Y2hlY2std2Via2l0LXN0eWxlIGZpeGVzLgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpR
dWVyeUludGVyZmFjZSk6IGNoZWNrLXdlYmtpdC1zdHlsZSBmaXhlcy4KKyAgICAgICAgKFdpbkxh
dW5jaGVyV2ViSG9zdDo6QWRkUmVmKTogY2hlY2std2Via2l0LXN0eWxlIGZpeGVzLgorICAgICAg
ICAoV2luTGF1bmNoZXJXZWJIb3N0OjpSZWxlYXNlKTogY2hlY2std2Via2l0LXN0eWxlIGZpeGVz
LgorICAgICAgICAocmVzaXplU3ViVmlld3MpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisg
ICAgICAgIChfdFdpbk1haW4pOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgIChN
eVJlZ2lzdGVyQ2xhc3MpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgIChJbml0
SW5zdGFuY2UpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgIChBYm9ydFByb2Mp
OiBOZXcgcHJpbnQgc3VwcG9ydCBmdW5jdGlvbi4KKyAgICAgICAgKGdldFByaW50ZXJEQyk6IE5l
dyBwcmludCBzdXBwb3J0IGZ1bmN0aW9uLgorICAgICAgICAoaW5pdERvY1N0cnVjdCk6IE5ldyBw
cmludCBzdXBwb3J0IGZ1bmN0aW9uLgorICAgICAgICAoUHJpbnRWaWV3KTogTmV3IHByaW50aW5n
IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV25kUHJvYyk6IEFkZCBzdXBwb3J0IGZvciBwcmlu
dGluZy4KKyAgICAgICAgKE15RWRpdFByb2MpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisg
ICAgICAgIChBYm91dCk6IGNoZWNrLXdlYmtpdC1zdHlsZSBmaXhlcy4KKyAgICAgICAgKGxvYWRV
UkwpOiBjaGVjay13ZWJraXQtc3R5bGUgZml4ZXMuCisgICAgICAgICogV2luTGF1bmNoZXIvV2lu
TGF1bmNoZXIuaDoKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6V2luTGF1bmNoZXJXZWJI
b3N0KToKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldlYkhvc3Q6OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdpbkxhdW5j
aGVyV2ViSG9zdDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcik6CisgICAgICAgIChX
aW5MYXVuY2hlcldlYkhvc3Q6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXaW5M
YXVuY2hlcldlYkhvc3Q6OmRpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldl
Ykhvc3Q6OmRpZFJlY2VpdmVJY29uKToKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkRmFp
bExvYWRXaXRoRXJyb3IpOgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRDaGFuZ2VM
b2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldlYkhvc3Q6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTCk6CisgICAgICAgIChXaW5MYXVuY2hlcldl
Ykhvc3Q6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOgorICAgICAgICAoV2luTGF1
bmNoZXJXZWJIb3N0Ojp3aWxsQ2xvc2VGcmFtZSk6CisgICAgICAgIChXaW5MYXVuY2hlcldlYkhv
c3Q6OndpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSk6CisgICAgICAgICogV2luTGF1bmNoZXIv
V2luTGF1bmNoZXIucmM6IEFkZCBtZW51IGVudHJ5IGZvciBwcmludGluZy4KKyAgICAgICAgKiBX
aW5MYXVuY2hlci9XaW5MYXVuY2hlci52Y3Byb2o6IEFkZCBuZXcgZmlsZXMuCisgICAgICAgICog
V2luTGF1bmNoZXIvcmVzb3VyY2UuaDogQWRkIG1lbnUgZW50cnkgZm9yIHByaW50aW5nLgorCiAy
MDA5LTEyLTE0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0VG9vbHMvV2luTGF1bmNo
ZXIvUHJpbnRXZWJVSURlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XaW5M
YXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9v
bHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVnYXRlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQnJlbnQgRnVsZ2hhbS4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJzdGRhZnguaCIKKyNpbmNsdWRlICJQcmludFdlYlVJRGVsZWdhdGUuaCIK
KworI2luY2x1ZGUgPGNvbW1jdHJsLmg+CisjaW5jbHVkZSA8Y29tbWRsZy5oPgorI2luY2x1ZGUg
PG9iamJhc2UuaD4KKyNpbmNsdWRlIDxzaGx3YXBpLmg+CisjaW5jbHVkZSA8d2luaW5ldC5oPgor
CisjaW5jbHVkZSA8V2ViS2l0L1dlYktpdENPTUFQSS5oPgorCitIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFByaW50V2ViVUlEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZv
aWQqKiBwcHZPYmplY3QpCit7CisgICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKElzRXF1YWxH
VUlEKHJpaWQsIElJRF9JVW5rbm93bikpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2Fz
dDxJV2ViVUlEZWxlZ2F0ZSo+KHRoaXMpOworICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQs
IElJRF9JV2ViVUlEZWxlZ2F0ZSkpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJ
V2ViVUlEZWxlZ2F0ZSo+KHRoaXMpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEVfTk9JTlRF
UkZBQ0U7CisKKyAgICBBZGRSZWYoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworVUxPTkcgU1RE
TUVUSE9EQ0FMTFRZUEUgUHJpbnRXZWJVSURlbGVnYXRlOjpBZGRSZWYodm9pZCkKK3sKKyAgICBy
ZXR1cm4gKyttX3JlZkNvdW50OworfQorCitVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBQcmludFdl
YlVJRGVsZWdhdGU6OlJlbGVhc2Uodm9pZCkKK3sKKyAgICBVTE9ORyBuZXdSZWYgPSAtLW1fcmVm
Q291bnQ7CisgICAgaWYgKCFuZXdSZWYpCisgICAgICAgIGRlbGV0ZSh0aGlzKTsKKworICAgIHJl
dHVybiBuZXdSZWY7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUHJpbnRXZWJVSURl
bGVnYXRlOjp3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KElXZWJWaWV3KiB2aWV3LCBSRUNUKiBy
ZWN0KQoreworICAgIGlmICghdmlldyB8fCAhcmVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKKworICAgIElXZWJGcmFtZSogbWFpbkZyYW1lID0gMDsKKyAgICBpZiAoRkFJTEVEKHZpZXct
Pm1haW5GcmFtZSgmbWFpbkZyYW1lKSkpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKKyAgICBJ
V2ViRnJhbWVQcml2YXRlKiBwcml2YXRlRnJhbWUgPSAwOworICAgIGlmIChGQUlMRUQobWFpbkZy
YW1lLT5RdWVyeUludGVyZmFjZShJSURfSVdlYkZyYW1lUHJpdmF0ZSwgKHZvaWQqKikmcHJpdmF0
ZUZyYW1lKSkpIHsKKyAgICAgICAgbWFpbkZyYW1lLT5SZWxlYXNlKCk7CisgICAgICAgIHJldHVy
biBFX0ZBSUw7CisgICAgfQorCisgICAgcHJpdmF0ZUZyYW1lLT5mcmFtZUJvdW5kcyhyZWN0KTsK
KworICAgIHJlY3QtPmxlZnQgKz0gMjA7CisgICAgcmVjdC0+dG9wICs9IDIwOworICAgIHJlY3Qt
PnJpZ2h0IC09IDIwOyAKKyAgICByZWN0LT5ib3R0b20gLT0gMjA7CisKKyAgICBwcml2YXRlRnJh
bWUtPlJlbGVhc2UoKTsKKyAgICBtYWluRnJhbWUtPlJlbGVhc2UoKTsKKworICAgIHJldHVybiBT
X09LOworfQpJbmRleDogV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVnYXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVn
YXRlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJ
RGVsZWdhdGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEJyZW50IEZ1bGdoYW0uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFByaW50V2ViVUlEZWxl
Z2F0ZV9oCisjZGVmaW5lIFByaW50V2ViVUlEZWxlZ2F0ZV9oCisKKyNpbmNsdWRlIDxXZWJLaXQv
V2ViS2l0Lmg+CisKK2NsYXNzIFByaW50V2ViVUlEZWxlZ2F0ZSA6IHB1YmxpYyBJV2ViVUlEZWxl
Z2F0ZSB7CitwdWJsaWM6CisgICAgUHJpbnRXZWJVSURlbGVnYXRlKCkgOiBtX3JlZkNvdW50KDEp
IHt9CisKKyAgICAvLyBJVW5rbm93bgorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7CisgICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7CisgICAgdmlydHVh
bCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOworCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdChJV2ViVmll
dyosIElXZWJVUkxSZXF1ZXN0KiwgSVdlYlZpZXcqKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdTaG93KElXZWJWaWV3
KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHdlYlZpZXdDbG9zZShJV2ViVmlldyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3Rm9jdXMoSVdlYlZpZXcq
KSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgd2ViVmlld1VuZm9jdXMoSVdlYlZpZXcqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld0ZpcnN0UmVzcG9uZGVy
KElXZWJWaWV3KiwgT0xFX0hBTkRMRSopICB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFrZUZpcnN0UmVzcG9uZGVyKElXZWJWaWV3
KiwgT0xFX0hBTkRMRSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldFN0YXR1c1RleHQoSVdlYlZpZXcqLCBCU1RSKSB7IHJldHVy
biBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2Vi
Vmlld1N0YXR1c1RleHQoSVdlYlZpZXcqLCBCU1RSKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdBcmVUb29sYmFyc1Zp
c2libGUoSVdlYlZpZXcqLCBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRvb2xiYXJzVmlzaWJsZShJV2ViVmlldyos
IEJPT0wpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB3ZWJWaWV3SXNTdGF0dXNCYXJWaXNpYmxlKElXZWJWaWV3KiwgQk9PTCopIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRTdGF0dXNCYXJWaXNpYmxlKElXZWJWaWV3KiwgQk9PTCkgeyByZXR1cm4gRV9OT1RJTVBM
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdJc1Jlc2l6
YWJsZShJV2ViVmlldyosIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UmVzaXphYmxlKElXZWJWaWV3KiwgQk9PTCkg
eyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldEZyYW1lKElXZWJWaWV3KiwgUkVDVCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3RnJhbWUoSVdlYlZpZXcq
LCBSRUNUKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldENvbnRlbnRSZWN0KElXZWJWaWV3KiwgUkVDVCopIHsgcmV0dXJuIEVf
Tk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3
Q29udGVudFJlY3QoSVdlYlZpZXcqLCBSRUNUKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVs
V2l0aE1lc3NhZ2UoSVdlYlZpZXcqLCBCU1RSKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5l
bFdpdGhNZXNzYWdlKElXZWJWaWV3KiwgQlNUUiwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBydW5KYXZhU2NyaXB0VGV4
dElucHV0UGFuZWxXaXRoUHJvbXB0KElXZWJWaWV3KiwgQlNUUiwgQlNUUiwgQlNUUiopIHsgcmV0
dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZShJV2ViVmlldyosIEJTVFIsIElX
ZWJGcmFtZSosIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRM
aXN0ZW5lcihJV2ViVmlldyosIElXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciopIHsgcmV0dXJu
IEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudChJV2ViVmlldyosIElQcm9wZXJ0eUJhZyosIFVJTlQpIHsgcmV0
dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBj
b250ZXh0TWVudUl0ZW1zRm9yRWxlbWVudChJV2ViVmlldyosIElQcm9wZXJ0eUJhZyosIE9MRV9I
QU5ETEUsIE9MRV9IQU5ETEUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbShJV2ViVmll
dyosIFVJTlQsIEJPT0wsIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2hvdWxkUGVyZm9ybUFjdGlvbihJV2ViVmlldyos
IFVJTlQsIFVJTlQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZv
KElXZWJWaWV3KiwgSURhdGFPYmplY3QqLCBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24qKSB7IHJl
dHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oSVdlYlZpZXcqLCBXZWJEcmFnRGVzdGlu
YXRpb25BY3Rpb24sIElEYXRhT2JqZWN0KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9p
bnQoSVdlYlZpZXcqLCBMUFBPSU5ULCBXZWJEcmFnU291cmNlQWN0aW9uKikgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbihJV2ViVmlldyosIFdlYkRyYWdTb3VyY2VBY3Rpb24sIExQUE9J
TlQsIElEYXRhT2JqZWN0KiwgSURhdGFPYmplY3QqKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKElXZWJWaWV3Kiwgdm9pZCosIElQcm9wZXJ0eUJhZyopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNDdXN0b21NZW51SW1w
bGVtZW50YXRpb24oQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0cmFja0N1c3RvbVBvcHVwTWVudShJV2ViVmlldyosIE9M
RV9IQU5ETEUsIExQUE9JTlQpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtZWFzdXJlQ3VzdG9tTWVudUl0ZW0oSVdlYlZpZXcqLCB2
b2lkKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGRyYXdDdXN0b21NZW51SXRlbShJV2ViVmlldyosIHZvaWQqKSB7IHJldHVybiBF
X05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkQ3Vz
dG9tTWVudURyYXdpbmdEYXRhKElXZWJWaWV3KiwgT0xFX0hBTkRMRSkgeyByZXR1cm4gRV9OT1RJ
TVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsZWFuVXBDdXN0
b21NZW51RHJhd2luZ0RhdGEoSVdlYlZpZXcqLCBPTEVfSEFORExFKSB7IHJldHVybiBFX05PVElN
UEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuVGFrZUZvY3Vz
KElXZWJWaWV3KiwgQk9PTCwgQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YWtlRm9jdXMoSVdlYlZpZXcqLCBCT09MKSB7
IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcmVnaXN0ZXJVbmRvV2l0aFRhcmdldChJV2ViVW5kb1RhcmdldCosIEJTVFIsIElVbmtub3du
KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHJlbW92ZUFsbEFjdGlvbnNXaXRoVGFyZ2V0KElXZWJVbmRvVGFyZ2V0KikgeyByZXR1
cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEFjdGlvblRpdGxlKEJTVFIpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB1bmRvKCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlZG8oKSB7IHJldHVybiBFX05PVElN
UEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FuVW5kbyhCT09M
KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGNhblJlZG8oQk9PTCopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmludEZyYW1lKElXZWJWaWV3KiwgSVdlYkZyYW1l
ICopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBmdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoSVdlYlZpZXcqLCBCU1RSKikgeyByZXR1
cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdl
YlZpZXdIZWFkZXJIZWlnaHQoSVdlYlZpZXcqLCBmbG9hdCopIHsgcmV0dXJuIEVfTk9USU1QTDsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3Rm9vdGVySGVp
Z2h0KElXZWJWaWV3KiwgZmxvYXQqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0hlYWRlckluUmVjdChJV2ViVmlldyosIFJF
Q1QqLCBPTEVfSEFORExFKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZHJhd0Zvb3RlckluUmVjdChJV2ViVmlldyosIFJFQ1QqLCBP
TEVfSEFORExFLCBVSU5ULCBVSU5UKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViVmlld1ByaW50aW5nTWFyZ2luUmVjdChJV2Vi
VmlldyosIFJFQ1QqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2Fu
UnVuTW9kYWwoSVdlYlZpZXcqLCBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZU1vZGFsRGlhbG9nKElXZWJWaWV3
KiwgSVdlYlVSTFJlcXVlc3QqLCBJV2ViVmlldyoqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuTW9kYWwoSVdlYlZpZXcqKSB7
IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaXNNZW51QmFyVmlzaWJsZShJV2ViVmlldyosIEJPT0wqKSB7IHJldHVybiBFX05PVElNUEw7
IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TWVudUJhclZpc2li
bGUoSVdlYlZpZXcqLCBCT09MKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuRGF0YWJhc2VTaXplTGltaXRQcm9tcHQoSVdlYlZp
ZXcqLCBCU1RSLCBJV2ViRnJhbWUqLCBCT09MKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhaW50Q3VzdG9tU2Nyb2xsYmFyKElX
ZWJWaWV3KiwgSERDLCBSRUNULCBXZWJTY3JvbGxCYXJDb250cm9sU2l6ZSwgV2ViU2Nyb2xsYmFy
Q29udHJvbFN0YXRlLCBXZWJTY3JvbGxiYXJDb250cm9sUGFydCwgQk9PTCwgZmxvYXQsIGZsb2F0
LCBXZWJTY3JvbGxiYXJDb250cm9sUGFydE1hc2spIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYWludEN1c3RvbVNjcm9sbENvcm5l
cihJV2ViVmlldyosIEhEQywgUkVDVCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisKK3ByaXZhdGU6
CisgICAgaW50IG1fcmVmQ291bnQ7Cit9OworCisjZW5kaWYKSW5kZXg6IFdlYktpdFRvb2xzL1dp
bkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XaW5M
YXVuY2hlci9XaW5MYXVuY2hlci5jcHAJKHJldmlzaW9uIDUyMTIxKQorKysgV2ViS2l0VG9vbHMv
V2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgs
MTMgQEAKICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJLmg+CiAKICNpbmNsdWRlIDxjb21t
Y3RybC5oPgorI2luY2x1ZGUgPGNvbW1kbGcuaD4KICNpbmNsdWRlIDxvYmpiYXNlLmg+CiAjaW5j
bHVkZSA8c2hsd2FwaS5oPgogI2luY2x1ZGUgPHdpbmluZXQuaD4KIAorI2luY2x1ZGUgIlByaW50
V2ViVUlEZWxlZ2F0ZS5oIgorCiAjZGVmaW5lIE1BWF9MT0FEU1RSSU5HIDEwMAogI2RlZmluZSBV
UkxCQVJfSEVJR0hUICAyNAogCkBAIC00Myw2ICs0Niw3IEBAIGxvbmcgRGVmRWRpdFByb2M7CiBJ
V2ViVmlldyogZ1dlYlZpZXcgPSAwOwogSFdORCBnVmlld1dpbmRvdyA9IDA7CiBXaW5MYXVuY2hl
cldlYkhvc3QqIGdXZWJIb3N0ID0gMDsKK1ByaW50V2ViVUlEZWxlZ2F0ZSogZ1ByaW50RGVsZWdh
dGUgPSAwOwogVENIQVIgc3pUaXRsZVtNQVhfTE9BRFNUUklOR107ICAgICAgICAgICAgICAgICAg
ICAvLyBUaGUgdGl0bGUgYmFyIHRleHQKIFRDSEFSIHN6V2luZG93Q2xhc3NbTUFYX0xPQURTVFJJ
TkddOyAgICAgICAgICAgIC8vIHRoZSBtYWluIHdpbmRvdyBjbGFzcyBuYW1lCiAKQEAgLTE4Nyw2
ICsxOTEsMTIgQEAgaW50IEFQSUVOVFJZIF90V2luTWFpbihISU5TVEFOQ0UgaEluc3RhbgogICAg
IGlmIChGQUlMRUQoaHIpKQogICAgICAgICBnb3RvIGV4aXQ7CiAKKyAgICBnUHJpbnREZWxlZ2F0
ZSA9IG5ldyBQcmludFdlYlVJRGVsZWdhdGUoKTsKKyAgICBnUHJpbnREZWxlZ2F0ZS0+QWRkUmVm
KCk7CisgICAgaHIgPSBnV2ViVmlldy0+c2V0VUlEZWxlZ2F0ZShnUHJpbnREZWxlZ2F0ZSk7Cisg
ICAgaWYgKEZBSUxFRCAoaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisKICAgICBociA9IGdXZWJW
aWV3LT5zZXRIb3N0V2luZG93KChPTEVfSEFORExFKSBoTWFpblduZCk7CiAgICAgaWYgKEZBSUxF
RChocikpCiAgICAgICAgIGdvdG8gZXhpdDsKQEAgLTIzMiw2ICsyNDIsNyBAQCBpbnQgQVBJRU5U
UlkgX3RXaW5NYWluKEhJTlNUQU5DRSBoSW5zdGFuCiAgICAgfQogCiBleGl0OgorICAgIGdQcmlu
dERlbGVnYXRlLT5SZWxlYXNlKCk7CiAgICAgZ1dlYlZpZXctPlJlbGVhc2UoKTsKICAgICBzaHV0
RG93bldlYktpdCgpOwogI2lmZGVmIF9DUlREQkdfTUFQX0FMTE9DCkBAIC0yODEsNiArMjkyLDg1
IEBAIEJPT0wgSW5pdEluc3RhbmNlKEhJTlNUQU5DRSBoSW5zdGFuY2UsIGkKICAgIHJldHVybiBU
UlVFOwogfQogCitCT09MIENBTExCQUNLIEFib3J0UHJvYyhIREMgaERDLCBpbnQgRXJyb3IpCit7
CisgICAgTVNHIG1zZzsKKyAgICB3aGlsZSAoOjpQZWVrTWVzc2FnZSgmbXNnLCAwLCAwLCAwLCBQ
TV9SRU1PVkUpKSB7CisgICAgICAgIDo6VHJhbnNsYXRlTWVzc2FnZSgmbXNnKTsKKyAgICAgICAg
OjpEaXNwYXRjaE1lc3NhZ2UoJm1zZyk7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisK
K3N0YXRpYyBIREMgZ2V0UHJpbnRlckRDKCkKK3sKKyAgICBQUklOVERMRyBwZGxnOworICAgIG1l
bXNldCgmcGRsZywgMCwgc2l6ZW9mKFBSSU5URExHKSk7CisgICAgcGRsZy5sU3RydWN0U2l6ZSA9
IHNpemVvZihQUklOVERMRyk7CisgICAgcGRsZy5GbGFncyA9IFBEX1BSSU5UU0VUVVAgfCBQRF9S
RVRVUk5EQzsKKworICAgIDo6UHJpbnREbGcoJnBkbGcpOworCisgICAgcmV0dXJuIHBkbGcuaERD
OworfQorCitzdGF0aWMgdm9pZCBpbml0RG9jU3RydWN0KERPQ0lORk8qIGRpLCBUQ0hBUiogZG9j
bmFtZSkKK3sKKyAgICBtZW1zZXQoZGksIDAsIHNpemVvZihET0NJTkZPKSk7CisgICAgZGktPmNi
U2l6ZSA9IHNpemVvZihET0NJTkZPKTsKKyAgICBkaS0+bHBzekRvY05hbWUgPSBkb2NuYW1lOwor
fQorCit2b2lkIFByaW50VmlldyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJh
bSwgTFBBUkFNIGxQYXJhbSkKK3sKKyAgICBIREMgcHJpbnREQyA9IGdldFByaW50ZXJEQygpOwor
ICAgIGlmICghcHJpbnREQykgeworICAgICAgICA6Ok1lc3NhZ2VCb3goMCwgX1QoIkVycm9yIGNy
ZWF0aW5nIHByaW50aW5nIERDIiksIF9UKCJFcnJvciIpLCBNQl9BUFBMTU9EQUwgfCBNQl9PSyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoOjpTZXRBYm9ydFByb2MocHJpbnRE
QywgQWJvcnRQcm9jKSA9PSBTUF9FUlJPUikgeworICAgICAgICA6Ok1lc3NhZ2VCb3goMCwgX1Qo
IkVycm9yIHNldHRpbmcgdXAgQWJvcnRQcm9jIiksIF9UKCJFcnJvciIpLCBNQl9BUFBMTU9EQUwg
fCBNQl9PSyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJV2ViRnJhbWUqIGZyYW1l
ID0gMDsKKyAgICBpZiAoRkFJTEVEKGdXZWJWaWV3LT5tYWluRnJhbWUoJmZyYW1lKSkpCisgICAg
ICAgIGdvdG8gZXhpdDsKKworICAgIElXZWJGcmFtZVByaXZhdGUqIGZyYW1lUHJpdmF0ZSA9IDA7
CisgICAgaWYgKEZBSUxFRCAoZnJhbWUtPlF1ZXJ5SW50ZXJmYWNlKCZmcmFtZVByaXZhdGUpKSkK
KyAgICAgICAgZ290byBleGl0OworCisgICAgZnJhbWVQcml2YXRlLT5zZXRJblByaW50aW5nTW9k
ZShUUlVFLCBwcmludERDKTsKKworICAgIFVJTlQgcGFnZUNvdW50ID0gMDsKKyAgICBmcmFtZVBy
aXZhdGUtPmdldFByaW50ZWRQYWdlQ291bnQocHJpbnREQywgJnBhZ2VDb3VudCk7CisKKyAgICBE
T0NJTkZPIGRpOworICAgIGluaXREb2NTdHJ1Y3QoJmRpLCBfVCgiV2ViS2l0IERvYyIpKTsKKyAg
ICA6OlN0YXJ0RG9jKHByaW50REMsICZkaSk7CisKKyAgICB2b2lkKiBncmFwaGljc0NvbnRleHQg
PSAwOworICAgIGZvciAoc2l6ZV90IHBhZ2UgPSAwOyBwYWdlIDwgcGFnZUNvdW50OyArK3BhZ2Up
IHsKKyAgICAgICAgOjpTdGFydFBhZ2UocHJpbnREQyk7CisgICAgICAgIGZyYW1lUHJpdmF0ZS0+
c3Bvb2xQYWdlcyhwcmludERDLCBwYWdlLCBwYWdlLCBncmFwaGljc0NvbnRleHQpOworICAgICAg
ICA6OkVuZFBhZ2UocHJpbnREQyk7CisgICAgfQorCisgICAgZnJhbWVQcml2YXRlLT5zZXRJblBy
aW50aW5nTW9kZShGQUxTRSwgcHJpbnREQyk7CisKKyAgICA6OkVuZERvYyhwcmludERDKTsKKyAg
ICA6OkRlbGV0ZURDKHByaW50REMpOworCitleGl0OgorICAgIGlmIChmcmFtZSkKKyAgICAgICAg
ZnJhbWUtPlJlbGVhc2UoKTsKKyAgICBpZiAoZnJhbWVQcml2YXRlKQorICAgICAgICBmcmFtZVBy
aXZhdGUtPlJlbGVhc2UoKTsKK30KKwogTFJFU1VMVCBDQUxMQkFDSyBXbmRQcm9jKEhXTkQgaFdu
ZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewogICAgIGlu
dCB3bUlkLCB3bUV2ZW50OwpAQCAtMjk5LDYgKzM4OSw5IEBAIExSRVNVTFQgQ0FMTEJBQ0sgV25k
UHJvYyhIV05EIGhXbmQsIFVJTlQKICAgICAgICAgICAgIGNhc2UgSURNX0VYSVQ6CiAgICAgICAg
ICAgICAgICAgRGVzdHJveVdpbmRvdyhoV25kKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgSURNX1BSSU5UOgorICAgICAgICAgICAgICAgIFByaW50VmlldyhoV25k
LCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHJldHVybiBEZWZXaW5kb3dQcm9jKGhX
bmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKICAgICAgICAgfQpJbmRleDogV2ViS2l0VG9v
bHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIucmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
V2luTGF1bmNoZXIvV2luTGF1bmNoZXIucmMJKHJldmlzaW9uIDUyMTIxKQorKysgV2ViS2l0VG9v
bHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIucmMJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDcgQEAgSURDX1dJTkxBVU5DSEVSIE1FTlUgCiBCRUdJTgogICAgIFBPUFVQICImRmlsZSIKICAg
ICBCRUdJTgorICAgICAgICBNRU5VSVRFTSAiJlByaW50XHRDdHJsLVAiLCAgICAgICAgICAgICAg
SURNX1BSSU5UCiAgICAgICAgIE1FTlVJVEVNICJFJnhpdCIsICAgICAgICAgICAgICAgICAgICAg
ICBJRE1fRVhJVAogICAgIEVORAogICAgIFBPUFVQICImSGVscCIKQEAgLTc0LDggKzc1LDggQEAg
Q0FQVElPTiAiQWJvdXQiCiBGT05UIDgsICJTeXN0ZW0iLCAwLCAwLCAweDAKIEJFR0lOCiAgICAg
SUNPTiAgICAgICAgICAgIElESV9XSU5MQVVOQ0hFUixJRENfTVlJQ09OLDE0LDksMjAsMjAKLSAg
ICBMVEVYVCAgICAgICAgICAgIldpbkxhdW5jaGVyIFZlcnNpb24gMS4xIixJRENfU1RBVElDLDQ5
LDEwLDExOSw4LFNTX05PUFJFRklYCi0gICAgTFRFWFQgICAgICAgICAgICJDb3B5cmlnaHQgKEMp
IDIwMDgiLElEQ19TVEFUSUMsNDksMjAsMTE5LDgKKyAgICBMVEVYVCAgICAgICAgICAgIldpbkxh
dW5jaGVyIFZlcnNpb24gMS4yIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LFNTX05PUFJFRklYCisg
ICAgTFRFWFQgICAgICAgICAgICJDb3B5cmlnaHQgKEMpIDIwMDkiLElEQ19TVEFUSUMsNDksMjAs
MTE5LDgKICAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE5NSw2LDMwLDExLFdTX0dST1VQ
CiBFTkQKIApJbmRleDogV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLnZjcHJv
agkocmV2aXNpb24gNTIxMjEpCisrKyBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hl
ci52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw2ICs0MDksMTAgQEAKIAkJCVVuaXF1ZUlk
ZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ig0KIAkJCT4N
CiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii5cUHJpbnRXZWJVSURlbGVnYXRlLmNwcCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii5cc3Rk
YWZ4LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC00NjMsNiArNDY3
LDEwIEBACiAJCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1
RkJFNTJFQkZCfSINCiAJCQk+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuXFByaW50
V2ViVUlEZWxlZ2F0ZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJl
bGF0aXZlUGF0aD0iLlxSZXNvdXJjZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdl
YktpdFRvb2xzL1dpbkxhdW5jaGVyL3Jlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvV2luTGF1bmNoZXIvcmVzb3VyY2UuaAkocmV2aXNpb24gNTIxMjEpCisrKyBXZWJLaXRUb29s
cy9XaW5MYXVuY2hlci9yZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsOCBAQAog
I2RlZmluZSBJRFNfQVBQX1RJVExFICAgICAgICAgICAgICAgICAgIDEwMwogI2RlZmluZSBJRERf
QUJPVVRCT1ggICAgICAgICAgICAgICAgICAgIDEwMwogI2RlZmluZSBJRE1fQUJPVVQgICAgICAg
ICAgICAgICAgICAgICAgIDEwNAotI2RlZmluZSBJRE1fRVhJVCAgICAgICAgICAgICAgICAgICAg
ICAgIDEwNQorI2RlZmluZSBJRE1fUFJJTlQgICAgICAgICAgICAgICAgICAgICAgIDEwNQorI2Rl
ZmluZSBJRE1fRVhJVCAgICAgICAgICAgICAgICAgICAgICAgIDEwNgogI2RlZmluZSBJRElfV0lO
TEFVTkNIRVIgICAgICAgICAgICAgICAgIDEwNwogI2RlZmluZSBJRElfU01BTEwgICAgICAgICAg
ICAgICAgICAgICAgIDEwOAogI2RlZmluZSBJRENfV0lOTEFVTkNIRVIgICAgICAgICAgICAgICAg
IDEwOQo=
</data>
<flag name="review"
          id="26764"
          type_id="1"
          status="+"
          setter="aroben"
    />
    <flag name="commit-queue"
          id="27199"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>