<?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>44075</bug_id>
          
          <creation_ts>2010-08-16 15:00:50 -0700</creation_ts>
          <short_desc>Add idl and mock classes for FileWriter.</short_desc>
          <delta_ts>2010-08-19 00:18:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric U.">ericu</reporter>
          <assigned_to name="Eric U.">ericu</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kinuko</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>265250</commentid>
    <comment_count>0</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-16 15:00:50 -0700</bug_when>
    <thetext>Add the idl and stubbed-out classes for the FileWriter class, as specified in http://dev.w3.org/2009/dap/file-system/file-writer.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265898</commentid>
    <comment_count>1</comment_count>
      <attachid>64659</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-17 18:41:15 -0700</bug_when>
    <thetext>Created attachment 64659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265907</commentid>
    <comment_count>2</comment_count>
      <attachid>64659</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-17 19:31:33 -0700</bug_when>
    <thetext>Comment on attachment 64659
Patch


&gt; Index: WebCore/dom/EventNames.h
&gt; @@ -103,6 +103,9 @@ namespace WebCore {
&gt;      macro(textInput) \
&gt;      macro(unload) \
&gt;      macro(updateready) \
&gt; +    macro(write) \
&gt; +    macro(writestart) \
&gt; +    macro(writeend) \

I understand the logic of putting start before end but I htink it would be better just to sort alphabetically like many -- but not all :( -- of these items are.


&gt; Index: WebCore/dom/EventTarget.cpp
&gt; +FileWriter* EventTarget::toFileWriter()
&gt; +{
&gt; +    return 0;
&gt; +}

Shouldn&apos;t this be guarded by &quot;FILE_WRITER&quot; instead of &quot;BLOB&quot;?


&gt; Index: WebCore/dom/EventTarget.h
&gt;  #if ENABLE(BLOB)
&gt;          virtual FileReader* toFileReader();
&gt; +        virtual FileWriter* toFileWriter();

Shouldn&apos;t this be guarded by &quot;FILE_WRITER&quot; instead of &quot;BLOB&quot;?


&gt; Index: WebCore/html/FileWriter.h
&gt; +#include &quot;FileError.h&quot;

I suspect when you change the return type of error() (see below) that you can remove this #include and simmply have a fwd declaration for FileError.



&gt; +// FIXME: This is an empty, do-nothing placeholder for implementation yet to come.
&gt; +class FileWriter : public RefCounted&lt;FileWriter&gt;, public ActiveDOMObject, public EventTarget {
&gt; +    virtual ~FileWriter();

When I was doing some coding in Chromium, I saw this practice of making the destructor private and making the RefCounted class a friend. It looks like a good practice, so please consider it.


&gt; +
&gt; +    enum ReadyState {
&gt; +        EMPTY = 0,
&gt; +        WRITING = 1,
&gt; +        DONE = 2

&quot;Enum members should user InterCaps with an initial capital letter.&quot; -- http://webkit.org/coding/coding-style.html
Also I wonder if empty should be init -- see comment in idl file.

Lastly, it looks like you are keeping these in step with the idl file. It seems like there should be a compile assert somewhere to verify this.



&gt; +    PassRefPtr&lt;FileError&gt; error() const { return m_error; };
This should be a FileError* 

&quot;* If a function’s result is an object, but ownership is not being transferred, the result should be a raw pointer. This includes most getter functions.
* If a function’s result is a new object or ownership is being transferred for any other reason, the result should be a PassRefPtr. Since local variables are typically RefPtr, it’s common to call release in the return statement to transfer the RefPtr to the PassRefPtr.&quot;

-- http://webkit.org/coding/RefPtr.html


&gt; Index: WebCore/html/FileWriter.idl
&gt; +module html {
&gt; +    interface [
&gt; +        Conditional=BLOB,

Shouldn&apos;t this be &quot;FILE_WRITER&quot; instead of &quot;BLOB&quot;?

&gt; +        CallWith=ScriptExecutionContext,
&gt; +        EventTarget,
&gt; +        NoStaticTables
&gt; +    ] FileWriter {
&gt; +        // ready states
&gt; +        const unsigned short EMPTY = 0;

In http://www.w3.org/TR/file-writer-api/, this is INIT (instead of EMPTY).

&gt; +        const unsigned short WRITING = 1;
&gt; +        const unsigned short DONE = 2;
&gt; +        readonly attribute unsigned short readyState;
&gt; +
&gt; +        // async write/modify methods

Ideally comments start with a capital and end with a &quot;.&quot;

&gt; +        void write(in Blob data);

add &quot;raises (FileException)&quot;

&gt; +        void seek(in long long position);

add &quot;raises (FileException)&quot;

&gt; +        void truncate(in long long size);

add &quot;raises (FileException)&quot;

&gt; +
&gt; +        void abort();
&gt; +
&gt; +        readonly attribute FileError error;
&gt; +        readonly attribute long long position;
&gt; +        readonly attribute long long length;
&gt; +
&gt; +        attribute EventListener onwritestart;

In other idl files, I&apos;ve noticed that &quot;attribute&quot; is vertically aligned. (Space or readonly is always left, just like the specs.)

&gt; +        attribute EventListener onprogress;
&gt; +        attribute EventListener onwrite;
&gt; +        attribute EventListener onabort;
&gt; +        attribute EventListener onerror;
&gt; +        attribute EventListener onwriteend;
&gt; +    };
&gt; +}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266273</commentid>
    <comment_count>3</comment_count>
      <attachid>64743</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-18 11:26:26 -0700</bug_when>
    <thetext>Created attachment 64743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266274</commentid>
    <comment_count>4</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-18 11:28:07 -0700</bug_when>
    <thetext>&gt;&gt; Index: WebCore/dom/EventNames.h
&gt;&gt; @@ -103,6 +103,9 @@ namespace WebCore {
&gt;&gt;      macro(textInput) \
&gt;&gt;      macro(unload) \
&gt;&gt;      macro(updateready) \
&gt;&gt; +    macro(write) \
&gt;&gt; +    macro(writestart) \
&gt;&gt; +    macro(writeend) \
&gt;
&gt; I understand the logic of putting start before end but I htink it would be better just to sort alphabetically like many -- but not all :( -- of these items are.

Fixed.

&gt;&gt; Index: WebCore/dom/EventTarget.cpp
&gt;&gt; +FileWriter* EventTarget::toFileWriter()
&gt;&gt; +{
&gt;&gt; +    return 0;
&gt;&gt; +}
&gt;
&gt; Shouldn&apos;t this be guarded by &quot;FILE_WRITER&quot; instead of &quot;BLOB&quot;?

See below.

&gt;&gt; Index: WebCore/dom/EventTarget.h
&gt;&gt;  #if ENABLE(BLOB)
&gt;&gt;          virtual FileReader* toFileReader();
&gt;&gt; +        virtual FileWriter* toFileWriter();
&gt;
&gt; Shouldn&apos;t this be guarded by &quot;FILE_WRITER&quot; instead of &quot;BLOB&quot;?
&gt;
&gt;
&gt;&gt; Index: WebCore/html/FileWriter.h
&gt;&gt; +#include &quot;FileError.h&quot;
&gt;
&gt; I suspect when you change the return type of error() (see below) that you can remove this #include and simmply have a fwd declaration for FileError.

See below.

&gt;&gt; +// FIXME: This is an empty, do-nothing placeholder for implementation yet to come.
&gt;&gt; +class FileWriter : public RefCounted&lt;FileWriter&gt;, public ActiveDOMObject, public EventTarget {
&gt;&gt; +    virtual ~FileWriter();
&gt;
&gt; When I was doing some coding in Chromium, I saw this practice of making the destructor private and making the RefCounted class a friend. It looks like a good practice, so please consider it.

Sounds like a fine idea; done.

&gt;&gt; +    enum ReadyState {
&gt;&gt; +        EMPTY = 0,
&gt;&gt; +        WRITING = 1,
&gt;&gt; +        DONE = 2
&gt;
&gt; &quot;Enum members should user InterCaps with an initial capital letter.&quot; -- http://webkit.org/coding/coding-style.html

Can&apos;t do that--see below re: COMPILE_ASSERT.

&gt; Also I wonder if empty should be init -- see comment in idl file.

Yup--typo based on my using FileReader as a template.

&gt; Lastly, it looks like you are keeping these in step with the idl file. It seems like there should be a compile assert somewhere to verify this.

The generated JSFileWriter.cpp does this automatically.  It contains
lines like this:

  COMPILE_ASSERT(0 == FileWriter::INIT,
FileWriterEnumINITIsWrongUseDontCheckEnums);

...which incidentally force the enum to be INIT, not Init.

&gt;&gt; +    PassRefPtr&lt;FileError&gt; error() const { return m_error; };
&gt; This should be a FileError*
&gt;
&gt; &quot;* If a function’s result is an object, but ownership is not being transferred, the result should be a raw pointer. This includes most getter functions.
&gt; * If a function’s result is a new object or ownership is being transferred for any other reason, the result should be a PassRefPtr. Since local variables are typically RefPtr, it’s common to call release in the return statement to transfer the RefPtr to the PassRefPtr.&quot;

This is copied right from FileReader; I&apos;m assuming the point is that
the reference to the FileError might outlive the member variable
[perhaps if someone calls abort() after a previous failure led to a
call to didFail()?].  So ownership is not transferred as such, but
shared.  It seems like FileWriter could end up in a similar situation.

&gt; -- http://webkit.org/coding/RefPtr.html
&gt;
&gt;
&gt;&gt; Index: WebCore/html/FileWriter.idl
&gt;&gt; +module html {
&gt;&gt; +    interface [
&gt;&gt; +        Conditional=BLOB,
&gt;
&gt; Shouldn&apos;t this be &quot;FILE_WRITER&quot; instead of &quot;BLOB&quot;?

Actually, it should probably be FILE_SYSTEM, as this is really only
useful for the filesystem API for now, and we don&apos;t really need a
separate flag just for it.  Fixed [all references].

&gt;&gt; +        CallWith=ScriptExecutionContext,
&gt;&gt; +        EventTarget,
&gt;&gt; +        NoStaticTables
&gt;&gt; +    ] FileWriter {
&gt;&gt; +        // ready states
&gt;&gt; +        const unsigned short EMPTY = 0;
&gt;
&gt; In http://www.w3.org/TR/file-writer-api/, this is INIT (instead of EMPTY).

Fixed.

&gt;&gt; +        const unsigned short WRITING = 1;
&gt;&gt; +        const unsigned short DONE = 2;
&gt;&gt; +        readonly attribute unsigned short readyState;
&gt;&gt; +
&gt;&gt; +        // async write/modify methods
&gt;
&gt; Ideally comments start with a capital and end with a &quot;.&quot;

Here they&apos;re far too short to be actual sentences; do you think it&apos;s
an improvement to make them look like ungrammatical sentences, or
better to flesh them out into longer comments?  I feel like either
would make them less readable/useful.

&gt;&gt; +        void write(in Blob data);
&gt;
&gt; add &quot;raises (FileException)&quot;
&gt;
&gt;&gt; +        void seek(in long long position);
&gt;
&gt; add &quot;raises (FileException)&quot;
&gt;
&gt;&gt; +        void truncate(in long long size);
&gt;
&gt; add &quot;raises (FileException)&quot;

Fixed [abort too].

&gt;&gt; +
&gt;&gt; +        void abort();
&gt;&gt; +
&gt;&gt; +        readonly attribute FileError error;
&gt;&gt; +        readonly attribute long long position;
&gt;&gt; +        readonly attribute long long length;
&gt;&gt; +
&gt;&gt; +        attribute EventListener onwritestart;
&gt;
&gt; In other idl files, I&apos;ve noticed that &quot;attribute&quot; is vertically aligned. (Space or readonly is always left, just like the specs.)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266297</commentid>
    <comment_count>5</comment_count>
      <attachid>64749</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-18 12:07:19 -0700</bug_when>
    <thetext>Created attachment 64749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266298</commentid>
    <comment_count>6</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-18 12:08:07 -0700</bug_when>
    <thetext>Changed as discussed offline.
Note that the new event names in EventNames.h are unconditional, as with all the others there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266308</commentid>
    <comment_count>7</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-18 12:23:01 -0700</bug_when>
    <thetext>(Oh so now it&apos;s guarded by FILE_WRITER... looks good to me:))

&gt; +class FileWriter : public RefCounted&lt;FileWriter&gt;, public ActiveDOMObject, public EventTarget {

One point; as for ActiveDOMObject... as far as I believe we need to add the class name in IsActiveDomType method in WebCore/bindings/scripts/CodeGeneratorV8.pm to make it kept in the wrapper in v8.  Same for FileReader.   (Am I right?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266491</commentid>
    <comment_count>8</comment_count>
      <attachid>64749</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-18 18:07:44 -0700</bug_when>
    <thetext>Comment on attachment 64749
Patch

Rejecting patch 64749 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;David Levin&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
6 (offset 2 lines).
Hunk #2 succeeded at 6727 (offset 6 lines).
Hunk #3 succeeded at 14020 (offset 7 lines).
Hunk #4 FAILED at 20320.
Hunk #5 FAILED at 22770.
2 out of 5 hunks FAILED -- saving rejects to file WebCore/WebCore.xcodeproj/project.pbxproj.rej
patching file WebCore/dom/EventNames.h
patching file WebCore/dom/EventTarget.cpp
patching file WebCore/dom/EventTarget.h
patching file WebCore/html/FileWriter.cpp
patching file WebCore/html/FileWriter.h
patching file WebCore/html/FileWriter.idl

Full output: http://queues.webkit.org/results/3799038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266493</commentid>
    <comment_count>9</comment_count>
      <attachid>64796</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-18 18:25:06 -0700</bug_when>
    <thetext>Created attachment 64796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266494</commentid>
    <comment_count>10</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-18 18:25:50 -0700</bug_when>
    <thetext>Re-posted the same patch with the merge conflict resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266571</commentid>
    <comment_count>11</comment_count>
      <attachid>64796</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-19 00:18:37 -0700</bug_when>
    <thetext>Comment on attachment 64796
Patch

Clearing flags on attachment: 64796

Committed r65656: &lt;http://trac.webkit.org/changeset/65656&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266572</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-19 00:18:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64659</attachid>
            <date>2010-08-17 18:41:15 -0700</date>
            <delta_ts>2010-08-18 11:26:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44075-20100817184114.patch</filename>
            <type>text/plain</type>
            <size>22123</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTU4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDgtMTcgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgaWRsIGFuZCBtb2NrIGNsYXNzZXMgZm9yIEZpbGVXcml0ZXIuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDA3NQorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgc2luY2UgdGhlcmUncyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBOZXcg
ZG8tbm90aGluZyBjbGFzc2VzLCBidXQgdGhlIHJlYWwgSURMOgorICAgICAgICAqIEZpbGVXcml0
ZXIuaWRsOgorICAgICAgICAqIEZpbGVXcml0ZXIuaDoKKyAgICAgICAgKiBGaWxlV3JpdGVyLmNw
cDoKKworICAgICAgICBUaGUgYnVpbGQgZmlsZSBjaGFuZ2VzIHRvIGluY2x1ZGUgdGhlIGFib3Zl
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAg
ICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgQWRkZWQgRmlsZVdyaXRlciBldmVudCBuYW1lcyBhbmQgcmVxdWlyZWQgRXZlbnRUYXJn
ZXQgY2hhbmdlcy4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9GaWxlV3Jp
dGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKIDIwMTAtMDgtMTcgIEFyaXlhIEhp
ZGF5YXQgIDxhcml5YUBzZW5jaGEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8g
R29tZXMuCkluZGV4OiBXZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDY1NTc1KQorKysgV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDYgKzE5OCw3IEBAIFNFVChXZWJDb3JlX0lETF9G
SUxFUwogICAgIGh0bWwvRmlsZS5pZGwKICAgICBodG1sL0ZpbGVMaXN0LmlkbAogICAgIGh0bWwv
RmlsZVJlYWRlci5pZGwKKyAgICBodG1sL0ZpbGVXcml0ZXIuaWRsCiAgICAgaHRtbC9IVE1MQWxs
Q29sbGVjdGlvbi5pZGwKICAgICBodG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbAogICAgIGh0bWwv
SFRNTEFwcGxldEVsZW1lbnQuaWRsCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkocmV2aXNpb24gNjU1NzUp
CisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYg
KzExMCw3IEBACiAjaW5jbHVkZSAiSlNGaWxlTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNGaWxlUmVh
ZGVyLmNwcCIKICNpbmNsdWRlICJKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAiCisjaW5jbHVkZSAi
SlNGaWxlV3JpdGVyLmNwcCIKICNpbmNsdWRlICJKU0ZsYWdzLmNwcCIKICNpbmNsdWRlICJKU0dl
b2xvY2F0aW9uLmNwcCIKICNpbmNsdWRlICJKU0dlb3Bvc2l0aW9uLmNwcCIKSW5kZXg6IFdlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHJldmlzaW9uIDY1NTc1KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAg
RmlsZUVycm9yIFwKICAgICBGaWxlTGlzdCBcCiAgICAgRmlsZVJlYWRlciBcCisgICAgRmlsZVdy
aXRlciBcCiAgICAgRmlsZVN5c3RlbUNhbGxiYWNrIFwKICAgICBGbGFncyBcCiAgICAgR2VvbG9j
YXRpb24gXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2NTU3NSkKKysrIFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsOCBAQCB3ZWJjb3JlX2J1aWx0X3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlTGlzdC5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVJlYWRlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNGaWxlUmVhZGVyLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlV3Jp
dGVyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVXcml0ZXIuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zsb2F0MzJBcnJheS5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNGbG9hdDMyQXJyYXkuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dl
b2xvY2F0aW9uLmNwcCBcCkBAIC0xMzUzLDYgKzEzNTUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVdlYkNvcmUvaHRtbC9GaWxlTGlzdC5oIFwKIAlXZWJDb3JlL2h0bWwvRmlsZVJlYWRlci5j
cHAgXAogCVdlYkNvcmUvaHRtbC9GaWxlUmVhZGVyLmggXAorCVdlYkNvcmUvaHRtbC9GaWxlV3Jp
dGVyLmNwcCBcCisJV2ViQ29yZS9odG1sL0ZpbGVXcml0ZXIuaCBcCiAJV2ViQ29yZS9odG1sL0Zp
bGVTdHJlYW0uY3BwIFwKIAlXZWJDb3JlL2h0bWwvRmlsZVN0cmVhbS5oIFwKIAlXZWJDb3JlL2h0
bWwvRmlsZVN0cmVhbUNsaWVudC5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2NTU3NSkKKysrIFdlYkNv
cmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICAg
ICAgICAgICdodG1sL0ZpbGVFcnJvci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZUxpc3Qu
aWRsJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXIuaWRsJywKKyAgICAgICAgICAgICdo
dG1sL0ZpbGVXcml0ZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxBbGxDb2xsZWN0aW9u
LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwnLAogICAgICAg
ICAgICAgJ2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaWRsJywKQEAgLTE1MTgsNiArMTUxOSw4IEBA
CiAgICAgICAgICAgICAnaHRtbC9GaWxlTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVS
ZWFkZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXIuaCcsCisgICAgICAgICAg
ICAnaHRtbC9GaWxlV3JpdGVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9GaWxlV3JpdGVyLmgn
LAogICAgICAgICAgICAgJ2h0bWwvRmlsZVN0cmVhbS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
RmlsZVN0cmVhbS5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVTdHJlYW1DbGllbnQuaCcsCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5w
cmkJKHJldmlzaW9uIDY1NTc1KQorKysgV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2luZyBjb3B5
KQpAQCAtMTc5LDYgKzE3OSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgaHRtbC9GaWxlRXJy
b3IuaWRsIFwKICAgICBodG1sL0ZpbGVMaXN0LmlkbCBcCiAgICAgaHRtbC9GaWxlUmVhZGVyLmlk
bCBcCisgICAgaHRtbC9GaWxlV3JpdGVyLmlkbCBcCiAgICAgaHRtbC9IVE1MQWxsQ29sbGVjdGlv
bi5pZGwgXAogICAgIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5pZGwgXAogICAgIGh0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuaWRsIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjU1NzUpCisrKyBXZWJDb3JlL1dlYkNv
cmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC02MzksNiArNjM5LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgaHRtbC9GaWxlU3RyZWFtLmNwcCBcCiAgICAgaHRtbC9GaWxlU3RyZWFtUHJveHkuY3BwIFwK
ICAgICBodG1sL0ZpbGVUaHJlYWQuY3BwIFwKKyAgICBodG1sL0ZpbGVXcml0ZXIuY3BwIFwKICAg
ICBodG1sL0Zvcm1EYXRhTGlzdC5jcHAgXAogICAgIGh0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAg
XAogICAgIGh0bWwvSFRNTFRva2VuaXplci5jcHAgXApAQCAtMTQxNSw2ICsxNDE2LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgaHRtbC9GaWxlU3RyZWFtUHJveHkuaCBcCiAgICAgaHRtbC9GaWxlVGhy
ZWFkLmggXAogICAgIGh0bWwvRmlsZVRocmVhZFRhc2suaCBcCisgICAgaHRtbC9GaWxlV3JpdGVy
LmggXAogICAgIGh0bWwvRm9ybURhdGFMaXN0LmggXAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rp
b24uaCBcCiAgICAgaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIFwKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNjU1NzUpCisrKyBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OTgxLDYgKzQ5ODEs
NjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
JChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0Zp
bGVXcml0ZXIuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4N
CisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4z
MiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wN
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmls
ZVdyaXRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQpAQCAtMzcxNDEsNiArMzcxOTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGaWxlV3JpdGVyLmNwcCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRmlsZVdy
aXRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5caHRtbFxGb3JtRGF0YUxpc3QuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2NTU3
NSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC04OTQsNiArODk0LDggQEAKIAkJNDYxNEExRkUwQjIzQThENjAwNDQ2RTFDIC8q
IGNvcHlDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi87IH07
CiAJCTQ2NEVBMjczMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRFQTI3MTBCOEEz
NTBCMDBBOEU2RTMgLyogY3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDY0RUEyNzQwQjhB
MzUwQjAwQThFNkUzIC8qIG5vdEFsbG93ZWRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMgLyog
bm90QWxsb3dlZEN1cnNvci5wbmcgKi87IH07CisJCTQ2QTI2OTA1MTIxQjZCNDMwMEM0MUYzQSAv
KiBGaWxlV3JpdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QTI2OTAyMTIxQjZCNDMwMEM0MUYzQSAvKiBGaWxlV3JpdGVyLmNwcCAqLzsgfTsK
KwkJNDZBMjY5MDYxMjFCNkI0MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTI2OTAzMTIxQjZCNDMwMEM0MUYz
QSAvKiBGaWxlV3JpdGVyLmggKi87IH07CiAJCTQ2QkQxNkUzMEIyNzk0NzMwMDFGMDgzOSAvKiBu
b25lQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCRDE2RTIwQjI3OTQ3MzAwMUYwODM5IC8qIG5vbmVDdXJzb3IucG5nICovOyB9Owog
CQk0NkQ0RjI0OTBBRjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDRGMjQ2MEFGOTdFODEwMDM1
Mzg1QSAvKiBjZWxsQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDZENEYyNEEwQUY5N0U4MTAwMzUzODVB
IC8qIGNvbnRleHRNZW51Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZENEYyNDcwQUY5N0U4MTAwMzUzODVBIC8qIGNvbnRleHRNZW51
Q3Vyc29yLnBuZyAqLzsgfTsKQEAgLTY3MTksNiArNjcyMSw5IEBACiAJCTQ2MTRBMUZEMEIyM0E4
RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNvcHlDdXJzb3IucG5nOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRFQTI3MTBCOEEzNTBCMDBBOEU2RTMgLyog
Y3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNyb3NzSGFpckN1cnNvci5wbmc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NEVBMjcyMEI4QTM1MEIwMEE4RTZFMyAvKiBub3RB
bGxvd2VkQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG5vdEFsbG93ZWRDdXJzb3IucG5nOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NkEyNjkwMjEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdy
aXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlV3JpdGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZBMjY5MDMxMjFCNkI0MzAwQzQx
RjNBIC8qIEZpbGVXcml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmls
ZVdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkEyNjkwNDEyMUI2QjQz
MDBDNDFGM0EgLyogRmlsZVdyaXRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVdy
aXRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkQxNkUyMEIyNzk0NzMw
MDFGMDgzOSAvKiBub25lQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG5vbmVDdXJzb3IucG5nOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0RjI0NjBBRjk3RTgxMDAzNTM4NUEgLyogY2Vs
bEN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBjZWxsQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZENEYyNDcwQUY5N0U4MTAwMzUzODVBIC8qIGNvbnRleHRNZW51Q3Vyc29y
LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGlt
YWdlLnBuZzsgcGF0aCA9IGNvbnRleHRNZW51Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0MDA4LDYgKzE0MDEzLDkgQEAKIAkJCQk4OTUyNTM1MDExNjQxQjM0MDBD
QUJGMDAgLyogRmlsZVRocmVhZC5jcHAgKi8sCiAJCQkJODk1MjUzNTExMTY0MUIzNDAwQ0FCRjAw
IC8qIEZpbGVUaHJlYWQuaCAqLywKIAkJCQk4OTUyNTNERTExNkM0RjA2MDBDQUJGMDAgLyogRmls
ZVRocmVhZFRhc2suaCAqLywKKwkJCQk0NkEyNjkwMjEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdy
aXRlci5jcHAgKi8sCisJCQkJNDZBMjY5MDMxMjFCNkI0MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIu
aCAqLywKKwkJCQk0NkEyNjkwNDEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdyaXRlci5pZGwgKi8s
CiAJCQkJQTgxMzZEMzcwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5jcHAgKi8sCiAJ
CQkJQTgxMzZEMzYwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5oICovLAogCQkJCUJD
OTdFMjM5MTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlvbi5jcHAgKi8sCkBAIC0y
MDMwNSw2ICsyMDMxMyw3IEBACiAJCQkJMkVERUYxRjUxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVERUYxRjcxMjFCMEVGQzAwNzI2REIyIC8q
IEJsb2JSZWdpc3RyeUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFREVGMUY4MTIxQjBFRkMw
MDcyNkRCMiAvKiBCbG9iU3RvcmFnZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QTI2OTA2
MTIxQjZCNDMwMEM0MUYzQSAvKiBGaWxlV3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNzU0
LDYgKzIyNzYzLDcgQEAKIAkJCQlDNTdGRURFMTEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3Rl
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRURFRjFGMzEyMUIwRUZDMDA3MjZEQjIgLyogQmxv
YkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkVERUYxRjYxMjFCMEVGQzAwNzI2REIyIC8q
IEJsb2JSZWdpc3RyeUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDZBMjY5MDUxMjFCNkI0
MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
CShyZXZpc2lvbiA2NTU3NSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAzLDYgKzEwMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyh0
ZXh0SW5wdXQpIFwKICAgICBtYWNybyh1bmxvYWQpIFwKICAgICBtYWNybyh1cGRhdGVyZWFkeSkg
XAorICAgIG1hY3JvKHdyaXRlKSBcCisgICAgbWFjcm8od3JpdGVzdGFydCkgXAorICAgIG1hY3Jv
KHdyaXRlZW5kKSBcCiAgICAgbWFjcm8oem9vbSkgXAogICAgIFwKICAgICBtYWNybyhET01BY3Rp
dmF0ZSkgXApJbmRleDogV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gNjU1NzUpCisrKyBXZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsMTAgQEAg
RmlsZVJlYWRlciogRXZlbnRUYXJnZXQ6OnRvRmlsZVJlYWRlcigpCiB7CiAgICAgcmV0dXJuIDA7
CiB9CitGaWxlV3JpdGVyKiBFdmVudFRhcmdldDo6dG9GaWxlV3JpdGVyKCkKK3sKKyAgICByZXR1
cm4gMDsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkluZGV4OiBX
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgJKHJldmlzaW9uIDY1NTc1KQorKysgV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBFdmVudFNvdXJjZTsKICAgICBjbGFzcyBG
aWxlUmVhZGVyOworICAgIGNsYXNzIEZpbGVXcml0ZXI7CiAgICAgY2xhc3MgSURCUmVxdWVzdDsK
ICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwpAQCAtMTIxLDYgKzEyMiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogI2lmIEVOQUJMRShCTE9CKQogICAgICAg
ICB2aXJ0dWFsIEZpbGVSZWFkZXIqIHRvRmlsZVJlYWRlcigpOworICAgICAgICB2aXJ0dWFsIEZp
bGVXcml0ZXIqIHRvRmlsZVdyaXRlcigpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9GaWxlV3JpdGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvRmlsZVdyaXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0
bWwvRmlsZVdyaXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEJMT0IpCisKKyNpbmNsdWRlICJGaWxlV3JpdGVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmlsZVdyaXRlcjo6RmlsZVdyaXRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQs
IHRoaXMpCit7Cit9CisKK0ZpbGVXcml0ZXI6On5GaWxlV3JpdGVyKCkKK3sKK30KKworYm9vbCBG
aWxlV3JpdGVyOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBGaWxlV3JpdGVyOjpjYW5TdXNwZW5kKCkgY29uc3QKK3sKKyAgICAvLyBG
SVhNRTogSXQgaXMgbm90IGN1cnJlbnRseSBwb3NzaWJsZSB0byBzdXNwZW5kIGEgRmlsZVdyaXRl
ciwgc28gcGFnZXMgd2l0aCBGaWxlV3JpdGVyIGNhbiBub3QgZ28gaW50byBwYWdlIGNhY2hlLgor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBGaWxlV3JpdGVyOjpzdG9wKCkKK3sKK30KKwor
dm9pZCBGaWxlV3JpdGVyOjp3cml0ZShCbG9iKikKK3sKK30KKwordm9pZCBGaWxlV3JpdGVyOjpz
ZWVrKGxvbmcgbG9uZykKK3sKK30KKwordm9pZCBGaWxlV3JpdGVyOjp0cnVuY2F0ZShsb25nIGxv
bmcpCit7Cit9CisKK3ZvaWQgRmlsZVdyaXRlcjo6YWJvcnQoKQoreworfQorCitGaWxlV3JpdGVy
OjpSZWFkeVN0YXRlIEZpbGVXcml0ZXI6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIHJldHVy
biBFTVBUWTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorIAorI2VuZGlmIC8vIEVOQUJM
RShCTE9CKQpJbmRleDogV2ViQ29yZS9odG1sL0ZpbGVXcml0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvRmlsZVdyaXRlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL0Zp
bGVXcml0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGaWxlV3Jp
dGVyX2gKKyNkZWZpbmUgRmlsZVdyaXRlcl9oCisKKyNpZiBFTkFCTEUoQkxPQikKKworI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVk
ZSAiRmlsZUVycm9yLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBCbG9iOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKwor
Ly8gRklYTUU6IFRoaXMgaXMgYW4gZW1wdHksIGRvLW5vdGhpbmcgcGxhY2Vob2xkZXIgZm9yIGlt
cGxlbWVudGF0aW9uIHlldCB0byBjb21lLgorY2xhc3MgRmlsZVdyaXRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPEZpbGVXcml0ZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRU
YXJnZXQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGaWxlV3JpdGVyKGNvbnRleHQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5GaWxlV3JpdGVyKCk7CisKKyAgICBlbnVtIFJlYWR5U3RhdGUgeworICAgICAgICBFTVBUWSA9
IDAsCisgICAgICAgIFdSSVRJTkcgPSAxLAorICAgICAgICBET05FID0gMgorICAgIH07CisKKyAg
ICB2b2lkIHdyaXRlKEJsb2IqKTsKKyAgICB2b2lkIHNlZWsobG9uZyBsb25nIHBvc2l0aW9uKTsK
KyAgICB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZvaWQgYWJvcnQoKTsK
KworICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Rmls
ZUVycm9yPiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH07CisgICAgbG9uZyBsb25n
IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfTsKKyAgICBsb25nIGxvbmcgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gMDsgfTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1
YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CisKKyAgICAvLyBFdmVu
dFRhcmdldAorICAgIHZpcnR1YWwgRmlsZVdyaXRlciogdG9GaWxlV3JpdGVyKCkgeyByZXR1cm4g
dGhpczsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9CisKKyAgICB1c2luZyBSZWZDb3VudGVkPEZpbGVXcml0ZXI+OjpyZWY7
CisgICAgdXNpbmcgUmVmQ291bnRlZDxGaWxlV3JpdGVyPjo6ZGVyZWY7CisKKyAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdyaXRlc3RhcnQpOworICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIocHJvZ3Jlc3MpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIod3JpdGUpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJv
cnQpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOworICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod3JpdGVlbmQpOworCitwcml2YXRlOgorICAg
IEZpbGVXcml0ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgLy8gRXZlbnRUYXJn
ZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXRE
YXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0
YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisgICAgUmVmUHRyPEZpbGVFcnJv
cj4gbV9lcnJvcjsKKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQkxPQikKKworI2Vu
ZGlmIC8vIEZpbGVXcml0ZXJfaApJbmRleDogV2ViQ29yZS9odG1sL0ZpbGVXcml0ZXIuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9GaWxlV3JpdGVyLmlkbAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvaHRtbC9GaWxlV3JpdGVyLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
Cittb2R1bGUgaHRtbCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9QkxP
QiwKKyAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAgRXZl
bnRUYXJnZXQsCisgICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgXSBGaWxlV3JpdGVyIHsKKyAg
ICAgICAgLy8gcmVhZHkgc3RhdGVzCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEVNUFRZ
ID0gMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgV1JJVElORyA9IDE7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IERPTkUgPSAyOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKKworICAgICAgICAvLyBhc3luYyB3cml0ZS9t
b2RpZnkgbWV0aG9kcworICAgICAgICB2b2lkIHdyaXRlKGluIEJsb2IgZGF0YSk7CisgICAgICAg
IHZvaWQgc2VlayhpbiBsb25nIGxvbmcgcG9zaXRpb24pOworICAgICAgICB2b2lkIHRydW5jYXRl
KGluIGxvbmcgbG9uZyBzaXplKTsKKworICAgICAgICB2b2lkIGFib3J0KCk7CisKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEZpbGVFcnJvciBlcnJvcjsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgbG9uZyBwb3NpdGlvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxv
bmcgbG9uZyBsZW5ndGg7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253cml0
ZXN0YXJ0OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnByb2dyZXNzOworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndyaXRlOworICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmFib3J0OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bmVycm9yOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndyaXRlZW5kOworICAg
IH07Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64743</attachid>
            <date>2010-08-18 11:26:26 -0700</date>
            <delta_ts>2010-08-18 12:07:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44075-20100818112625.patch</filename>
            <type>text/plain</type>
            <size>22347</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTU4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDgtMTcgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgaWRsIGFuZCBtb2NrIGNsYXNzZXMgZm9yIEZpbGVXcml0ZXIuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDA3NQorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgc2luY2UgdGhlcmUncyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBOZXcg
ZG8tbm90aGluZyBjbGFzc2VzLCBidXQgdGhlIHJlYWwgSURMOgorICAgICAgICAqIEZpbGVXcml0
ZXIuaWRsOgorICAgICAgICAqIEZpbGVXcml0ZXIuaDoKKyAgICAgICAgKiBGaWxlV3JpdGVyLmNw
cDoKKworICAgICAgICBUaGUgYnVpbGQgZmlsZSBjaGFuZ2VzIHRvIGluY2x1ZGUgdGhlIGFib3Zl
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAg
ICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgQWRkZWQgRmlsZVdyaXRlciBldmVudCBuYW1lcyBhbmQgcmVxdWlyZWQgRXZlbnRUYXJn
ZXQgY2hhbmdlcy4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9GaWxlV3Jp
dGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKIDIwMTAtMDgtMTcgIEFyaXlhIEhp
ZGF5YXQgIDxhcml5YUBzZW5jaGEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8g
R29tZXMuCkluZGV4OiBXZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDY1NTc1KQorKysgV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDYgKzE5OCw3IEBAIFNFVChXZWJDb3JlX0lETF9G
SUxFUwogICAgIGh0bWwvRmlsZS5pZGwKICAgICBodG1sL0ZpbGVMaXN0LmlkbAogICAgIGh0bWwv
RmlsZVJlYWRlci5pZGwKKyAgICBodG1sL0ZpbGVXcml0ZXIuaWRsCiAgICAgaHRtbC9IVE1MQWxs
Q29sbGVjdGlvbi5pZGwKICAgICBodG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbAogICAgIGh0bWwv
SFRNTEFwcGxldEVsZW1lbnQuaWRsCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkocmV2aXNpb24gNjU1NzUp
CisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYg
KzExMCw3IEBACiAjaW5jbHVkZSAiSlNGaWxlTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNGaWxlUmVh
ZGVyLmNwcCIKICNpbmNsdWRlICJKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAiCisjaW5jbHVkZSAi
SlNGaWxlV3JpdGVyLmNwcCIKICNpbmNsdWRlICJKU0ZsYWdzLmNwcCIKICNpbmNsdWRlICJKU0dl
b2xvY2F0aW9uLmNwcCIKICNpbmNsdWRlICJKU0dlb3Bvc2l0aW9uLmNwcCIKSW5kZXg6IFdlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHJldmlzaW9uIDY1NTc1KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAg
RmlsZUVycm9yIFwKICAgICBGaWxlTGlzdCBcCiAgICAgRmlsZVJlYWRlciBcCisgICAgRmlsZVdy
aXRlciBcCiAgICAgRmlsZVN5c3RlbUNhbGxiYWNrIFwKICAgICBGbGFncyBcCiAgICAgR2VvbG9j
YXRpb24gXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2NTU3NSkKKysrIFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsOCBAQCB3ZWJjb3JlX2J1aWx0X3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlTGlzdC5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVJlYWRlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNGaWxlUmVhZGVyLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlV3Jp
dGVyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVXcml0ZXIuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zsb2F0MzJBcnJheS5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNGbG9hdDMyQXJyYXkuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dl
b2xvY2F0aW9uLmNwcCBcCkBAIC0xMzUzLDYgKzEzNTUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVdlYkNvcmUvaHRtbC9GaWxlTGlzdC5oIFwKIAlXZWJDb3JlL2h0bWwvRmlsZVJlYWRlci5j
cHAgXAogCVdlYkNvcmUvaHRtbC9GaWxlUmVhZGVyLmggXAorCVdlYkNvcmUvaHRtbC9GaWxlV3Jp
dGVyLmNwcCBcCisJV2ViQ29yZS9odG1sL0ZpbGVXcml0ZXIuaCBcCiAJV2ViQ29yZS9odG1sL0Zp
bGVTdHJlYW0uY3BwIFwKIAlXZWJDb3JlL2h0bWwvRmlsZVN0cmVhbS5oIFwKIAlXZWJDb3JlL2h0
bWwvRmlsZVN0cmVhbUNsaWVudC5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2NTU3NSkKKysrIFdlYkNv
cmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICAg
ICAgICAgICdodG1sL0ZpbGVFcnJvci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZUxpc3Qu
aWRsJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXIuaWRsJywKKyAgICAgICAgICAgICdo
dG1sL0ZpbGVXcml0ZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxBbGxDb2xsZWN0aW9u
LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwnLAogICAgICAg
ICAgICAgJ2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaWRsJywKQEAgLTE1MTgsNiArMTUxOSw4IEBA
CiAgICAgICAgICAgICAnaHRtbC9GaWxlTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVS
ZWFkZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXIuaCcsCisgICAgICAgICAg
ICAnaHRtbC9GaWxlV3JpdGVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9GaWxlV3JpdGVyLmgn
LAogICAgICAgICAgICAgJ2h0bWwvRmlsZVN0cmVhbS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
RmlsZVN0cmVhbS5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVTdHJlYW1DbGllbnQuaCcsCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5w
cmkJKHJldmlzaW9uIDY1NTc1KQorKysgV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2luZyBjb3B5
KQpAQCAtMTc5LDYgKzE3OSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgaHRtbC9GaWxlRXJy
b3IuaWRsIFwKICAgICBodG1sL0ZpbGVMaXN0LmlkbCBcCiAgICAgaHRtbC9GaWxlUmVhZGVyLmlk
bCBcCisgICAgaHRtbC9GaWxlV3JpdGVyLmlkbCBcCiAgICAgaHRtbC9IVE1MQWxsQ29sbGVjdGlv
bi5pZGwgXAogICAgIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5pZGwgXAogICAgIGh0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuaWRsIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjU1NzUpCisrKyBXZWJDb3JlL1dlYkNv
cmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC02MzksNiArNjM5LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgaHRtbC9GaWxlU3RyZWFtLmNwcCBcCiAgICAgaHRtbC9GaWxlU3RyZWFtUHJveHkuY3BwIFwK
ICAgICBodG1sL0ZpbGVUaHJlYWQuY3BwIFwKKyAgICBodG1sL0ZpbGVXcml0ZXIuY3BwIFwKICAg
ICBodG1sL0Zvcm1EYXRhTGlzdC5jcHAgXAogICAgIGh0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAg
XAogICAgIGh0bWwvSFRNTFRva2VuaXplci5jcHAgXApAQCAtMTQxNSw2ICsxNDE2LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgaHRtbC9GaWxlU3RyZWFtUHJveHkuaCBcCiAgICAgaHRtbC9GaWxlVGhy
ZWFkLmggXAogICAgIGh0bWwvRmlsZVRocmVhZFRhc2suaCBcCisgICAgaHRtbC9GaWxlV3JpdGVy
LmggXAogICAgIGh0bWwvRm9ybURhdGFMaXN0LmggXAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rp
b24uaCBcCiAgICAgaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIFwKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNjU1NzUpCisrKyBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OTgxLDYgKzQ5ODEs
NjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
JChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0Zp
bGVXcml0ZXIuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4N
CisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4z
MiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wN
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmls
ZVdyaXRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQpAQCAtMzcxNDEsNiArMzcxOTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGaWxlV3JpdGVyLmNwcCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRmlsZVdy
aXRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5caHRtbFxGb3JtRGF0YUxpc3QuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2NTU3
NSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC04OTQsNiArODk0LDggQEAKIAkJNDYxNEExRkUwQjIzQThENjAwNDQ2RTFDIC8q
IGNvcHlDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi87IH07
CiAJCTQ2NEVBMjczMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRFQTI3MTBCOEEz
NTBCMDBBOEU2RTMgLyogY3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDY0RUEyNzQwQjhB
MzUwQjAwQThFNkUzIC8qIG5vdEFsbG93ZWRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMgLyog
bm90QWxsb3dlZEN1cnNvci5wbmcgKi87IH07CisJCTQ2QTI2OTA1MTIxQjZCNDMwMEM0MUYzQSAv
KiBGaWxlV3JpdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QTI2OTAyMTIxQjZCNDMwMEM0MUYzQSAvKiBGaWxlV3JpdGVyLmNwcCAqLzsgfTsK
KwkJNDZBMjY5MDYxMjFCNkI0MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTI2OTAzMTIxQjZCNDMwMEM0MUYz
QSAvKiBGaWxlV3JpdGVyLmggKi87IH07CiAJCTQ2QkQxNkUzMEIyNzk0NzMwMDFGMDgzOSAvKiBu
b25lQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCRDE2RTIwQjI3OTQ3MzAwMUYwODM5IC8qIG5vbmVDdXJzb3IucG5nICovOyB9Owog
CQk0NkQ0RjI0OTBBRjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDRGMjQ2MEFGOTdFODEwMDM1
Mzg1QSAvKiBjZWxsQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDZENEYyNEEwQUY5N0U4MTAwMzUzODVB
IC8qIGNvbnRleHRNZW51Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZENEYyNDcwQUY5N0U4MTAwMzUzODVBIC8qIGNvbnRleHRNZW51
Q3Vyc29yLnBuZyAqLzsgfTsKQEAgLTY3MTksNiArNjcyMSw5IEBACiAJCTQ2MTRBMUZEMEIyM0E4
RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNvcHlDdXJzb3IucG5nOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRFQTI3MTBCOEEzNTBCMDBBOEU2RTMgLyog
Y3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNyb3NzSGFpckN1cnNvci5wbmc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NEVBMjcyMEI4QTM1MEIwMEE4RTZFMyAvKiBub3RB
bGxvd2VkQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG5vdEFsbG93ZWRDdXJzb3IucG5nOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NkEyNjkwMjEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdy
aXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlV3JpdGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZBMjY5MDMxMjFCNkI0MzAwQzQx
RjNBIC8qIEZpbGVXcml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmls
ZVdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkEyNjkwNDEyMUI2QjQz
MDBDNDFGM0EgLyogRmlsZVdyaXRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVdy
aXRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkQxNkUyMEIyNzk0NzMw
MDFGMDgzOSAvKiBub25lQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG5vbmVDdXJzb3IucG5nOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0RjI0NjBBRjk3RTgxMDAzNTM4NUEgLyogY2Vs
bEN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBjZWxsQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZENEYyNDcwQUY5N0U4MTAwMzUzODVBIC8qIGNvbnRleHRNZW51Q3Vyc29y
LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGlt
YWdlLnBuZzsgcGF0aCA9IGNvbnRleHRNZW51Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0MDA4LDYgKzE0MDEzLDkgQEAKIAkJCQk4OTUyNTM1MDExNjQxQjM0MDBD
QUJGMDAgLyogRmlsZVRocmVhZC5jcHAgKi8sCiAJCQkJODk1MjUzNTExMTY0MUIzNDAwQ0FCRjAw
IC8qIEZpbGVUaHJlYWQuaCAqLywKIAkJCQk4OTUyNTNERTExNkM0RjA2MDBDQUJGMDAgLyogRmls
ZVRocmVhZFRhc2suaCAqLywKKwkJCQk0NkEyNjkwMjEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdy
aXRlci5jcHAgKi8sCisJCQkJNDZBMjY5MDMxMjFCNkI0MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIu
aCAqLywKKwkJCQk0NkEyNjkwNDEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdyaXRlci5pZGwgKi8s
CiAJCQkJQTgxMzZEMzcwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5jcHAgKi8sCiAJ
CQkJQTgxMzZEMzYwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5oICovLAogCQkJCUJD
OTdFMjM5MTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlvbi5jcHAgKi8sCkBAIC0y
MDMwNSw2ICsyMDMxMyw3IEBACiAJCQkJMkVERUYxRjUxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVERUYxRjcxMjFCMEVGQzAwNzI2REIyIC8q
IEJsb2JSZWdpc3RyeUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFREVGMUY4MTIxQjBFRkMw
MDcyNkRCMiAvKiBCbG9iU3RvcmFnZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QTI2OTA2
MTIxQjZCNDMwMEM0MUYzQSAvKiBGaWxlV3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNzU0
LDYgKzIyNzYzLDcgQEAKIAkJCQlDNTdGRURFMTEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3Rl
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRURFRjFGMzEyMUIwRUZDMDA3MjZEQjIgLyogQmxv
YkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkVERUYxRjYxMjFCMEVGQzAwNzI2REIyIC8q
IEJsb2JSZWdpc3RyeUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDZBMjY5MDUxMjFCNkI0
MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
CShyZXZpc2lvbiA2NTU3NSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAzLDYgKzEwMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyh0
ZXh0SW5wdXQpIFwKICAgICBtYWNybyh1bmxvYWQpIFwKICAgICBtYWNybyh1cGRhdGVyZWFkeSkg
XAorICAgIG1hY3JvKHdyaXRlKSBcCisgICAgbWFjcm8od3JpdGVlbmQpIFwKKyAgICBtYWNybyh3
cml0ZXN0YXJ0KSBcCiAgICAgbWFjcm8oem9vbSkgXAogICAgIFwKICAgICBtYWNybyhET01BY3Rp
dmF0ZSkgXApJbmRleDogV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gNjU1NzUpCisrKyBXZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsMTAgQEAg
RmlsZVJlYWRlciogRXZlbnRUYXJnZXQ6OnRvRmlsZVJlYWRlcigpCiB7CiAgICAgcmV0dXJuIDA7
CiB9CitGaWxlV3JpdGVyKiBFdmVudFRhcmdldDo6dG9GaWxlV3JpdGVyKCkKK3sKKyAgICByZXR1
cm4gMDsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkluZGV4OiBX
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgJKHJldmlzaW9uIDY1NTc1KQorKysgV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBFdmVudFNvdXJjZTsKICAgICBjbGFzcyBG
aWxlUmVhZGVyOworICAgIGNsYXNzIEZpbGVXcml0ZXI7CiAgICAgY2xhc3MgSURCUmVxdWVzdDsK
ICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwpAQCAtMTIxLDYgKzEyMiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogI2lmIEVOQUJMRShCTE9CKQogICAgICAg
ICB2aXJ0dWFsIEZpbGVSZWFkZXIqIHRvRmlsZVJlYWRlcigpOworICAgICAgICB2aXJ0dWFsIEZp
bGVXcml0ZXIqIHRvRmlsZVdyaXRlcigpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9GaWxlV3JpdGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvRmlsZVdyaXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0
bWwvRmlsZVdyaXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRmlsZVdy
aXRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZpbGVXcml0ZXI6OkZpbGVXcml0ZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChj
b250ZXh0LCB0aGlzKQoreworfQorCitGaWxlV3JpdGVyOjp+RmlsZVdyaXRlcigpCit7Cit9CisK
K2Jvb2wgRmlsZVdyaXRlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgRmlsZVdyaXRlcjo6Y2FuU3VzcGVuZCgpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IEl0IGlzIG5vdCBjdXJyZW50bHkgcG9zc2libGUgdG8gc3VzcGVuZCBhIEZp
bGVXcml0ZXIsIHNvIHBhZ2VzIHdpdGggRmlsZVdyaXRlciBjYW4gbm90IGdvIGludG8gcGFnZSBj
YWNoZS4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRmlsZVdyaXRlcjo6c3RvcCgpCit7
Cit9CisKK3ZvaWQgRmlsZVdyaXRlcjo6d3JpdGUoQmxvYiopCit7Cit9CisKK3ZvaWQgRmlsZVdy
aXRlcjo6c2Vlayhsb25nIGxvbmcpCit7Cit9CisKK3ZvaWQgRmlsZVdyaXRlcjo6dHJ1bmNhdGUo
bG9uZyBsb25nKQoreworfQorCit2b2lkIEZpbGVXcml0ZXI6OmFib3J0KCkKK3sKK30KKworRmls
ZVdyaXRlcjo6UmVhZHlTdGF0ZSBGaWxlV3JpdGVyOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gRU1QVFk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyAKKyNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBXZWJDb3JlL2h0bWwvRmlsZVdyaXRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9GaWxlV3JpdGVyLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL2h0bWwvRmlsZVdyaXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEZpbGVXcml0ZXJfaAorI2RlZmluZSBGaWxlV3JpdGVyX2gKKworI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRmlsZUVycm9yLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCbG9iOworY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKKworLy8gRklYTUU6IFRoaXMgaXMgYW4gZW1wdHksIGRvLW5vdGhp
bmcgcGxhY2Vob2xkZXIgZm9yIGltcGxlbWVudGF0aW9uIHlldCB0byBjb21lLgorY2xhc3MgRmls
ZVdyaXRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVXcml0ZXI+LCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlV3JpdGVyKGNvbnRleHQpKTsK
KyAgICB9CisKKyAgICBlbnVtIFJlYWR5U3RhdGUgeworICAgICAgICBFTVBUWSA9IDAsCisgICAg
ICAgIFdSSVRJTkcgPSAxLAorICAgICAgICBET05FID0gMgorICAgIH07CisKKyAgICB2b2lkIHdy
aXRlKEJsb2IqKTsKKyAgICB2b2lkIHNlZWsobG9uZyBsb25nIHBvc2l0aW9uKTsKKyAgICB2b2lk
IHRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZvaWQgYWJvcnQoKTsKKworICAgIFJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8RmlsZUVycm9yPiBl
cnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH07CisgICAgbG9uZyBsb25nIHBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gMDsgfTsKKyAgICBsb25nIGxvbmcgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgYm9vbCBj
YW5TdXNwZW5kKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAor
ICAgIHZpcnR1YWwgRmlsZVdyaXRlciogdG9GaWxlV3JpdGVyKCkgeyByZXR1cm4gdGhpczsgfQor
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CisKKyAgICB1c2luZyBSZWZDb3VudGVkPEZpbGVXcml0ZXI+OjpyZWY7CisgICAgdXNp
bmcgUmVmQ291bnRlZDxGaWxlV3JpdGVyPjo6ZGVyZWY7CisKKyAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHdyaXRlc3RhcnQpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIocHJvZ3Jlc3MpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
d3JpdGUpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOworICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOworICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIod3JpdGVlbmQpOworCitwcml2YXRlOgorICAgIEZpbGVXcml0
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgdmlydHVhbCB+RmlsZVdyaXRlcigp
OworCisgICAgZnJpZW5kIGNsYXNzIFJlZkNvdW50ZWQ8RmlsZVdyaXRlcj47CisKKyAgICAvLyBF
dmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVu
dFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRU
YXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisKKyAgICBSZWZQdHI8
RmlsZUVycm9yPiBtX2Vycm9yOworICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0
YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGSUxF
X1NZU1RFTSkKKworI2VuZGlmIC8vIEZpbGVXcml0ZXJfaApJbmRleDogV2ViQ29yZS9odG1sL0Zp
bGVXcml0ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9GaWxlV3JpdGVyLmlkbAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9GaWxlV3JpdGVyLmlkbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCittb2R1bGUgaHRtbCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsCisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAgICAgICBOb1N0YXRpY1RhYmxlcwor
ICAgIF0gRmlsZVdyaXRlciB7CisgICAgICAgIC8vIHJlYWR5IHN0YXRlcworICAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBJTklUID0gMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
V1JJVElORyA9IDE7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IERPTkUgPSAyOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKKworICAg
ICAgICAvLyBhc3luYyB3cml0ZS9tb2RpZnkgbWV0aG9kcworICAgICAgICB2b2lkIHdyaXRlKGlu
IEJsb2IgZGF0YSkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZWVrKGlu
IGxvbmcgbG9uZyBwb3NpdGlvbikgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKyAgICAgICAgdm9p
ZCB0cnVuY2F0ZShpbiBsb25nIGxvbmcgc2l6ZSkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKwor
ICAgICAgICB2b2lkIGFib3J0KCkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRmlsZUVycm9yIGVycm9yOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyBsb25nIHBvc2l0aW9uOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9u
ZyBsb25nIGxlbmd0aDsKKworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbndyaXRlc3RhcnQ7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9ucHJvZ3Jlc3M7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
d3JpdGU7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7
CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7CisgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud3JpdGVlbmQ7CisgICAgfTsK
K30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64749</attachid>
            <date>2010-08-18 12:07:19 -0700</date>
            <delta_ts>2010-08-18 18:25:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44075-20100818120718.patch</filename>
            <type>text/plain</type>
            <size>22472</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTU4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDgtMTcgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgaWRsIGFuZCBtb2NrIGNsYXNzZXMgZm9yIEZpbGVXcml0ZXIuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDA3NQorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgc2luY2UgdGhlcmUncyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBOZXcg
ZG8tbm90aGluZyBjbGFzc2VzLCBidXQgdGhlIHJlYWwgSURMOgorICAgICAgICAqIEZpbGVXcml0
ZXIuaWRsOgorICAgICAgICAqIEZpbGVXcml0ZXIuaDoKKyAgICAgICAgKiBGaWxlV3JpdGVyLmNw
cDoKKworICAgICAgICBUaGUgYnVpbGQgZmlsZSBjaGFuZ2VzIHRvIGluY2x1ZGUgdGhlIGFib3Zl
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAg
ICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgQWRkZWQgRmlsZVdyaXRlciBldmVudCBuYW1lcyBhbmQgcmVxdWlyZWQgRXZlbnRUYXJn
ZXQgY2hhbmdlcy4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9GaWxlV3Jp
dGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKIDIwMTAtMDgtMTcgIEFyaXlhIEhp
ZGF5YXQgIDxhcml5YUBzZW5jaGEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8g
R29tZXMuCkluZGV4OiBXZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDY1NTc1KQorKysgV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDYgKzE5OCw3IEBAIFNFVChXZWJDb3JlX0lETF9G
SUxFUwogICAgIGh0bWwvRmlsZS5pZGwKICAgICBodG1sL0ZpbGVMaXN0LmlkbAogICAgIGh0bWwv
RmlsZVJlYWRlci5pZGwKKyAgICBodG1sL0ZpbGVXcml0ZXIuaWRsCiAgICAgaHRtbC9IVE1MQWxs
Q29sbGVjdGlvbi5pZGwKICAgICBodG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbAogICAgIGh0bWwv
SFRNTEFwcGxldEVsZW1lbnQuaWRsCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkocmV2aXNpb24gNjU1NzUp
CisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYg
KzExMCw3IEBACiAjaW5jbHVkZSAiSlNGaWxlTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNGaWxlUmVh
ZGVyLmNwcCIKICNpbmNsdWRlICJKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAiCisjaW5jbHVkZSAi
SlNGaWxlV3JpdGVyLmNwcCIKICNpbmNsdWRlICJKU0ZsYWdzLmNwcCIKICNpbmNsdWRlICJKU0dl
b2xvY2F0aW9uLmNwcCIKICNpbmNsdWRlICJKU0dlb3Bvc2l0aW9uLmNwcCIKSW5kZXg6IFdlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHJldmlzaW9uIDY1NTc1KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAg
RmlsZUVycm9yIFwKICAgICBGaWxlTGlzdCBcCiAgICAgRmlsZVJlYWRlciBcCisgICAgRmlsZVdy
aXRlciBcCiAgICAgRmlsZVN5c3RlbUNhbGxiYWNrIFwKICAgICBGbGFncyBcCiAgICAgR2VvbG9j
YXRpb24gXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2NTU3NSkKKysrIFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsOCBAQCB3ZWJjb3JlX2J1aWx0X3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlTGlzdC5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVJlYWRlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNGaWxlUmVhZGVyLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlV3Jp
dGVyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVXcml0ZXIuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zsb2F0MzJBcnJheS5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNGbG9hdDMyQXJyYXkuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dl
b2xvY2F0aW9uLmNwcCBcCkBAIC0xMzUzLDYgKzEzNTUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVdlYkNvcmUvaHRtbC9GaWxlTGlzdC5oIFwKIAlXZWJDb3JlL2h0bWwvRmlsZVJlYWRlci5j
cHAgXAogCVdlYkNvcmUvaHRtbC9GaWxlUmVhZGVyLmggXAorCVdlYkNvcmUvaHRtbC9GaWxlV3Jp
dGVyLmNwcCBcCisJV2ViQ29yZS9odG1sL0ZpbGVXcml0ZXIuaCBcCiAJV2ViQ29yZS9odG1sL0Zp
bGVTdHJlYW0uY3BwIFwKIAlXZWJDb3JlL2h0bWwvRmlsZVN0cmVhbS5oIFwKIAlXZWJDb3JlL2h0
bWwvRmlsZVN0cmVhbUNsaWVudC5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2NTU3NSkKKysrIFdlYkNv
cmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICAg
ICAgICAgICdodG1sL0ZpbGVFcnJvci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZUxpc3Qu
aWRsJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXIuaWRsJywKKyAgICAgICAgICAgICdo
dG1sL0ZpbGVXcml0ZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxBbGxDb2xsZWN0aW9u
LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwnLAogICAgICAg
ICAgICAgJ2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaWRsJywKQEAgLTE1MTgsNiArMTUxOSw4IEBA
CiAgICAgICAgICAgICAnaHRtbC9GaWxlTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVS
ZWFkZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXIuaCcsCisgICAgICAgICAg
ICAnaHRtbC9GaWxlV3JpdGVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9GaWxlV3JpdGVyLmgn
LAogICAgICAgICAgICAgJ2h0bWwvRmlsZVN0cmVhbS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
RmlsZVN0cmVhbS5oJywKICAgICAgICAgICAgICdodG1sL0ZpbGVTdHJlYW1DbGllbnQuaCcsCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5w
cmkJKHJldmlzaW9uIDY1NTc1KQorKysgV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2luZyBjb3B5
KQpAQCAtMTc5LDYgKzE3OSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgaHRtbC9GaWxlRXJy
b3IuaWRsIFwKICAgICBodG1sL0ZpbGVMaXN0LmlkbCBcCiAgICAgaHRtbC9GaWxlUmVhZGVyLmlk
bCBcCisgICAgaHRtbC9GaWxlV3JpdGVyLmlkbCBcCiAgICAgaHRtbC9IVE1MQWxsQ29sbGVjdGlv
bi5pZGwgXAogICAgIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5pZGwgXAogICAgIGh0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuaWRsIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjU1NzUpCisrKyBXZWJDb3JlL1dlYkNv
cmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC02MzksNiArNjM5LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgaHRtbC9GaWxlU3RyZWFtLmNwcCBcCiAgICAgaHRtbC9GaWxlU3RyZWFtUHJveHkuY3BwIFwK
ICAgICBodG1sL0ZpbGVUaHJlYWQuY3BwIFwKKyAgICBodG1sL0ZpbGVXcml0ZXIuY3BwIFwKICAg
ICBodG1sL0Zvcm1EYXRhTGlzdC5jcHAgXAogICAgIGh0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAg
XAogICAgIGh0bWwvSFRNTFRva2VuaXplci5jcHAgXApAQCAtMTQxNSw2ICsxNDE2LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgaHRtbC9GaWxlU3RyZWFtUHJveHkuaCBcCiAgICAgaHRtbC9GaWxlVGhy
ZWFkLmggXAogICAgIGh0bWwvRmlsZVRocmVhZFRhc2suaCBcCisgICAgaHRtbC9GaWxlV3JpdGVy
LmggXAogICAgIGh0bWwvRm9ybURhdGFMaXN0LmggXAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rp
b24uaCBcCiAgICAgaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIFwKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNjU1NzUpCisrKyBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OTgxLDYgKzQ5ODEs
NjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
JChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0Zp
bGVXcml0ZXIuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4N
CisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4z
MiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wN
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIk
KFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmls
ZVdyaXRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQpAQCAtMzcxNDEsNiArMzcxOTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGaWxlV3JpdGVyLmNwcCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRmlsZVdy
aXRlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5caHRtbFxGb3JtRGF0YUxpc3QuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2NTU3
NSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC04OTQsNiArODk0LDggQEAKIAkJNDYxNEExRkUwQjIzQThENjAwNDQ2RTFDIC8q
IGNvcHlDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi87IH07
CiAJCTQ2NEVBMjczMEI4QTM1MEIwMEE4RTZFMyAvKiBjcm9zc0hhaXJDdXJzb3IucG5nIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRFQTI3MTBCOEEz
NTBCMDBBOEU2RTMgLyogY3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDY0RUEyNzQwQjhB
MzUwQjAwQThFNkUzIC8qIG5vdEFsbG93ZWRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjRFQTI3MjBCOEEzNTBCMDBBOEU2RTMgLyog
bm90QWxsb3dlZEN1cnNvci5wbmcgKi87IH07CisJCTQ2QTI2OTA1MTIxQjZCNDMwMEM0MUYzQSAv
KiBGaWxlV3JpdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QTI2OTAyMTIxQjZCNDMwMEM0MUYzQSAvKiBGaWxlV3JpdGVyLmNwcCAqLzsgfTsK
KwkJNDZBMjY5MDYxMjFCNkI0MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTI2OTAzMTIxQjZCNDMwMEM0MUYz
QSAvKiBGaWxlV3JpdGVyLmggKi87IH07CiAJCTQ2QkQxNkUzMEIyNzk0NzMwMDFGMDgzOSAvKiBu
b25lQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCRDE2RTIwQjI3OTQ3MzAwMUYwODM5IC8qIG5vbmVDdXJzb3IucG5nICovOyB9Owog
CQk0NkQ0RjI0OTBBRjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDRGMjQ2MEFGOTdFODEwMDM1
Mzg1QSAvKiBjZWxsQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDZENEYyNEEwQUY5N0U4MTAwMzUzODVB
IC8qIGNvbnRleHRNZW51Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZENEYyNDcwQUY5N0U4MTAwMzUzODVBIC8qIGNvbnRleHRNZW51
Q3Vyc29yLnBuZyAqLzsgfTsKQEAgLTY3MTksNiArNjcyMSw5IEBACiAJCTQ2MTRBMUZEMEIyM0E4
RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNvcHlDdXJzb3IucG5nOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRFQTI3MTBCOEEzNTBCMDBBOEU2RTMgLyog
Y3Jvc3NIYWlyQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNyb3NzSGFpckN1cnNvci5wbmc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NEVBMjcyMEI4QTM1MEIwMEE4RTZFMyAvKiBub3RB
bGxvd2VkQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG5vdEFsbG93ZWRDdXJzb3IucG5nOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NkEyNjkwMjEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdy
aXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlV3JpdGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZBMjY5MDMxMjFCNkI0MzAwQzQx
RjNBIC8qIEZpbGVXcml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmls
ZVdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkEyNjkwNDEyMUI2QjQz
MDBDNDFGM0EgLyogRmlsZVdyaXRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVdy
aXRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkQxNkUyMEIyNzk0NzMw
MDFGMDgzOSAvKiBub25lQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG5vbmVDdXJzb3IucG5nOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0RjI0NjBBRjk3RTgxMDAzNTM4NUEgLyogY2Vs
bEN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBjZWxsQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZENEYyNDcwQUY5N0U4MTAwMzUzODVBIC8qIGNvbnRleHRNZW51Q3Vyc29y
LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGlt
YWdlLnBuZzsgcGF0aCA9IGNvbnRleHRNZW51Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0MDA4LDYgKzE0MDEzLDkgQEAKIAkJCQk4OTUyNTM1MDExNjQxQjM0MDBD
QUJGMDAgLyogRmlsZVRocmVhZC5jcHAgKi8sCiAJCQkJODk1MjUzNTExMTY0MUIzNDAwQ0FCRjAw
IC8qIEZpbGVUaHJlYWQuaCAqLywKIAkJCQk4OTUyNTNERTExNkM0RjA2MDBDQUJGMDAgLyogRmls
ZVRocmVhZFRhc2suaCAqLywKKwkJCQk0NkEyNjkwMjEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdy
aXRlci5jcHAgKi8sCisJCQkJNDZBMjY5MDMxMjFCNkI0MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIu
aCAqLywKKwkJCQk0NkEyNjkwNDEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdyaXRlci5pZGwgKi8s
CiAJCQkJQTgxMzZEMzcwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5jcHAgKi8sCiAJ
CQkJQTgxMzZEMzYwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5oICovLAogCQkJCUJD
OTdFMjM5MTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlvbi5jcHAgKi8sCkBAIC0y
MDMwNSw2ICsyMDMxMyw3IEBACiAJCQkJMkVERUYxRjUxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVERUYxRjcxMjFCMEVGQzAwNzI2REIyIC8q
IEJsb2JSZWdpc3RyeUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFREVGMUY4MTIxQjBFRkMw
MDcyNkRCMiAvKiBCbG9iU3RvcmFnZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QTI2OTA2
MTIxQjZCNDMwMEM0MUYzQSAvKiBGaWxlV3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNzU0
LDYgKzIyNzYzLDcgQEAKIAkJCQlDNTdGRURFMTEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3Rl
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRURFRjFGMzEyMUIwRUZDMDA3MjZEQjIgLyogQmxv
YkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkVERUYxRjYxMjFCMEVGQzAwNzI2REIyIC8q
IEJsb2JSZWdpc3RyeUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDZBMjY5MDUxMjFCNkI0
MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
CShyZXZpc2lvbiA2NTU3NSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAzLDYgKzEwMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyh0
ZXh0SW5wdXQpIFwKICAgICBtYWNybyh1bmxvYWQpIFwKICAgICBtYWNybyh1cGRhdGVyZWFkeSkg
XAorICAgIG1hY3JvKHdyaXRlKSBcCisgICAgbWFjcm8od3JpdGVlbmQpIFwKKyAgICBtYWNybyh3
cml0ZXN0YXJ0KSBcCiAgICAgbWFjcm8oem9vbSkgXAogICAgIFwKICAgICBtYWNybyhET01BY3Rp
dmF0ZSkgXApJbmRleDogV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gNjU1NzUpCisrKyBXZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsMTIgQEAg
RmlsZVJlYWRlciogRXZlbnRUYXJnZXQ6OnRvRmlsZVJlYWRlcigpCiAgICAgcmV0dXJuIDA7CiB9
CiAjZW5kaWYKKyNpZiBFTkFCTEUoRklMRV9XUklURVIpCitGaWxlV3JpdGVyKiBFdmVudFRhcmdl
dDo6dG9GaWxlV3JpdGVyKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgogCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiBJREJSZXF1ZXN0KiBFdmVudFRhcmdldDo6dG9JREJSZXF1
ZXN0KCkKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuaAkocmV2aXNpb24gNjU1NzUpCisrKyBXZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBFdmVudExpc3RlbmVyOwogICAgIGNsYXNzIEV2ZW50U291cmNl
OwogICAgIGNsYXNzIEZpbGVSZWFkZXI7CisgICAgY2xhc3MgRmlsZVdyaXRlcjsKICAgICBjbGFz
cyBJREJSZXF1ZXN0OwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAgIGNsYXNzIE5vZGU7CkBA
IC0xMjIsNiArMTIzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShCTE9CKQog
ICAgICAgICB2aXJ0dWFsIEZpbGVSZWFkZXIqIHRvRmlsZVJlYWRlcigpOwogI2VuZGlmCisjaWYg
RU5BQkxFKEZJTEVfV1JJVEVSKQorICAgICAgICB2aXJ0dWFsIEZpbGVXcml0ZXIqIHRvRmlsZVdy
aXRlcigpOworI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAgICAg
dmlydHVhbCBJREJSZXF1ZXN0KiB0b0lEQlJlcXVlc3QoKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9G
aWxlV3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvRmlsZVdyaXRlci5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvRmlsZVdyaXRlci5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEZJTEVf
V1JJVEVSKQorCisjaW5jbHVkZSAiRmlsZVdyaXRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0ZpbGVXcml0ZXI6OkZpbGVXcml0ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQoreworfQorCitGaWxlV3Jp
dGVyOjp+RmlsZVdyaXRlcigpCit7Cit9CisKK2Jvb2wgRmlsZVdyaXRlcjo6aGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRmlsZVdyaXRl
cjo6Y2FuU3VzcGVuZCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEl0IGlzIG5vdCBjdXJyZW50
bHkgcG9zc2libGUgdG8gc3VzcGVuZCBhIEZpbGVXcml0ZXIsIHNvIHBhZ2VzIHdpdGggRmlsZVdy
aXRlciBjYW4gbm90IGdvIGludG8gcGFnZSBjYWNoZS4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgRmlsZVdyaXRlcjo6c3RvcCgpCit7Cit9CisKK3ZvaWQgRmlsZVdyaXRlcjo6d3JpdGUo
QmxvYiopCit7Cit9CisKK3ZvaWQgRmlsZVdyaXRlcjo6c2Vlayhsb25nIGxvbmcpCit7Cit9CisK
K3ZvaWQgRmlsZVdyaXRlcjo6dHJ1bmNhdGUobG9uZyBsb25nKQoreworfQorCit2b2lkIEZpbGVX
cml0ZXI6OmFib3J0KCkKK3sKK30KKworRmlsZVdyaXRlcjo6UmVhZHlTdGF0ZSBGaWxlV3JpdGVy
OjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRU1QVFk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKyAKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9XUklURVIpCkluZGV4OiBX
ZWJDb3JlL2h0bWwvRmlsZVdyaXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9GaWxl
V3JpdGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvRmlsZVdyaXRlci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZpbGVXcml0ZXJfaAorI2RlZmluZSBG
aWxlV3JpdGVyX2gKKworI2lmIEVOQUJMRShGSUxFX1dSSVRFUikKKworI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCbG9iOworY2xhc3MgRmls
ZUVycm9yOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworLy8gRklYTUU6IFRoaXMg
aXMgYW4gZW1wdHksIGRvLW5vdGhpbmcgcGxhY2Vob2xkZXIgZm9yIGltcGxlbWVudGF0aW9uIHll
dCB0byBjb21lLgorY2xhc3MgRmlsZVdyaXRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVXcml0
ZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBG
aWxlV3JpdGVyKGNvbnRleHQpKTsKKyAgICB9CisKKyAgICBlbnVtIFJlYWR5U3RhdGUgeworICAg
ICAgICBFTVBUWSA9IDAsCisgICAgICAgIFdSSVRJTkcgPSAxLAorICAgICAgICBET05FID0gMgor
ICAgIH07CisKKyAgICB2b2lkIHdyaXRlKEJsb2IqKTsKKyAgICB2b2lkIHNlZWsobG9uZyBsb25n
IHBvc2l0aW9uKTsKKyAgICB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZv
aWQgYWJvcnQoKTsKKworICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworICAgIEZp
bGVFcnJvciogZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9OworICAgIGxvbmcgbG9u
ZyBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH07CisgICAgbG9uZyBsb25nIGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIDA7IH07CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7Cisg
ICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OworCisgICAgLy8gRXZl
bnRUYXJnZXQKKyAgICB2aXJ0dWFsIEZpbGVXcml0ZXIqIHRvRmlsZVdyaXRlcigpIHsgcmV0dXJu
IHRoaXM7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQorCisgICAgdXNpbmcgUmVmQ291bnRlZDxGaWxlV3JpdGVyPjo6cmVm
OworICAgIHVzaW5nIFJlZkNvdW50ZWQ8RmlsZVdyaXRlcj46OmRlcmVmOworCisgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3cml0ZXN0YXJ0KTsKKyAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKHByb2dyZXNzKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKHdyaXRlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFi
b3J0KTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKKyAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdyaXRlZW5kKTsKKworcHJpdmF0ZToKKyAg
ICBGaWxlV3JpdGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZpcnR1YWwgfkZp
bGVXcml0ZXIoKTsKKworICAgIGZyaWVuZCBjbGFzcyBSZWZDb3VudGVkPEZpbGVXcml0ZXI+Owor
CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7
IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7
IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1
cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisg
ICAgUmVmUHRyPEZpbGVFcnJvcio+IG1fZXJyb3I7CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZl
bnRUYXJnZXREYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKEZJTEVfV1JJVEVSKQorCisjZW5kaWYgLy8gRmlsZVdyaXRlcl9oCkluZGV4OiBXZWJD
b3JlL2h0bWwvRmlsZVdyaXRlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0ZpbGVX
cml0ZXIuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL0ZpbGVXcml0ZXIuaWRsCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBodG1sIHsKKyAgICBpbnRlcmZhY2Ug
WworICAgICAgICBDb25kaXRpb25hbD1GSUxFX1dSSVRFUiwKKyAgICAgICAgQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAgRXZlbnRUYXJnZXQsCisgICAgICAgIE5vU3Rh
dGljVGFibGVzCisgICAgXSBGaWxlV3JpdGVyIHsKKyAgICAgICAgLy8gcmVhZHkgc3RhdGVzCisg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElOSVQgPSAwOworICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBXUklUSU5HID0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRE9O
RSA9IDI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0
YXRlOworCisgICAgICAgIC8vIGFzeW5jIHdyaXRlL21vZGlmeSBtZXRob2RzCisgICAgICAgIHZv
aWQgd3JpdGUoaW4gQmxvYiBkYXRhKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAgICAgICB2
b2lkIHNlZWsoaW4gbG9uZyBsb25nIHBvc2l0aW9uKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwor
ICAgICAgICB2b2lkIHRydW5jYXRlKGluIGxvbmcgbG9uZyBzaXplKSByYWlzZXMgKEZpbGVFeGNl
cHRpb24pOworCisgICAgICAgIHZvaWQgYWJvcnQoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwor
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlRXJyb3IgZXJyb3I7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxvbmcgcG9zaXRpb247CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9ud3JpdGVzdGFydDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25wcm9ncmVzczsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb253cml0ZTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25hYm9ydDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25l
cnJvcjsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253cml0ZWVu
ZDsKKyAgICB9OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64796</attachid>
            <date>2010-08-18 18:25:06 -0700</date>
            <delta_ts>2010-08-19 00:18:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44075-20100818182505.patch</filename>
            <type>text/plain</type>
            <size>22489</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTY0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDgtMTggIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgaWRsIGFuZCBtb2NrIGNsYXNzZXMgZm9yIEZpbGVXcml0ZXIuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDA3NQorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgc2luY2UgdGhlcmUncyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBOZXcg
ZG8tbm90aGluZyBjbGFzc2VzLCBidXQgdGhlIHJlYWwgSURMOgorICAgICAgICAqIEZpbGVXcml0
ZXIuaWRsOgorICAgICAgICAqIEZpbGVXcml0ZXIuaDoKKyAgICAgICAgKiBGaWxlV3JpdGVyLmNw
cDoKKworICAgICAgICBUaGUgYnVpbGQgZmlsZSBjaGFuZ2VzIHRvIGluY2x1ZGUgdGhlIGFib3Zl
OgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAg
ICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgQWRkZWQgRmlsZVdyaXRlciBldmVudCBuYW1lcyBhbmQgcmVxdWlyZWQgRXZlbnRUYXJn
ZXQgY2hhbmdlcy4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9GaWxlV3Jp
dGVyKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKwogMjAxMC0wOC0xOCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KSW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNjU2NDcpCisrKyBXZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJ
TEVTCiAgICAgaHRtbC9GaWxlLmlkbAogICAgIGh0bWwvRmlsZUxpc3QuaWRsCiAgICAgaHRtbC9G
aWxlUmVhZGVyLmlkbAorICAgIGh0bWwvRmlsZVdyaXRlci5pZGwKICAgICBodG1sL0hUTUxBbGxD
b2xsZWN0aW9uLmlkbAogICAgIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuaWRsCiAgICAgaHRtbC9I
VE1MQXBwbGV0RWxlbWVudC5pZGwKSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiA2NTY0NykK
KysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNiAr
MTEwLDcgQEAKICNpbmNsdWRlICJKU0ZpbGVMaXN0LmNwcCIKICNpbmNsdWRlICJKU0ZpbGVSZWFk
ZXIuY3BwIgogI2luY2x1ZGUgIkpTRmlsZVN5c3RlbUNhbGxiYWNrLmNwcCIKKyNpbmNsdWRlICJK
U0ZpbGVXcml0ZXIuY3BwIgogI2luY2x1ZGUgIkpTRmxhZ3MuY3BwIgogI2luY2x1ZGUgIkpTR2Vv
bG9jYXRpb24uY3BwIgogI2luY2x1ZGUgIkpTR2VvcG9zaXRpb24uY3BwIgpJbmRleDogV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkocmV2aXNpb24gNjU2NDcpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBG
aWxlRXJyb3IgXAogICAgIEZpbGVMaXN0IFwKICAgICBGaWxlUmVhZGVyIFwKKyAgICBGaWxlV3Jp
dGVyIFwKICAgICBGaWxlU3lzdGVtQ2FsbGJhY2sgXAogICAgIEZsYWdzIFwKICAgICBHZW9sb2Nh
dGlvbiBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDY1NjQ3KQorKysgV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjM4LDYgKzIzOCw4IEBAIHdlYmNvcmVfYnVpbHRfc291
cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVMaXN0LmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlUmVhZGVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0ZpbGVSZWFkZXIuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVXcml0
ZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVdyaXRlci5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRmxvYXQzMkFycmF5LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0Zsb2F0MzJBcnJheS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2Vv
bG9jYXRpb24uY3BwIFwKQEAgLTEzNTMsNiArMTM1NSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJV2ViQ29yZS9odG1sL0ZpbGVMaXN0LmggXAogCVdlYkNvcmUvaHRtbC9GaWxlUmVhZGVyLmNw
cCBcCiAJV2ViQ29yZS9odG1sL0ZpbGVSZWFkZXIuaCBcCisJV2ViQ29yZS9odG1sL0ZpbGVXcml0
ZXIuY3BwIFwKKwlXZWJDb3JlL2h0bWwvRmlsZVdyaXRlci5oIFwKIAlXZWJDb3JlL2h0bWwvRmls
ZVN0cmVhbUNsaWVudC5oIFwKIAlXZWJDb3JlL2h0bWwvRmlsZVN0cmVhbVByb3h5LmNwcCBcCiAJ
V2ViQ29yZS9odG1sL0ZpbGVTdHJlYW1Qcm94eS5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5n
eXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2NTY0NykK
KysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDcg
QEAKICAgICAgICAgICAgICdodG1sL0ZpbGVFcnJvci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwv
RmlsZUxpc3QuaWRsJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXIuaWRsJywKKyAgICAg
ICAgICAgICdodG1sL0ZpbGVXcml0ZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxBbGxD
b2xsZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5pZGwn
LAogICAgICAgICAgICAgJ2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaWRsJywKQEAgLTE1MTgsNiAr
MTUxOSw4IEBACiAgICAgICAgICAgICAnaHRtbC9GaWxlTGlzdC5oJywKICAgICAgICAgICAgICdo
dG1sL0ZpbGVSZWFkZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL0ZpbGVSZWFkZXIuaCcsCisg
ICAgICAgICAgICAnaHRtbC9GaWxlV3JpdGVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9GaWxl
V3JpdGVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZVN0cmVhbUNsaWVudC5oJywKICAgICAg
ICAgICAgICdodG1sL0ZpbGVTdHJlYW1Qcm94eS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvRmls
ZVN0cmVhbVByb3h5LmgnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUucHJpCShyZXZpc2lvbiA2NTY0NykKKysrIFdlYkNvcmUvV2ViQ29y
ZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw2ICsxNzksNyBAQCBJRExfQklORElOR1MgKz0g
XAogICAgIGh0bWwvRmlsZUVycm9yLmlkbCBcCiAgICAgaHRtbC9GaWxlTGlzdC5pZGwgXAogICAg
IGh0bWwvRmlsZVJlYWRlci5pZGwgXAorICAgIGh0bWwvRmlsZVdyaXRlci5pZGwgXAogICAgIGh0
bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRsIFwKICAgICBodG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRs
IFwKICAgICBodG1sL0hUTUxBbmNob3JFbGVtZW50LmlkbCBcCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDY1NjQ3
KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtNjM4LDYgKzYzOCw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvRmlsZVJlYWRlci5jcHAgXAogICAgIGh0bWwvRmls
ZVN0cmVhbVByb3h5LmNwcCBcCiAgICAgaHRtbC9GaWxlVGhyZWFkLmNwcCBcCisgICAgaHRtbC9G
aWxlV3JpdGVyLmNwcCBcCiAgICAgaHRtbC9Gb3JtRGF0YUxpc3QuY3BwIFwKICAgICBodG1sL0hU
TUxFbnRpdHlQYXJzZXIuY3BwIFwKICAgICBodG1sL0hUTUxUb2tlbml6ZXIuY3BwIFwKQEAgLTE0
MTQsNiArMTQxNSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvRmlsZVN0cmVhbVByb3h5Lmgg
XAogICAgIGh0bWwvRmlsZVRocmVhZC5oIFwKICAgICBodG1sL0ZpbGVUaHJlYWRUYXNrLmggXAor
ICAgIGh0bWwvRmlsZVdyaXRlci5oIFwKICAgICBodG1sL0Zvcm1EYXRhTGlzdC5oIFwKICAgICBo
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmggXAogICAgIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBc
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDY1NjQ3
KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDk4MSw2ICs0OTgxLDYyIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNGaWxlV3JpdGVyLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2lu
MzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29s
DQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFz
ZV9DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0K
KwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlO
YW1lPSJEZWJ1Z19BbGx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJ
CQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJ
CS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0ZpbGVXcml0ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlU3lzdGVtQ2FsbGJhY2suY3BwIg0KIAkJCQk+DQog
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTM3MTQ5LDYgKzM3MjA1LDE0IEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRmlsZVdy
aXRlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXEZpbGVXcml0ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRm9ybURhdGFMaXN0LmNwcCINCiAJCQkJPg0K
IAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gNjU2NDcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODk2LDYgKzg5Niw4IEBACiAJCTQ2MTRBMUZF
MEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxNEExRkQwQjIzQThENjAwNDQ2RTFDIC8qIGNv
cHlDdXJzb3IucG5nICovOyB9OwogCQk0NjRFQTI3MzBCOEEzNTBCMDBBOEU2RTMgLyogY3Jvc3NI
YWlyQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY0RUEyNzEwQjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5wbmcgKi87
IH07CiAJCTQ2NEVBMjc0MEI4QTM1MEIwMEE4RTZFMyAvKiBub3RBbGxvd2VkQ3Vyc29yLnBuZyBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0RUEyNzIw
QjhBMzUwQjAwQThFNkUzIC8qIG5vdEFsbG93ZWRDdXJzb3IucG5nICovOyB9OworCQk0NkEyNjkw
NTEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdyaXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyNjkwMjEyMUI2QjQzMDBDNDFGM0EgLyogRmls
ZVdyaXRlci5jcHAgKi87IH07CisJCTQ2QTI2OTA2MTIxQjZCNDMwMEM0MUYzQSAvKiBGaWxlV3Jp
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEy
NjkwMzEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdyaXRlci5oICovOyB9OwogCQk0NkJEMTZFMzBC
Mjc5NDczMDAxRjA4MzkgLyogbm9uZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkQxNkUyMEIyNzk0NzMwMDFGMDgzOSAvKiBub25l
Q3Vyc29yLnBuZyAqLzsgfTsKIAkJNDZENEYyNDkwQUY5N0U4MTAwMzUzODVBIC8qIGNlbGxDdXJz
b3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkQ0RjI0NjBBRjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1cnNvci5wbmcgKi87IH07CiAJCTQ2RDRG
MjRBMEFGOTdFODEwMDM1Mzg1QSAvKiBjb250ZXh0TWVudUN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDRGMjQ3MEFGOTdFODEwMDM1
Mzg1QSAvKiBjb250ZXh0TWVudUN1cnNvci5wbmcgKi87IH07CkBAIC02NzI1LDYgKzY3MjcsOSBA
QAogCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGgg
PSBjb3B5Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0RUEyNzEw
QjhBMzUwQjAwQThFNkUzIC8qIGNyb3NzSGFpckN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBjcm9zc0hh
aXJDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRFQTI3MjBCOEEz
NTBCMDBBOEU2RTMgLyogbm90QWxsb3dlZEN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBub3RBbGxvd2Vk
Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZBMjY5MDIxMjFCNkI0
MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmlsZVdyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
QTI2OTAzMTIxQjZCNDMwMEM0MUYzQSAvKiBGaWxlV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZpbGVXcml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDZBMjY5MDQxMjFCNkI0MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEZpbGVXcml0ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NkJEMTZFMjBCMjc5NDczMDAxRjA4MzkgLyogbm9uZUN1cnNvci5wbmcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBu
b25lQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZENEYyNDYwQUY5
N0U4MTAwMzUzODVBIC8qIGNlbGxDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gY2VsbEN1cnNvci5wbmc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDRGMjQ3MEFGOTdFODEwMDM1Mzg1QSAv
KiBjb250ZXh0TWVudUN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBjb250ZXh0TWVudUN1cnNvci5wbmc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDAxNSw2ICsxNDAyMCw5IEBACiAJCQkJ
ODk1MjUzNTAxMTY0MUIzNDAwQ0FCRjAwIC8qIEZpbGVUaHJlYWQuY3BwICovLAogCQkJCTg5NTI1
MzUxMTE2NDFCMzQwMENBQkYwMCAvKiBGaWxlVGhyZWFkLmggKi8sCiAJCQkJODk1MjUzREUxMTZD
NEYwNjAwQ0FCRjAwIC8qIEZpbGVUaHJlYWRUYXNrLmggKi8sCisJCQkJNDZBMjY5MDIxMjFCNkI0
MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIuY3BwICovLAorCQkJCTQ2QTI2OTAzMTIxQjZCNDMwMEM0
MUYzQSAvKiBGaWxlV3JpdGVyLmggKi8sCisJCQkJNDZBMjY5MDQxMjFCNkI0MzAwQzQxRjNBIC8q
IEZpbGVXcml0ZXIuaWRsICovLAogCQkJCUE4MTM2RDM3MDk3M0E4RTcwMEQ3NDQ2MyAvKiBGb3Jt
RGF0YUxpc3QuY3BwICovLAogCQkJCUE4MTM2RDM2MDk3M0E4RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0
YUxpc3QuaCAqLywKIAkJCQlCQzk3RTIzOTEwOTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENvbGxl
Y3Rpb24uY3BwICovLApAQCAtMjAzMjAsNiArMjAzMjgsNyBAQAogCQkJCTJFREVGMUY3MTIxQjBF
RkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnlJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRURF
RjFGODEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlN0b3JhZ2VEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRUYxQkZFQjEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDZBMjY5MDYxMjFCNkI0MzAwQzQxRjNBIC8qIEZpbGVXcml0ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMjI3NzAsNiArMjI3NzksNyBAQAogCQkJCTJFREVGMUYzMTIxQjBFRkMwMDcy
NkRCMiAvKiBCbG9iRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRURFRjFGNjEyMUIwRUZD
MDA3MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRUYx
QkZFQTEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk0NkEyNjkwNTEyMUI2QjQzMDBDNDFGM0EgLyogRmlsZVdyaXRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgJKHJldmlzaW9uIDY1NjQ3KQorKysgV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIG1hY3JvKHRleHRJbnB1dCkgXAogICAgIG1hY3JvKHVubG9hZCkgXAogICAgIG1h
Y3JvKHVwZGF0ZXJlYWR5KSBcCisgICAgbWFjcm8od3JpdGUpIFwKKyAgICBtYWNybyh3cml0ZWVu
ZCkgXAorICAgIG1hY3JvKHdyaXRlc3RhcnQpIFwKICAgICBtYWNybyh6b29tKSBcCiAgICAgXAog
ICAgIG1hY3JvKERPTUFjdGl2YXRlKSBcCkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudFRhcmdldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiA2
NTY0NykKKysrIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTYyLDYgKzE2MiwxMiBAQCBGaWxlUmVhZGVyKiBFdmVudFRhcmdldDo6dG9GaWxlUmVhZGVyKCkK
ICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1dSSVRFUikKK0ZpbGVX
cml0ZXIqIEV2ZW50VGFyZ2V0Ojp0b0ZpbGVXcml0ZXIoKQoreworICAgIHJldHVybiAwOworfQor
I2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIElEQlJlcXVlc3QqIEV2ZW50
VGFyZ2V0Ojp0b0lEQlJlcXVlc3QoKQpJbmRleDogV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCShyZXZpc2lvbiA2NTY0NykK
KysrIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEV2ZW50TGlzdGVuZXI7CiAgICAg
Y2xhc3MgRXZlbnRTb3VyY2U7CiAgICAgY2xhc3MgRmlsZVJlYWRlcjsKKyAgICBjbGFzcyBGaWxl
V3JpdGVyOwogICAgIGNsYXNzIElEQlJlcXVlc3Q7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAg
ICAgY2xhc3MgTm9kZTsKQEAgLTEyMiw2ICsxMjMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
aWYgRU5BQkxFKEJMT0IpCiAgICAgICAgIHZpcnR1YWwgRmlsZVJlYWRlciogdG9GaWxlUmVhZGVy
KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRklMRV9XUklURVIpCisgICAgICAgIHZpcnR1YWwgRmls
ZVdyaXRlciogdG9GaWxlV3JpdGVyKCk7CisjZW5kaWYKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogICAgICAgICB2aXJ0dWFsIElEQlJlcXVlc3QqIHRvSURCUmVxdWVzdCgpOwpJbmRl
eDogV2ViQ29yZS9odG1sL0ZpbGVXcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9GaWxlV3JpdGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9GaWxlV3JpdGVy
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoRklMRV9XUklURVIpCisKKyNpbmNsdWRlICJGaWxlV3JpdGVyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRmlsZVdyaXRlcjo6RmlsZVdyaXRlcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMp
Cit7Cit9CisKK0ZpbGVXcml0ZXI6On5GaWxlV3JpdGVyKCkKK3sKK30KKworYm9vbCBGaWxlV3Jp
dGVyOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBGaWxlV3JpdGVyOjpjYW5TdXNwZW5kKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTog
SXQgaXMgbm90IGN1cnJlbnRseSBwb3NzaWJsZSB0byBzdXNwZW5kIGEgRmlsZVdyaXRlciwgc28g
cGFnZXMgd2l0aCBGaWxlV3JpdGVyIGNhbiBub3QgZ28gaW50byBwYWdlIGNhY2hlLgorICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBGaWxlV3JpdGVyOjpzdG9wKCkKK3sKK30KKwordm9pZCBG
aWxlV3JpdGVyOjp3cml0ZShCbG9iKikKK3sKK30KKwordm9pZCBGaWxlV3JpdGVyOjpzZWVrKGxv
bmcgbG9uZykKK3sKK30KKwordm9pZCBGaWxlV3JpdGVyOjp0cnVuY2F0ZShsb25nIGxvbmcpCit7
Cit9CisKK3ZvaWQgRmlsZVdyaXRlcjo6YWJvcnQoKQoreworfQorCitGaWxlV3JpdGVyOjpSZWFk
eVN0YXRlIEZpbGVXcml0ZXI6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBFTVBU
WTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorIAorI2VuZGlmIC8vIEVOQUJMRShGSUxF
X1dSSVRFUikKSW5kZXg6IFdlYkNvcmUvaHRtbC9GaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0ZpbGVXcml0ZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9G
aWxlV3JpdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRmlsZVdy
aXRlcl9oCisjZGVmaW5lIEZpbGVXcml0ZXJfaAorCisjaWYgRU5BQkxFKEZJTEVfV1JJVEVSKQor
CisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEJsb2I7CitjbGFzcyBGaWxlRXJyb3I7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
CisvLyBGSVhNRTogVGhpcyBpcyBhbiBlbXB0eSwgZG8tbm90aGluZyBwbGFjZWhvbGRlciBmb3Ig
aW1wbGVtZW50YXRpb24geWV0IHRvIGNvbWUuCitjbGFzcyBGaWxlV3JpdGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8RmlsZVdyaXRlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVu
dFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVdyaXRlcj4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEZpbGVXcml0ZXIoY29udGV4dCkpOworICAgIH0KKworICAgIGVudW0g
UmVhZHlTdGF0ZSB7CisgICAgICAgIEVNUFRZID0gMCwKKyAgICAgICAgV1JJVElORyA9IDEsCisg
ICAgICAgIERPTkUgPSAyCisgICAgfTsKKworICAgIHZvaWQgd3JpdGUoQmxvYiopOworICAgIHZv
aWQgc2Vlayhsb25nIGxvbmcgcG9zaXRpb24pOworICAgIHZvaWQgdHJ1bmNhdGUobG9uZyBsb25n
IGxlbmd0aCk7CisgICAgdm9pZCBhYm9ydCgpOworCisgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRl
KCkgY29uc3Q7CisgICAgRmlsZUVycm9yKiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7
IH07CisgICAgbG9uZyBsb25nIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfTsKKyAgICBs
b25nIGxvbmcgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gMDsgfTsKKworICAgIC8vIEFjdGl2ZURP
TU9iamVjdAorICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3Q7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgRmlsZVdyaXRlciogdG9GaWxl
V3JpdGVyKCkgeyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisKKyAgICB1c2luZyBSZWZDb3VudGVk
PEZpbGVXcml0ZXI+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxGaWxlV3JpdGVyPjo6ZGVy
ZWY7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdyaXRlc3RhcnQpOwor
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocHJvZ3Jlc3MpOworICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod3JpdGUpOworICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoYWJvcnQpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoZXJyb3IpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod3JpdGVlbmQp
OworCitwcml2YXRlOgorICAgIEZpbGVXcml0ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwor
CisgICAgdmlydHVhbCB+RmlsZVdyaXRlcigpOworCisgICAgZnJpZW5kIGNsYXNzIFJlZkNvdW50
ZWQ8RmlsZVdyaXRlcj47CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRU
YXJnZXREYXRhOyB9CisKKyAgICBSZWZQdHI8RmlsZUVycm9yKj4gbV9lcnJvcjsKKyAgICBFdmVu
dFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9XUklURVIpCisKKyNlbmRpZiAvLyBGaWxlV3Jp
dGVyX2gKSW5kZXg6IFdlYkNvcmUvaHRtbC9GaWxlV3JpdGVyLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvRmlsZVdyaXRlci5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwv
RmlsZVdyaXRlci5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0bWwg
eworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUZJTEVfV1JJVEVSLAorICAg
ICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgICAgICBFdmVudFRhcmdl
dCwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMKKyAgICBdIEZpbGVXcml0ZXIgeworICAgICAgICAv
LyByZWFkeSBzdGF0ZXMKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSU5JVCA9IDA7Cisg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdSSVRJTkcgPSAxOworICAgICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBET05FID0gMjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIHNob3J0IHJlYWR5U3RhdGU7CisKKyAgICAgICAgLy8gYXN5bmMgd3JpdGUvbW9kaWZ5IG1l
dGhvZHMKKyAgICAgICAgdm9pZCB3cml0ZShpbiBCbG9iIGRhdGEpIHJhaXNlcyAoRmlsZUV4Y2Vw
dGlvbik7CisgICAgICAgIHZvaWQgc2VlayhpbiBsb25nIGxvbmcgcG9zaXRpb24pIHJhaXNlcyAo
RmlsZUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgdHJ1bmNhdGUoaW4gbG9uZyBsb25nIHNpemUp
IHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisKKyAgICAgICAgdm9pZCBhYm9ydCgpIHJhaXNlcyAo
RmlsZUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZpbGVFcnJvciBl
cnJvcjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbG9uZyBwb3NpdGlvbjsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbG9uZyBsZW5ndGg7CisKKyAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253cml0ZXN0YXJ0OworICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnByb2dyZXNzOworICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndyaXRlOworICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmVycm9yOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbndyaXRlZW5kOworICAgIH07Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>