<?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>3829</bug_id>
          
          <creation_ts>2005-07-02 20:45:49 -0700</creation_ts>
          <short_desc>GW: Several additions to KWQColor</short_desc>
          <delta_ts>2005-07-07 01:19:51 -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>New Bugs</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>3250</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>13730</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-07-02 20:45:49 -0700</bug_when>
    <thetext>This patch includes several additions to KWQColor:

CIColor support (when WebKit is linked against CoreImage)
CIColor *getCIColor() const;

qRed, qGreen, qBlue support
explicit QColor(const QString &amp;) -- performs expected css color input (like KDE does)
void getRgbaF(float *, float *, float *, float *) const; -- matching QT4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13731</commentid>
    <comment_count>1</comment_count>
      <attachid>2768</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-07-02 20:46:30 -0700</bug_when>
    <thetext>Created attachment 2768
necessary additions to KWQColor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13747</commentid>
    <comment_count>2</comment_count>
      <attachid>2768</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-07-03 01:16:43 -0700</bug_when>
    <thetext>Comment on attachment 2768
necessary additions to KWQColor

&gt; +bool parseHexColor(const QString &amp;name, QRgb &amp;rgb) {

No need to make this a member function, suggest just making it a vanilla static
function (maybe inline since it is used exactly once).

Also, don&apos;t put the open brace on the line with the function prototype (this
occurs elsehwere in the file as well).

I suggest making the CGColor conversion a free function, and moving hte CIColor
conversion out of this file entirely to avoid requiring an SVG_SUPPORT ifdef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13748</commentid>
    <comment_count>3</comment_count>
      <attachid>2768</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-07-03 01:43:27 -0700</bug_when>
    <thetext>Comment on attachment 2768
necessary additions to KWQColor

&gt; +bool parseHexColor(const QString &amp;name, QRgb &amp;rgb) {

No need to make this a member function, suggest just making it a vanilla static
function (maybe inline since it is used exactly once).

Also, don&apos;t put the open brace on the line with the function prototype (this
occurs elsehwere in the file as well).

I suggest making the CGColor conversion a free function, and moving hte CIColor
conversion out of this file entirely to avoid requiring an SVG_SUPPORT ifdef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13959</commentid>
    <comment_count>4</comment_count>
      <attachid>2802</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-07-05 02:59:01 -0700</bug_when>
    <thetext>Created attachment 2802
Per mjs and my talks -- a much larger patch, making cgColor, nsColor free functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14101</commentid>
    <comment_count>5</comment_count>
      <attachid>2802</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-07-07 00:37:07 -0700</bug_when>
    <thetext>Comment on attachment 2802
Per mjs and my talks -- a much larger patch, making cgColor, nsColor free functions.

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2768</attachid>
            <date>2005-07-02 20:46:30 -0700</date>
            <delta_ts>2005-07-05 02:59:01 -0700</delta_ts>
            <desc>necessary additions to KWQColor</desc>
            <filename>kwqcolor.patch</filename>
            <type>text/plain</type>
            <size>4621</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IC4va3dxL0tXUUNvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dl
YkNvcmUva3dxL0tXUUNvbG9yLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzQKZGlmZiAtcCAt
dSAtcjEuMzQgLi9rd3EvS1dRQ29sb3IuaAotLS0gLi9rd3EvS1dRQ29sb3IuaAkyMDA0LzA3LzI4
IDIwOjQzOjMxCTEuMzQKKysrIC4va3dxL0tXUUNvbG9yLmgJMjAwNS8wNy8wMyAwMzowMDoxMwpA
QCAtMzAsMjEgKzMwLDI5IEBACiAKICNpZmRlZiBfX09CSkNfXwogQGNsYXNzIE5TQ29sb3I7CitA
Y2xhc3MgQ0lDb2xvcjsKICNlbHNlCiBjbGFzcyBOU0NvbG9yOworY2xhc3MgQ0lDb2xvcjsKICNl
bmRpZgogCit0eXBlZGVmIHN0cnVjdCBDR0NvbG9yICpDR0NvbG9yUmVmOworCiB0eXBlZGVmIHVu
c2lnbmVkIGludCBRUmdiOwkJCS8vIFJHQkEgcXVhZHJ1cGxldAogCiBRUmdiIHFSZ2IoaW50IHIs
IGludCBnLCBpbnQgYik7CiBRUmdiIHFSZ2JhKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsK
IGludCBxQWxwaGEoUVJnYiByZ2JhKTsKK2ludCBxUmVkKFFSZ2IgcmdiYSk7CitpbnQgcUdyZWVu
KFFSZ2IgcmdiYSk7CitpbnQgcUJsdWUoUVJnYiByZ2JhKTsKIAogY2xhc3MgUUNvbG9yIHsKIHB1
YmxpYzoKICAgICBRQ29sb3IoKSA6IGNvbG9yKDApLCB2YWxpZChmYWxzZSkgeyB9CiAgICAgUUNv
bG9yKFFSZ2IgY29sKSA6IGNvbG9yKGNvbCksIHZhbGlkKHRydWUpIHsgfQogICAgIFFDb2xvcihp
bnQgciwgaW50IGcsIGludCBiKSA6IGNvbG9yKHFSZ2IociwgZywgYikpLCB2YWxpZCh0cnVlKSB7
IH0KKyAgICBleHBsaWNpdCBRQ29sb3IoY29uc3QgUVN0cmluZyAmKTsKICAgICBleHBsaWNpdCBR
Q29sb3IoY29uc3QgY2hhciAqKTsKICAgICAKICAgICBRU3RyaW5nIG5hbWUoKSBjb25zdDsKQEAg
LTU5LDYgKzY3LDcgQEAgcHVibGljOgogICAgIFFSZ2IgcmdiKCkgY29uc3QgeyByZXR1cm4gY29s
b3IgJiAweEZGRkZGRkZGOyB9IC8vIFByZXNlcnZlIHRoZSBhbHBoYS4KICAgICB2b2lkIHNldFJn
YihpbnQgciwgaW50IGcsIGludCBiKSB7IGNvbG9yID0gcVJnYihyLCBnLCBiKTsgdmFsaWQgPSB0
cnVlOyB9CiAgICAgdm9pZCBzZXRSZ2IoaW50IHJnYikgeyBjb2xvciA9IHJnYjsgdmFsaWQgPSB0
cnVlOyAvKiBBbHBoYSBtYXkgYmUgc2V0LiBQcmVzZXJ2ZSBpdC4gKi8gfQorICAgIHZvaWQgZ2V0
UmdiYUYoZmxvYXQgKiwgZmxvYXQgKiwgZmxvYXQgKiwgZmxvYXQgKikgY29uc3Q7CiAKICAgICB2
b2lkIGhzdihpbnQgKiwgaW50ICosIGludCAqKSBjb25zdDsKICAgICB2b2lkIHNldEhzdihpbnQg
aCwgaW50IHMsIGludCB2KTsKQEAgLTcwLDYgKzc5LDEwIEBAIHB1YmxpYzoKICAgICBmcmllbmQg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFFDb2xvciAmYSwgY29uc3QgUUNvbG9yICZiKTsKIAogICAg
IE5TQ29sb3IgKmdldE5TQ29sb3IoKSBjb25zdDsKKyAgICBDR0NvbG9yUmVmIGdldENHQ29sb3Io
KSBjb25zdDsKKyNpZmRlZiBTVkdfU1VQUE9SVAorICAgIENJQ29sb3IgKmdldENJQ29sb3IoKSBj
b25zdDsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIFFSZ2IgY29sb3I7CkluZGV4OiAuL2t3cS9L
V1FDb2xvci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dR
Q29sb3IubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDIKZGlmZiAtcCAtdSAtcjEuNDIgLi9r
d3EvS1dRQ29sb3IubW0KLS0tIC4va3dxL0tXUUNvbG9yLm1tCTIwMDQvMTAvMTQgMDE6MjY6NTMJ
MS40MgorKysgLi9rd3EvS1dRQ29sb3IubW0JMjAwNS8wNy8wMyAwMzowMDoxMwpAQCAtNTksMTIg
KzU5LDcwIEBAIGludCBxQWxwaGEoUVJnYiByZ2JhKQogICAgIHJldHVybiAocmdiYSA+PiAyNCkg
JiAweEZGOyAKIH0KIAoraW50IHFSZWQoUVJnYiByZ2JhKQoreworICAgIHJldHVybiAocmdiYSA+
PiAxNikgJiAweEZGOyAKK30KKworaW50IHFHcmVlbihRUmdiIHJnYmEpCit7CisgICAgcmV0dXJu
IChyZ2JhID4+IDgpICYgMHhGRjsgCit9CisKK2ludCBxQmx1ZShRUmdiIHJnYmEpCit7CisgICAg
cmV0dXJuIHJnYmEgJiAweEZGOyAKK30KKworLy8gY29waWVkIGZyb20ga2h0bWwvY3NzL2Nzc3Bh
cnNlci5oCitib29sIHBhcnNlSGV4Q29sb3IoY29uc3QgUVN0cmluZyAmbmFtZSwgUVJnYiAmcmdi
KSB7CisgICAgaW50IGxlbiA9IG5hbWUubGVuZ3RoKCk7CisgICAgCisgICAgaWYgKCAhbGVuICkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGJvb2wgb2s7CisgICAgCisgICAgaWYgKCBsZW4g
PT0gMyB8fCBsZW4gPT0gNiApIHsKKyAgICAgICAgaW50IHZhbCA9IG5hbWUudG9JbnQoJm9rLCAx
Nik7CisgICAgICAgIGlmICggb2sgKSB7CisgICAgICAgICAgICBpZiAobGVuID09IDYpIHsKKyAg
ICAgICAgICAgICAgICByZ2IgPSAgKDB4ZmYgPDwgMjQpIHwgdmFsOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoIGxlbiA9
PSAzICkgeworICAgICAgICAgICAgICAgIC8vICNhYmMgY29udmVydHMgdG8gI2FhYmJjYyBhY2Nv
cmRpbmcgdG8gdGhlIHNwZWNzCisgICAgICAgICAgICAgICAgcmdiID0gKDB4ZmYgPDwgMjQpIHwK
KyAgICAgICAgICAgICAgICAodmFsJjB4ZjAwKTw8MTIgfCAodmFsJjB4ZjAwKTw8OCB8CisgICAg
ICAgICAgICAgICAgKHZhbCYweGYwKTw8OCB8ICh2YWwmMHhmMCk8PDQgfAorICAgICAgICAgICAg
ICAgICh2YWwmMHhmKTw8NCB8ICh2YWwmMHhmKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK1FDb2xvcjo6UUNvbG9yKGNvbnN0IFFTdHJpbmcgJm5hbWUpIHsKKyAgICBpZihuYW1lLnN0
YXJ0c1dpdGgoIiMiKSkgeworICAgICAgICB2YWxpZCA9IHBhcnNlSGV4Q29sb3IobmFtZS5taWQo
MSksIGNvbG9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBDb2xvciAqZm91bmRDb2xv
ciA9IGZpbmRDb2xvcihuYW1lLmFzY2lpKCksIG5hbWUubGVuZ3RoKCkpOworICAgICAgICBjb2xv
ciA9IGZvdW5kQ29sb3IgPyBmb3VuZENvbG9yLT5SR0JWYWx1ZSA6IDA7CisgICAgICAgIGNvbG9y
IHw9IDB4RkYwMDAwMDA7CisgICAgICAgIHZhbGlkID0gZm91bmRDb2xvcjsKKyAgICB9Cit9CisK
IFFDb2xvcjo6UUNvbG9yKGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0gICAgY29uc3QgQ29sb3IgKmZv
dW5kQ29sb3IgPSBmaW5kQ29sb3IobmFtZSwgc3RybGVuKG5hbWUpKTsKLSAgICBjb2xvciA9IGZv
dW5kQ29sb3IgPyBmb3VuZENvbG9yLT5SR0JWYWx1ZSA6IDA7Ci0gICAgY29sb3IgfD0gMHhGRjAw
MDAwMDsKLSAgICB2YWxpZCA9IGZvdW5kQ29sb3I7CisgICAgaWYobmFtZVswXSA9PSAnIycpIHsK
KyAgICAgICAgdmFsaWQgPSBwYXJzZUhleENvbG9yKFFTdHJpbmcobmFtZSkubWlkKDEpLCBjb2xv
cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgQ29sb3IgKmZvdW5kQ29sb3IgPSBmaW5k
Q29sb3IobmFtZSwgc3RybGVuKG5hbWUpKTsKKyAgICAgICAgY29sb3IgPSBmb3VuZENvbG9yID8g
Zm91bmRDb2xvci0+UkdCVmFsdWUgOiAwOworICAgICAgICBjb2xvciB8PSAweEZGMDAwMDAwOwor
ICAgICAgICB2YWxpZCA9IGZvdW5kQ29sb3I7CisgICAgfQogfQogCiBRU3RyaW5nIFFDb2xvcjo6
bmFtZSgpIGNvbnN0CkBAIC0yNjgsNCArMzI2LDI3IEBAIE5TQ29sb3IgKlFDb2xvcjo6Z2V0TlND
b2xvcigpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAg
fQorfQorCisKK0NHQ29sb3JSZWYgUUNvbG9yOjpnZXRDR0NvbG9yKCkgY29uc3QKK3sKKyAgICBm
bG9hdCBjb21wb25lbnRzWzRdID0geyByZWQoKSAvIDI1NS4wLCBncmVlbigpIC8gMjU1LjAsIGJs
dWUoKSAvIDI1NS4wLCBxQWxwaGEoY29sb3IpLzI1NS4wIH07CisgICAgQ0dDb2xvclJlZiByZXN1
bHQgPSBDR0NvbG9yQ3JlYXRlKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3Bh
Y2VHZW5lcmljUkdCKSwgY29tcG9uZW50cyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lm
ZGVmIFNWR19TVVBQT1JUCitDSUNvbG9yICpRQ29sb3I6OmdldENJQ29sb3IoKSBjb25zdAorewor
ICAgIHJldHVybiBbQ0lDb2xvciBjb2xvcldpdGhSZWQ6KHJlZCgpIC8gMjU1LjApIGdyZWVuOihn
cmVlbigpIC8gMjU1LjApIGJsdWU6KGJsdWUoKSAvIDI1NS4wKSBhbHBoYToocUFscGhhKGNvbG9y
KS8yNTUuMCldOworfQorI2VuZGlmCisKK3ZvaWQgUUNvbG9yOjpnZXRSZ2JhRihmbG9hdCAqciwg
ZmxvYXQgKmcsIGZsb2F0ICpiLCBmbG9hdCAqYSkgY29uc3QKK3sKKyAgICAqciA9IChmbG9hdCly
ZWQoKSAvIDI1NS4wOworICAgICpnID0gKGZsb2F0KWdyZWVuKCkgLyAyNTUuMDsKKyAgICAqYiA9
IChmbG9hdClibHVlKCkgLyAyNTUuMDsKKyAgICAqYSA9IChmbG9hdClhbHBoYSgpIC8gMjU1LjA7
CiB9Cg==
</data>
<flag name="review"
          id="154"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2802</attachid>
            <date>2005-07-05 02:59:01 -0700</date>
            <delta_ts>2005-07-07 00:37:07 -0700</delta_ts>
            <desc>Per mjs and my talks -- a much larger patch, making cgColor, nsColor free functions.</desc>
            <filename>kwqcolor.patch</filename>
            <type>text/plain</type>
            <size>21923</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IC4va3dxL0RPTS1DU1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dl
YkNvcmUva3dxL0RPTS1DU1MubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjEKZGlmZiAtcCAt
dSAtcjEuMjEgLi9rd3EvRE9NLUNTUy5tbQotLS0gLi9rd3EvRE9NLUNTUy5tbQkyMDA1LzA1LzEx
IDAwOjU4OjI4CTEuMjEKKysrIC4va3dxL0RPTS1DU1MubW0JMjAwNS8wNy8wNSAwOTo0NjoyNwpA
QCAtMTEyNiw3ICsxMTI2LDcgQEAgdm9pZCByZW1vdmVXcmFwcGVyRm9yUkdCKFFSZ2IgdmFsdWUp
CiAtIChOU0NvbG9yICopX2NvbG9yCiB7CiAgICAgUVJnYiByZ2IgPSByZWludGVycHJldF9jYXN0
PFFSZ2I+KF9pbnRlcm5hbCk7Ci0gICAgcmV0dXJuIFFDb2xvcihyZ2IpLmdldE5TQ29sb3IoKTsK
KyAgICByZXR1cm4gbnNDb2xvcihRQ29sb3IocmdiKSk7CiB9CiAKIEBlbmQKSW5kZXg6IC4va3dx
L0tXUUFjY09iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9r
d3EvS1dRQWNjT2JqZWN0Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjY4CmRpZmYgLXAgLXUg
LXIxLjY4IC4va3dxL0tXUUFjY09iamVjdC5tbQotLS0gLi9rd3EvS1dRQWNjT2JqZWN0Lm1tCTIw
MDUvMDYvMDUgMDc6MDY6NTIJMS42OAorKysgLi9rd3EvS1dRQWNjT2JqZWN0Lm1tCTIwMDUvMDcv
MDUgMDk6NDY6MjkKQEAgLTEyNDIsOCArMTI0Miw4IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRl
U3RyaW5nU2V0U3R5bGUoTlMKICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEZvbnQoYXR0clN0cmlu
ZywgTlNBY2Nlc3NpYmlsaXR5Rm9udFRleHRBdHRyaWJ1dGUsIHN0eWxlLT5mb250KCkuZ2V0TlNG
b250KCksIHJhbmdlKTsKIAogICAgIC8vIHNldCBiYXNpYyBjb2xvcnMKLSAgICBBWEF0dHJpYnV0
ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUZvcmVncm91bmRDb2xv
clRleHRBdHRyaWJ1dGUsIHN0eWxlLT5jb2xvcigpLmdldE5TQ29sb3IoKSwgcmFuZ2UpOwotICAg
IEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5QmFj
a2dyb3VuZENvbG9yVGV4dEF0dHJpYnV0ZSwgc3R5bGUtPmJhY2tncm91bmRDb2xvcigpLmdldE5T
Q29sb3IoKSwgcmFuZ2UpOworICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmlu
ZywgTlNBY2Nlc3NpYmlsaXR5Rm9yZWdyb3VuZENvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcihz
dHlsZS0+Y29sb3IoKSksIHJhbmdlKTsKKyAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0
dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUJhY2tncm91bmRDb2xvclRleHRBdHRyaWJ1dGUsIG5z
Q29sb3Ioc3R5bGUtPmJhY2tncm91bmRDb2xvcigpKSwgcmFuZ2UpOwogCiAgICAgLy8gc2V0IHN1
cGVyL3N1YiBzY3JpcHRpbmcKICAgICBFVmVydGljYWxBbGlnbiBhbGlnbm1lbnQgPSBzdHlsZS0+
dmVydGljYWxBbGlnbigpOwpAQCAtMTI4MCwxMiArMTI4MCwxMiBAQCBzdGF0aWMgdm9pZCBBWEF0
dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TCiAgICAgICAgIAogICAgICAgICBpZiAoKGRlY29yICYg
a2h0bWw6OlVOREVSTElORSkgIT0gMCkgewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdT
ZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJpYnV0
ZSwgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIHJhbmdlKTsKLSAgICAgICAgICAgIEFY
QXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJs
aW5lQ29sb3JUZXh0QXR0cmlidXRlLCB1bmRlcmxpbmUuZ2V0TlNDb2xvcigpLCByYW5nZSk7Cisg
ICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNz
aWJpbGl0eVVuZGVybGluZUNvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xvcih1bmRlcmxpbmUpLCBy
YW5nZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKGRlY29yICYga2h0bWw6OkxJTkVfVEhS
T1VHSCkgIT0gMCkgewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0
clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaFRleHRBdHRyaWJ1dGUsIFtOU051
bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCByYW5nZSk7Ci0gICAgICAgICAgICBBWEF0dHJpYnV0
ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hD
b2xvclRleHRBdHRyaWJ1dGUsIGxpbmV0aHJvdWdoLmdldE5TQ29sb3IoKSwgcmFuZ2UpOworICAg
ICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2li
aWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKGxpbmV0aHJvdWdo
KSwgcmFuZ2UpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogLi9rd3EvS1dRQ29sb3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRQ29sb3IuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4zNApkaWZmIC1wIC11IC1yMS4zNCAuL2t3cS9LV1FDb2xvci5o
Ci0tLSAuL2t3cS9LV1FDb2xvci5oCTIwMDQvMDcvMjggMjA6NDM6MzEJMS4zNAorKysgLi9rd3Ev
S1dRQ29sb3IuaAkyMDA1LzA3LzA1IDA5OjQ2OjI5CkBAIC0zNCwxNyArMzQsMjMgQEAKIGNsYXNz
IE5TQ29sb3I7CiAjZW5kaWYKIAordHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvciAqQ0dDb2xvclJlZjsK
KwogdHlwZWRlZiB1bnNpZ25lZCBpbnQgUVJnYjsJCQkvLyBSR0JBIHF1YWRydXBsZXQKIAogUVJn
YiBxUmdiKGludCByLCBpbnQgZywgaW50IGIpOwogUVJnYiBxUmdiYShpbnQgciwgaW50IGcsIGlu
dCBiLCBpbnQgYSk7CiBpbnQgcUFscGhhKFFSZ2IgcmdiYSk7CitpbnQgcVJlZChRUmdiIHJnYmEp
OworaW50IHFHcmVlbihRUmdiIHJnYmEpOworaW50IHFCbHVlKFFSZ2IgcmdiYSk7CiAKIGNsYXNz
IFFDb2xvciB7CiBwdWJsaWM6CiAgICAgUUNvbG9yKCkgOiBjb2xvcigwKSwgdmFsaWQoZmFsc2Up
IHsgfQogICAgIFFDb2xvcihRUmdiIGNvbCkgOiBjb2xvcihjb2wpLCB2YWxpZCh0cnVlKSB7IH0K
ICAgICBRQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYikgOiBjb2xvcihxUmdiKHIsIGcsIGIpKSwg
dmFsaWQodHJ1ZSkgeyB9CisgICAgZXhwbGljaXQgUUNvbG9yKGNvbnN0IFFTdHJpbmcgJik7CiAg
ICAgZXhwbGljaXQgUUNvbG9yKGNvbnN0IGNoYXIgKik7CiAgICAgCiAgICAgUVN0cmluZyBuYW1l
KCkgY29uc3Q7CkBAIC01OSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICBRUmdiIHJnYigpIGNvbnN0
IHsgcmV0dXJuIGNvbG9yICYgMHhGRkZGRkZGRjsgfSAvLyBQcmVzZXJ2ZSB0aGUgYWxwaGEuCiAg
ICAgdm9pZCBzZXRSZ2IoaW50IHIsIGludCBnLCBpbnQgYikgeyBjb2xvciA9IHFSZ2IociwgZywg
Yik7IHZhbGlkID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0UmdiKGludCByZ2IpIHsgY29sb3IgPSBy
Z2I7IHZhbGlkID0gdHJ1ZTsgLyogQWxwaGEgbWF5IGJlIHNldC4gUHJlc2VydmUgaXQuICovIH0K
KyAgICB2b2lkIGdldFJnYmFGKGZsb2F0ICosIGZsb2F0ICosIGZsb2F0ICosIGZsb2F0ICopIGNv
bnN0OwogCiAgICAgdm9pZCBoc3YoaW50ICosIGludCAqLCBpbnQgKikgY29uc3Q7CiAgICAgdm9p
ZCBzZXRIc3YoaW50IGgsIGludCBzLCBpbnQgdik7CkBAIC02OSw4ICs3Niw2IEBAIHB1YmxpYzoK
ICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFDb2xvciAmYSwgY29uc3QgUUNvbG9y
ICZiKTsKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFDb2xvciAmYSwgY29uc3Qg
UUNvbG9yICZiKTsKIAotICAgIE5TQ29sb3IgKmdldE5TQ29sb3IoKSBjb25zdDsKLQogcHJpdmF0
ZToKICAgICBRUmdiIGNvbG9yOwogICAgIGJvb2wgdmFsaWQgOiAxOwpAQCAtODUsNSArOTAsOCBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFDb2xvciAmYSwgCiB7CiAgICAgcmV0dXJu
IGEuY29sb3IgIT0gYi5jb2xvciB8fCBhLnZhbGlkICE9IGIudmFsaWQ7CiB9CisKK05TQ29sb3Ig
Km5zQ29sb3IoY29uc3QgUUNvbG9yICYpOworQ0dDb2xvclJlZiBjZ0NvbG9yKGNvbnN0IFFDb2xv
ciAmKTsKIAogI2VuZGlmCkluZGV4OiAuL2t3cS9LV1FDb2xvci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRQ29sb3IubW0sdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNDIKZGlmZiAtcCAtdSAtcjEuNDIgLi9rd3EvS1dRQ29sb3IubW0KLS0tIC4va3dxL0tX
UUNvbG9yLm1tCTIwMDQvMTAvMTQgMDE6MjY6NTMJMS40MgorKysgLi9rd3EvS1dRQ29sb3IubW0J
MjAwNS8wNy8wNSAwOTo0NjoyOQpAQCAtMjgsNiArMjgsNyBAQAogI2ltcG9ydCAiS1dRTmFtZXNw
YWNlLmgiCiAjaW1wb3J0ICJLV1FTdHJpbmcuaCIKICNpbXBvcnQgIktXUUFzc2VydGlvbnMuaCIK
KyNpbXBvcnQgIktXUVBhaW50ZXIuaCIKIAogLy8gTlNDb2xvciBjYWxscyBkb24ndCB0aHJvdywg
c28gbm8gbmVlZCB0byBibG9jayBDb2NvYSBleGNlcHRpb25zIGluIHRoaXMgZmlsZQogCkBAIC01
OSwxMiArNjAsNzEgQEAgaW50IHFBbHBoYShRUmdiIHJnYmEpCiAgICAgcmV0dXJuIChyZ2JhID4+
IDI0KSAmIDB4RkY7IAogfQogCitpbnQgcVJlZChRUmdiIHJnYmEpCit7CisgICAgcmV0dXJuIChy
Z2JhID4+IDE2KSAmIDB4RkY7IAorfQorCitpbnQgcUdyZWVuKFFSZ2IgcmdiYSkKK3sKKyAgICBy
ZXR1cm4gKHJnYmEgPj4gOCkgJiAweEZGOyAKK30KKworaW50IHFCbHVlKFFSZ2IgcmdiYSkKK3sK
KyAgICByZXR1cm4gcmdiYSAmIDB4RkY7IAorfQorCisvLyBjb3BpZWQgZnJvbSBraHRtbC9jc3Mv
Y3NzcGFyc2VyLmgKK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUhleENvbG9yKGNvbnN0IFFTdHJp
bmcgJm5hbWUsIFFSZ2IgJnJnYikKK3sKKyAgICBpbnQgbGVuID0gbmFtZS5sZW5ndGgoKTsKKyAg
ICAKKyAgICBpZiAoICFsZW4gKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBvazsK
KyAgICAKKyAgICBpZiAoIGxlbiA9PSAzIHx8IGxlbiA9PSA2ICkgeworICAgICAgICBpbnQgdmFs
ID0gbmFtZS50b0ludCgmb2ssIDE2KTsKKyAgICAgICAgaWYgKCBvayApIHsKKyAgICAgICAgICAg
IGlmIChsZW4gPT0gNikgeworICAgICAgICAgICAgICAgIHJnYiA9ICAoMHhmZiA8PCAyNCkgfCB2
YWw7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIGlmICggbGVuID09IDMgKSB7CisgICAgICAgICAgICAgICAgLy8gI2FiYyBjb252
ZXJ0cyB0byAjYWFiYmNjIGFjY29yZGluZyB0byB0aGUgc3BlY3MKKyAgICAgICAgICAgICAgICBy
Z2IgPSAoMHhmZiA8PCAyNCkgfAorICAgICAgICAgICAgICAgICh2YWwmMHhmMDApPDwxMiB8ICh2
YWwmMHhmMDApPDw4IHwKKyAgICAgICAgICAgICAgICAodmFsJjB4ZjApPDw4IHwgKHZhbCYweGYw
KTw8NCB8CisgICAgICAgICAgICAgICAgKHZhbCYweGYpPDw0IHwgKHZhbCYweGYpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKworUUNvbG9yOjpRQ29sb3IoY29uc3QgUVN0cmluZyAmbmFt
ZSkgeworICAgIGlmKG5hbWUuc3RhcnRzV2l0aCgiIyIpKSB7CisgICAgICAgIHZhbGlkID0gcGFy
c2VIZXhDb2xvcihuYW1lLm1pZCgxKSwgY29sb3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNv
bnN0IENvbG9yICpmb3VuZENvbG9yID0gZmluZENvbG9yKG5hbWUuYXNjaWkoKSwgbmFtZS5sZW5n
dGgoKSk7CisgICAgICAgIGNvbG9yID0gZm91bmRDb2xvciA/IGZvdW5kQ29sb3ItPlJHQlZhbHVl
IDogMDsKKyAgICAgICAgY29sb3IgfD0gMHhGRjAwMDAwMDsKKyAgICAgICAgdmFsaWQgPSBmb3Vu
ZENvbG9yOworICAgIH0KK30KKwogUUNvbG9yOjpRQ29sb3IoY29uc3QgY2hhciAqbmFtZSkKIHsK
LSAgICBjb25zdCBDb2xvciAqZm91bmRDb2xvciA9IGZpbmRDb2xvcihuYW1lLCBzdHJsZW4obmFt
ZSkpOwotICAgIGNvbG9yID0gZm91bmRDb2xvciA/IGZvdW5kQ29sb3ItPlJHQlZhbHVlIDogMDsK
LSAgICBjb2xvciB8PSAweEZGMDAwMDAwOwotICAgIHZhbGlkID0gZm91bmRDb2xvcjsKKyAgICBp
ZihuYW1lWzBdID09ICcjJykgeworICAgICAgICB2YWxpZCA9IHBhcnNlSGV4Q29sb3IoUVN0cmlu
ZyhuYW1lKS5taWQoMSksIGNvbG9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBDb2xv
ciAqZm91bmRDb2xvciA9IGZpbmRDb2xvcihuYW1lLCBzdHJsZW4obmFtZSkpOworICAgICAgICBj
b2xvciA9IGZvdW5kQ29sb3IgPyBmb3VuZENvbG9yLT5SR0JWYWx1ZSA6IDA7CisgICAgICAgIGNv
bG9yIHw9IDB4RkYwMDAwMDA7CisgICAgICAgIHZhbGlkID0gZm91bmRDb2xvcjsKKyAgICB9CiB9
CiAKIFFTdHJpbmcgUUNvbG9yOjpuYW1lKCkgY29uc3QKQEAgLTIxNyw5ICsyNzcsOSBAQCBRQ29s
b3IgUUNvbG9yOjpkYXJrKGludCBmYWN0b3IpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotTlNDb2xvciAqUUNvbG9yOjpnZXROU0NvbG9yKCkgY29uc3QKK05TQ29sb3IgKm5zQ29sb3Io
Y29uc3QgUUNvbG9yICZjb2xvcikKIHsKLSAgICB1bnNpZ25lZCBjID0gY29sb3IgJiAweEZGRkZG
RkZGOworICAgIHVuc2lnbmVkIGMgPSBjb2xvci5yZ2IoKTsKICAgICBzd2l0Y2ggKGMpIHsKICAg
ICAgICAgY2FzZSAwOiB7CiAgICAgICAgICAgICAvLyBOZWVkIHRoaXMgdG8gYXZvaWQgcmV0dXJu
aW5nIG5pbCBiZWNhdXNlIGNhY2hlZFJHQkFWYWx1ZXMgd2lsbCBkZWZhdWx0IHRvIDAuCkBAIC0y
NDYsMTUgKzMwNiwxNSBAQCBOU0NvbG9yICpRQ29sb3I6OmdldE5TQ29sb3IoKSBjb25zdAogICAg
ICAgICAgICAgfQogCiAjaWYgQ09MT1JNQVRDSF9FVkVSWVRISU5HCi0gICAgICAgICAgICBOU0Nv
bG9yICpyZXN1bHQgPSBbTlNDb2xvciBjb2xvcldpdGhDYWxpYnJhdGVkUmVkOnJlZCgpIC8gMjU1
LjAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3JlZW46Z3JlZW4oKSAvIDI1NS4wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBibHVlOmJsdWUoKSAvIDI1NS4wCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhOnFBbHBo
YShjb2xvcikvMjU1LjBdOworICAgICAgICAgICAgTlNDb2xvciAqcmVzdWx0ID0gW05TQ29sb3Ig
Y29sb3JXaXRoQ2FsaWJyYXRlZFJlZDpxUmVkKGMpIC8gMjU1LjAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZW46cUdyZWVuKGMpIC8g
MjU1LjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJsdWU6cUJsdWUoYykgLyAyNTUuMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYTpxQWxwaGEoYykgLzI1NS4wXTsKICNl
bHNlCi0gICAgICAgICAgICBOU0NvbG9yICpyZXN1bHQgPSBbTlNDb2xvciBjb2xvcldpdGhEZXZp
Y2VSZWQ6cmVkKCkgLyAyNTUuMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdyZWVuOmdyZWVuKCkgLyAyNTUuMAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHVlOmJsdWUoKSAvIDI1NS4wCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGE6
cUFscGhhKGNvbG9yKS8yNTUuMF07CisgICAgICAgICAgICBOU0NvbG9yICpyZXN1bHQgPSBbTlND
b2xvciBjb2xvcldpdGhEZXZpY2VSZWQ6cVJlZChjKSAvIDI1NS4wCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZW46cUdyZWVuKGMpIC8gMjU1
LjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ymx1ZTpxQmx1ZShjKSAvIDI1NS4wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWxwaGE6cUFscGhhKGMpIC8yNTUuMF07CiAjZW5kaWYKIAogICAg
ICAgICAgICAgc3RhdGljIGludCBjdXJzb3I7CkBAIC0yNjgsNCArMzI4LDM3IEBAIE5TQ29sb3Ig
KlFDb2xvcjo6Z2V0TlNDb2xvcigpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9CiAgICAgfQorfQorCitzdGF0aWMgQ0dDb2xvclJlZiBDR0NvbG9yRnJvbU5TQ29s
b3IoTlNDb2xvciAqY29sb3IpCit7CisgICAgLy8gdGhpcyBuZWVkcyB0byBhbHdheXMgdXNlIGRl
dmljZSBjb2xvcnNwYWNlIHNvIGl0IGNhbiBkZS1jYWxpYnJhdGUgdGhlIGNvbG9yIGZvcgorICAg
IC8vIENHQ29sb3IgdG8gcG9zc2libHkgcmVjYWxpYnJhdGUgaXQKKyAgICBOU0NvbG9yKiBkZXZp
Y2VDb2xvciA9IFtjb2xvciBjb2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xv
clNwYWNlXTsKKyAgICBmbG9hdCByZWQgPSBbZGV2aWNlQ29sb3IgcmVkQ29tcG9uZW50XTsKKyAg
ICBmbG9hdCBncmVlbiA9IFtkZXZpY2VDb2xvciBncmVlbkNvbXBvbmVudF07CisgICAgZmxvYXQg
Ymx1ZSA9IFtkZXZpY2VDb2xvciBibHVlQ29tcG9uZW50XTsKKyAgICBmbG9hdCBhbHBoYSA9IFtk
ZXZpY2VDb2xvciBhbHBoYUNvbXBvbmVudF07CisgICAgY29uc3QgZmxvYXQgY29tcG9uZW50c1td
ID0geyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSB9OworICAgIAorICAgIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlID0gUVBhaW50ZXI6OnJnYkNvbG9yU3BhY2UoKTsKKyAgICBDR0NvbG9yUmVm
IGNnQ29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UsIGNvbXBvbmVudHMpOworICAgIENH
Q29sb3JTcGFjZVJlbGVhc2UoY29sb3JTcGFjZSk7CisgICAgcmV0dXJuIGNnQ29sb3I7Cit9CisK
K0NHQ29sb3JSZWYgY2dDb2xvcihjb25zdCBRQ29sb3IgJmMpCit7CisgICAgLy8gV2UgY291bGQg
ZGlyZWN0bHkgY3JlYXRlIGEgQ0dDb2xvciBoZXJlLCBidXQgdGhhdCB3b3VsZAorICAgIC8vIHNr
aXAgYW55IHJnYiBjYWNoaW5nIHRoZSBuc0NvbG9yIG1ldGhvZCBkb2VzLiAgQSBkaXJlY3QgCisg
ICAgLy8gY3JlYXRpb24gc2hvdWxkIGJlIGludmVzdGlnYXRlZCBmb3IgYSBwb3NzaWJsZSBwZXJm
b3JtYW5jZSB3aW4uCisgICAgcmV0dXJuIENHQ29sb3JGcm9tTlNDb2xvcihuc0NvbG9yKGMpKTsK
K30KKwordm9pZCBRQ29sb3I6OmdldFJnYmFGKGZsb2F0ICpyLCBmbG9hdCAqZywgZmxvYXQgKmIs
IGZsb2F0ICphKSBjb25zdAoreworICAgICpyID0gKGZsb2F0KXJlZCgpIC8gMjU1LjA7CisgICAg
KmcgPSAoZmxvYXQpZ3JlZW4oKSAvIDI1NS4wOworICAgICpiID0gKGZsb2F0KWJsdWUoKSAvIDI1
NS4wOworICAgICphID0gKGZsb2F0KWFscGhhKCkgLyAyNTUuMDsKIH0KSW5kZXg6IC4va3dxL0tX
UUtIVE1MUGFydC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3Ev
S1dRS0hUTUxQYXJ0Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjY0MwpkaWZmIC1wIC11IC1y
MS42NDMgLi9rd3EvS1dRS0hUTUxQYXJ0Lm1tCi0tLSAuL2t3cS9LV1FLSFRNTFBhcnQubW0JMjAw
NS8wNS8yNiAyMDozMDoxMgkxLjY0MworKysgLi9rd3EvS1dRS0hUTUxQYXJ0Lm1tCTIwMDUvMDcv
MDUgMDk6NDY6MzMKQEAgLTMwMDEsOSArMzAwMSw5IEBAIE5TQXR0cmlidXRlZFN0cmluZyAqS1dR
S0hUTUxQYXJ0OjphdHRyaWIKICAgICAgICAgICAgICAgICAgICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqYXR0cnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwogICAgICAgICAg
ICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OmZvbnQgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5h
bWVdOwogICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPmNvbG9yKCkuaXNW
YWxpZCgpICYmIHFBbHBoYShzdHlsZS0+Y29sb3IoKS5yZ2IoKSkgIT0gMCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6c3R5bGUtPmNvbG9yKCkuZ2V0TlNDb2xvcigp
IGZvcktleTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOworICAgICAgICAgICAgICAg
ICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpuc0NvbG9yKHN0eWxlLT5jb2xvcigpKSBmb3JLZXk6
TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHN0eWxlICYmIHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKS5pc1ZhbGlkKCkgJiYgcUFscGhhKHN0
eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKS5yZ2IoKSkgIT0gMCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFthdHRycyBzZXRPYmplY3Q6c3R5bGUtPmJhY2tncm91bmRDb2xvcigpLmdldE5TQ29sb3Io
KSBmb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6bnNDb2xvcihzdHlsZS0+YmFja2dyb3VuZENvbG9y
KCkpIGZvcktleTpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogCiAgICAgICAgICAg
ICAgICAgICAgIGlmICh0ZXh0Lmxlbmd0aCgpID4gMCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgaGFzUGFyYWdyYXBoQnJlYWsgPSBmYWxzZTsKQEAgLTMwODUsOSArMzA4NSw5IEBAIE5TQXR0
cmlidXRlZFN0cmluZyAqS1dRS0hUTUxQYXJ0OjphdHRyaWIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXR0cnMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OmZvbnQgZm9y
S2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoc3R5bGUgJiYgc3R5bGUtPmNvbG9yKCkuaXNWYWxpZCgpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpzdHlsZS0+Y29sb3IoKS5nZXRO
U0NvbG9yKCkgZm9yS2V5Ok5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0Om5zQ29sb3Ioc3R5
bGUtPmNvbG9yKCkpIGZvcktleTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPmJhY2tncm91
bmRDb2xvcigpLmlzVmFsaWQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFthdHRycyBzZXRPYmplY3Q6c3R5bGUtPmJhY2tncm91bmRDb2xvcigpLmdldE5TQ29sb3IoKSBm
b3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6bnNDb2xvcihzdHlsZS0+YmFja2dy
b3VuZENvbG9yKCkpIGZvcktleTpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQXR0cmlidXRlZFN0
cmluZyAqcGFydGlhbFN0cmluZyA9IFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFN0cmluZzpsaXN0VGV4dC5nZXROU1N0cmluZygpIGF0dHJpYnV0ZXM6YXR0cnNdOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cnMgcmVsZWFzZV07CkBAIC0zNTU3LDIwICsz
NTU3LDIwIEBAIE5TRGljdGlvbmFyeSAqS1dRS0hUTUxQYXJ0Ojpmb250QXR0cmlidXQKICAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICpyZXN1bHQgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9u
YXJ5XTsKIAogICAgIGlmIChzdHlsZS0+YmFja2dyb3VuZENvbG9yKCkuaXNWYWxpZCgpICYmIHN0
eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKS5hbHBoYSgpICE9IDApCi0gICAgICAgIFtyZXN1bHQgc2V0
T2JqZWN0OnN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKS5nZXROU0NvbG9yKCkgZm9yS2V5Ok5TQmFj
a2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CisgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0Om5z
Q29sb3Ioc3R5bGUtPmJhY2tncm91bmRDb2xvcigpKSBmb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JB
dHRyaWJ1dGVOYW1lXTsKIAogICAgIGlmIChzdHlsZS0+Zm9udCgpLmdldE5TRm9udCgpKQogICAg
ICAgICBbcmVzdWx0IHNldE9iamVjdDpzdHlsZS0+Zm9udCgpLmdldE5TRm9udCgpIGZvcktleTpO
U0ZvbnRBdHRyaWJ1dGVOYW1lXTsKIAogICAgIGlmIChzdHlsZS0+Y29sb3IoKS5pc1ZhbGlkKCkg
JiYgc3R5bGUtPmNvbG9yKCkgIT0gYmxhY2spCi0gICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OnN0
eWxlLT5jb2xvcigpLmdldE5TQ29sb3IoKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1
dGVOYW1lXTsKKyAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6bnNDb2xvcihzdHlsZS0+Y29sb3Io
KSkgZm9yS2V5Ok5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CiAKICAgICBTaGFkb3dE
YXRhICpzaGFkb3cgPSBzdHlsZS0+dGV4dFNoYWRvdygpOwogICAgIGlmIChzaGFkb3cpIHsKICAg
ICAgICAgTlNTaGFkb3cgKnMgPSBbW05TU2hhZG93IGFsbG9jXSBpbml0XTsKICAgICAgICAgW3Mg
c2V0U2hhZG93T2Zmc2V0Ok5TTWFrZVNpemUoc2hhZG93LT54LCBzaGFkb3ctPnkpXTsKICAgICAg
ICAgW3Mgc2V0U2hhZG93Qmx1clJhZGl1czpzaGFkb3ctPmJsdXJdOwotICAgICAgICBbcyBzZXRT
aGFkb3dDb2xvcjpzaGFkb3ctPmNvbG9yLmdldE5TQ29sb3IoKV07CisgICAgICAgIFtzIHNldFNo
YWRvd0NvbG9yOm5zQ29sb3Ioc2hhZG93LT5jb2xvcildOwogICAgICAgICBbcmVzdWx0IHNldE9i
amVjdDpzIGZvcktleTpOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdOwogICAgIH0KIApAQCAtMzc4Miw3
ICszNzgyLDcgQEAgTlNDb2xvciAqS1dRS0hUTUxQYXJ0Ojpib2R5QmFja2dyb3VuZENvbAogICAg
IGlmICh4bWxEb2NJbXBsKCkgJiYgeG1sRG9jSW1wbCgpLT5ib2R5KCkgJiYgeG1sRG9jSW1wbCgp
LT5ib2R5KCktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgUUNvbG9yIGJnQ29sb3IgPSB4bWxEb2NJ
bXBsKCktPmJvZHkoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+YmFja2dyb3VuZENvbG9yKCk7CiAg
ICAgICAgIGlmIChiZ0NvbG9yLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgcmV0dXJuIGJnQ29s
b3IuZ2V0TlNDb2xvcigpOworICAgICAgICAgICAgcmV0dXJuIG5zQ29sb3IoYmdDb2xvcik7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG5pbDsKSW5kZXg6IC4va3dxL0tXUUxpbmVFZGl0
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FMaW5lRWRp
dC5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42NwpkaWZmIC1wIC11IC1yMS42NyAuL2t3cS9L
V1FMaW5lRWRpdC5tbQotLS0gLi9rd3EvS1dRTGluZUVkaXQubW0JMjAwNS8wNi8yNCAwNTo1Mzoy
OQkxLjY3CisrKyAuL2t3cS9LV1FMaW5lRWRpdC5tbQkyMDA1LzA3LzA1IDA5OjQ2OjM0CkBAIC0x
MjEsMTIgKzEyMSwxMiBAQCB2b2lkIFFMaW5lRWRpdDo6c2V0UGFsZXR0ZShjb25zdCBRUGFsZXR0
CiAgICAgLy8gYmFja2dyb3VuZHMgb24gc29tZSB0ZXh0IGZpZWxkcyBhcyBkZXNjcmliZWQgaW4g
PHJkYXI6Ly9wcm9ibGVtLzM4NTQzODM+LiAgVGV4dCBmaWVsZHMgd2lsbCBzdGlsbCBub3QgYmUg
YWJsZSB0byBkaXNwbGF5CiAgICAgLy8gdHJhbnNwYXJlbnQgYW5kIHRyYW5zbHVjZW50IGJhY2tn
cm91bmRzLCB3aGljaCB3aWxsIG5lZWQgdG8gYmUgZml4ZWQgaW4gdGhlIGZ1dHVyZS4gIFNlZSAg
PHJkYXI6Ly9wcm9ibGVtLzM4NjUxMTQ+LgogICAgICAgICAKLSAgICBbdGV4dEZpZWxkIHNldFRl
eHRDb2xvcjpwYWxldHRlLmZvcmVncm91bmQoKS5nZXROU0NvbG9yKCldOworICAgIFt0ZXh0Rmll
bGQgc2V0VGV4dENvbG9yOm5zQ29sb3IocGFsZXR0ZS5mb3JlZ3JvdW5kKCkpXTsKIAogICAgIFFD
b2xvciBiYWNrZ3JvdW5kID0gcGFsZXR0ZS5iYWNrZ3JvdW5kKCk7CiAgICAgaWYgKCFiYWNrZ3Jv
dW5kLmlzVmFsaWQoKSB8fCBiYWNrZ3JvdW5kLmFscGhhKCkgPT0gMCkKICAgICAgICAgYmFja2dy
b3VuZCA9IFF0Ojp3aGl0ZTsKLSAgICBbdGV4dEZpZWxkIHNldEJhY2tncm91bmRDb2xvcjpiYWNr
Z3JvdW5kLmdldE5TQ29sb3IoKV07CisgICAgW3RleHRGaWVsZCBzZXRCYWNrZ3JvdW5kQ29sb3I6
bnNDb2xvcihiYWNrZ3JvdW5kKV07CiAKICAgICBLV1FfVU5CTE9DS19FWENFUFRJT05TOwogfQpJ
bmRleDogLi9rd3EvS1dRUGFpbnRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
V2ViQ29yZS9rd3EvS1dRUGFpbnRlci5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMjUKZGlm
ZiAtcCAtdSAtcjEuMTI1IC4va3dxL0tXUVBhaW50ZXIubW0KLS0tIC4va3dxL0tXUVBhaW50ZXIu
bW0JMjAwNS8wNi8zMCAwMToyNzo0NAkxLjEyNQorKysgLi9rd3EvS1dRUGFpbnRlci5tbQkyMDA1
LzA3LzA1IDA5OjQ2OjM0CkBAIC03MCwyNCArNzAsNiBAQCBzdHJ1Y3QgUVBhaW50ZXJQcml2YXRl
IHsKICAgICBRQ29sb3IgZm9jdXNSaW5nQ29sb3I7CiB9OwogCi0KLXN0YXRpYyBDR0NvbG9yUmVm
IENHQ29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICpjb2xvcikKLXsKLSAgICAvLyB0aGlzIG5lZWRz
IHRvIGFsd2F5cyB1c2UgZGV2aWNlIGNvbG9yc3BhY2Ugc28gaXQgY2FuIGRlLWNhbGlicmF0ZSB0
aGUgY29sb3IgZm9yCi0gICAgLy8gQ0dDb2xvciB0byBwb3NzaWJseSByZWNhbGlicmF0ZSBpdAot
ICAgIE5TQ29sb3IqIGRldmljZUNvbG9yID0gW2NvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFt
ZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdOwotICAgIGZsb2F0IHJlZCA9IFtkZXZpY2VDb2xvciBy
ZWRDb21wb25lbnRdOwotICAgIGZsb2F0IGdyZWVuID0gW2RldmljZUNvbG9yIGdyZWVuQ29tcG9u
ZW50XTsKLSAgICBmbG9hdCBibHVlID0gW2RldmljZUNvbG9yIGJsdWVDb21wb25lbnRdOwotICAg
IGZsb2F0IGFscGhhID0gW2RldmljZUNvbG9yIGFscGhhQ29tcG9uZW50XTsKLSAgICBjb25zdCBm
bG9hdCBjb21wb25lbnRzW10gPSB7IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhIH07Ci0gICAgCi0g
ICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBRUGFpbnRlcjo6cmdiQ29sb3JTcGFjZSgp
OwotICAgIENHQ29sb3JSZWYgY2dDb2xvciA9IENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZSwgY29t
cG9uZW50cyk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKLSAgICByZXR1
cm4gY2dDb2xvcjsKLX0KLQogUVBhaW50ZXI6OlFQYWludGVyKCkgOiBkYXRhKG5ldyBRUGFpbnRl
clByaXZhdGUpLCBfaXNGb3JQcmludGluZyhmYWxzZSksIF91c2VzSW5hY3RpdmVUZXh0QmFja2dy
b3VuZENvbG9yKGZhbHNlKSwgX2RyYXdzRm9jdXNSaW5nKHRydWUpCiB7CiB9CkBAIC0yMTIsMTIg
KzE5NCwxMiBAQCB2b2lkIFFQYWludGVyOjpkcmF3UmVjdChpbnQgeCwgaW50IHksIGluCiAKIHZv
aWQgUVBhaW50ZXI6Ol9zZXRDb2xvckZyb21CcnVzaCgpCiB7Ci0gICAgW2RhdGEtPnN0YXRlLmJy
dXNoLmNvbG9yKCkuZ2V0TlNDb2xvcigpIHNldF07CisgICAgW25zQ29sb3IoZGF0YS0+c3RhdGUu
YnJ1c2guY29sb3IoKSkgc2V0XTsKIH0KIAogdm9pZCBRUGFpbnRlcjo6X3NldENvbG9yRnJvbVBl
bigpCiB7Ci0gICAgW2RhdGEtPnN0YXRlLnBlbi5jb2xvcigpLmdldE5TQ29sb3IoKSBzZXRdOwor
ICAgIFtuc0NvbG9yKGRhdGEtPnN0YXRlLnBlbi5jb2xvcigpKSBzZXRdOwogfQogCiAvLyBUaGlz
IGlzIG9ubHkgdXNlZCB0byBkcmF3IGJvcmRlcnMuCkBAIC02MTUsNyArNTk3LDcgQEAgdm9pZCBR
UGFpbnRlcjo6ZHJhd1RleHQoaW50IHgsIGludCB5LCBpbgogICAgIAogICAgIFdlYkNvcmVUZXh0
U3R5bGUgc3R5bGU7CiAgICAgV2ViQ29yZUluaXRpYWxpemVFbXB0eVRleHRTdHlsZSgmc3R5bGUp
OwotICAgIHN0eWxlLnRleHRDb2xvciA9IGRhdGEtPnN0YXRlLnBlbi5jb2xvcigpLmdldE5TQ29s
b3IoKTsKKyAgICBzdHlsZS50ZXh0Q29sb3IgPSBuc0NvbG9yKGRhdGEtPnN0YXRlLnBlbi5jb2xv
cigpKTsKICAgICBzdHlsZS5mYW1pbGllcyA9IGZhbWlsaWVzOwogICAgIHN0eWxlLnRhYldpZHRo
ID0gdGFiV2lkdGg7CiAgICAgc3R5bGUueHBvcyA9IHhwb3M7CkBAIC02NDksOCArNjMxLDggQEAg
dm9pZCBRUGFpbnRlcjo6ZHJhd1RleHQoaW50IHgsIGludCB5LCBpbgogICAgIFdlYkNvcmVJbml0
aWFsaXplVGV4dFJ1bigmcnVuLCAoY29uc3QgVW5pQ2hhciAqKXN0ciwgbGVuLCBmcm9tLCB0byk7
ICAgIAogICAgIFdlYkNvcmVUZXh0U3R5bGUgc3R5bGU7CiAgICAgV2ViQ29yZUluaXRpYWxpemVF
bXB0eVRleHRTdHlsZSgmc3R5bGUpOwotICAgIHN0eWxlLnRleHRDb2xvciA9IGRhdGEtPnN0YXRl
LnBlbi5jb2xvcigpLmdldE5TQ29sb3IoKTsKLSAgICBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBi
YWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpID8gYmFja2dyb3VuZENvbG9yLmdldE5TQ29sb3IoKSA6
IG5pbDsKKyAgICBzdHlsZS50ZXh0Q29sb3IgPSBuc0NvbG9yKGRhdGEtPnN0YXRlLnBlbi5jb2xv
cigpKTsKKyAgICBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IuaXNWYWxp
ZCgpID8gbnNDb2xvcihiYWNrZ3JvdW5kQ29sb3IpIDogbmlsOwogICAgIHN0eWxlLnJ0bCA9IGQg
PT0gUlRMID8gdHJ1ZSA6IGZhbHNlOwogICAgIHN0eWxlLnZpc3VhbGx5T3JkZXJlZCA9IHZpc3Vh
bGx5T3JkZXJlZDsKICAgICBzdHlsZS5sZXR0ZXJTcGFjaW5nID0gbGV0dGVyU3BhY2luZzsKQEAg
LTY4OCw4ICs2NzAsOCBAQCB2b2lkIFFQYWludGVyOjpkcmF3SGlnaGxpZ2h0Rm9yVGV4dChpbnQg
CiAgICAgV2ViQ29yZUluaXRpYWxpemVUZXh0UnVuKCZydW4sIChjb25zdCBVbmlDaGFyICopc3Ry
LCBsZW4sIGZyb20sIHRvKTsgICAgCiAgICAgV2ViQ29yZVRleHRTdHlsZSBzdHlsZTsKICAgICBX
ZWJDb3JlSW5pdGlhbGl6ZUVtcHR5VGV4dFN0eWxlKCZzdHlsZSk7Ci0gICAgc3R5bGUudGV4dENv
bG9yID0gZGF0YS0+c3RhdGUucGVuLmNvbG9yKCkuZ2V0TlNDb2xvcigpOwotICAgIHN0eWxlLmJh
Y2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgPyBiYWNrZ3JvdW5kQ29s
b3IuZ2V0TlNDb2xvcigpIDogbmlsOworICAgIHN0eWxlLnRleHRDb2xvciA9IG5zQ29sb3IoZGF0
YS0+c3RhdGUucGVuLmNvbG9yKCkpOworICAgIHN0eWxlLmJhY2tncm91bmRDb2xvciA9IGJhY2tn
cm91bmRDb2xvci5pc1ZhbGlkKCkgPyBuc0NvbG9yKGJhY2tncm91bmRDb2xvcikgOiBuaWw7CiAg
ICAgc3R5bGUucnRsID0gZCA9PSBSVEwgPyB0cnVlIDogZmFsc2U7CiAgICAgc3R5bGUudmlzdWFs
bHlPcmRlcmVkID0gdmlzdWFsbHlPcmRlcmVkOwogICAgIHN0eWxlLmxldHRlclNwYWNpbmcgPSBs
ZXR0ZXJTcGFjaW5nOwpAQCAtNzE3LDcgKzY5OSw3IEBAIHZvaWQgUVBhaW50ZXI6OmRyYXdMaW5l
Rm9yVGV4dChpbnQgeCwgaW4KICAgICAgICAgZHJhd0xpbmVGb3JDaGFyYWN0ZXJzOiBOU01ha2VQ
b2ludCh4LCB5KQogICAgICAgICAgICAgICAgeU9mZnNldDooZmxvYXQpeU9mZnNldAogICAgICAg
ICAgICAgICAgICB3aWR0aDogd2lkdGgKLSAgICAgICAgICAgICAgICAgY29sb3I6ZGF0YS0+c3Rh
dGUucGVuLmNvbG9yKCkuZ2V0TlNDb2xvcigpCisgICAgICAgICAgICAgICAgIGNvbG9yOm5zQ29s
b3IoZGF0YS0+c3RhdGUucGVuLmNvbG9yKCkpCiAgICAgICAgICAgICAgdGhpY2tuZXNzOmRhdGEt
PnN0YXRlLnBlbi53aWR0aCgpXTsKIH0KIApAQCAtNzY2LDcgKzc0OCw3IEBAIFFDb2xvciBRUGFp
bnRlcjo6c2VsZWN0ZWRUZXh0QmFja2dyb3VuZEMKIC8vIEEgZmlsbFJlY3QgZGVzaWduZWQgdG8g
d29yayBhcm91bmQgYnVnZ3kgYmVoYXZpb3IgaW4gTlNSZWN0RmlsbC4KIHZvaWQgUVBhaW50ZXI6
Ol9maWxsUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3LCBmbG9hdCBoLCBjb25zdCBRQ29s
b3ImIGNvbCkKIHsKLSAgICBbY29sLmdldE5TQ29sb3IoKSBzZXRdOworICAgIFtuc0NvbG9yKGNv
bCkgc2V0XTsKICAgICBOU1JlY3RGaWxsVXNpbmdPcGVyYXRpb24oTlNNYWtlUmVjdCh4LHksdyxo
KSwgTlNDb21wb3NpdGVTb3VyY2VPdmVyKTsKIH0KIApAQCAtODM2LDEyICs4MTgsMTIgQEAgdm9p
ZCBRUGFpbnRlcjo6c2V0U2hhZG93KGludCB4LCBpbnQgeSwgaQogICAgIGlmICghY29sb3IuaXNW
YWxpZCgpKSB7CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvdyhjb250ZXh0LCBDR1NpemVNYWtl
KHgsLXkpLCBibHVyKTsgLy8geSBpcyBmbGlwcGVkLgogICAgIH0gZWxzZSB7Ci0JQ0dDb2xvclJl
ZiBjZ0NvbG9yID0gQ0dDb2xvckZyb21OU0NvbG9yKGNvbG9yLmdldE5TQ29sb3IoKSk7CisJQ0dD
b2xvclJlZiBjb2xvckNHID0gY2dDb2xvcihjb2xvcik7CiAgICAgICAgIENHQ29udGV4dFNldFNo
YWRvd1dpdGhDb2xvcihjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0dTaXplTWFrZSh4LC15KSwgLy8geSBpcyBmbGlwcGVkLgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmx1ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjZ0NvbG9yKTsKLSAgICAgICAgQ0dDb2xvclJlbGVhc2UoY2dDb2xvcik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvckNHKTsKKyAgICAgICAgQ0dDb2xvclJl
bGVhc2UoY29sb3JDRyk7CiAgICAgfQogfQogCkBAIC05MDMsNyArODg1LDcgQEAgdm9pZCBRUGFp
bnRlcjo6ZHJhd0ZvY3VzUmluZygpCiAgICAgTlNSZWN0IGJvdW5kcyA9IFtkYXRhLT5mb2N1c1Jp
bmdQYXRoIGJvdW5kc107CiAgICAgaWYgKCFOU0lzRW1wdHlSZWN0KGJvdW5kcykpIHsKICAgICAg
ICAgaW50IHJhZGl1cyA9IChkYXRhLT5mb2N1c1JpbmdXaWR0aC0xKS8yOwotICAgICAgICBOU0Nv
bG9yICpjb2xvciA9IGRhdGEtPmhhc0ZvY3VzUmluZ0NvbG9yID8gZGF0YS0+Zm9jdXNSaW5nQ29s
b3IuZ2V0TlNDb2xvcigpIDogbmlsOworICAgICAgICBOU0NvbG9yICpjb2xvciA9IGRhdGEtPmhh
c0ZvY3VzUmluZ0NvbG9yID8gbnNDb2xvcihkYXRhLT5mb2N1c1JpbmdDb2xvcikgOiBuaWw7CiAg
ICAgICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07CiAgICAgICAgIFtb
V2ViQ29yZUdyYXBoaWNzQnJpZGdlIHNoYXJlZEJyaWRnZV0gc2V0Rm9jdXNSaW5nU3R5bGU6TlNG
b2N1c1JpbmdPbmx5IHJhZGl1czpyYWRpdXMgY29sb3I6Y29sb3JdOwogICAgICAgICBbZGF0YS0+
Zm9jdXNSaW5nUGF0aCBmaWxsXTsKSW5kZXg6IC4va3dxL0tXUVRleHRFZGl0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FUZXh0RWRpdC5tbSx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS40NgpkaWZmIC1wIC11IC1yMS40NiAuL2t3cS9LV1FUZXh0RWRpdC5t
bQotLS0gLi9rd3EvS1dRVGV4dEVkaXQubW0JMjAwNS8wNi8yNCAwNTo1MzoyOQkxLjQ2CisrKyAu
L2t3cS9LV1FUZXh0RWRpdC5tbQkyMDA1LzA3LzA1IDA5OjQ2OjM2CkBAIC0zOTYsMTIgKzM5Niwx
MiBAQCB2b2lkIFFUZXh0RWRpdDo6c2V0UGFsZXR0ZShjb25zdCBRUGFsZXR0CiAgICAgLy8gYXMg
ZGVzY3JpYmVkIGluIDxyZGFyOi8vcHJvYmxlbS8zODU0MzgzPi4gIFdlIG5vdyBjYWxsIHNldERy
YXdzQmFja2dyb3VuZDpOTyB3aGVuIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGlzIGNvbXBsZXRlbHkg
CiAgICAgLy8gdHJhbnNwYXJlbnQuICBUaGlzIGRvZXMgbm90IHNvbHZlIHRoZSBwcm9ibGVtIGZv
ciB0cmFuc2x1Y2VudCBiYWNrZ3JvdW5kIGNvbG9ycyBmb3IgdGV4dGFyZWFzIDxyZGFyOi8vcHJv
YmxlbS8zODY1MTYxPi4KIAotICAgIFt0ZXh0QXJlYSBzZXRUZXh0Q29sb3I6cGFsZXR0ZS5mb3Jl
Z3JvdW5kKCkuZ2V0TlNDb2xvcigpXTsKKyAgICBbdGV4dEFyZWEgc2V0VGV4dENvbG9yOm5zQ29s
b3IocGFsZXR0ZS5mb3JlZ3JvdW5kKCkpXTsKIAogICAgIFFDb2xvciBiYWNrZ3JvdW5kID0gcGFs
ZXR0ZS5iYWNrZ3JvdW5kKCk7CiAgICAgaWYgKCFiYWNrZ3JvdW5kLmlzVmFsaWQoKSkKICAgICAg
ICAgYmFja2dyb3VuZCA9IFF0Ojp3aGl0ZTsKLSAgICBbdGV4dEFyZWEgc2V0QmFja2dyb3VuZENv
bG9yOmJhY2tncm91bmQuZ2V0TlNDb2xvcigpXTsKKyAgICBbdGV4dEFyZWEgc2V0QmFja2dyb3Vu
ZENvbG9yOm5zQ29sb3IoYmFja2dyb3VuZCldOwogICAgIFt0ZXh0QXJlYSBzZXREcmF3c0JhY2tn
cm91bmQ6YmFja2dyb3VuZC5hbHBoYSgpICE9IDBdOwogCiAgICAgS1dRX1VOQkxPQ0tfRVhDRVBU
SU9OUzsKSW5kZXg6IC4va3dxL1dlYkNvcmVCcmlkZ2UubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1dlYkNvcmUva3dxL1dlYkNvcmVCcmlkZ2UubW0sdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMzk2CmRpZmYgLXAgLXUgLXIxLjM5NiAuL2t3cS9XZWJDb3JlQnJpZGdlLm1tCi0tLSAu
L2t3cS9XZWJDb3JlQnJpZGdlLm1tCTIwMDUvMDYvMTQgMDA6MjM6NDUJMS4zOTYKKysrIC4va3dx
L1dlYkNvcmVCcmlkZ2UubW0JMjAwNS8wNy8wNSAwOTo0NjozNwpAQCAtMTQ0MCw3ICsxNDQwLDcg
QEAgc3RhdGljIEhUTUxGb3JtRWxlbWVudEltcGwgKmZvcm1FbGVtZW50RgogICAgIGlmIChyb290
KSB7CiAgICAgICAgIFJlbmRlclN0eWxlICpwc2V1ZG9TdHlsZSA9IHJvb3QtPmdldFBzZXVkb1N0
eWxlKFJlbmRlclN0eWxlOjpTRUxFQ1RJT04pOwogICAgICAgICBpZiAocHNldWRvU3R5bGUgJiYg
cHNldWRvU3R5bGUtPmJhY2tncm91bmRDb2xvcigpLmlzVmFsaWQoKSkgewotICAgICAgICAgICAg
cmV0dXJuIHBzZXVkb1N0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKS5nZXROU0NvbG9yKCk7CisgICAg
ICAgICAgICByZXR1cm4gbnNDb2xvcihwc2V1ZG9TdHlsZS0+YmFja2dyb3VuZENvbG9yKCkpOwog
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBfcGFydC0+ZGlzcGxheXNXaXRoRm9jdXNBdHRy
aWJ1dGVzKCkgPyBbTlNDb2xvciBzZWxlY3RlZFRleHRCYWNrZ3JvdW5kQ29sb3JdIDogW05TQ29s
b3Igc2Vjb25kYXJ5U2VsZWN0ZWRDb250cm9sQ29sb3JdOwo=
</data>
<flag name="review"
          id="172"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>