<?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>41426</bug_id>
          
          <creation_ts>2010-06-30 13:24:27 -0700</creation_ts>
          <short_desc>Add WKArrayRef API to WebKit2</short_desc>
          <delta_ts>2010-06-30 15:59:25 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>244912</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-30 13:24:27 -0700</bug_when>
    <thetext>Add WKArrayRef API to WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244913</commentid>
    <comment_count>1</comment_count>
      <attachid>60144</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-30 13:25:15 -0700</bug_when>
    <thetext>Created attachment 60144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244915</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-30 13:30:43 -0700</bug_when>
    <thetext>Attachment 60144 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit2/Shared/WebArray.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/Shared/WebArray.h:59:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKArray.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:60:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:71:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244930</commentid>
    <comment_count>3</comment_count>
      <attachid>60144</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-30 14:11:29 -0700</bug_when>
    <thetext>Comment on attachment 60144
Patch

&gt; +        * Shared/WebArray.cpp: Added.
&gt; +        (WebKit::WebArray::WebArray):
&gt; +        (WebKit::WebArray::~WebArray):
&gt; +        * Shared/WebArray.h: Added.
&gt; +        (WebKit::WebArray::create):
&gt; +        (WebKit::WebArray::adopt):
&gt; +        (WebKit::WebArray::at):
&gt; +        (WebKit::WebArray::size):
&gt; +        (WebKit::WebArray::):
&gt; +        * UIProcess/API/C/WKAPICast.h:
&gt; +        (WebKit::):
&gt; +        * UIProcess/API/C/WKArray.cpp: Added.
&gt; +        (WKArrayGetItemAtIndex):
&gt; +        (WKArrayGetSize):
&gt; +        (WKArrayRetain):
&gt; +        (WKArrayRelease):

I don’t see any reason to leave in these lists of added functions. I normally just delete them for added files.

Also, that broken &quot;(WebKit::)&quot; definitely should not be left in.

&gt; +WebArray::WebArray(const void** entries, size_t size, const WebArrayCallbacks* callbacks)
&gt; +    : m_entries((void**)fastMalloc(size * sizeof(void*)))

How about using &quot;new&quot; instead of fastMalloc and avoiding the type casts? How about using static_cast if you need a typecast?

&gt; +    enum AdoptTag { Adopt };
&gt; +    WebArray(AdoptTag, void** entries, size_t size, const WebArrayCallbacks* callbacks);

Maybe the AdoptTag should be the last argument. Might generate better code even.

I suggest leaving out the argument name &quot;callbacks&quot;.

&gt; +WK_EXPORT const void* WKArrayGetItemAtIndex(WKArrayRef array, size_t index);

What is behavior when you use a bad index? Guarantee of returning 0? Undefined?

Seems OK, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244940</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-30 14:21:05 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 60144 [details])
&gt; &gt; +        * Shared/WebArray.cpp: Added.
&gt; &gt; +        (WebKit::WebArray::WebArray):
&gt; &gt; +        (WebKit::WebArray::~WebArray):
&gt; &gt; +        * Shared/WebArray.h: Added.
&gt; &gt; +        (WebKit::WebArray::create):
&gt; &gt; +        (WebKit::WebArray::adopt):
&gt; &gt; +        (WebKit::WebArray::at):
&gt; &gt; +        (WebKit::WebArray::size):
&gt; &gt; +        (WebKit::WebArray::):
&gt; &gt; +        * UIProcess/API/C/WKAPICast.h:
&gt; &gt; +        (WebKit::):
&gt; &gt; +        * UIProcess/API/C/WKArray.cpp: Added.
&gt; &gt; +        (WKArrayGetItemAtIndex):
&gt; &gt; +        (WKArrayGetSize):
&gt; &gt; +        (WKArrayRetain):
&gt; &gt; +        (WKArrayRelease):
&gt; 
&gt; I don’t see any reason to leave in these lists of added functions. I normally just delete them for added files.

Ok.

&gt; 
&gt; Also, that broken &quot;(WebKit::)&quot; definitely should not be left in.
&gt; 
&gt; &gt; +WebArray::WebArray(const void** entries, size_t size, const WebArrayCallbacks* callbacks)
&gt; &gt; +    : m_entries((void**)fastMalloc(size * sizeof(void*)))
&gt; 
&gt; How about using &quot;new&quot; instead of fastMalloc and avoiding the type casts? How about using static_cast if you need a typecast?

Will change.

&gt; &gt; +    enum AdoptTag { Adopt };
&gt; &gt; +    WebArray(AdoptTag, void** entries, size_t size, const WebArrayCallbacks* callbacks);
&gt; 
&gt; Maybe the AdoptTag should be the last argument. Might generate better code even.
&gt; 
&gt; I suggest leaving out the argument name &quot;callbacks&quot;.
&gt; 

Will fix both.

&gt; &gt; +WK_EXPORT const void* WKArrayGetItemAtIndex(WKArrayRef array, size_t index);
&gt; 
&gt; What is behavior when you use a bad index? Guarantee of returning 0? Undefined?
&gt; 

The behavior is the undefined.  RIght now we read off the end of the buffer and ASSERT in debug builds.

&gt; Seems OK, r=me

Anders wants me to remove the &apos;Web&apos; prefix from this class and instead we decided to call it ImmutableArray.  Does that sound ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244979</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-30 15:59:25 -0700</bug_when>
    <thetext>Landed with changes in r62212.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60144</attachid>
            <date>2010-06-30 13:25:15 -0700</date>
            <delta_ts>2010-06-30 14:11:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>webarray.diff</filename>
            <type>text/plain</type>
            <size>19973</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjE5OCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDYtMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNDI2CisgICAgICAg
IEFkZCBXZWJBcnJheSBjbGFzcyBhbmQgV0tBcnJheVJlZiBBUEkgdG8gZ28gd2l0aCBpdC4gVGhp
cyB3aWxsIGJlIHVzZWQKKyAgICAgICAgaW4gYSBmZXcgZm9sbG93IHVwIHBhdGNoZXMuCisKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQXJyYXkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
QXJyYXk6OldlYkFycmF5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJyYXk6On5XZWJBcnJheSk6
CisgICAgICAgICogU2hhcmVkL1dlYkFycmF5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJyYXk6OmFkb3B0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXJyYXk6OmF0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJyYXk6
OnNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheTo6KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQXJyYXkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQXJyYXlHZXRJdGVt
QXRJbmRleCk6CisgICAgICAgIChXS0FycmF5R2V0U2l6ZSk6CisgICAgICAgIChXS0FycmF5UmV0
YWluKToKKyAgICAgICAgKFdLQXJyYXlSZWxlYXNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tCYXNlLmg6
CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IG1hYy9XZWJLaXQyLmV4cDoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTAt
MDYtMzAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQXJyYXkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYkFycmF5LmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYktpdDIvU2hhcmVkL1dlYkFycmF5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJBcnJheS5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViQXJyYXk6OldlYkFycmF5KCkKKyAgICA6IG1fZW50cmllcygwKQorICAgICwg
bV9zaXplKDApCit7CisgICAgbWVtc2V0KCZtX2NhbGxiYWNrcywgMCwgc2l6ZW9mKG1fY2FsbGJh
Y2tzKSk7Cit9CisKK1dlYkFycmF5OjpXZWJBcnJheShjb25zdCB2b2lkKiogZW50cmllcywgc2l6
ZV90IHNpemUsIGNvbnN0IFdlYkFycmF5Q2FsbGJhY2tzKiBjYWxsYmFja3MpCisgICAgOiBtX2Vu
dHJpZXMoKHZvaWQqKilmYXN0TWFsbG9jKHNpemUgKiBzaXplb2Yodm9pZCopKSkKKyAgICAsIG1f
c2l6ZShzaXplKQorICAgICwgbV9jYWxsYmFja3MoKmNhbGxiYWNrcykKK3sKKyAgICBtZW1jcHko
bV9lbnRyaWVzLCBlbnRyaWVzLCBtX3NpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9zaXplOyArK2kpCisgICAgICAgIG1fY2FsbGJhY2tzLnJlZihtX2VudHJpZXNbaV0pOworfQor
CitXZWJBcnJheTo6V2ViQXJyYXkoQWRvcHRUYWcsIHZvaWQqKiBlbnRyaWVzLCBzaXplX3Qgc2l6
ZSwgY29uc3QgV2ViQXJyYXlDYWxsYmFja3MqIGNhbGxiYWNrcykKKyAgICA6IG1fZW50cmllcyhl
bnRyaWVzKQorICAgICwgbV9zaXplKHNpemUpCisgICAgLCBtX2NhbGxiYWNrcygqY2FsbGJhY2tz
KQoreworfQorCitXZWJBcnJheTo6fldlYkFycmF5KCkKK3sKKyAgICBpZiAoIW1fZW50cmllcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3NpemU7ICsr
aSkKKyAgICAgICAgbV9jYWxsYmFja3MuZGVyZWYobV9lbnRyaWVzW2ldKTsKKyAgICBmYXN0RnJl
ZShtX2VudHJpZXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIv
U2hhcmVkL1dlYkFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViQXJyYXku
aAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYkFycmF5LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFycmF5X2gKKyNkZWZp
bmUgV2ViQXJyYXlfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gV2ViQXJyYXkgLSBB
biBpbW11dGFibGUgYXJyYXkgdHlwZSBzdWl0YWJsZSBmb3IgdmVuZGluZyB0byBhbiBBUEkuCisK
K2NsYXNzIFdlYkFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQXJyYXk+IHsKK3B1YmxpYzoK
KyAgICBzdHJ1Y3QgV2ViQXJyYXlDYWxsYmFja3MgeworICAgICAgICB0eXBlZGVmIHZvaWQgKCpX
ZWJBcnJheUNhbGxiYWNrKShjb25zdCB2b2lkKik7CisgICAgICAgIFdlYkFycmF5Q2FsbGJhY2sg
cmVmOworICAgICAgICBXZWJBcnJheUNhbGxiYWNrIGRlcmVmOworICAgIH07CisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJBcnJheT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViQXJyYXkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkFycmF5PiBjcmVhdGUoY29uc3Qgdm9pZCoqIGVudHJpZXMsIHNpemVfdCBzaXplLCBjb25zdCBX
ZWJBcnJheUNhbGxiYWNrcyogY2FsbGJhY2tzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJBcnJheShlbnRyaWVzLCBzaXplLCBjYWxsYmFja3MpKTsKKyAgICB9CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViQXJyYXk+IGFkb3B0KHZvaWQqKiBlbnRyaWVzLCBzaXplX3Qg
c2l6ZSwgY29uc3QgV2ViQXJyYXlDYWxsYmFja3MqIGNhbGxiYWNrcykKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViQXJyYXkoQWRvcHQsIGVudHJpZXMsIHNpemUsIGNhbGxi
YWNrcykpOworICAgIH0KKyAgICB+V2ViQXJyYXkoKTsKKworICAgIGNvbnN0IHZvaWQqIGF0KHNp
emVfdCBpKSB7IEFTU0VSVChpIDwgbV9zaXplKTsgcmV0dXJuIG1fZW50cmllc1tpXTsgfQorICAg
IHNpemVfdCBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9CisKK3ByaXZhdGU6CisgICAgV2ViQXJy
YXkoKTsKKyAgICBXZWJBcnJheShjb25zdCB2b2lkKiogZW50cmllcywgc2l6ZV90IHNpemUsIGNv
bnN0IFdlYkFycmF5Q2FsbGJhY2tzKiBjYWxsYmFja3MpOworICAgIGVudW0gQWRvcHRUYWcgeyBB
ZG9wdCB9OworICAgIFdlYkFycmF5KEFkb3B0VGFnLCB2b2lkKiogZW50cmllcywgc2l6ZV90IHNp
emUsIGNvbnN0IFdlYkFycmF5Q2FsbGJhY2tzKiBjYWxsYmFja3MpOworCisgICAgdm9pZCoqIG1f
ZW50cmllczsKKyAgICBzaXplX3QgbV9zaXplOworICAgIFdlYkFycmF5Q2FsbGJhY2tzIG1fY2Fs
bGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJBcnJh
eV9oCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gNjIxNTMp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitjbGFzcyBXZWJBcnJheTsKIGNsYXNzIFdlYkNvbnRleHQ7CiBjbGFzcyBXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtNTYsNiArNTcsNyBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBUElUeXBlSW5mbzxXS1ByZWZlcmVuCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBUElUeXBlSW5mbzxXS1N0cmluZ1JlZj4gICAgICAgICAgICAgICAgICAgICAgeyB0eXBl
ZGVmIFdlYkNvcmU6OlN0cmluZ0ltcGwqIEltcGxUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QVBJVHlwZUluZm88V0tVUkxSZWY+ICAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBX
ZWJDb3JlOjpTdHJpbmdJbXBsKiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEFQSVR5
cGVJbmZvPFdLTmF2aWdhdGlvbkRhdGFSZWY+ICAgICAgICAgICAgICB7IHR5cGVkZWYgV2ViTmF2
aWdhdGlvbkRhdGEqIEltcGxUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88
V0tBcnJheVJlZj4gICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXZWJBcnJheSogSW1w
bFR5cGU7IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEltcGxUeXBlPiBzdHJ1Y3QgSW1wbFR5cGVJ
bmZvIHsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5mbzxXZWJGcmFtZVByb3h5Kj4g
ICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV0tGcmFtZVJlZiBBUElUeXBlOyB9OwpAQCAtNjYs
NiArNjgsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBJbXBsVHlwZUluZm88V2ViRnJhbWVQCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBJbXBsVHlwZUluZm88V2ViUHJlZmVyZW5jZXMqPiAgICAgICAgICAgICAg
ICAgeyB0eXBlZGVmIFdLUHJlZmVyZW5jZXNSZWYgQVBJVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3Ry
dWN0IEltcGxUeXBlSW5mbzxXZWJDb3JlOjpTdHJpbmdJbXBsKj4gICAgICAgICAgICB7IHR5cGVk
ZWYgV0tTdHJpbmdSZWYgQVBJVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5m
bzxXZWJOYXZpZ2F0aW9uRGF0YSo+ICAgICAgICAgICAgICB7IHR5cGVkZWYgV0tOYXZpZ2F0aW9u
RGF0YVJlZiBBUElUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYkFy
cmF5Kj4gICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0FycmF5UmVmIEFQSVR5cGU7
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0FycmF5LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXJy
YXkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIldLQXJyYXkuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkFy
cmF5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2NvbnN0IHZvaWQqIFdLQXJyYXlH
ZXRJdGVtQXRJbmRleChXS0FycmF5UmVmIGFycmF5UmVmLCBzaXplX3QgaW5kZXgpCit7CisgICAg
cmV0dXJuIHRvV0soYXJyYXlSZWYpLT5hdChpbmRleCk7Cit9CisKK3NpemVfdCBXS0FycmF5R2V0
U2l6ZShXS0FycmF5UmVmIGFycmF5UmVmKQoreworICAgIHJldHVybiB0b1dLKGFycmF5UmVmKS0+
c2l6ZSgpOworfQorCitXS0FycmF5UmVmIFdLQXJyYXlSZXRhaW4oV0tBcnJheVJlZiBhcnJheVJl
ZikKK3sKKyAgICB0b1dLKGFycmF5UmVmKS0+cmVmKCk7CisgICAgcmV0dXJuIGFycmF5UmVmOwor
fQorCit2b2lkIFdLQXJyYXlSZWxlYXNlKFdLQXJyYXlSZWYgYXJyYXlSZWYpCit7CisgICAgdG9X
SyhhcnJheVJlZiktPmRlcmVmKCk7Cit9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBcnJheS5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBcnJheS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0FycmF5X2gK
KyNkZWZpbmUgV0tBcnJheV9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBjb25zdCB2
b2lkKiBXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tBcnJheVJlZiBhcnJheSwgc2l6ZV90IGluZGV4
KTsKK1dLX0VYUE9SVCBzaXplX3QgV0tBcnJheUdldFNpemUoV0tBcnJheVJlZiBhcnJheSk7CisK
K1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQXJyYXlSZXRhaW4oV0tBcnJheVJlZiBhcnJheSk7CitX
S19FWFBPUlQgdm9pZCBXS0FycmF5UmVsZWFzZShXS0FycmF5UmVmIGFycmF5KTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworV0tfREVDTEFSRV9SRVRBSU5fUkVMRUFTRV9PVkVS
TE9BRFMoV0tBcnJheSkKKworI2VuZGlmIC8vIFdLQXJyYXlfaApJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tCYXNlLmgJKHJldmlzaW9uIDYyMTUzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg
T3BhcXVlV0tQYWdlTmFtZXNwYWNlKiBXSwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJl
bmNlc1JlZiogV0tQcmVmZXJlbmNlc1JlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVdLU3RyaW5n
UmVmKiBXS1N0cmluZ1JlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVdLVVJMUmVmKiBXS1VSTFJl
ZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZVdLQXJyYXlSZWYqIFdLQXJyYXlSZWY7CiAKICNpZiBk
ZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikKICNpZiBCVUlMRElOR19XRUJLSVQyCklu
ZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
NjIxNTMpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNywxMCBAQAogCQlCQzVGN0JCNTExODIzNzZDMDA1MkMw
MkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVGN0JCMzExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtl
ZFVwZGF0ZURyYXdpbmdBcmVhLmggKi87IH07CiAJCUJDNUY3QkI5MTE4MjM3OTkwMDUyQzAyQyAv
KiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RjdCQjgxMTgyMzc5OTAwNTJDMDJDIC8qIENodW5r
ZWRVcGRhdGVEcmF3aW5nQXJlYU1hYy5jcHAgKi87IH07CiAJCUJDNjE3RUU4MTA0Q0IzNDcwMEZC
M0ZFMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUExQzdERTEwMEU4NDZFMDA3OERFQkMgLyogSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OworCQlCQzY0NjgwMzExREJCQTczMDA2NDU1QjAg
LyogV0tBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM2NDY4MDIxMURCQkE3MzAwNjQ1NUIwIC8qIFdLQXJyYXkuaCAqLzsgfTsKKwkJQkM2NDY4
MEIxMURCQkQ2OTAwNjQ1NUIwIC8qIFdLQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDY4MEExMURCQkQ2OTAwNjQ1NUIwIC8qIFdLQXJy
YXkuY3BwICovOyB9OworCQlCQzY0NjgwRTExREJCREQ2MDA2NDU1QjAgLyogV2ViQXJyYXkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDY4MEMx
MURCQkRENjAwNjQ1NUIwIC8qIFdlYkFycmF5LmNwcCAqLzsgfTsKKwkJQkM2NDY4MEYxMURCQkRE
NjAwNjQ1NUIwIC8qIFdlYkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzY0NjgwRDExREJCREQ2MDA2NDU1QjAgLyogV2ViQXJyYXkuaCAqLzsg
fTsKIAkJQkM2RURBQTYxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNkVEQUE1MTExMjcxQzYwMEU3
Njc4QiAvKiBQYWdlQ2xpZW50LmggKi87IH07CiAJCUJDODQ1MkE3MTE2MkM4MDkwMENBQjlCNSAv
KiBEcmF3aW5nQXJlYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzg0NTJBNTExNjJDODA5MDBDQUI5QjUgLyogRHJhd2luZ0FyZWEuY3BwICovOyB9
OwogCQlCQzg0NTJBODExNjJDODA5MDBDQUI5QjUgLyogRHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODQ1MkE2MTE2MkM4MDkwMENB
QjlCNSAvKiBEcmF3aW5nQXJlYS5oICovOyB9OwpAQCAtMzYyLDYgKzM2NiwxMCBAQAogCQlCQzVG
N0JCMjExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNUY3QkIzMTE4MjM3NkMwMDUy
QzAyQyAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDNUY3QkI4MTE4MjM3OTkwMDUyQzAyQyAvKiBDaHVua2VkVXBkYXRlRHJh
d2luZ0FyZWFNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkM2NDY4MDIxMURCQkE3MzAwNjQ1NUIwIC8qIFdLQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzY0NjgwQTExREJCRDY5MDA2NDU1QjAgLyogV0tBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0FycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkM2NDY4MEMxMURCQkRENjAwNjQ1NUIwIC8qIFdlYkFycmF5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkFycmF5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkM2NDY4MEQxMURCQkRENjAwNjQ1NUIwIC8qIFdlYkFycmF5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFycmF5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDNkVEQUE1MTExMjcxQzYwMEU3Njc4QiAvKiBQYWdlQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4NDUyQTUxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdp
bmdBcmVhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdpbmdB
cmVhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4NDUyQTYxMTYyQzgwOTAw
Q0FCOUI1IC8qIERyYXdpbmdBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERyYXdpbmdBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTcsNiArNTY1
LDggQEAKIAkJCQlCQzExMUI1RjExMkY2MzVFMDAzMzdCQUIgLyogQ29yZUlQQ1N1cHBvcnQgKi8s
CiAJCQkJQkMxMTFCNUExMTJGNjI4MjAwMzM3QkFCIC8qIG1hYyAqLywKIAkJCQlCQ0M1NzE2MTEx
NUFEQjQyMDAxQ0NBRjkgLyogTm90SW1wbGVtZW50ZWQuaCAqLywKKwkJCQlCQzY0NjgwQzExREJC
REQ2MDA2NDU1QjAgLyogV2ViQXJyYXkuY3BwICovLAorCQkJCUJDNjQ2ODBEMTFEQkJERDYwMDY0
NTVCMCAvKiBXZWJBcnJheS5oICovLAogCQkJCUJDMUREN0IxMTE0REMzOTYwMDVBREFGMyAvKiBX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAqLywKIAkJCQlCQzAzMkRBRjEwRjQzODBGMDA1OEMxNUEg
LyogV2ViRXZlbnQuaCAqLywKIAkJCQlCQzAzMkRCMDEwRjQzODBGMDA1OEMxNUEgLyogV2ViRXZl
bnRDb252ZXJzaW9uLmNwcCAqLywKQEAgLTczMSw2ICs3NDEsOCBAQAogCQkJCUJDMjBFQkQwMTE2
RUY2NjcwMDA5NEE1MCAvKiBjZiAqLywKIAkJCQlCQ0I2MzQ3NzExNkJGMTA2MDA2MDMyMTUgLyog
V2ViS2l0Mi5oICovLAogCQkJCUJDMEMzNzZEMTBGODA4NDYwMDc2RDdDQiAvKiBXS0FQSUNhc3Qu
aCAqLywKKwkJCQlCQzY0NjgwQTExREJCRDY5MDA2NDU1QjAgLyogV0tBcnJheS5jcHAgKi8sCisJ
CQkJQkM2NDY4MDIxMURCQkE3MzAwNjQ1NUIwIC8qIFdLQXJyYXkuaCAqLywKIAkJCQlCQzBDMzc2
NzEwRjgwN0IyMDA3NkQ3Q0IgLyogV0tCYXNlLmggKi8sCiAJCQkJQkNCOUUyNEExMTIwRTE1QzAw
QTEzN0UwIC8qIFdLQ29udGV4dC5jcHAgKi8sCiAJCQkJQkNCOUUyNDkxMTIwRTE1QzAwQTEzN0Uw
IC8qIFdLQ29udGV4dC5oICovLApAQCAtNzQzLDkgKzc1NSw5IEBACiAJCQkJQkNGNjlGQTcxMTc2
RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEuaCAqLywKIAkJCQlCQ0Q1OTdENDExMkI1
NkRDMDBFQzhDMjMgLyogV0tQYWdlLmNwcCAqLywKIAkJCQlCQ0Q1OTdENTExMkI1NkRDMDBFQzhD
MjMgLyogV0tQYWdlLmggKi8sCi0JCQkJQkMxNzc0NjQxMThCOUZGNDAwN0Q5RTlBIC8qIFdLUGFn
ZVByaXZhdGUuaCAqLywKIAkJCQlCQ0VFOThDQTExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFt
ZXNwYWNlLmNwcCAqLywKIAkJCQlCQ0VFOThDQjExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFt
ZXNwYWNlLmggKi8sCisJCQkJQkMxNzc0NjQxMThCOUZGNDAwN0Q5RTlBIC8qIFdLUGFnZVByaXZh
dGUuaCAqLywKIAkJCQlCQ0Q1OTdDRjExMkI1NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlcy5j
cHAgKi8sCiAJCQkJQkNENTk3Q0UxMTJCNTZBQzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMuaCAq
LywKIAkJCQlCQzIwRUJBRjExNkVFQjA4MDAwOTRBNTAgLyogV0tTdHJpbmcuY3BwICovLApAQCAt
MTA1Nyw2ICsxMDY5LDggQEAKIAkJCQkxQUVGRDJGNzExRDE4MDdCMDA4MjE5RDMgLyogQXJndW1l
bnRDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUI0MTk4MTFENDFENTcwMDExRThERCAv
KiBXS0J1bmRsZVBhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyNUYxNzExRDZC
REUxMDAxNjlCMEUgLyogV0tCdW5kbGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM2NDY4
MDMxMURCQkE3MzAwNjQ1NUIwIC8qIFdLQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNjQ2
ODBGMTFEQkJERDYwMDY0NTVCMCAvKiBXZWJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xMjIw
LDYgKzEyMzQsOCBAQAogCQkJCUJDREUwNTlDMTFDREE4QUUwMEU0MUFGMSAvKiBXZWJDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFRkNDQkQxMUQw
MkM1RTAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUJDRDI1RjE4MTFENkJERTEwMDE2OUIwRSAvKiBXS0J1bmRsZUZyYW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUJDNjQ2ODBCMTFEQkJENjkwMDY0NTVCMCAvKiBXS0FycmF5LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUJDNjQ2ODBFMTFEQkJERDYwMDY0NTVCMCAvKiBXZWJBcnJheS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdDIvbWFjL1dlYktpdDIuZXhwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvbWFjL1dlYktpdDIuZXhwCShyZXZpc2lvbiA2MjE1MykKKysrIFdlYktpdDIvbWFj
L1dlYktpdDIuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsOCBAQAogLm9iamNfY2xhc3Nf
bmFtZV9XS1ZpZXcKK19XS0FycmF5R2V0SXRlbUF0SW5kZXgKK19XS0FycmF5R2V0U2l6ZQorX1dL
QXJyYXlSZWxlYXNlCitfV0tBcnJheVJldGFpbgogX1dLQnVuZGxlRnJhbWVHZXRVUkwKIF9XS0J1
bmRsZUZyYW1lSXNNYWluRnJhbWUKIF9XS0J1bmRsZVBhZ2VDb3B5UmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb24KSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA2MjE1MykKKysrIFdl
YktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODQsNiArNDg0LDE0
IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFNoYXJlZFxXZWJBcnJheS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYkFycmF5LmNwcCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJDb3JlVHlwZUFy
Z3VtZW50TWFyc2hhbGxpbmcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC05NTAsNiArOTU4
LDE0IEBACiAJCQkJCQk+DQogCQkJCQk8L0ZpbGU+DQogCQkJCQk8RmlsZQ0KKwkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdLQXJyYXkuY3BwIg0KKwkJCQkJCT4NCisJCQkJ
CTwvRmlsZT4NCisJCQkJCTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3Nc
QVBJXENcV0tBcnJheS5oIg0KKwkJCQkJCT4NCisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQog
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tDb250ZXh0LmNwcCINCiAJ
CQkJCQk+DQogCQkJCQk8L0ZpbGU+DQo=
</data>
<flag name="review"
          id="47452"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>