<?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>34507</bug_id>
          
          <creation_ts>2010-02-02 18:01:25 -0800</creation_ts>
          <short_desc>[Qt] Minor improvement to hybrid QPixmap</short_desc>
          <delta_ts>2010-02-18 13:51:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</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>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kenneth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>187221</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-02-02 18:01:25 -0800</bug_when>
    <thetext>The original patch for hybrid transport of pixmaps between Qt and webkit allows for creating new HTML img elements, but in most cases the HTML image element would already be there. This patch allows adding the QPixmap into an already existing img element without the overhead of toDataUrl, by allowing an optional single parameter to toHTMLImageElement() - an existing img element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187222</commentid>
    <comment_count>1</comment_count>
      <attachid>47984</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-02-02 18:08:58 -0800</bug_when>
    <thetext>Created attachment 47984
minor adjustment to hybrid pixmap: allow sending an existing img element as an argument

Note: this is coming from a real world use-case where we have a native SDK that exposes images, and we want to use HTML to display them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188714</commentid>
    <comment_count>2</comment_count>
      <attachid>47984</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-08 12:11:06 -0800</bug_when>
    <thetext>Comment on attachment 47984
minor adjustment to hybrid pixmap: allow sending an existing img element as an argument

e.g. myQObject.myPixmapProperty.toHTMLImageElement(myHtmlImg);

I don&apos;t like this API very much. It is like the to* operated on the myPixmapProperty, but still it takes an image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188731</commentid>
    <comment_count>3</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-02-08 12:45:22 -0800</bug_when>
    <thetext>I see your point. Would something like myQObject.myPixmapProperty.attachToHTMLImageElement(myHtmlImg) be better? Any name is fine with me as long as I can get the functionality in!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189925</commentid>
    <comment_count>4</comment_count>
      <attachid>48620</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-02-11 21:27:17 -0800</bug_when>
    <thetext>Created attachment 48620
enable applying a QPixmap from a native QObject to an HTML img element

Based on comments from Kenneth, renamed toHTMLImageElement to two functions: 
createHTMLImageElement and applyToHTMLImageElement (which takes an existing img element as an argument).
Also added some in-code comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190108</commentid>
    <comment_count>5</comment_count>
      <attachid>48653</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-02-12 11:37:12 -0800</bug_when>
    <thetext>Created attachment 48653
The native QPixmap/QImage can now assign its value to an existing image element

Replaced toHTMLImageElement() which creates an element, with assignToHTMLImageElement(element), which takes an existing element as an arg.
Also fixed the style to conform to the webkit style guide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190113</commentid>
    <comment_count>6</comment_count>
      <attachid>48653</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-12 11:48:08 -0800</bug_when>
    <thetext>Comment on attachment 48653
The native QPixmap/QImage can now assign its value to an existing image element

Looks fine, but there is at least a minor style issue you could fix before committing.

&gt; +        if (hint == qMetaTypeId&lt;QPixmap &gt;())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190130</commentid>
    <comment_count>7</comment_count>
      <attachid>48659</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-02-12 13:36:50 -0800</bug_when>
    <thetext>Created attachment 48659
enable applying a QPixmap from a native QObject to an HTML img element + minor style fixes

ok - fixed those stray spaces, should be good to go :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190216</commentid>
    <comment_count>8</comment_count>
      <attachid>48681</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-02-12 17:09:47 -0800</bug_when>
    <thetext>Created attachment 48681
The native QPixmap/QImage can now assign its value to an existing image element

Even better style!
Hope this is sufficient
N</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191203</commentid>
    <comment_count>9</comment_count>
      <attachid>48653</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-17 14:22:46 -0800</bug_when>
    <thetext>Comment on attachment 48653
The native QPixmap/QImage can now assign its value to an existing image element

Cleared Kenneth Rohde Christiansen&apos;s review+ from obsolete attachment 48653 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191721</commentid>
    <comment_count>10</comment_count>
      <attachid>48681</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-18 13:51:04 -0800</bug_when>
    <thetext>Comment on attachment 48681
The native QPixmap/QImage can now assign its value to an existing image element

Clearing flags on attachment: 48681

Committed r54986: &lt;http://trac.webkit.org/changeset/54986&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191722</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-18 13:51:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47984</attachid>
            <date>2010-02-02 18:08:58 -0800</date>
            <delta_ts>2010-02-11 21:27:17 -0800</delta_ts>
            <desc>minor adjustment to hybrid pixmap: allow sending an existing img element as an argument</desc>
            <filename>patch-34507-1.diff</filename>
            <type>text/plain</type>
            <size>7278</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDI2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDItMDIgIE5vYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRo
YWxAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF0gTWlub3IgaW1wcm92ZW1lbnQgdG8gaHlicmlkIFFQaXhtYXAKKyAgICAgICAg
Tm93IGEgc2luZ2xlIGFyZ3VtZW50IHRvIHBpeG1hcC50b0hUTUxJbWFnZUVsZW1lbnQoKSBpcyBh
bGxvd2VkLAorICAgICAgICBlbmFibGluZyBhdHRhY2hpbmcgYSBRUGl4bWFwIHRvIGFuIGV4aXN0
aW5nIGltZyBlbGVtZW50IAorICAgICAgICBlLmcuIG15UU9iamVjdC5teVBpeG1hcFByb3BlcnR5
LnRvSFRNTEltYWdlRWxlbWVudChteUh0bWxJbWcpOworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ1MDcKKworICAgICAgICBUZXN0IGF0IFdlYktpdC9x
dC90ZXN0cy9oeWJyaWRQaXhtYXAgY292ZXJzIHRoaXMgY2hhbmdlCisKKyAgICAgICAgKiBicmlk
Z2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBp
eG1hcENyZWF0ZUVsZW1lbnRNZXRob2Q6Omludm9rZSk6IGFsbG93IGFuIGFyZworICAgICAgICAo
SlNDOjpCaW5kaW5nczo6UXRQaXhtYXBDcmVhdGVFbGVtZW50TWV0aG9kOjpudW1QYXJhbWV0ZXJz
KTogMSBhcmcKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwVG9EYXRhVXJsTWV0aG9k
OjppbnZva2UpOiB1bnVzZWQgYXJnCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcFRv
U3RyaW5nTWV0aG9kOjppbnZva2UpOiB1bnVzZWQgYXJnCisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpRdFBpeG1hcEluc3RhbmNlOjppbnZva2VNZXRob2QpOiBpbXBsZW1lbnQgdGhlCisgICAgICAg
IHVzZS1jYXNlIHdoZXJlIHRoZSBmaXJzdCBhcmcgaXMgYW4gZXhpc3RpbmcgSFRNTCBpbWcgZWxl
bWVudAorCiAyMDEwLTAyLTAyICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBXZWJDb3Jl
L2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jy
aWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkocmV2aXNpb24gNTQyNTApCisrKyBXZWJDb3Jl
L2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTQg
Kzc2LDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICB2
aXJ0dWFsIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0ZSogZXhlYywgUVZhcmlhbnQmLCBQYXNzUmVm
UHRyPFJvb3RPYmplY3Q+IHJvb3QsIFF0UGl4bWFwSW5zdGFuY2UqIGluc3QpID0gMDsKKyAgICB2
aXJ0dWFsIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0ZSogZXhlYywgUVZhcmlhbnQmLCBQYXNzUmVm
UHRyPFJvb3RPYmplY3Q+IHJvb3QsIFF0UGl4bWFwSW5zdGFuY2UqIGluc3QsIGNvbnN0IEFyZ0xp
c3QmKSA9IDA7CiAKIH07CiAKIGNsYXNzIFF0UGl4bWFwQ3JlYXRlRWxlbWVudE1ldGhvZCA6IHB1
YmxpYyBRdFBpeG1hcFJ1bnRpbWVNZXRob2QgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBuYW1lKCkgeyByZXR1cm4gInRvSFRNTEltYWdlRWxlbWVudCI7IH0KLSAgICBKU1ZhbHVl
IGludm9rZShFeGVjU3RhdGUqIGV4ZWMsIFFWYXJpYW50JiB2LCBQYXNzUmVmUHRyPFJvb3RPYmpl
Y3Q+IHJvb3QsIFF0UGl4bWFwSW5zdGFuY2UqKQorICAgIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0
ZSogZXhlYywgUVZhcmlhbnQmIHYsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgUXRQaXht
YXBJbnN0YW5jZSosIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiAgICAgewogICAgICAgICBRUGl4bWFw
IHB4bTsKICAgICAgICAgaWYgKHYudHlwZSgpID09IHN0YXRpY19jYXN0PFFWYXJpYW50OjpUeXBl
PihxTWV0YVR5cGVJZDxRSW1hZ2U+KCkpKSB7CkBAIC05Miw2ICs5MiwxOCBAQCBwdWJsaWM6CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcHhtID0gdi52YWx1ZTxRUGl4bWFwPigpOwogCisg
ICAgICAgIGlmIChhcmdzLnNpemUoKSkgeworICAgICAgICAgICAgSlNWYWx1ZSBmaXJzdEFyZyA9
IGFyZ3MuYXQoMCk7CisgICAgICAgICAgICBpZiAoZmlyc3RBcmcuaXNPYmplY3QoKSkgeworICAg
ICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBmaXJzdEFyZy50b09iamVjdChleGVjKTsK
KyAgICAgICAgICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0cygmSlNIVE1MSW1hZ2VFbGVtZW50
OjpzX2luZm8pKSB7CisgICAgICAgICAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MSW1h
Z2VFbGVtZW50Kj4ob2JqZWN0KS0+aW1wbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVu
dC0+c2V0Q2FjaGVkSW1hZ2UobmV3IENhY2hlZEltYWdlKFdlYkNvcmU6OlN0aWxsSW1hZ2U6OmNy
ZWF0ZShweG0pLmdldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdEFyZzsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSAwOwogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihyb290LT5nbG9iYWxPYmplY3QoKSk7
CiAgICAgICAgIGlmIChnbG9iYWwpIHsKQEAgLTEwOSwxMyArMTIxLDE2IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9Ci0KKyAgICB2aXJ0
dWFsIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAxOwor
ICAgIH0KIH07CiAKIGNsYXNzIFF0UGl4bWFwVG9EYXRhVXJsTWV0aG9kIDogcHVibGljIFF0UGl4
bWFwUnVudGltZU1ldGhvZCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUo
KSB7IHJldHVybiAidG9EYXRhVXJsIjsgfQotICAgIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0ZSog
ZXhlYywgUVZhcmlhbnQmIHYsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgUXRQaXhtYXBJ
bnN0YW5jZSopCisgICAgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBleGVjLCBRVmFyaWFudCYg
diwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290LCBRdFBpeG1hcEluc3RhbmNlKiwgY29uc3Qg
QXJnTGlzdCYpCiAgICAgewogICAgICAgICBRSW1hZ2UgaW1hZ2U7CiAgICAgICAgIC8vIGZvciBn
ZXR0aW5nIHRoZSBkYXRhIHVybCwgd2UgYWx3YXlzIHByZWZlciB0aGUgaW1hZ2UuCkBAIC0xMzcs
NyArMTUyLDcgQEAgcHVibGljOgogY2xhc3MgUXRQaXhtYXBUb1N0cmluZ01ldGhvZCA6IHB1Ymxp
YyBRdFBpeG1hcFJ1bnRpbWVNZXRob2QgewogICAgIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogbmFtZSgpIHsgcmV0dXJuICJ0b1N0cmluZyI7IH0KLSAgICBKU1ZhbHVlIGludm9rZShF
eGVjU3RhdGUqIGV4ZWMsIFFWYXJpYW50JiB2LCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3Qs
IFF0UGl4bWFwSW5zdGFuY2UqIGluc3QpCisgICAgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBl
eGVjLCBRVmFyaWFudCYgdiwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290LCBRdFBpeG1hcElu
c3RhbmNlKiBpbnN0LCBjb25zdCBBcmdMaXN0JikKICAgICB7CiAgICAgICAgIHJldHVybiBpbnN0
LT52YWx1ZU9mKGV4ZWMpOwogICAgIH0KQEAgLTE5NCw3ICsyMDksNyBAQCBKU1ZhbHVlIFF0UGl4
bWFwSW5zdGFuY2U6Omludm9rZU1ldGhvZChFCiB7CiAgICAgaWYgKG1ldGhvZHMuc2l6ZSgpID09
IDEpIHsKICAgICAgICAgUXRQaXhtYXBSdW50aW1lTWV0aG9kKiBtdGQgPSBzdGF0aWNfY2FzdDxR
dFBpeG1hcFJ1bnRpbWVNZXRob2QqPihtZXRob2RzWzBdKTsgICAgICAgIAotICAgICAgICByZXR1
cm4gbXRkLT5pbnZva2UoZXhlYywgZGF0YSwgcm9vdE9iamVjdCgpLCB0aGlzKTsKKyAgICAgICAg
cmV0dXJuIG10ZC0+aW52b2tlKGV4ZWMsIGRhdGEsIHJvb3RPYmplY3QoKSwgdGhpcywgYXJncyk7
CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpJbmRleDogV2ViS2l0L3F0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDI2
NykKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMC0wMi0wMiAgTm9hbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBN
aW5vciBpbXByb3ZlbWVudCB0byBoeWJyaWQgUVBpeG1hcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ1MDcKKworICAgICAgICAqIHRlc3RzL2h5YnJp
ZFBpeG1hcC90ZXN0Lmh0bWw6IFRlc3QgdGhlIGNhc2Ugd2hlcmUgdGhlIFFQaXhtYXAgaXMKKyAg
ICAgICAgaW5zZXJ0ZWQgdG8gYW4gZXhpc3RpbmcgSFRNTCBpbWFnZSBlbGVtZW50CisKIDIwMTAt
MDItMDIgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCkluZGV4OiBXZWJLaXQvcXQvdGVz
dHMvaHlicmlkUGl4bWFwL3Rlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvdGVzdHMv
aHlicmlkUGl4bWFwL3Rlc3QuaHRtbAkocmV2aXNpb24gNTQyNTApCisrKyBXZWJLaXQvcXQvdGVz
dHMvaHlicmlkUGl4bWFwL3Rlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsMTEg
QEAKICAgICAgICAgICAgICAgICB2YXIgcHhtID0gbXlXaWRnZXQucGl4bWFwOwogCiAgICAgICAg
ICAgICAgICAgdmFyIGltZyA9IG9iai50b0hUTUxJbWFnZUVsZW1lbnQoKTsKKwogICAgICAgICAg
ICAgICAgIHZhciBpbWcxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZzEiKTsKICAgICAg
ICAgICAgICAgICB2YXIgaW1nMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWcyIik7Cisg
ICAgICAgICAgICAgICAgdmFyIGltZzMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nMyIp
OworICAgICAgICAgICAgICAgIHZhciBpbWc0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlt
ZzQiKTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7CiAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChweG0udG9IVE1MSW1hZ2VF
bGVtZW50KCkpOwogICAgICAgICAgICAgICAgIHZhciBzaWduYWxzRmlyZWQgPSAwOwpAQCAtMzIs
MTkgKzM1LDI1IEBACiAgICAgICAgICAgICAgICAgICAgIGlmICgrK3NpZ25hbHNGaXJlZCA9PSAy
KQogICAgICAgICAgICAgICAgICAgICAgICAgbXlXaWRnZXQuY29tcGxldGVUZXN0KCk7CiAgICAg
ICAgICAgICAgICAgfSk7Ci0KICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjb250aW51ZVRlc3RB
ZnRlckltYWdlc0FyZUxvYWRlZCgpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoaW1nMS5jb21wbGV0ZSAmJiBpbWcyLmNvbXBsZXRlKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChpbWcxLmNvbXBsZXRlICYmIGltZzIuY29tcGxldGUgJiYgaW1nMy5jb21wbGV0
ZSAmJiBpbWc0LmNvbXBsZXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBteVdpZGdldC5j
b21wYXJlKHB4bS5oZWlnaHQsIGltZzIuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG15V2lkZ2V0LmNvbXBhcmUobXlXaWRnZXQucGl4bWFwLndpZHRoLCBpbWczLndpZHRoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG15V2lkZ2V0LmNvbXBhcmUob2JqLndpZHRoLCBpbWc0Lndp
ZHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG15V2lkZ2V0LnBpeG1hcFNsb3QoaW1nKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIG15V2lkZ2V0LmltYWdlU2xvdChweG0pOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaW1n
MS5vbmxvYWQgPSBjb250aW51ZVRlc3RBZnRlckltYWdlc0FyZUxvYWRlZDsKICAgICAgICAgICAg
ICAgICBpbWcyLm9ubG9hZCA9IGNvbnRpbnVlVGVzdEFmdGVySW1hZ2VzQXJlTG9hZGVkOworICAg
ICAgICAgICAgICAgIGltZzMub25sb2FkID0gY29udGludWVUZXN0QWZ0ZXJJbWFnZXNBcmVMb2Fk
ZWQ7CisgICAgICAgICAgICAgICAgaW1nNC5vbmxvYWQgPSBjb250aW51ZVRlc3RBZnRlckltYWdl
c0FyZUxvYWRlZDsKICAgICAgICAgICAgICAgICBpbWcxLnNyYyA9IG9iai50b0RhdGFVcmwoKTsK
ICAgICAgICAgICAgICAgICBpbWcyLnNyYyA9IG15V2lkZ2V0LnBpeG1hcC50b0RhdGFVcmwoKTsK
KyAgICAgICAgICAgICAgICBteVdpZGdldC5waXhtYXAudG9IVE1MSW1hZ2VFbGVtZW50KGltZzMp
OworICAgICAgICAgICAgICAgIG9iai50b0hUTUxJbWFnZUVsZW1lbnQoaW1nNCk7CiAgICAgICAg
ICAgICAgICAgbXlXaWRnZXQuaW1hZ2UgPSBweG07CiAgICAgICAgICAgICAgICAgbXlXaWRnZXQu
cGl4bWFwID0gaW1nOwogICAgICAgICAgICAgfQpAQCAtNTMsNSArNjIsNyBAQAogICAgIDxib2R5
IG9ubG9hZD0ic3RhcnRUZXN0KCkiPgogICAgICAgICA8aW1nIGlkPSJpbWcxIiAvPgogICAgICAg
ICA8aW1nIGlkPSJpbWcyIiAvPgorICAgICAgICA8aW1nIGlkPSJpbWczIiAvPgorICAgICAgICA8
aW1nIGlkPSJpbWc0IiAvPgogICAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48620</attachid>
            <date>2010-02-11 21:27:17 -0800</date>
            <delta_ts>2010-02-12 11:37:12 -0800</delta_ts>
            <desc>enable applying a QPixmap from a native QObject to an HTML img element</desc>
            <filename>patch-34507-2.diff</filename>
            <type>text/plain</type>
            <size>9372</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDcwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDItMTEgIE5vYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRo
YWxAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF0gTWlub3IgaW1wcm92ZW1lbnQgdG8gaHlicmlkIFFQaXhtYXAsIGFsbG93aW5n
CisgICAgICAgIHVzaW5nIHRoZSBwaXhtYXAgd2l0aCBhbiBleGlzdGluZyBpbWFnZSBlbGVtZW50
LiBUaGlzIGlzIGRvbmUKKyAgICAgICAgYnkgY2FsbGluZyBteVFPYmplY3QucGl4bWFwUHJvcGVy
dHkuYXBwbHlUb0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIGZyb20gamF2YXNj
cmlwdC4KKyAgICAgICAgVGhlIGV4aXN0aW5nIGZ1bmN0aW9uLCB0b0hUTUxJbWFnZUVsZW1lbnQs
IHdhcyByZW5hbWVkIHRvCisgICAgICAgIGNyZWF0ZUhUTUxJbWFnZUVsZW1lbnQsIHRvIGRpc3Nv
bHZlIGFtYmlndWl0aWVzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNDUwNworCisgICAgICAgIEFkZGl0aW9ucyB0byBleGlzdGluZyBoeWJyaWRQ
aXhhcCB0ZXN0cyAoc2VlIFdlYktpdC9xdC9DaGFuZ2VMb2cpCisKKyAgICAgICAgKiBicmlkZ2Uv
cXQvcXRfcGl4bWFwcnVudGltZS5jcHA6IE5ldyBtZXRob2Q6IGFwcGx5VG9IVE1MSW1hZ2VFbGVt
ZW50CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcENyZWF0ZUVsZW1lbnRNZXRob2Q6
Om5hbWUpOiByZW5hbWU6CisgICAgICAgIGNyZWF0ZUhUTUxJbWFnZUVsZW1lbnQKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwQ3JlYXRlRWxlbWVudE1ldGhvZDo6aW52b2tlKTogYXJn
cworICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBBcHBseVRvRWxlbWVudE1ldGhvZDo6
bmFtZSk6CisgICAgICAgIGFwcGx5VG9IVE1MSW1hZ2VFbGVtZW50CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpRdFBpeG1hcEFwcGx5VG9FbGVtZW50TWV0aG9kOjppbnZva2UpOiBuZXcgZnVuY3Rp
b24KKyAgICAgICAgaGVyZQorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBBcHBseVRv
RWxlbWVudE1ldGhvZDo6bnVtUGFyYW1ldGVycyk6IDEgYXJnCisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpRdFBpeG1hcFRvRGF0YVVybE1ldGhvZDo6aW52b2tlKTogdW51c2VkOiBhZ3JzCisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcFRvU3RyaW5nTWV0aG9kOjppbnZva2UpOiB1bnVz
ZWQ6IGFyZ3MKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwSW5zdGFuY2U6Omludm9r
ZU1ldGhvZCk6IHBhc3MgYXJncyBhbG9uZworICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXht
YXBDbGFzczo6bWV0aG9kc05hbWVkKTogbmV3IG1ldGhvZAorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6UXRQaXhtYXBJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyk6IG5ldyBtZXRob2QKKwogMjAx
MC0wMi0xMSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL3F0L3F0
X3BpeG1hcHJ1bnRpbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3F0L3F0X3Bp
eG1hcHJ1bnRpbWUuY3BwCShyZXZpc2lvbiA1NDU1NikKKysrIFdlYkNvcmUvYnJpZGdlL3F0L3F0
X3BpeG1hcHJ1bnRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxNCArNzYsMTUgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHZpcnR1YWwgSlNWYWx1
ZSBpbnZva2UoRXhlY1N0YXRlKiBleGVjLCBRVmFyaWFudCYsIFBhc3NSZWZQdHI8Um9vdE9iamVj
dD4gcm9vdCwgUXRQaXhtYXBJbnN0YW5jZSogaW5zdCkgPSAwOworICAgIHZpcnR1YWwgSlNWYWx1
ZSBpbnZva2UoRXhlY1N0YXRlKiBleGVjLCBRVmFyaWFudCYsIFBhc3NSZWZQdHI8Um9vdE9iamVj
dD4gcm9vdCwgUXRQaXhtYXBJbnN0YW5jZSogaW5zdCwgY29uc3QgQXJnTGlzdCAmKSA9IDA7CiAK
IH07CiAKKy8vIHRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIG5ldyBIVE1MIGltYWdlIGVsZW1lbnQg
YW5kIG1ha2VzIGl0IGRpc3BsYXkgdGhlIHBpeG1hcC9pbWFnZSBmcm9tIFF0CiBjbGFzcyBRdFBp
eG1hcENyZWF0ZUVsZW1lbnRNZXRob2QgOiBwdWJsaWMgUXRQaXhtYXBSdW50aW1lTWV0aG9kIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpIHsgcmV0dXJuICJ0b0hUTUxJ
bWFnZUVsZW1lbnQiOyB9Ci0gICAgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBleGVjLCBRVmFy
aWFudCYgdiwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290LCBRdFBpeG1hcEluc3RhbmNlKikK
KyAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpIHsgcmV0dXJuICJjcmVhdGVIVE1MSW1hZ2VF
bGVtZW50IjsgfQorICAgIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0ZSogZXhlYywgUVZhcmlhbnQm
IHYsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgUXRQaXhtYXBJbnN0YW5jZSosIGNvbnN0
IEFyZ0xpc3QgJikKICAgICB7CiAgICAgICAgIFFQaXhtYXAgcHhtOwogICAgICAgICBpZiAodi50
eXBlKCkgPT0gc3RhdGljX2Nhc3Q8UVZhcmlhbnQ6OlR5cGU+KHFNZXRhVHlwZUlkPFFJbWFnZT4o
KSkpIHsKQEAgLTExMiwxMCArMTEzLDQ4IEBAIHB1YmxpYzoKIAogfTsKIAorLy8gdGhpcyBmdW5j
dGlvbiByZWNlaXZlcyBhbiBIVE1MIGltYWdlIGVsZW1lbnQgYXMgYSBwYXJhbWV0ZXIsIG1ha2Vz
IGl0IGRpc3BsYXkgdGhlIHBpeG1hcC9pbWFnZSBmcm9tIFF0CitjbGFzcyBRdFBpeG1hcEFwcGx5
VG9FbGVtZW50TWV0aG9kIDogcHVibGljIFF0UGl4bWFwUnVudGltZU1ldGhvZCB7CitwdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUoKSB7IHJldHVybiAiYXBwbHlUb0hUTUxJbWFn
ZUVsZW1lbnQiOyB9CisgICAgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBleGVjLCBRVmFyaWFu
dCYgdiwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290LCBRdFBpeG1hcEluc3RhbmNlKiwgY29u
c3QgQXJnTGlzdCAmIGFyZ3MpCisgICAgeworICAgICAgICBRUGl4bWFwIHB4bTsKKyAgICAgICAg
aWYgKHYudHlwZSgpID09IHN0YXRpY19jYXN0PFFWYXJpYW50OjpUeXBlPihxTWV0YVR5cGVJZDxR
SW1hZ2U+KCkpKSB7CisgICAgICAgICAgICBweG0gPSBRUGl4bWFwOjpmcm9tSW1hZ2Uodi52YWx1
ZTxRSW1hZ2U+KCkpOworICAgICAgICAgICAgdiA9IFFWYXJpYW50Ojpmcm9tVmFsdWU8UVBpeG1h
cD4ocHhtKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBweG0gPSB2LnZhbHVlPFFQaXht
YXA+KCk7CisKKyAgICAgICAgaWYgKCFhcmdzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworCisgICAgICAgIEpTT2JqZWN0KiBvYmplY3RBcmcgPSBhcmdzLmF0KDAp
LnRvT2JqZWN0KGV4ZWMpOworICAgICAgICBpZiAoIW9iamVjdEFyZykKKyAgICAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgICAgIGlmIChvYmplY3RBcmctPmNsYXNzSW5mbygp
ICE9ICZKU0hUTUxJbWFnZUVsZW1lbnQ6OnNfaW5mbykKKyAgICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworCisgICAgICAgIFBhc3NSZWZQdHI8U3RpbGxJbWFnZT4gaW1nID0gV2ViQ29y
ZTo6U3RpbGxJbWFnZTo6Y3JlYXRlKHB4bSk7CisgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGlt
YWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihzdGF0aWNfY2FzdDxK
U0hUTUxJbWFnZUVsZW1lbnQqPihvYmplY3RBcmcpLT5pbXBsKCkpOworICAgICAgICBpbWFnZUVs
ZW1lbnQtPnNldENhY2hlZEltYWdlKG5ldyBDYWNoZWRJbWFnZShpbWcuZ2V0KCkpKTsKKyAgICAg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4ocm9vdC0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICB0b0pTKGV4ZWMsIGdsb2JhbCwg
aW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgfQorICAgIHZpcnR1YWwgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgfQorCit9OworCisvLyB0aGlzIGZ1bmN0aW9uIGVuY29kZXMg
dGhlIGltYWdlIHRvIGEgZGF0YVVybCwgdG8gYmUgdXNlZCBpbiBiYWNrZ3JvdW5kIGV0Yy4gTm90
ZTogdmVyeSBzbG93LgogY2xhc3MgUXRQaXhtYXBUb0RhdGFVcmxNZXRob2QgOiBwdWJsaWMgUXRQ
aXhtYXBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFt
ZSgpIHsgcmV0dXJuICJ0b0RhdGFVcmwiOyB9Ci0gICAgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRl
KiBleGVjLCBRVmFyaWFudCYgdiwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290LCBRdFBpeG1h
cEluc3RhbmNlKikKKyAgICBKU1ZhbHVlIGludm9rZShFeGVjU3RhdGUqIGV4ZWMsIFFWYXJpYW50
JiB2LCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3QsIFF0UGl4bWFwSW5zdGFuY2UqLCBjb25z
dCBBcmdMaXN0ICYpCiAgICAgewogICAgICAgICBRSW1hZ2UgaW1hZ2U7CiAgICAgICAgIC8vIGZv
ciBnZXR0aW5nIHRoZSBkYXRhIHVybCwgd2UgYWx3YXlzIHByZWZlciB0aGUgaW1hZ2UuCkBAIC0x
MzcsNyArMTc2LDcgQEAgcHVibGljOgogY2xhc3MgUXRQaXhtYXBUb1N0cmluZ01ldGhvZCA6IHB1
YmxpYyBRdFBpeG1hcFJ1bnRpbWVNZXRob2QgewogICAgIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgY2hhciogbmFtZSgpIHsgcmV0dXJuICJ0b1N0cmluZyI7IH0KLSAgICBKU1ZhbHVlIGludm9r
ZShFeGVjU3RhdGUqIGV4ZWMsIFFWYXJpYW50JiB2LCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJv
b3QsIFF0UGl4bWFwSW5zdGFuY2UqIGluc3QpCisgICAgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRl
KiBleGVjLCBRVmFyaWFudCYgdiwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290LCBRdFBpeG1h
cEluc3RhbmNlKiBpbnN0LCBjb25zdCBBcmdMaXN0ICYpCiAgICAgewogICAgICAgICByZXR1cm4g
aW5zdC0+dmFsdWVPZihleGVjKTsKICAgICB9CkBAIC0xNDcsNiArMTg2LDcgQEAgY2xhc3MgUXRQ
aXhtYXBUb1N0cmluZ01ldGhvZCA6IHB1YmxpYyBRdAogc3RydWN0IFF0UGl4bWFwTWV0YURhdGEg
ewogICAgIFF0UGl4bWFwVG9EYXRhVXJsTWV0aG9kIHRvRGF0YVVybE1ldGhvZDsKICAgICBRdFBp
eG1hcENyZWF0ZUVsZW1lbnRNZXRob2QgY3JlYXRlRWxlbWVudE1ldGhvZDsKKyAgICBRdFBpeG1h
cEFwcGx5VG9FbGVtZW50TWV0aG9kIGFwcGx5VG9FbGVtZW50TWV0aG9kOwogICAgIFF0UGl4bWFw
VG9TdHJpbmdNZXRob2QgdG9TdHJpbmdNZXRob2Q7CiAgICAgUXRQaXhtYXBIZWlnaHRGaWVsZCBo
ZWlnaHRGaWVsZDsKICAgICBRdFBpeG1hcFdpZHRoRmllbGQgd2lkdGhGaWVsZDsKQEAgLTE5NCw3
ICsyMzQsNyBAQCBKU1ZhbHVlIFF0UGl4bWFwSW5zdGFuY2U6Omludm9rZU1ldGhvZChFCiB7CiAg
ICAgaWYgKG1ldGhvZHMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgUXRQaXhtYXBSdW50aW1lTWV0
aG9kKiBtdGQgPSBzdGF0aWNfY2FzdDxRdFBpeG1hcFJ1bnRpbWVNZXRob2QqPihtZXRob2RzWzBd
KTsgICAgICAgIAotICAgICAgICByZXR1cm4gbXRkLT5pbnZva2UoZXhlYywgZGF0YSwgcm9vdE9i
amVjdCgpLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIG10ZC0+aW52b2tlKGV4ZWMsIGRhdGEsIHJv
b3RPYmplY3QoKSwgdGhpcywgYXJncyk7CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogfQpAQCAtMjA2LDYgKzI0Niw4IEBAIE1ldGhvZExpc3QgUXRQaXhtYXBDbGFzczo6bWV0aG9k
c05hbWVkKGMKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9tZXRhRGF0YS50b0Rh
dGFVcmxNZXRob2QpOwogICAgIGVsc2UgaWYgKGlkZW50aWZpZXIgPT0gUXRQaXhtYXBDcmVhdGVF
bGVtZW50TWV0aG9kOjpuYW1lKCkpCiAgICAgICAgIG1ldGhvZHMuYXBwZW5kKCZxdF9waXhtYXBf
bWV0YURhdGEuY3JlYXRlRWxlbWVudE1ldGhvZCk7CisgICAgZWxzZSBpZiAoaWRlbnRpZmllciA9
PSBRdFBpeG1hcEFwcGx5VG9FbGVtZW50TWV0aG9kOjpuYW1lKCkpCisgICAgICAgIG1ldGhvZHMu
YXBwZW5kKCZxdF9waXhtYXBfbWV0YURhdGEuYXBwbHlUb0VsZW1lbnRNZXRob2QpOwogICAgIGVs
c2UgaWYgKGlkZW50aWZpZXIgPT0gUXRQaXhtYXBUb1N0cmluZ01ldGhvZDo6bmFtZSgpKQogICAg
ICAgICBtZXRob2RzLmFwcGVuZCgmcXRfcGl4bWFwX21ldGFEYXRhLnRvU3RyaW5nTWV0aG9kKTsK
ICAgICByZXR1cm4gbWV0aG9kczsKQEAgLTIyNCw2ICsyNjYsNyBAQCB2b2lkIFF0UGl4bWFwSW5z
dGFuY2U6OmdldFByb3BlcnR5TmFtZXMoCiB7CiAgICAgYXJyLmFkZChJZGVudGlmaWVyKGV4ZWMs
IFVTdHJpbmcoUXRQaXhtYXBUb0RhdGFVcmxNZXRob2Q6Om5hbWUoKSkpKTsKICAgICBhcnIuYWRk
KElkZW50aWZpZXIoZXhlYywgVVN0cmluZyhRdFBpeG1hcENyZWF0ZUVsZW1lbnRNZXRob2Q6Om5h
bWUoKSkpKTsKKyAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgVVN0cmluZyhRdFBpeG1hcEFw
cGx5VG9FbGVtZW50TWV0aG9kOjpuYW1lKCkpKSk7CiAgICAgYXJyLmFkZChJZGVudGlmaWVyKGV4
ZWMsIFVTdHJpbmcoUXRQaXhtYXBUb1N0cmluZ01ldGhvZDo6bmFtZSgpKSkpOwogICAgIGFyci5h
ZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwV2lkdGhGaWVsZDo6bmFtZSgpKSkp
OwogICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwSGVpZ2h0Rmll
bGQ6Om5hbWUoKSkpKTsKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNTQ3MDIpCisrKyBXZWJLaXQvcXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDItMTEgIE5vYW0gUm9z
ZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gTWlub3IgaW1wcm92ZW1lbnQgdG8gaHli
cmlkIFFQaXhtYXAKKyAgICAgICAgQWxsb3cgYXBwbHlpbmcgdGhlIFFQaXhtYXAvUUltYWdlIHRv
IGFuIGV4aXN0aW5nIGltYWdlIGVsZW1lbnQ6IHRlc3QKKyAgICAgICAgaGVyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ1MDcKKworICAgICAgICAq
IHRlc3RzL2h5YnJpZFBpeG1hcC90ZXN0Lmh0bWw6IHRlc3QgY3JlYXRlSFRNTEltYWdlRWxlbWVu
dCAvCisgICAgICAgIGFwcGx5VG9IVE1MSW1hZ2VFbGVtZW50CisKIDIwMTAtMDItMTAgIERpZWdv
IEdvbnphbGV6ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYktpdC9xdC90ZXN0
cy9oeWJyaWRQaXhtYXAvdGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC90ZXN0cy9o
eWJyaWRQaXhtYXAvdGVzdC5odG1sCShyZXZpc2lvbiA1NDU1NikKKysrIFdlYktpdC9xdC90ZXN0
cy9oeWJyaWRQaXhtYXAvdGVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDExICs5LDE4IEBA
CiAgICAgICAgICAgICAgICAgdmFyIG9iaiA9IG15V2lkZ2V0LmltYWdlOwogICAgICAgICAgICAg
ICAgIHZhciBweG0gPSBteVdpZGdldC5waXhtYXA7CiAKLSAgICAgICAgICAgICAgICB2YXIgaW1n
ID0gb2JqLnRvSFRNTEltYWdlRWxlbWVudCgpOworICAgICAgICAgICAgICAgIHZhciBpbWcgPSBv
YmouY3JlYXRlSFRNTEltYWdlRWxlbWVudCgpOwogICAgICAgICAgICAgICAgIHZhciBpbWcxID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZzEiKTsKICAgICAgICAgICAgICAgICB2YXIgaW1n
MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWcyIik7CisgICAgICAgICAgICAgICAgdmFy
IGltZzMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nMyIpOworICAgICAgICAgICAgICAg
IHZhciBpbWc0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZzQiKTsKKwogICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKLSAgICAgICAgICAgICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHB4bS50b0hUTUxJbWFnZUVsZW1lbnQoKSk7CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChweG0uY3JlYXRlSFRNTEltYWdl
RWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICBvYmouYXBwbHlUb0hUTUxJbWFnZUVsZW1lbnQo
aW1nMyk7CisgICAgICAgICAgICAgICAgcHhtLmFwcGx5VG9IVE1MSW1hZ2VFbGVtZW50KGltZzQp
OworICAgICAgICAgICAgICAgIG15V2lkZ2V0LmNvbXBhcmUocHhtLndpZHRoLCBpbWc0LndpZHRo
KTsKKyAgICAgICAgICAgICAgICBteVdpZGdldC5jb21wYXJlKG9iai53aWR0aCwgaW1nMy53aWR0
aCk7CiAgICAgICAgICAgICAgICAgdmFyIHNpZ25hbHNGaXJlZCA9IDA7CiAgICAgICAgICAgICAg
ICAgbXlXaWRnZXQuY29tcGFyZShvYmoudG9TdHJpbmcoKSwiW1F0IE5hdGl2ZSBQaXhtYXAgIitv
Ymoud2lkdGgrIiwiK29iai5oZWlnaHQrIl0iKTsKICAgICAgICAgICAgICAgICBteVdpZGdldC5j
b21wYXJlKFN0cmluZyhweG0pLCJbUXQgTmF0aXZlIFBpeG1hcCAiK3B4bS53aWR0aCsiLCIrcHht
LmhlaWdodCsiXSIpOwpAQCAtNTMsNSArNjAsNyBAQAogICAgIDxib2R5IG9ubG9hZD0ic3RhcnRU
ZXN0KCkiPgogICAgICAgICA8aW1nIGlkPSJpbWcxIiAvPgogICAgICAgICA8aW1nIGlkPSJpbWcy
IiAvPgorICAgICAgICA8aW1nIGlkPSJpbWczIiAvPgorICAgICAgICA8aW1nIGlkPSJpbWc0IiAv
PgogICAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48653</attachid>
            <date>2010-02-12 11:37:12 -0800</date>
            <delta_ts>2010-02-17 14:22:46 -0800</delta_ts>
            <desc>The native QPixmap/QImage can now assign its value to an existing image element</desc>
            <filename>patch-34507-3.diff</filename>
            <type>text/plain</type>
            <size>17453</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDcyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDItMTIgIE5vYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRo
YWxAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF0gTWlub3IgaW1wcm92ZW1lbnQgdG8gaHlicmlkIFFQaXhtYXAKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTA3CisgICAgICAgIElu
c3RlYWQgb2YgaGF2aW5nIHRvSFRNTEltYWdlRWxlbWVudCB3aGljaCBjcmVhdGVzIGEgbmV3IGVs
ZW1lbnQsCisgICAgICAgIGFzc2lnblRvSFRNTEltYWdlRWxlbWVudCB3b3VsZCBzZXQgYW4gZXhp
c3RpbmcgSFRNTCA8aW1nLz4gZWxlbWVudCB0bworICAgICAgICBjb250YWluIHRoZSBuYXRpdmUg
UVBpeG1hcC9RSW1nZS4KKyAgICAgICAgQWxzbyBtYWRlIHNvbWUgc3R5bGUgZml4ZXMuCisKKyAg
ICAgICAgQWRkaXRpb25zIHRvIGV4aXN0aW5nIHRlc3RzOiBzZWUgV2ViS2l0L3F0L3Rlc3RzCisK
KyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpRdFBpeG1hcFdpZHRoRmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKTogc3R5bGUK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwSGVpZ2h0RmllbGQ6OnZhbHVlRnJvbUlu
c3RhbmNlKTogc3R5bGUKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwQXNzaWduVG9F
bGVtZW50TWV0aG9kOjpuYW1lKTogYXNzaWduVG8KKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0
UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjppbnZva2UpOiBuZXcgZnVuY3Rpb24KKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjpudW1QYXJh
bWV0ZXJzKTogMQorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBUb0RhdGFVcmxNZXRo
b2Q6Omludm9rZSk6IHN0eWxlCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcFRvU3Ry
aW5nTWV0aG9kOjppbnZva2UpOiBzdHlsZQorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXht
YXBJbnN0YW5jZTo6aW52b2tlTWV0aG9kKTogc3R5bGUKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OlF0UGl4bWFwQ2xhc3M6Om1ldGhvZHNOYW1lZCk6IG5ldyBmdW5jLCByZW1vdmVkIG9sZAorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyk6
IGRpdHRvCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcEluc3RhbmNlOjpkZWZhdWx0
VmFsdWUpOiBzdHlsZQorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBJbnN0YW5jZTo6
dmFsdWVPZik6IHN0eWxlCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcEluc3RhbmNl
Ojp0b1BpeG1hcCk6IHN0eWxlCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcEluc3Rh
bmNlOjp2YXJpYW50RnJvbU9iamVjdCk6IHN0eWxlCisKIDIwMTAtMDItMTIgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIu
CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkocmV2aXNpb24gNTQ3
MjgpCisrKyBXZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAsMTEgKzIwLDcgQEAKICNpbmNsdWRlICJxdF9waXhtYXBydW50aW1lLmgiCiAK
ICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSlNMb2NrLmgiCkBAIC01NCwxOCArNTAsMTkgQEAgcHVibGljOgogY2xhc3MgUXRQaXhtYXBX
aWR0aEZpZWxkIDogcHVibGljIEZpZWxkIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogbmFtZSgpIHsgcmV0dXJuICJ3aWR0aCI7IH0KLSAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVG
cm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogcGl4bWFwKSBjb25z
dAorICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBq
c051bWJlcihleGVjLCBzdGF0aWNfY2FzdDxjb25zdCBRdFBpeG1hcEluc3RhbmNlKj4ocGl4bWFw
KS0+d2lkdGgoKSk7CisgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBzdGF0aWNfY2FzdDxj
b25zdCBRdFBpeG1hcEluc3RhbmNlKj4oaW5zdGFuY2UpLT53aWR0aCgpKTsKICAgICB9CiAgICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5j
ZSosIEpTVmFsdWUpIGNvbnN0IHt9CiB9OworCiBjbGFzcyBRdFBpeG1hcEhlaWdodEZpZWxkIDog
cHVibGljIEZpZWxkIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpIHsg
cmV0dXJuICJoZWlnaHQiOyB9Ci0gICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3QpIGNvbnN0CisgICAgdmlydHVh
bCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFu
Y2UqIGluc3RhbmNlKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMs
IHN0YXRpY19jYXN0PGNvbnN0IFF0UGl4bWFwSW5zdGFuY2UqPihpbnN0KS0+aGVpZ2h0KCkpOwor
ICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgc3RhdGljX2Nhc3Q8Y29uc3QgUXRQaXhtYXBJ
bnN0YW5jZSo+KGluc3RhbmNlKS0+aGVpZ2h0KCkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkg
Y29uc3Qge30KIH07CkBAIC03Niw3NyArNzMsNjggQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQotICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBl
eGVjLCBRVmFyaWFudCYsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgUXRQaXhtYXBJbnN0
YW5jZSogaW5zdCkgPSAwOworICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBl
eGVjLCBRdFBpeG1hcEluc3RhbmNlKiwgY29uc3QgQXJnTGlzdCYpID0gMDsKIAogfTsKIAotY2xh
c3MgUXRQaXhtYXBDcmVhdGVFbGVtZW50TWV0aG9kIDogcHVibGljIFF0UGl4bWFwUnVudGltZU1l
dGhvZCB7CisvLyB0aGlzIGZ1bmN0aW9uIHJlY2VpdmVzIGFuIEhUTUwgaW1hZ2UgZWxlbWVudCBh
cyBhIHBhcmFtZXRlciwgbWFrZXMgaXQgZGlzcGxheSB0aGUgcGl4bWFwL2ltYWdlIGZyb20gUXQK
K2NsYXNzIFF0UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kIDogcHVibGljIFF0UGl4bWFwUnVu
dGltZU1ldGhvZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUoKSB7IHJl
dHVybiAidG9IVE1MSW1hZ2VFbGVtZW50IjsgfQotICAgIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0
ZSogZXhlYywgUVZhcmlhbnQmIHYsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgUXRQaXht
YXBJbnN0YW5jZSopCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUoKSB7IHJldHVybiAiYXNz
aWduVG9IVE1MSW1hZ2VFbGVtZW50IjsgfQorICAgIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0ZSog
ZXhlYywgUXRQaXhtYXBJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiAg
ICAgewotICAgICAgICBRUGl4bWFwIHB4bTsKLSAgICAgICAgaWYgKHYudHlwZSgpID09IHN0YXRp
Y19jYXN0PFFWYXJpYW50OjpUeXBlPihxTWV0YVR5cGVJZDxRSW1hZ2U+KCkpKSB7Ci0gICAgICAg
ICAgICBweG0gPSBRUGl4bWFwOjpmcm9tSW1hZ2Uodi52YWx1ZTxRSW1hZ2U+KCkpOwotICAgICAg
ICAgICAgdiA9IFFWYXJpYW50Ojpmcm9tVmFsdWU8UVBpeG1hcD4ocHhtKTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBweG0gPSB2LnZhbHVlPFFQaXhtYXA+KCk7Ci0KLSAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gMDsKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbCA9
IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4ocm9vdC0+Z2xvYmFsT2JqZWN0KCkpOwot
ICAgICAgICBpZiAoZ2xvYmFsKSB7Ci0gICAgICAgICAgICBET01XaW5kb3cqIGRXaW5kb3cgPSB0
b0RPTVdpbmRvdyhnbG9iYWwpOwotICAgICAgICAgICAgaWYgKGRXaW5kb3cpCi0gICAgICAgICAg
ICAgICAgZG9jdW1lbnQgPSBkV2luZG93LT5kb2N1bWVudCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGRvY3VtZW50KSB7Ci0gICAgICAgICAgICBQYXNzUmVmUHRyPFN0aWxsSW1hZ2U+IGlt
ZyA9IFdlYkNvcmU6OlN0aWxsSW1hZ2U6OmNyZWF0ZShweG0pOwotICAgICAgICAgICAgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gbmV3IEhUTUxJbWFnZUVsZW1lbnQoSFRNTE5hbWVz
OjppbWdUYWcsIGRvY3VtZW50KTsKLSAgICAgICAgICAgIGltYWdlLT5zZXRDYWNoZWRJbWFnZShu
ZXcgQ2FjaGVkSW1hZ2UoaW1nLmdldCgpKSk7Ci0gICAgICAgICAgICB0b0pTKGV4ZWMsIGdsb2Jh
bCwgZG9jdW1lbnQpOwotICAgICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KHRvSlMoZXhlYywgZ2xv
YmFsLCBpbWFnZS5yZWxlYXNlKCkpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWFyZ3Muc2l6
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdEFyZyA9IGFyZ3MuYXQoMCkudG9PYmplY3QoZXhlYyk7CisgICAgICAgIGlmICgh
b2JqZWN0QXJnKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAg
aWYgKG9iamVjdEFyZy0+Y2xhc3NJbmZvKCkgIT0gJkpTSFRNTEltYWdlRWxlbWVudDo6c19pbmZv
KQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAgLy8gd2Ugbm93
IGtub3cgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgPGltZz4gZWxlbWVudCBhcyB0aGUgYXJndW1lbnQs
IHdlIGNhbiBhdHRhY2ggdGhlIHBpeG1hcCB0byBpdC4KKyAgICAgICAgUGFzc1JlZlB0cjxTdGls
bEltYWdlPiBzdGlsbEltYWdlID0gV2ViQ29yZTo6U3RpbGxJbWFnZTo6Y3JlYXRlKGluc3RhbmNl
LT50b1BpeG1hcCgpKTsKKyAgICAgICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KHN0YXRpY19jYXN0PEpTSFRNTEltYWdlRWxl
bWVudCo+KG9iamVjdEFyZyktPmltcGwoKSk7CisgICAgICAgIGltYWdlRWxlbWVudC0+c2V0Q2Fj
aGVkSW1hZ2UobmV3IENhY2hlZEltYWdlKHN0aWxsSW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
aW5zdGFuY2UtPnJvb3RPYmplY3QoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICB0b0pTKGV4
ZWMsIGdsb2JhbCwgaW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpKTsKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQogCisgICAgdmlydHVhbCBpbnQgbnVtUGFyYW1ldGVycygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CiB9OwogCisvLyB0aGlzIGZ1bmN0
aW9uIGVuY29kZXMgdGhlIGltYWdlIHRvIGEgZGF0YVVybCwgdG8gYmUgdXNlZCBpbiBiYWNrZ3Jv
dW5kIGV0Yy4gTm90ZTogdmVyeSBzbG93LgogY2xhc3MgUXRQaXhtYXBUb0RhdGFVcmxNZXRob2Qg
OiBwdWJsaWMgUXRQaXhtYXBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgY2hhciogbmFtZSgpIHsgcmV0dXJuICJ0b0RhdGFVcmwiOyB9Ci0gICAgSlNWYWx1ZSBpbnZv
a2UoRXhlY1N0YXRlKiBleGVjLCBRVmFyaWFudCYgdiwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiBy
b290LCBRdFBpeG1hcEluc3RhbmNlKikKKyAgICBKU1ZhbHVlIGludm9rZShFeGVjU3RhdGUqIGV4
ZWMsIFF0UGl4bWFwSW5zdGFuY2UqIGluc3RhbmNlLCBjb25zdCBBcmdMaXN0JikKICAgICB7Ci0g
ICAgICAgIFFJbWFnZSBpbWFnZTsKLSAgICAgICAgLy8gZm9yIGdldHRpbmcgdGhlIGRhdGEgdXJs
LCB3ZSBhbHdheXMgcHJlZmVyIHRoZSBpbWFnZS4KLSAgICAgICAgaWYgKHYudHlwZSgpID09IHN0
YXRpY19jYXN0PFFWYXJpYW50OjpUeXBlPihxTWV0YVR5cGVJZDxRUGl4bWFwPigpKSkgewotICAg
ICAgICAgICAgaW1hZ2UgPSB2LnZhbHVlPFFQaXhtYXA+KCkudG9JbWFnZSgpOwotICAgICAgICAg
ICAgdiA9IFFWYXJpYW50Ojpmcm9tVmFsdWU8UUltYWdlPihpbWFnZSk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgaW1hZ2UgPSB2LnZhbHVlPFFJbWFnZT4oKTsKLSAgICAgICAgUUJ5dGVB
cnJheSBiYTsKLSAgICAgICAgUUJ1ZmZlciBiKCZiYSk7Ci0gICAgICAgIGltYWdlLnNhdmUoJmIs
ICJQTkciKTsKLSAgICAgICAgY29uc3QgUVN0cmluZyBiNjQgPSBRU3RyaW5nKCJkYXRhOmltYWdl
L3BuZztiYXNlNjQsIikgKyBiYS50b0Jhc2U2NCgpOwotICAgICAgICBjb25zdCBVU3RyaW5nIHVz
dHJpbmcoKFVDaGFyKiliNjQudXRmMTYoKSwgYjY0Lmxlbmd0aCgpKTsKKyAgICAgICAgUUJ5dGVB
cnJheSBieXRlQXJyYXk7CisgICAgICAgIFFCdWZmZXIgYnVmZmVyKCZieXRlQXJyYXkpOworICAg
ICAgICBpbnN0YW5jZS0+dG9JbWFnZSgpLnNhdmUoJmJ1ZmZlciwgIlBORyIpOworICAgICAgICBj
b25zdCBRU3RyaW5nIGVuY29kZWRTdHJpbmcgPSBRU3RyaW5nKCJkYXRhOmltYWdlL3BuZztiYXNl
NjQsIikgKyBieXRlQXJyYXkudG9CYXNlNjQoKTsKKyAgICAgICAgY29uc3QgVVN0cmluZyB1c3Ry
aW5nKChVQ2hhciopZW5jb2RlZFN0cmluZy51dGYxNigpLCBlbmNvZGVkU3RyaW5nLmxlbmd0aCgp
KTsKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHVzdHJpbmcpOwogICAgIH0KLQogfTsK
IAogY2xhc3MgUXRQaXhtYXBUb1N0cmluZ01ldGhvZCA6IHB1YmxpYyBRdFBpeG1hcFJ1bnRpbWVN
ZXRob2QgewogICAgIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpIHsgcmV0
dXJuICJ0b1N0cmluZyI7IH0KLSAgICBKU1ZhbHVlIGludm9rZShFeGVjU3RhdGUqIGV4ZWMsIFFW
YXJpYW50JiB2LCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3QsIFF0UGl4bWFwSW5zdGFuY2Uq
IGluc3QpCisgICAgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBleGVjLCBRdFBpeG1hcEluc3Rh
bmNlKiBpbnN0YW5jZSwgY29uc3QgQXJnTGlzdCYpCiAgICAgewotICAgICAgICByZXR1cm4gaW5z
dC0+dmFsdWVPZihleGVjKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlLT52YWx1ZU9mKGV4ZWMp
OwogICAgIH0KLQogfTsKIAogc3RydWN0IFF0UGl4bWFwTWV0YURhdGEgewogICAgIFF0UGl4bWFw
VG9EYXRhVXJsTWV0aG9kIHRvRGF0YVVybE1ldGhvZDsKLSAgICBRdFBpeG1hcENyZWF0ZUVsZW1l
bnRNZXRob2QgY3JlYXRlRWxlbWVudE1ldGhvZDsKKyAgICBRdFBpeG1hcEFzc2lnblRvRWxlbWVu
dE1ldGhvZCBhc3NpZ25Ub0VsZW1lbnRNZXRob2Q7CiAgICAgUXRQaXhtYXBUb1N0cmluZ01ldGhv
ZCB0b1N0cmluZ01ldGhvZDsKICAgICBRdFBpeG1hcEhlaWdodEZpZWxkIGhlaWdodEZpZWxkOwog
ICAgIFF0UGl4bWFwV2lkdGhGaWVsZCB3aWR0aEZpZWxkOwpAQCAtMTc5LDcgKzE2Nyw2IEBAIFF0
UGl4bWFwUnVudGltZU9iamVjdEltcDo6UXRQaXhtYXBSdW50aW0KIAogY29uc3QgQ2xhc3NJbmZv
IFF0UGl4bWFwUnVudGltZU9iamVjdEltcDo6c19pbmZvID0geyAiUXRQaXhtYXBSdW50aW1lT2Jq
ZWN0IiwgJlJ1bnRpbWVPYmplY3RJbXA6OnNfaW5mbywgMCwgMCB9OwogCi0KIFF0UGl4bWFwQ2xh
c3M6OlF0UGl4bWFwQ2xhc3MoKQogewogfQpAQCAtMTkzLDggKzE4MCw4IEBAIENsYXNzKiBRdFBp
eG1hcEluc3RhbmNlOjpnZXRDbGFzcygpIGNvbnMKIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6
aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTWV0aG9kTGlzdCYgbWV0aG9kcywg
Y29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBpZiAobWV0aG9kcy5zaXplKCkgPT0gMSkgewot
ICAgICAgICBRdFBpeG1hcFJ1bnRpbWVNZXRob2QqIG10ZCA9IHN0YXRpY19jYXN0PFF0UGl4bWFw
UnVudGltZU1ldGhvZCo+KG1ldGhvZHNbMF0pOyAgICAgICAgCi0gICAgICAgIHJldHVybiBtdGQt
Pmludm9rZShleGVjLCBkYXRhLCByb290T2JqZWN0KCksIHRoaXMpOworICAgICAgICBRdFBpeG1h
cFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PFF0UGl4bWFwUnVudGltZU1ldGhv
ZCo+KG1ldGhvZHNbMF0pOworICAgICAgICByZXR1cm4gbWV0aG9kLT5pbnZva2UoZXhlYywgdGhp
cywgYXJncyk7CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAtMjA0LDgg
KzE5MSw4IEBAIE1ldGhvZExpc3QgUXRQaXhtYXBDbGFzczo6bWV0aG9kc05hbWVkKGMKICAgICBN
ZXRob2RMaXN0IG1ldGhvZHM7CiAgICAgaWYgKGlkZW50aWZpZXIgPT0gUXRQaXhtYXBUb0RhdGFV
cmxNZXRob2Q6Om5hbWUoKSkKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9tZXRh
RGF0YS50b0RhdGFVcmxNZXRob2QpOwotICAgIGVsc2UgaWYgKGlkZW50aWZpZXIgPT0gUXRQaXht
YXBDcmVhdGVFbGVtZW50TWV0aG9kOjpuYW1lKCkpCi0gICAgICAgIG1ldGhvZHMuYXBwZW5kKCZx
dF9waXhtYXBfbWV0YURhdGEuY3JlYXRlRWxlbWVudE1ldGhvZCk7CisgICAgZWxzZSBpZiAoaWRl
bnRpZmllciA9PSBRdFBpeG1hcEFzc2lnblRvRWxlbWVudE1ldGhvZDo6bmFtZSgpKQorICAgICAg
ICBtZXRob2RzLmFwcGVuZCgmcXRfcGl4bWFwX21ldGFEYXRhLmFzc2lnblRvRWxlbWVudE1ldGhv
ZCk7CiAgICAgZWxzZSBpZiAoaWRlbnRpZmllciA9PSBRdFBpeG1hcFRvU3RyaW5nTWV0aG9kOjpu
YW1lKCkpCiAgICAgICAgIG1ldGhvZHMuYXBwZW5kKCZxdF9waXhtYXBfbWV0YURhdGEudG9TdHJp
bmdNZXRob2QpOwogICAgIHJldHVybiBtZXRob2RzOwpAQCAtMjIzLDcgKzIxMCw3IEBAIEZpZWxk
KiBRdFBpeG1hcENsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IEkKIHZvaWQgUXRQaXhtYXBJbnN0YW5j
ZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFy
cikKIHsKICAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgVVN0cmluZyhRdFBpeG1hcFRvRGF0
YVVybE1ldGhvZDo6bmFtZSgpKSkpOwotICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3Ry
aW5nKFF0UGl4bWFwQ3JlYXRlRWxlbWVudE1ldGhvZDo6bmFtZSgpKSkpOworICAgIGFyci5hZGQo
SWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjpu
YW1lKCkpKSk7CiAgICAgYXJyLmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmcoUXRQaXhtYXBU
b1N0cmluZ01ldGhvZDo6bmFtZSgpKSkpOwogICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBV
U3RyaW5nKFF0UGl4bWFwV2lkdGhGaWVsZDo6bmFtZSgpKSkpOwogICAgIGFyci5hZGQoSWRlbnRp
ZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwSGVpZ2h0RmllbGQ6Om5hbWUoKSkpKTsKQEAgLTIz
NiwxNSArMjIzLDE3IEBAIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6ZGVmYXVsdFZhbHVlKEUK
ICAgICAgICAgICAgICAgICAoZGF0YS50eXBlKCkgPT0gc3RhdGljX2Nhc3Q8UVZhcmlhbnQ6OlR5
cGU+KHFNZXRhVHlwZUlkPFFJbWFnZT4oKSkgJiYgIShkYXRhLnZhbHVlPFFJbWFnZT4oKSkuaXNO
dWxsKCkpCiAgICAgICAgICAgICAgICAgfHwgKGRhdGEudHlwZSgpID09IHN0YXRpY19jYXN0PFFW
YXJpYW50OjpUeXBlPihxTWV0YVR5cGVJZDxRUGl4bWFwPigpKSAmJiAhZGF0YS52YWx1ZTxRUGl4
bWFwPigpLmlzTnVsbCgpKSk7CiAgICAgfQorCiAgICAgaWYgKHB0eXBlID09IFByZWZlclN0cmlu
ZykKICAgICAgICAgcmV0dXJuIHZhbHVlT2YoZXhlYyk7CisKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIH0KIAogSlNWYWx1ZSBRdFBpeG1hcEluc3RhbmNlOjp2YWx1ZU9mKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIHsKLSAgICBjb25zdCBRU3RyaW5nIHRvU3RyID0gUVN0cmluZygiW1F0IE5h
dGl2ZSBQaXhtYXAgJTEsJTJdIikuYXJnKHdpZHRoKCkpLmFyZyhoZWlnaHQoKSk7Ci0gICAgVVN0
cmluZyB1c3RyaW5nKChVQ2hhciopdG9TdHIudXRmMTYoKSwgdG9TdHIubGVuZ3RoKCkpOworICAg
IGNvbnN0IFFTdHJpbmcgc3RyaW5nVmFsdWUgPSBRU3RyaW5nKCJbUXQgTmF0aXZlIFBpeG1hcCAl
MSwlMl0iKS5hcmcod2lkdGgoKSkuYXJnKGhlaWdodCgpKTsKKyAgICBVU3RyaW5nIHVzdHJpbmco
KFVDaGFyKilzdHJpbmdWYWx1ZS51dGYxNigpLCBzdHJpbmdWYWx1ZS5sZW5ndGgoKSk7CiAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHVzdHJpbmcpOwogfQogCkBAIC0yNzUsMjQgKzI2NCwyNyBA
QCBRUGl4bWFwIFF0UGl4bWFwSW5zdGFuY2U6OnRvUGl4bWFwKCkKIHsKICAgICBpZiAoZGF0YS50
eXBlKCkgPT0gc3RhdGljX2Nhc3Q8UVZhcmlhbnQ6OlR5cGU+KHFNZXRhVHlwZUlkPFFQaXhtYXA+
KCkpKQogICAgICAgICByZXR1cm4gZGF0YS52YWx1ZTxRUGl4bWFwPigpOworCiAgICAgaWYgKGRh
dGEudHlwZSgpID09IHN0YXRpY19jYXN0PFFWYXJpYW50OjpUeXBlPihxTWV0YVR5cGVJZDxRSW1h
Z2U+KCkpKSB7Ci0gICAgICAgIGNvbnN0IFFQaXhtYXAgcHhtID0gUVBpeG1hcDo6ZnJvbUltYWdl
KGRhdGEudmFsdWU8UUltYWdlPigpKTsKLSAgICAgICAgZGF0YSA9IFFWYXJpYW50Ojpmcm9tVmFs
dWU8UVBpeG1hcD4ocHhtKTsKLSAgICAgICAgcmV0dXJuIHB4bTsKKyAgICAgICAgY29uc3QgUVBp
eG1hcCBwaXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2UoZGF0YS52YWx1ZTxRSW1hZ2U+KCkpOwor
ICAgICAgICBkYXRhID0gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRUGl4bWFwPihwaXhtYXApOworICAg
ICAgICByZXR1cm4gcGl4bWFwOwogICAgIH0KLSAgICByZXR1cm4gUVBpeG1hcCgpOwogCisgICAg
cmV0dXJuIFFQaXhtYXAoKTsKIH0KIAogUUltYWdlIFF0UGl4bWFwSW5zdGFuY2U6OnRvSW1hZ2Uo
KQogewogICAgIGlmIChkYXRhLnR5cGUoKSA9PSBzdGF0aWNfY2FzdDxRVmFyaWFudDo6VHlwZT4o
cU1ldGFUeXBlSWQ8UUltYWdlPigpKSkKICAgICAgICAgcmV0dXJuIGRhdGEudmFsdWU8UUltYWdl
PigpOworCiAgICAgaWYgKGRhdGEudHlwZSgpID09IHN0YXRpY19jYXN0PFFWYXJpYW50OjpUeXBl
PihxTWV0YVR5cGVJZDxRUGl4bWFwPigpKSkgewotICAgICAgICBjb25zdCBRSW1hZ2UgaW1nID0g
ZGF0YS52YWx1ZTxRUGl4bWFwPigpLnRvSW1hZ2UoKTsKLSAgICAgICAgZGF0YSA9IFFWYXJpYW50
Ojpmcm9tVmFsdWU8UUltYWdlPihpbWcpOwotICAgICAgICByZXR1cm4gaW1nOworICAgICAgICBj
b25zdCBRSW1hZ2UgaW1hZ2UgPSBkYXRhLnZhbHVlPFFQaXhtYXA+KCkudG9JbWFnZSgpOworICAg
ICAgICBkYXRhID0gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRSW1hZ2U+KGltYWdlKTsKKyAgICAgICAg
cmV0dXJuIGltYWdlOwogICAgIH0KKwogICAgIHJldHVybiBRSW1hZ2UoKTsKIH0KIApAQCAtMzAz
LDM0ICsyOTUsNDUgQEAgUVZhcmlhbnQgUXRQaXhtYXBJbnN0YW5jZTo6dmFyaWFudEZyb21PYgog
ICAgICAgICAgICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWU8UVBpeG1hcD4oUVBpeG1hcCgp
KTsKICAgICAgICAgaWYgKGhpbnQgPT0gcU1ldGFUeXBlSWQ8UUltYWdlPigpKQogICAgICAgICAg
ICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWU8UUltYWdlPihRSW1hZ2UoKSk7Ci0gICAgfSBl
bHNlIGlmIChvYmplY3QtPmluaGVyaXRzKCZKU0hUTUxJbWFnZUVsZW1lbnQ6OnNfaW5mbykpIHsK
LSAgICAgICAgSlNIVE1MSW1hZ2VFbGVtZW50KiBlbCA9IHN0YXRpY19jYXN0PEpTSFRNTEltYWdl
RWxlbWVudCo+KG9iamVjdCk7Ci0gICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihlbC0+aW1wbCgpKTsKLSAgICAgICAg
aWYgKGltYWdlRWxlbWVudCkgewotICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNJbWcgPSBpbWFn
ZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgICAgICBpZiAoY0ltZykgewotICAgICAg
ICAgICAgICAgIEltYWdlKiBpbWcgPSBjSW1nLT5pbWFnZSgpOwotICAgICAgICAgICAgICAgIGlm
IChpbWcpIHsKLSAgICAgICAgICAgICAgICAgICAgUVBpeG1hcCogcHhtID0gaW1nLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocHhtKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGhpbnQgPT0gc3RhdGljX2Nhc3Q8UU1ldGFU
eXBlOjpUeXBlPihxTWV0YVR5cGVJZDxRUGl4bWFwPigpKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID8gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRUGl4bWFwPigqcHhtKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFJbWFnZT4ocHhtLT50
b0ltYWdlKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChvYmplY3QtPmluaGVyaXRzKCZR
dFBpeG1hcFJ1bnRpbWVPYmplY3RJbXA6OnNfaW5mbykpIHsKKyAgICAgICAgcmV0dXJuIFFWYXJp
YW50KCk7CisgICAgfQorCisgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkpTSFRNTEltYWdlRWxl
bWVudDo6c19pbmZvKSkgeworICAgICAgICBKU0hUTUxJbWFnZUVsZW1lbnQqIGVsZW1lbnRKU1dy
YXBwZXIgPSBzdGF0aWNfY2FzdDxKU0hUTUxJbWFnZUVsZW1lbnQqPihvYmplY3QpOworICAgICAg
ICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VF
bGVtZW50Kj4oZWxlbWVudEpTV3JhcHBlci0+aW1wbCgpKTsKKyAgICAgICAgaWYgKCFpbWFnZUVs
ZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKyAgICAgICAgQ2FjaGVkSW1h
Z2UqIGNhY2hlSW1hZ2UgPSBpbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7CisgICAgICAgIGlm
ICghY2FjaGVJbWFnZSkKKyAgICAgICAgICAgIHJldHVybiBRVmFyaWFudCgpOworCisgICAgICAg
IEltYWdlKiBpbWFnZSA9IGNhY2hlSW1hZ2UtPmltYWdlKCk7CisgICAgICAgIGlmICghaW1hZ2Up
CisgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKworICAgICAgICBRUGl4bWFwKiBwaXht
YXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgaWYgKCFw
aXhtYXApCisgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKworICAgICAgICByZXR1cm4g
KGhpbnQgPT0gc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPihxTWV0YVR5cGVJZDxRUGl4bWFw
PigpKSkKKyAgICAgICAgICAgICAgICAgID8gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRUGl4bWFwPigq
cGl4bWFwKQorICAgICAgICAgICAgICAgICAgOiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFJbWFnZT4o
cGl4bWFwLT50b0ltYWdlKCkpOworICAgIH0KKworICAgIGlmIChvYmplY3QtPmluaGVyaXRzKCZR
dFBpeG1hcFJ1bnRpbWVPYmplY3RJbXA6OnNfaW5mbykpIHsKICAgICAgICAgUXRQaXhtYXBSdW50
aW1lT2JqZWN0SW1wKiBpbXAgPSBzdGF0aWNfY2FzdDxRdFBpeG1hcFJ1bnRpbWVPYmplY3RJbXAq
PihvYmplY3QpOwotICAgICAgICBRdFBpeG1hcEluc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8
UXRQaXhtYXBJbnN0YW5jZSo+KGltcC0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKLSAgICAgICAg
aWYgKGluc3QpIHsKLSAgICAgICAgICAgIGlmIChoaW50ID09IHFNZXRhVHlwZUlkPFFQaXhtYXAg
PigpKQotICAgICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFQaXhtYXA+
KGluc3QtPnRvUGl4bWFwKCkpOwotICAgICAgICAgICAgaWYgKGhpbnQgPT0gcU1ldGFUeXBlSWQ8
UUltYWdlPigpKQotICAgICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFJ
bWFnZT4oaW5zdC0+dG9JbWFnZSgpKTsKLSAgICAgICAgfQorICAgICAgICBRdFBpeG1hcEluc3Rh
bmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PFF0UGl4bWFwSW5zdGFuY2UqPihpbXAtPmdldElu
dGVybmFsSW5zdGFuY2UoKSk7CisgICAgICAgIGlmICghaW5zdGFuY2UpCisgICAgICAgICAgICBy
ZXR1cm4gUVZhcmlhbnQoKTsKKworICAgICAgICBpZiAoaGludCA9PSBxTWV0YVR5cGVJZDxRUGl4
bWFwID4oKSkKKyAgICAgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFQaXhtYXA+
KGluc3RhbmNlLT50b1BpeG1hcCgpKTsKKworICAgICAgICBpZiAoaGludCA9PSBxTWV0YVR5cGVJ
ZDxRSW1hZ2U+KCkpCisgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRSW1h
Z2U+KGluc3RhbmNlLT50b0ltYWdlKCkpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiBRVmFyaWFudCgpOwogfQogSlNPYmplY3QqIFF0UGl4bWFwSW5zdGFuY2U6OmNyZWF0ZVJ1
bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3Qs
IGNvbnN0IFFWYXJpYW50JiBkYXRhKQogewpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDcyOSkKKysrIFdlYktp
dC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMi0x
MiAgTm9hbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBNaW5vciBpbXByb3Zl
bWVudCB0byBoeWJyaWQgUVBpeG1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzQ1MDcKKworICAgICAgICAqIHRlc3RzL2h5YnJpZFBpeG1hcC90ZXN0
Lmh0bWw6IHVzZSBhc3NpZ25Ub0hUTUxJbWFnZUVsZW1lbnQgb24gYW4KKyAgICAgICAgZXhpc3Rp
bmcgZWxlbWVudCBpbnN0ZWFkIG9mIHRvSFRNTEltYWdlRWxlbWVudCB3aGljaCBjcmVhdGVzIGEg
bmV3IG9uZQorCiAyMDEwLTAyLTEyICBEaWVnbyBHb256YWxleiAgPGRpZWdvLmdvbnphbGV6QG9w
ZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3Rp
YW5zZW4uCkluZGV4OiBXZWJLaXQvcXQvdGVzdHMvaHlicmlkUGl4bWFwL3Rlc3QuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvcXQvdGVzdHMvaHlicmlkUGl4bWFwL3Rlc3QuaHRtbAkocmV2aXNp
b24gNTQ3MjgpCisrKyBXZWJLaXQvcXQvdGVzdHMvaHlicmlkUGl4bWFwL3Rlc3QuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtOSwxMSArOSwxNyBAQAogICAgICAgICAgICAgICAgIHZhciBvYmogPSBt
eVdpZGdldC5pbWFnZTsKICAgICAgICAgICAgICAgICB2YXIgcHhtID0gbXlXaWRnZXQucGl4bWFw
OwogCi0gICAgICAgICAgICAgICAgdmFyIGltZyA9IG9iai50b0hUTUxJbWFnZUVsZW1lbnQoKTsK
KyAgICAgICAgICAgICAgICB2YXIgaW1nID0gbmV3IEltYWdlOworICAgICAgICAgICAgICAgIG9i
ai5hc3NpZ25Ub0hUTUxJbWFnZUVsZW1lbnQoaW1nKTsKICAgICAgICAgICAgICAgICB2YXIgaW1n
MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWcxIik7CiAgICAgICAgICAgICAgICAgdmFy
IGltZzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nMiIpOworICAgICAgICAgICAgICAg
IHZhciBpbWczID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZzMiKTsKKyAgICAgICAgICAg
ICAgICB2YXIgaW1nNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWc0Iik7CiAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWcpOwotICAgICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocHhtLnRvSFRNTEltYWdlRWxlbWVudCgpKTsKKyAg
ICAgICAgICAgICAgICBvYmouYXNzaWduVG9IVE1MSW1hZ2VFbGVtZW50KGltZzMpOworICAgICAg
ICAgICAgICAgIHB4bS5hc3NpZ25Ub0hUTUxJbWFnZUVsZW1lbnQoaW1nNCk7CisgICAgICAgICAg
ICAgICAgbXlXaWRnZXQuY29tcGFyZShweG0ud2lkdGgsIGltZzQud2lkdGgpOworICAgICAgICAg
ICAgICAgIG15V2lkZ2V0LmNvbXBhcmUob2JqLndpZHRoLCBpbWczLndpZHRoKTsKICAgICAgICAg
ICAgICAgICB2YXIgc2lnbmFsc0ZpcmVkID0gMDsKICAgICAgICAgICAgICAgICBteVdpZGdldC5j
b21wYXJlKG9iai50b1N0cmluZygpLCJbUXQgTmF0aXZlIFBpeG1hcCAiK29iai53aWR0aCsiLCIr
b2JqLmhlaWdodCsiXSIpOwogICAgICAgICAgICAgICAgIG15V2lkZ2V0LmNvbXBhcmUoU3RyaW5n
KHB4bSksIltRdCBOYXRpdmUgUGl4bWFwICIrcHhtLndpZHRoKyIsIitweG0uaGVpZ2h0KyJdIik7
CkBAIC01Myw1ICs1OSw3IEBACiAgICAgPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+CiAgICAg
ICAgIDxpbWcgaWQ9ImltZzEiIC8+CiAgICAgICAgIDxpbWcgaWQ9ImltZzIiIC8+CisgICAgICAg
IDxpbWcgaWQ9ImltZzMiIC8+CisgICAgICAgIDxpbWcgaWQ9ImltZzQiIC8+CiAgICAgPC9ib2R5
PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48659</attachid>
            <date>2010-02-12 13:36:50 -0800</date>
            <delta_ts>2010-02-12 17:09:47 -0800</delta_ts>
            <desc>enable applying a QPixmap from a native QObject to an HTML img element + minor style fixes</desc>
            <filename>patch-34507-3.diff</filename>
            <type>text/plain</type>
            <size>17451</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDcyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDItMTIgIE5vYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRo
YWxAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF0gTWlub3IgaW1wcm92ZW1lbnQgdG8gaHlicmlkIFFQaXhtYXAKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTA3CisgICAgICAgIElu
c3RlYWQgb2YgaGF2aW5nIHRvSFRNTEltYWdlRWxlbWVudCB3aGljaCBjcmVhdGVzIGEgbmV3IGVs
ZW1lbnQsCisgICAgICAgIGFzc2lnblRvSFRNTEltYWdlRWxlbWVudCB3b3VsZCBzZXQgYW4gZXhp
c3RpbmcgSFRNTCA8aW1nLz4gZWxlbWVudCB0bworICAgICAgICBjb250YWluIHRoZSBuYXRpdmUg
UVBpeG1hcC9RSW1nZS4KKyAgICAgICAgQWxzbyBtYWRlIHNvbWUgc3R5bGUgZml4ZXMuCisKKyAg
ICAgICAgQWRkaXRpb25zIHRvIGV4aXN0aW5nIHRlc3RzOiBzZWUgV2ViS2l0L3F0L3Rlc3RzCisK
KyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpRdFBpeG1hcFdpZHRoRmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKTogc3R5bGUK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwSGVpZ2h0RmllbGQ6OnZhbHVlRnJvbUlu
c3RhbmNlKTogc3R5bGUKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwQXNzaWduVG9F
bGVtZW50TWV0aG9kOjpuYW1lKTogYXNzaWduVG8KKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0
UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjppbnZva2UpOiBuZXcgZnVuY3Rpb24KKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjpudW1QYXJh
bWV0ZXJzKTogMQorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBUb0RhdGFVcmxNZXRo
b2Q6Omludm9rZSk6IHN0eWxlCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcFRvU3Ry
aW5nTWV0aG9kOjppbnZva2UpOiBzdHlsZQorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXht
YXBJbnN0YW5jZTo6aW52b2tlTWV0aG9kKTogc3R5bGUKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OlF0UGl4bWFwQ2xhc3M6Om1ldGhvZHNOYW1lZCk6IG5ldyBmdW5jLCByZW1vdmVkIG9sZAorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyk6
IGRpdHRvCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcEluc3RhbmNlOjpkZWZhdWx0
VmFsdWUpOiBzdHlsZQorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBJbnN0YW5jZTo6
dmFsdWVPZik6IHN0eWxlCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcEluc3RhbmNl
Ojp0b1BpeG1hcCk6IHN0eWxlCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcEluc3Rh
bmNlOjp2YXJpYW50RnJvbU9iamVjdCk6IHN0eWxlCisKIDIwMTAtMDItMTIgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIu
CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkocmV2aXNpb24gNTQ3
MjgpCisrKyBXZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAsMTEgKzIwLDcgQEAKICNpbmNsdWRlICJxdF9waXhtYXBydW50aW1lLmgiCiAK
ICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSlNMb2NrLmgiCkBAIC01NCwxOCArNTAsMTkgQEAgcHVibGljOgogY2xhc3MgUXRQaXhtYXBX
aWR0aEZpZWxkIDogcHVibGljIEZpZWxkIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogbmFtZSgpIHsgcmV0dXJuICJ3aWR0aCI7IH0KLSAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVG
cm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogcGl4bWFwKSBjb25z
dAorICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBq
c051bWJlcihleGVjLCBzdGF0aWNfY2FzdDxjb25zdCBRdFBpeG1hcEluc3RhbmNlKj4ocGl4bWFw
KS0+d2lkdGgoKSk7CisgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBzdGF0aWNfY2FzdDxj
b25zdCBRdFBpeG1hcEluc3RhbmNlKj4oaW5zdGFuY2UpLT53aWR0aCgpKTsKICAgICB9CiAgICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5j
ZSosIEpTVmFsdWUpIGNvbnN0IHt9CiB9OworCiBjbGFzcyBRdFBpeG1hcEhlaWdodEZpZWxkIDog
cHVibGljIEZpZWxkIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpIHsg
cmV0dXJuICJoZWlnaHQiOyB9Ci0gICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3QpIGNvbnN0CisgICAgdmlydHVh
bCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFu
Y2UqIGluc3RhbmNlKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMs
IHN0YXRpY19jYXN0PGNvbnN0IFF0UGl4bWFwSW5zdGFuY2UqPihpbnN0KS0+aGVpZ2h0KCkpOwor
ICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgc3RhdGljX2Nhc3Q8Y29uc3QgUXRQaXhtYXBJ
bnN0YW5jZSo+KGluc3RhbmNlKS0+aGVpZ2h0KCkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkg
Y29uc3Qge30KIH07CkBAIC03Niw3NyArNzMsNjggQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQotICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBl
eGVjLCBRVmFyaWFudCYsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgUXRQaXhtYXBJbnN0
YW5jZSogaW5zdCkgPSAwOworICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBl
eGVjLCBRdFBpeG1hcEluc3RhbmNlKiwgY29uc3QgQXJnTGlzdCYpID0gMDsKIAogfTsKIAotY2xh
c3MgUXRQaXhtYXBDcmVhdGVFbGVtZW50TWV0aG9kIDogcHVibGljIFF0UGl4bWFwUnVudGltZU1l
dGhvZCB7CisvLyB0aGlzIGZ1bmN0aW9uIHJlY2VpdmVzIGFuIEhUTUwgaW1hZ2UgZWxlbWVudCBh
cyBhIHBhcmFtZXRlciwgbWFrZXMgaXQgZGlzcGxheSB0aGUgcGl4bWFwL2ltYWdlIGZyb20gUXQK
K2NsYXNzIFF0UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kIDogcHVibGljIFF0UGl4bWFwUnVu
dGltZU1ldGhvZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUoKSB7IHJl
dHVybiAidG9IVE1MSW1hZ2VFbGVtZW50IjsgfQotICAgIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0
ZSogZXhlYywgUVZhcmlhbnQmIHYsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgUXRQaXht
YXBJbnN0YW5jZSopCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUoKSB7IHJldHVybiAiYXNz
aWduVG9IVE1MSW1hZ2VFbGVtZW50IjsgfQorICAgIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0ZSog
ZXhlYywgUXRQaXhtYXBJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiAg
ICAgewotICAgICAgICBRUGl4bWFwIHB4bTsKLSAgICAgICAgaWYgKHYudHlwZSgpID09IHN0YXRp
Y19jYXN0PFFWYXJpYW50OjpUeXBlPihxTWV0YVR5cGVJZDxRSW1hZ2U+KCkpKSB7Ci0gICAgICAg
ICAgICBweG0gPSBRUGl4bWFwOjpmcm9tSW1hZ2Uodi52YWx1ZTxRSW1hZ2U+KCkpOwotICAgICAg
ICAgICAgdiA9IFFWYXJpYW50Ojpmcm9tVmFsdWU8UVBpeG1hcD4ocHhtKTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBweG0gPSB2LnZhbHVlPFFQaXhtYXA+KCk7Ci0KLSAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gMDsKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbCA9
IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4ocm9vdC0+Z2xvYmFsT2JqZWN0KCkpOwot
ICAgICAgICBpZiAoZ2xvYmFsKSB7Ci0gICAgICAgICAgICBET01XaW5kb3cqIGRXaW5kb3cgPSB0
b0RPTVdpbmRvdyhnbG9iYWwpOwotICAgICAgICAgICAgaWYgKGRXaW5kb3cpCi0gICAgICAgICAg
ICAgICAgZG9jdW1lbnQgPSBkV2luZG93LT5kb2N1bWVudCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGRvY3VtZW50KSB7Ci0gICAgICAgICAgICBQYXNzUmVmUHRyPFN0aWxsSW1hZ2U+IGlt
ZyA9IFdlYkNvcmU6OlN0aWxsSW1hZ2U6OmNyZWF0ZShweG0pOwotICAgICAgICAgICAgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gbmV3IEhUTUxJbWFnZUVsZW1lbnQoSFRNTE5hbWVz
OjppbWdUYWcsIGRvY3VtZW50KTsKLSAgICAgICAgICAgIGltYWdlLT5zZXRDYWNoZWRJbWFnZShu
ZXcgQ2FjaGVkSW1hZ2UoaW1nLmdldCgpKSk7Ci0gICAgICAgICAgICB0b0pTKGV4ZWMsIGdsb2Jh
bCwgZG9jdW1lbnQpOwotICAgICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KHRvSlMoZXhlYywgZ2xv
YmFsLCBpbWFnZS5yZWxlYXNlKCkpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWFyZ3Muc2l6
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdEFyZyA9IGFyZ3MuYXQoMCkudG9PYmplY3QoZXhlYyk7CisgICAgICAgIGlmICgh
b2JqZWN0QXJnKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAg
aWYgKG9iamVjdEFyZy0+Y2xhc3NJbmZvKCkgIT0gJkpTSFRNTEltYWdlRWxlbWVudDo6c19pbmZv
KQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAgLy8gd2Ugbm93
IGtub3cgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgPGltZz4gZWxlbWVudCBhcyB0aGUgYXJndW1lbnQs
IHdlIGNhbiBhdHRhY2ggdGhlIHBpeG1hcCB0byBpdC4KKyAgICAgICAgUGFzc1JlZlB0cjxTdGls
bEltYWdlPiBzdGlsbEltYWdlID0gV2ViQ29yZTo6U3RpbGxJbWFnZTo6Y3JlYXRlKGluc3RhbmNl
LT50b1BpeG1hcCgpKTsKKyAgICAgICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KHN0YXRpY19jYXN0PEpTSFRNTEltYWdlRWxl
bWVudCo+KG9iamVjdEFyZyktPmltcGwoKSk7CisgICAgICAgIGltYWdlRWxlbWVudC0+c2V0Q2Fj
aGVkSW1hZ2UobmV3IENhY2hlZEltYWdlKHN0aWxsSW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
aW5zdGFuY2UtPnJvb3RPYmplY3QoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICB0b0pTKGV4
ZWMsIGdsb2JhbCwgaW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpKTsKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgfQogCisgICAgdmlydHVhbCBpbnQgbnVtUGFyYW1ldGVycygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CiB9OwogCisvLyB0aGlzIGZ1bmN0
aW9uIGVuY29kZXMgdGhlIGltYWdlIHRvIGEgZGF0YVVybCwgdG8gYmUgdXNlZCBpbiBiYWNrZ3Jv
dW5kIGV0Yy4gTm90ZTogdmVyeSBzbG93LgogY2xhc3MgUXRQaXhtYXBUb0RhdGFVcmxNZXRob2Qg
OiBwdWJsaWMgUXRQaXhtYXBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgY2hhciogbmFtZSgpIHsgcmV0dXJuICJ0b0RhdGFVcmwiOyB9Ci0gICAgSlNWYWx1ZSBpbnZv
a2UoRXhlY1N0YXRlKiBleGVjLCBRVmFyaWFudCYgdiwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiBy
b290LCBRdFBpeG1hcEluc3RhbmNlKikKKyAgICBKU1ZhbHVlIGludm9rZShFeGVjU3RhdGUqIGV4
ZWMsIFF0UGl4bWFwSW5zdGFuY2UqIGluc3RhbmNlLCBjb25zdCBBcmdMaXN0JikKICAgICB7Ci0g
ICAgICAgIFFJbWFnZSBpbWFnZTsKLSAgICAgICAgLy8gZm9yIGdldHRpbmcgdGhlIGRhdGEgdXJs
LCB3ZSBhbHdheXMgcHJlZmVyIHRoZSBpbWFnZS4KLSAgICAgICAgaWYgKHYudHlwZSgpID09IHN0
YXRpY19jYXN0PFFWYXJpYW50OjpUeXBlPihxTWV0YVR5cGVJZDxRUGl4bWFwPigpKSkgewotICAg
ICAgICAgICAgaW1hZ2UgPSB2LnZhbHVlPFFQaXhtYXA+KCkudG9JbWFnZSgpOwotICAgICAgICAg
ICAgdiA9IFFWYXJpYW50Ojpmcm9tVmFsdWU8UUltYWdlPihpbWFnZSk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgaW1hZ2UgPSB2LnZhbHVlPFFJbWFnZT4oKTsKLSAgICAgICAgUUJ5dGVB
cnJheSBiYTsKLSAgICAgICAgUUJ1ZmZlciBiKCZiYSk7Ci0gICAgICAgIGltYWdlLnNhdmUoJmIs
ICJQTkciKTsKLSAgICAgICAgY29uc3QgUVN0cmluZyBiNjQgPSBRU3RyaW5nKCJkYXRhOmltYWdl
L3BuZztiYXNlNjQsIikgKyBiYS50b0Jhc2U2NCgpOwotICAgICAgICBjb25zdCBVU3RyaW5nIHVz
dHJpbmcoKFVDaGFyKiliNjQudXRmMTYoKSwgYjY0Lmxlbmd0aCgpKTsKKyAgICAgICAgUUJ5dGVB
cnJheSBieXRlQXJyYXk7CisgICAgICAgIFFCdWZmZXIgYnVmZmVyKCZieXRlQXJyYXkpOworICAg
ICAgICBpbnN0YW5jZS0+dG9JbWFnZSgpLnNhdmUoJmJ1ZmZlciwgIlBORyIpOworICAgICAgICBj
b25zdCBRU3RyaW5nIGVuY29kZWRTdHJpbmcgPSBRU3RyaW5nKCJkYXRhOmltYWdlL3BuZztiYXNl
NjQsIikgKyBieXRlQXJyYXkudG9CYXNlNjQoKTsKKyAgICAgICAgY29uc3QgVVN0cmluZyB1c3Ry
aW5nKChVQ2hhciopZW5jb2RlZFN0cmluZy51dGYxNigpLCBlbmNvZGVkU3RyaW5nLmxlbmd0aCgp
KTsKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHVzdHJpbmcpOwogICAgIH0KLQogfTsK
IAogY2xhc3MgUXRQaXhtYXBUb1N0cmluZ01ldGhvZCA6IHB1YmxpYyBRdFBpeG1hcFJ1bnRpbWVN
ZXRob2QgewogICAgIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpIHsgcmV0
dXJuICJ0b1N0cmluZyI7IH0KLSAgICBKU1ZhbHVlIGludm9rZShFeGVjU3RhdGUqIGV4ZWMsIFFW
YXJpYW50JiB2LCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3QsIFF0UGl4bWFwSW5zdGFuY2Uq
IGluc3QpCisgICAgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBleGVjLCBRdFBpeG1hcEluc3Rh
bmNlKiBpbnN0YW5jZSwgY29uc3QgQXJnTGlzdCYpCiAgICAgewotICAgICAgICByZXR1cm4gaW5z
dC0+dmFsdWVPZihleGVjKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlLT52YWx1ZU9mKGV4ZWMp
OwogICAgIH0KLQogfTsKIAogc3RydWN0IFF0UGl4bWFwTWV0YURhdGEgewogICAgIFF0UGl4bWFw
VG9EYXRhVXJsTWV0aG9kIHRvRGF0YVVybE1ldGhvZDsKLSAgICBRdFBpeG1hcENyZWF0ZUVsZW1l
bnRNZXRob2QgY3JlYXRlRWxlbWVudE1ldGhvZDsKKyAgICBRdFBpeG1hcEFzc2lnblRvRWxlbWVu
dE1ldGhvZCBhc3NpZ25Ub0VsZW1lbnRNZXRob2Q7CiAgICAgUXRQaXhtYXBUb1N0cmluZ01ldGhv
ZCB0b1N0cmluZ01ldGhvZDsKICAgICBRdFBpeG1hcEhlaWdodEZpZWxkIGhlaWdodEZpZWxkOwog
ICAgIFF0UGl4bWFwV2lkdGhGaWVsZCB3aWR0aEZpZWxkOwpAQCAtMTc5LDcgKzE2Nyw2IEBAIFF0
UGl4bWFwUnVudGltZU9iamVjdEltcDo6UXRQaXhtYXBSdW50aW0KIAogY29uc3QgQ2xhc3NJbmZv
IFF0UGl4bWFwUnVudGltZU9iamVjdEltcDo6c19pbmZvID0geyAiUXRQaXhtYXBSdW50aW1lT2Jq
ZWN0IiwgJlJ1bnRpbWVPYmplY3RJbXA6OnNfaW5mbywgMCwgMCB9OwogCi0KIFF0UGl4bWFwQ2xh
c3M6OlF0UGl4bWFwQ2xhc3MoKQogewogfQpAQCAtMTkzLDggKzE4MCw4IEBAIENsYXNzKiBRdFBp
eG1hcEluc3RhbmNlOjpnZXRDbGFzcygpIGNvbnMKIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6
aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTWV0aG9kTGlzdCYgbWV0aG9kcywg
Y29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBpZiAobWV0aG9kcy5zaXplKCkgPT0gMSkgewot
ICAgICAgICBRdFBpeG1hcFJ1bnRpbWVNZXRob2QqIG10ZCA9IHN0YXRpY19jYXN0PFF0UGl4bWFw
UnVudGltZU1ldGhvZCo+KG1ldGhvZHNbMF0pOyAgICAgICAgCi0gICAgICAgIHJldHVybiBtdGQt
Pmludm9rZShleGVjLCBkYXRhLCByb290T2JqZWN0KCksIHRoaXMpOworICAgICAgICBRdFBpeG1h
cFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PFF0UGl4bWFwUnVudGltZU1ldGhv
ZCo+KG1ldGhvZHNbMF0pOworICAgICAgICByZXR1cm4gbWV0aG9kLT5pbnZva2UoZXhlYywgdGhp
cywgYXJncyk7CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAtMjA0LDgg
KzE5MSw4IEBAIE1ldGhvZExpc3QgUXRQaXhtYXBDbGFzczo6bWV0aG9kc05hbWVkKGMKICAgICBN
ZXRob2RMaXN0IG1ldGhvZHM7CiAgICAgaWYgKGlkZW50aWZpZXIgPT0gUXRQaXhtYXBUb0RhdGFV
cmxNZXRob2Q6Om5hbWUoKSkKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9tZXRh
RGF0YS50b0RhdGFVcmxNZXRob2QpOwotICAgIGVsc2UgaWYgKGlkZW50aWZpZXIgPT0gUXRQaXht
YXBDcmVhdGVFbGVtZW50TWV0aG9kOjpuYW1lKCkpCi0gICAgICAgIG1ldGhvZHMuYXBwZW5kKCZx
dF9waXhtYXBfbWV0YURhdGEuY3JlYXRlRWxlbWVudE1ldGhvZCk7CisgICAgZWxzZSBpZiAoaWRl
bnRpZmllciA9PSBRdFBpeG1hcEFzc2lnblRvRWxlbWVudE1ldGhvZDo6bmFtZSgpKQorICAgICAg
ICBtZXRob2RzLmFwcGVuZCgmcXRfcGl4bWFwX21ldGFEYXRhLmFzc2lnblRvRWxlbWVudE1ldGhv
ZCk7CiAgICAgZWxzZSBpZiAoaWRlbnRpZmllciA9PSBRdFBpeG1hcFRvU3RyaW5nTWV0aG9kOjpu
YW1lKCkpCiAgICAgICAgIG1ldGhvZHMuYXBwZW5kKCZxdF9waXhtYXBfbWV0YURhdGEudG9TdHJp
bmdNZXRob2QpOwogICAgIHJldHVybiBtZXRob2RzOwpAQCAtMjIzLDcgKzIxMCw3IEBAIEZpZWxk
KiBRdFBpeG1hcENsYXNzOjpmaWVsZE5hbWVkKGNvbnN0IEkKIHZvaWQgUXRQaXhtYXBJbnN0YW5j
ZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFy
cikKIHsKICAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgVVN0cmluZyhRdFBpeG1hcFRvRGF0
YVVybE1ldGhvZDo6bmFtZSgpKSkpOwotICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3Ry
aW5nKFF0UGl4bWFwQ3JlYXRlRWxlbWVudE1ldGhvZDo6bmFtZSgpKSkpOworICAgIGFyci5hZGQo
SWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjpu
YW1lKCkpKSk7CiAgICAgYXJyLmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmcoUXRQaXhtYXBU
b1N0cmluZ01ldGhvZDo6bmFtZSgpKSkpOwogICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBV
U3RyaW5nKFF0UGl4bWFwV2lkdGhGaWVsZDo6bmFtZSgpKSkpOwogICAgIGFyci5hZGQoSWRlbnRp
ZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwSGVpZ2h0RmllbGQ6Om5hbWUoKSkpKTsKQEAgLTIz
NiwxNSArMjIzLDE3IEBAIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6ZGVmYXVsdFZhbHVlKEUK
ICAgICAgICAgICAgICAgICAoZGF0YS50eXBlKCkgPT0gc3RhdGljX2Nhc3Q8UVZhcmlhbnQ6OlR5
cGU+KHFNZXRhVHlwZUlkPFFJbWFnZT4oKSkgJiYgIShkYXRhLnZhbHVlPFFJbWFnZT4oKSkuaXNO
dWxsKCkpCiAgICAgICAgICAgICAgICAgfHwgKGRhdGEudHlwZSgpID09IHN0YXRpY19jYXN0PFFW
YXJpYW50OjpUeXBlPihxTWV0YVR5cGVJZDxRUGl4bWFwPigpKSAmJiAhZGF0YS52YWx1ZTxRUGl4
bWFwPigpLmlzTnVsbCgpKSk7CiAgICAgfQorCiAgICAgaWYgKHB0eXBlID09IFByZWZlclN0cmlu
ZykKICAgICAgICAgcmV0dXJuIHZhbHVlT2YoZXhlYyk7CisKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIH0KIAogSlNWYWx1ZSBRdFBpeG1hcEluc3RhbmNlOjp2YWx1ZU9mKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIHsKLSAgICBjb25zdCBRU3RyaW5nIHRvU3RyID0gUVN0cmluZygiW1F0IE5h
dGl2ZSBQaXhtYXAgJTEsJTJdIikuYXJnKHdpZHRoKCkpLmFyZyhoZWlnaHQoKSk7Ci0gICAgVVN0
cmluZyB1c3RyaW5nKChVQ2hhciopdG9TdHIudXRmMTYoKSwgdG9TdHIubGVuZ3RoKCkpOworICAg
IGNvbnN0IFFTdHJpbmcgc3RyaW5nVmFsdWUgPSBRU3RyaW5nKCJbUXQgTmF0aXZlIFBpeG1hcCAl
MSwlMl0iKS5hcmcod2lkdGgoKSkuYXJnKGhlaWdodCgpKTsKKyAgICBVU3RyaW5nIHVzdHJpbmco
KFVDaGFyKilzdHJpbmdWYWx1ZS51dGYxNigpLCBzdHJpbmdWYWx1ZS5sZW5ndGgoKSk7CiAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHVzdHJpbmcpOwogfQogCkBAIC0yNzUsMjQgKzI2NCwyNyBA
QCBRUGl4bWFwIFF0UGl4bWFwSW5zdGFuY2U6OnRvUGl4bWFwKCkKIHsKICAgICBpZiAoZGF0YS50
eXBlKCkgPT0gc3RhdGljX2Nhc3Q8UVZhcmlhbnQ6OlR5cGU+KHFNZXRhVHlwZUlkPFFQaXhtYXA+
KCkpKQogICAgICAgICByZXR1cm4gZGF0YS52YWx1ZTxRUGl4bWFwPigpOworCiAgICAgaWYgKGRh
dGEudHlwZSgpID09IHN0YXRpY19jYXN0PFFWYXJpYW50OjpUeXBlPihxTWV0YVR5cGVJZDxRSW1h
Z2U+KCkpKSB7Ci0gICAgICAgIGNvbnN0IFFQaXhtYXAgcHhtID0gUVBpeG1hcDo6ZnJvbUltYWdl
KGRhdGEudmFsdWU8UUltYWdlPigpKTsKLSAgICAgICAgZGF0YSA9IFFWYXJpYW50Ojpmcm9tVmFs
dWU8UVBpeG1hcD4ocHhtKTsKLSAgICAgICAgcmV0dXJuIHB4bTsKKyAgICAgICAgY29uc3QgUVBp
eG1hcCBwaXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2UoZGF0YS52YWx1ZTxRSW1hZ2U+KCkpOwor
ICAgICAgICBkYXRhID0gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRUGl4bWFwPihwaXhtYXApOworICAg
ICAgICByZXR1cm4gcGl4bWFwOwogICAgIH0KLSAgICByZXR1cm4gUVBpeG1hcCgpOwogCisgICAg
cmV0dXJuIFFQaXhtYXAoKTsKIH0KIAogUUltYWdlIFF0UGl4bWFwSW5zdGFuY2U6OnRvSW1hZ2Uo
KQogewogICAgIGlmIChkYXRhLnR5cGUoKSA9PSBzdGF0aWNfY2FzdDxRVmFyaWFudDo6VHlwZT4o
cU1ldGFUeXBlSWQ8UUltYWdlPigpKSkKICAgICAgICAgcmV0dXJuIGRhdGEudmFsdWU8UUltYWdl
PigpOworCiAgICAgaWYgKGRhdGEudHlwZSgpID09IHN0YXRpY19jYXN0PFFWYXJpYW50OjpUeXBl
PihxTWV0YVR5cGVJZDxRUGl4bWFwPigpKSkgewotICAgICAgICBjb25zdCBRSW1hZ2UgaW1nID0g
ZGF0YS52YWx1ZTxRUGl4bWFwPigpLnRvSW1hZ2UoKTsKLSAgICAgICAgZGF0YSA9IFFWYXJpYW50
Ojpmcm9tVmFsdWU8UUltYWdlPihpbWcpOwotICAgICAgICByZXR1cm4gaW1nOworICAgICAgICBj
b25zdCBRSW1hZ2UgaW1hZ2UgPSBkYXRhLnZhbHVlPFFQaXhtYXA+KCkudG9JbWFnZSgpOworICAg
ICAgICBkYXRhID0gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRSW1hZ2U+KGltYWdlKTsKKyAgICAgICAg
cmV0dXJuIGltYWdlOwogICAgIH0KKwogICAgIHJldHVybiBRSW1hZ2UoKTsKIH0KIApAQCAtMzAz
LDM0ICsyOTUsNDUgQEAgUVZhcmlhbnQgUXRQaXhtYXBJbnN0YW5jZTo6dmFyaWFudEZyb21PYgog
ICAgICAgICAgICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWU8UVBpeG1hcD4oUVBpeG1hcCgp
KTsKICAgICAgICAgaWYgKGhpbnQgPT0gcU1ldGFUeXBlSWQ8UUltYWdlPigpKQogICAgICAgICAg
ICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWU8UUltYWdlPihRSW1hZ2UoKSk7Ci0gICAgfSBl
bHNlIGlmIChvYmplY3QtPmluaGVyaXRzKCZKU0hUTUxJbWFnZUVsZW1lbnQ6OnNfaW5mbykpIHsK
LSAgICAgICAgSlNIVE1MSW1hZ2VFbGVtZW50KiBlbCA9IHN0YXRpY19jYXN0PEpTSFRNTEltYWdl
RWxlbWVudCo+KG9iamVjdCk7Ci0gICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihlbC0+aW1wbCgpKTsKLSAgICAgICAg
aWYgKGltYWdlRWxlbWVudCkgewotICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNJbWcgPSBpbWFn
ZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgICAgICBpZiAoY0ltZykgewotICAgICAg
ICAgICAgICAgIEltYWdlKiBpbWcgPSBjSW1nLT5pbWFnZSgpOwotICAgICAgICAgICAgICAgIGlm
IChpbWcpIHsKLSAgICAgICAgICAgICAgICAgICAgUVBpeG1hcCogcHhtID0gaW1nLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocHhtKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGhpbnQgPT0gc3RhdGljX2Nhc3Q8UU1ldGFU
eXBlOjpUeXBlPihxTWV0YVR5cGVJZDxRUGl4bWFwPigpKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID8gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRUGl4bWFwPigqcHhtKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFJbWFnZT4ocHhtLT50
b0ltYWdlKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChvYmplY3QtPmluaGVyaXRzKCZR
dFBpeG1hcFJ1bnRpbWVPYmplY3RJbXA6OnNfaW5mbykpIHsKKyAgICAgICAgcmV0dXJuIFFWYXJp
YW50KCk7CisgICAgfQorCisgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkpTSFRNTEltYWdlRWxl
bWVudDo6c19pbmZvKSkgeworICAgICAgICBKU0hUTUxJbWFnZUVsZW1lbnQqIGVsZW1lbnRKU1dy
YXBwZXIgPSBzdGF0aWNfY2FzdDxKU0hUTUxJbWFnZUVsZW1lbnQqPihvYmplY3QpOworICAgICAg
ICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VF
bGVtZW50Kj4oZWxlbWVudEpTV3JhcHBlci0+aW1wbCgpKTsKKyAgICAgICAgaWYgKCFpbWFnZUVs
ZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKyAgICAgICAgQ2FjaGVkSW1h
Z2UqIGNhY2hlSW1hZ2UgPSBpbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7CisgICAgICAgIGlm
ICghY2FjaGVJbWFnZSkKKyAgICAgICAgICAgIHJldHVybiBRVmFyaWFudCgpOworCisgICAgICAg
IEltYWdlKiBpbWFnZSA9IGNhY2hlSW1hZ2UtPmltYWdlKCk7CisgICAgICAgIGlmICghaW1hZ2Up
CisgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKworICAgICAgICBRUGl4bWFwKiBwaXht
YXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgaWYgKCFw
aXhtYXApCisgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKworICAgICAgICByZXR1cm4g
KGhpbnQgPT0gc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPihxTWV0YVR5cGVJZDxRUGl4bWFw
PigpKSkKKyAgICAgICAgICAgICAgICAgID8gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRUGl4bWFwPigq
cGl4bWFwKQorICAgICAgICAgICAgICAgICAgOiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFJbWFnZT4o
cGl4bWFwLT50b0ltYWdlKCkpOworICAgIH0KKworICAgIGlmIChvYmplY3QtPmluaGVyaXRzKCZR
dFBpeG1hcFJ1bnRpbWVPYmplY3RJbXA6OnNfaW5mbykpIHsKICAgICAgICAgUXRQaXhtYXBSdW50
aW1lT2JqZWN0SW1wKiBpbXAgPSBzdGF0aWNfY2FzdDxRdFBpeG1hcFJ1bnRpbWVPYmplY3RJbXAq
PihvYmplY3QpOwotICAgICAgICBRdFBpeG1hcEluc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8
UXRQaXhtYXBJbnN0YW5jZSo+KGltcC0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKLSAgICAgICAg
aWYgKGluc3QpIHsKLSAgICAgICAgICAgIGlmIChoaW50ID09IHFNZXRhVHlwZUlkPFFQaXhtYXA+
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWU8UVBpeG1hcD4o
aW5zdC0+dG9QaXhtYXAoKSk7Ci0gICAgICAgICAgICBpZiAoaGludCA9PSBxTWV0YVR5cGVJZDxR
SW1hZ2U+KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWU8UUlt
YWdlPihpbnN0LT50b0ltYWdlKCkpOwotICAgICAgICB9CisgICAgICAgIFF0UGl4bWFwSW5zdGFu
Y2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8UXRQaXhtYXBJbnN0YW5jZSo+KGltcC0+Z2V0SW50
ZXJuYWxJbnN0YW5jZSgpKTsKKyAgICAgICAgaWYgKCFpbnN0YW5jZSkKKyAgICAgICAgICAgIHJl
dHVybiBRVmFyaWFudCgpOworCisgICAgICAgIGlmIChoaW50ID09IHFNZXRhVHlwZUlkPFFQaXht
YXA+KCkpCisgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRUGl4bWFwPihp
bnN0YW5jZS0+dG9QaXhtYXAoKSk7CisKKyAgICAgICAgaWYgKGhpbnQgPT0gcU1ldGFUeXBlSWQ8
UUltYWdlPigpKQorICAgICAgICAgICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWU8UUltYWdl
PihpbnN0YW5jZS0+dG9JbWFnZSgpKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gUVZhcmlhbnQoKTsKIH0KIEpTT2JqZWN0KiBRdFBpeG1hcEluc3RhbmNlOjpjcmVhdGVSdW50
aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290LCBj
b25zdCBRVmFyaWFudCYgZGF0YSkKIHsKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNTQ3MjkpCisrKyBXZWJLaXQv
cXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDItMTIg
IE5vYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gTWlub3IgaW1wcm92ZW1l
bnQgdG8gaHlicmlkIFFQaXhtYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM0NTA3CisKKyAgICAgICAgKiB0ZXN0cy9oeWJyaWRQaXhtYXAvdGVzdC5o
dG1sOiB1c2UgYXNzaWduVG9IVE1MSW1hZ2VFbGVtZW50IG9uIGFuCisgICAgICAgIGV4aXN0aW5n
IGVsZW1lbnQgaW5zdGVhZCBvZiB0b0hUTUxJbWFnZUVsZW1lbnQgd2hpY2ggY3JlYXRlcyBhIG5l
dyBvbmUKKwogMjAxMC0wMi0xMiAgRGllZ28gR29uemFsZXogIDxkaWVnby5nb256YWxlekBvcGVu
Ym9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgpJbmRleDogV2ViS2l0L3F0L3Rlc3RzL2h5YnJpZFBpeG1hcC90ZXN0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L3Rlc3RzL2h5YnJpZFBpeG1hcC90ZXN0Lmh0bWwJKHJldmlzaW9u
IDU0NzI4KQorKysgV2ViS2l0L3F0L3Rlc3RzL2h5YnJpZFBpeG1hcC90ZXN0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTksMTEgKzksMTcgQEAKICAgICAgICAgICAgICAgICB2YXIgb2JqID0gbXlX
aWRnZXQuaW1hZ2U7CiAgICAgICAgICAgICAgICAgdmFyIHB4bSA9IG15V2lkZ2V0LnBpeG1hcDsK
IAotICAgICAgICAgICAgICAgIHZhciBpbWcgPSBvYmoudG9IVE1MSW1hZ2VFbGVtZW50KCk7Cisg
ICAgICAgICAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZTsKKyAgICAgICAgICAgICAgICBvYmou
YXNzaWduVG9IVE1MSW1hZ2VFbGVtZW50KGltZyk7CiAgICAgICAgICAgICAgICAgdmFyIGltZzEg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nMSIpOwogICAgICAgICAgICAgICAgIHZhciBp
bWcyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZzIiKTsKKyAgICAgICAgICAgICAgICB2
YXIgaW1nMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWczIik7CisgICAgICAgICAgICAg
ICAgdmFyIGltZzQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nNCIpOwogICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKLSAgICAgICAgICAgICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHB4bS50b0hUTUxJbWFnZUVsZW1lbnQoKSk7CisgICAg
ICAgICAgICAgICAgb2JqLmFzc2lnblRvSFRNTEltYWdlRWxlbWVudChpbWczKTsKKyAgICAgICAg
ICAgICAgICBweG0uYXNzaWduVG9IVE1MSW1hZ2VFbGVtZW50KGltZzQpOworICAgICAgICAgICAg
ICAgIG15V2lkZ2V0LmNvbXBhcmUocHhtLndpZHRoLCBpbWc0LndpZHRoKTsKKyAgICAgICAgICAg
ICAgICBteVdpZGdldC5jb21wYXJlKG9iai53aWR0aCwgaW1nMy53aWR0aCk7CiAgICAgICAgICAg
ICAgICAgdmFyIHNpZ25hbHNGaXJlZCA9IDA7CiAgICAgICAgICAgICAgICAgbXlXaWRnZXQuY29t
cGFyZShvYmoudG9TdHJpbmcoKSwiW1F0IE5hdGl2ZSBQaXhtYXAgIitvYmoud2lkdGgrIiwiK29i
ai5oZWlnaHQrIl0iKTsKICAgICAgICAgICAgICAgICBteVdpZGdldC5jb21wYXJlKFN0cmluZyhw
eG0pLCJbUXQgTmF0aXZlIFBpeG1hcCAiK3B4bS53aWR0aCsiLCIrcHhtLmhlaWdodCsiXSIpOwpA
QCAtNTMsNSArNTksNyBAQAogICAgIDxib2R5IG9ubG9hZD0ic3RhcnRUZXN0KCkiPgogICAgICAg
ICA8aW1nIGlkPSJpbWcxIiAvPgogICAgICAgICA8aW1nIGlkPSJpbWcyIiAvPgorICAgICAgICA8
aW1nIGlkPSJpbWczIiAvPgorICAgICAgICA8aW1nIGlkPSJpbWc0IiAvPgogICAgIDwvYm9keT4K
IDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48681</attachid>
            <date>2010-02-12 17:09:47 -0800</date>
            <delta_ts>2010-02-18 13:51:04 -0800</delta_ts>
            <desc>The native QPixmap/QImage can now assign its value to an existing image element</desc>
            <filename>patch-34507-3.diff</filename>
            <type>text/plain</type>
            <size>17807</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDcyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDItMTIgIE5vYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRo
YWxAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF0gTWlub3IgaW1wcm92ZW1lbnQgdG8gaHlicmlkIFFQaXhtYXAKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTA3CisgICAgICAgIElu
c3RlYWQgb2YgaGF2aW5nIHRvSFRNTEltYWdlRWxlbWVudCB3aGljaCBjcmVhdGVzIGEgbmV3IGVs
ZW1lbnQsCisgICAgICAgIGFzc2lnblRvSFRNTEltYWdlRWxlbWVudCB3b3VsZCBzZXQgYW4gZXhp
c3RpbmcgSFRNTCA8aW1nLz4gZWxlbWVudCB0bworICAgICAgICBjb250YWluIHRoZSBuYXRpdmUg
UVBpeG1hcC9RSW1nZS4KKyAgICAgICAgQWxzbyBtYWRlIHNvbWUgc3R5bGUgZml4ZXMuCisKKyAg
ICAgICAgQWRkaXRpb25zIHRvIGV4aXN0aW5nIHRlc3RzOiBzZWUgV2ViS2l0L3F0L3Rlc3RzCisK
KyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpRdFBpeG1hcFdpZHRoRmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKTogc3R5bGUK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwSGVpZ2h0RmllbGQ6OnZhbHVlRnJvbUlu
c3RhbmNlKTogc3R5bGUKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwQXNzaWduVG9F
bGVtZW50TWV0aG9kOjpuYW1lKTogYXNzaWduVG8KKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0
UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjppbnZva2UpOiBuZXcgZnVuY3Rpb24KKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjpudW1QYXJh
bWV0ZXJzKTogMQorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBUb0RhdGFVcmxNZXRo
b2Q6Omludm9rZSk6IHN0eWxlCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcFRvU3Ry
aW5nTWV0aG9kOjppbnZva2UpOiBzdHlsZQorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXht
YXBJbnN0YW5jZTo6aW52b2tlTWV0aG9kKTogc3R5bGUKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OlF0UGl4bWFwQ2xhc3M6Om1ldGhvZHNOYW1lZCk6IG5ldyBmdW5jLCByZW1vdmVkIG9sZAorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyk6
IGRpdHRvCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcEluc3RhbmNlOjpkZWZhdWx0
VmFsdWUpOiBzdHlsZQorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UXRQaXhtYXBJbnN0YW5jZTo6
dmFsdWVPZik6IHN0eWxlCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcEluc3RhbmNl
Ojp0b1BpeG1hcCk6IHN0eWxlCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcEluc3Rh
bmNlOjp2YXJpYW50RnJvbU9iamVjdCk6IHN0eWxlCisKIDIwMTAtMDItMTIgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIu
CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkocmV2aXNpb24gNTQ3
MjgpCisrKyBXZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAsMTEgKzIwLDcgQEAKICNpbmNsdWRlICJxdF9waXhtYXBydW50aW1lLmgiCiAK
ICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSlNMb2NrLmgiCkBAIC01NCwxOCArNTAsMTkgQEAgcHVibGljOgogY2xhc3MgUXRQaXhtYXBX
aWR0aEZpZWxkIDogcHVibGljIEZpZWxkIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogbmFtZSgpIHsgcmV0dXJuICJ3aWR0aCI7IH0KLSAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVG
cm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogcGl4bWFwKSBjb25z
dAorICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBq
c051bWJlcihleGVjLCBzdGF0aWNfY2FzdDxjb25zdCBRdFBpeG1hcEluc3RhbmNlKj4ocGl4bWFw
KS0+d2lkdGgoKSk7CisgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBzdGF0aWNfY2FzdDxj
b25zdCBRdFBpeG1hcEluc3RhbmNlKj4oaW5zdGFuY2UpLT53aWR0aCgpKTsKICAgICB9CiAgICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5j
ZSosIEpTVmFsdWUpIGNvbnN0IHt9CiB9OworCiBjbGFzcyBRdFBpeG1hcEhlaWdodEZpZWxkIDog
cHVibGljIEZpZWxkIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpIHsg
cmV0dXJuICJoZWlnaHQiOyB9Ci0gICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3QpIGNvbnN0CisgICAgdmlydHVh
bCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFu
Y2UqIGluc3RhbmNlKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMs
IHN0YXRpY19jYXN0PGNvbnN0IFF0UGl4bWFwSW5zdGFuY2UqPihpbnN0KS0+aGVpZ2h0KCkpOwor
ICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgc3RhdGljX2Nhc3Q8Y29uc3QgUXRQaXhtYXBJ
bnN0YW5jZSo+KGluc3RhbmNlKS0+aGVpZ2h0KCkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkg
Y29uc3Qge30KIH07CkBAIC03Niw3NyArNzMsNjggQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQotICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBl
eGVjLCBRVmFyaWFudCYsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgUXRQaXhtYXBJbnN0
YW5jZSogaW5zdCkgPSAwOworICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2UoRXhlY1N0YXRlKiBl
eGVjLCBRdFBpeG1hcEluc3RhbmNlKiwgY29uc3QgQXJnTGlzdCYpID0gMDsKIAogfTsKIAotY2xh
c3MgUXRQaXhtYXBDcmVhdGVFbGVtZW50TWV0aG9kIDogcHVibGljIFF0UGl4bWFwUnVudGltZU1l
dGhvZCB7CisvLyB0aGlzIGZ1bmN0aW9uIHJlY2VpdmVzIGFuIEhUTUwgaW1hZ2UgZWxlbWVudCBh
cyBhIHBhcmFtZXRlciwgbWFrZXMgaXQgZGlzcGxheSB0aGUgcGl4bWFwL2ltYWdlIGZyb20gUXQK
K2NsYXNzIFF0UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kIDogcHVibGljIFF0UGl4bWFwUnVu
dGltZU1ldGhvZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUoKSB7IHJl
dHVybiAidG9IVE1MSW1hZ2VFbGVtZW50IjsgfQotICAgIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0
ZSogZXhlYywgUVZhcmlhbnQmIHYsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgUXRQaXht
YXBJbnN0YW5jZSopCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUoKSB7IHJldHVybiAiYXNz
aWduVG9IVE1MSW1hZ2VFbGVtZW50IjsgfQorICAgIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0ZSog
ZXhlYywgUXRQaXhtYXBJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiAg
ICAgewotICAgICAgICBRUGl4bWFwIHB4bTsKLSAgICAgICAgaWYgKHYudHlwZSgpID09IHN0YXRp
Y19jYXN0PFFWYXJpYW50OjpUeXBlPihxTWV0YVR5cGVJZDxRSW1hZ2U+KCkpKSB7Ci0gICAgICAg
ICAgICBweG0gPSBRUGl4bWFwOjpmcm9tSW1hZ2Uodi52YWx1ZTxRSW1hZ2U+KCkpOwotICAgICAg
ICAgICAgdiA9IFFWYXJpYW50Ojpmcm9tVmFsdWU8UVBpeG1hcD4ocHhtKTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBweG0gPSB2LnZhbHVlPFFQaXhtYXA+KCk7Ci0KLSAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gMDsKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbCA9
IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4ocm9vdC0+Z2xvYmFsT2JqZWN0KCkpOwot
ICAgICAgICBpZiAoZ2xvYmFsKSB7Ci0gICAgICAgICAgICBET01XaW5kb3cqIGRXaW5kb3cgPSB0
b0RPTVdpbmRvdyhnbG9iYWwpOwotICAgICAgICAgICAgaWYgKGRXaW5kb3cpCi0gICAgICAgICAg
ICAgICAgZG9jdW1lbnQgPSBkV2luZG93LT5kb2N1bWVudCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGRvY3VtZW50KSB7Ci0gICAgICAgICAgICBQYXNzUmVmUHRyPFN0aWxsSW1hZ2U+IGlt
ZyA9IFdlYkNvcmU6OlN0aWxsSW1hZ2U6OmNyZWF0ZShweG0pOwotICAgICAgICAgICAgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gbmV3IEhUTUxJbWFnZUVsZW1lbnQoSFRNTE5hbWVz
OjppbWdUYWcsIGRvY3VtZW50KTsKLSAgICAgICAgICAgIGltYWdlLT5zZXRDYWNoZWRJbWFnZShu
ZXcgQ2FjaGVkSW1hZ2UoaW1nLmdldCgpKSk7Ci0gICAgICAgICAgICB0b0pTKGV4ZWMsIGdsb2Jh
bCwgZG9jdW1lbnQpOwotICAgICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KHRvSlMoZXhlYywgZ2xv
YmFsLCBpbWFnZS5yZWxlYXNlKCkpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWFyZ3Muc2l6
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdEFyZyA9IGFyZ3MuYXQoMCkudG9PYmplY3QoZXhlYyk7CisgICAgICAgIGlmICgh
b2JqZWN0QXJnKQorICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAgICAg
aWYgKCFvYmplY3RBcmctPmluaGVyaXRzKCZKU0hUTUxJbWFnZUVsZW1lbnQ6OnNfaW5mbykpCisg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgICAgICAvLyB3ZSBub3cga25v
dyB0aGF0IHdlIGhhdmUgYSB2YWxpZCA8aW1nPiBlbGVtZW50IGFzIHRoZSBhcmd1bWVudCwgd2Ug
Y2FuIGF0dGFjaCB0aGUgcGl4bWFwIHRvIGl0LgorICAgICAgICBQYXNzUmVmUHRyPFN0aWxsSW1h
Z2U+IHN0aWxsSW1hZ2UgPSBXZWJDb3JlOjpTdGlsbEltYWdlOjpjcmVhdGUoaW5zdGFuY2UtPnRv
UGl4bWFwKCkpOworICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MSW1hZ2VFbGVtZW50
Kj4ob2JqZWN0QXJnKS0+aW1wbCgpKTsKKyAgICAgICAgaW1hZ2VFbGVtZW50LT5zZXRDYWNoZWRJ
bWFnZShuZXcgQ2FjaGVkSW1hZ2Uoc3RpbGxJbWFnZS5nZXQoKSkpOworICAgICAgICBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihpbnN0
YW5jZS0+cm9vdE9iamVjdCgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgICAgIHRvSlMoZXhlYywg
Z2xvYmFsLCBpbWFnZUVsZW1lbnQtPmRvY3VtZW50KCkpOwogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KIH07CiAKKy8vIHRoaXMgZnVuY3Rpb24g
ZW5jb2RlcyB0aGUgaW1hZ2UgdG8gYSBkYXRhVXJsLCB0byBiZSB1c2VkIGluIGJhY2tncm91bmQg
ZXRjLiBOb3RlOiB2ZXJ5IHNsb3cuCiBjbGFzcyBRdFBpeG1hcFRvRGF0YVVybE1ldGhvZCA6IHB1
YmxpYyBRdFBpeG1hcFJ1bnRpbWVNZXRob2QgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBuYW1lKCkgeyByZXR1cm4gInRvRGF0YVVybCI7IH0KLSAgICBKU1ZhbHVlIGludm9rZShF
eGVjU3RhdGUqIGV4ZWMsIFFWYXJpYW50JiB2LCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3Qs
IFF0UGl4bWFwSW5zdGFuY2UqKQorICAgIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0ZSogZXhlYywg
UXRQaXhtYXBJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IEFyZ0xpc3QmKQogICAgIHsKLSAgICAg
ICAgUUltYWdlIGltYWdlOwotICAgICAgICAvLyBmb3IgZ2V0dGluZyB0aGUgZGF0YSB1cmwsIHdl
IGFsd2F5cyBwcmVmZXIgdGhlIGltYWdlLgotICAgICAgICBpZiAodi50eXBlKCkgPT0gc3RhdGlj
X2Nhc3Q8UVZhcmlhbnQ6OlR5cGU+KHFNZXRhVHlwZUlkPFFQaXhtYXA+KCkpKSB7Ci0gICAgICAg
ICAgICBpbWFnZSA9IHYudmFsdWU8UVBpeG1hcD4oKS50b0ltYWdlKCk7Ci0gICAgICAgICAgICB2
ID0gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRSW1hZ2U+KGltYWdlKTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBpbWFnZSA9IHYudmFsdWU8UUltYWdlPigpOwotICAgICAgICBRQnl0ZUFycmF5
IGJhOwotICAgICAgICBRQnVmZmVyIGIoJmJhKTsKLSAgICAgICAgaW1hZ2Uuc2F2ZSgmYiwgIlBO
RyIpOwotICAgICAgICBjb25zdCBRU3RyaW5nIGI2NCA9IFFTdHJpbmcoImRhdGE6aW1hZ2UvcG5n
O2Jhc2U2NCwiKSArIGJhLnRvQmFzZTY0KCk7Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcgdXN0cmlu
ZygoVUNoYXIqKWI2NC51dGYxNigpLCBiNjQubGVuZ3RoKCkpOworICAgICAgICBRQnl0ZUFycmF5
IGJ5dGVBcnJheTsKKyAgICAgICAgUUJ1ZmZlciBidWZmZXIoJmJ5dGVBcnJheSk7CisgICAgICAg
IGluc3RhbmNlLT50b0ltYWdlKCkuc2F2ZSgmYnVmZmVyLCAiUE5HIik7CisgICAgICAgIGNvbnN0
IFFTdHJpbmcgZW5jb2RlZFN0cmluZyA9IFFTdHJpbmcoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwi
KSArIGJ5dGVBcnJheS50b0Jhc2U2NCgpOworICAgICAgICBjb25zdCBVU3RyaW5nIHVzdHJpbmco
KFVDaGFyKillbmNvZGVkU3RyaW5nLnV0ZjE2KCksIGVuY29kZWRTdHJpbmcubGVuZ3RoKCkpOwog
ICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdXN0cmluZyk7CiAgICAgfQotCiB9OwogCiBj
bGFzcyBRdFBpeG1hcFRvU3RyaW5nTWV0aG9kIDogcHVibGljIFF0UGl4bWFwUnVudGltZU1ldGhv
ZCB7CiAgICAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lKCkgeyByZXR1cm4g
InRvU3RyaW5nIjsgfQotICAgIEpTVmFsdWUgaW52b2tlKEV4ZWNTdGF0ZSogZXhlYywgUVZhcmlh
bnQmIHYsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdCwgUXRQaXhtYXBJbnN0YW5jZSogaW5z
dCkKKyAgICBKU1ZhbHVlIGludm9rZShFeGVjU3RhdGUqIGV4ZWMsIFF0UGl4bWFwSW5zdGFuY2Uq
IGluc3RhbmNlLCBjb25zdCBBcmdMaXN0JikKICAgICB7Ci0gICAgICAgIHJldHVybiBpbnN0LT52
YWx1ZU9mKGV4ZWMpOworICAgICAgICByZXR1cm4gaW5zdGFuY2UtPnZhbHVlT2YoZXhlYyk7CiAg
ICAgfQotCiB9OwogCiBzdHJ1Y3QgUXRQaXhtYXBNZXRhRGF0YSB7CiAgICAgUXRQaXhtYXBUb0Rh
dGFVcmxNZXRob2QgdG9EYXRhVXJsTWV0aG9kOwotICAgIFF0UGl4bWFwQ3JlYXRlRWxlbWVudE1l
dGhvZCBjcmVhdGVFbGVtZW50TWV0aG9kOworICAgIFF0UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0
aG9kIGFzc2lnblRvRWxlbWVudE1ldGhvZDsKICAgICBRdFBpeG1hcFRvU3RyaW5nTWV0aG9kIHRv
U3RyaW5nTWV0aG9kOwogICAgIFF0UGl4bWFwSGVpZ2h0RmllbGQgaGVpZ2h0RmllbGQ7CiAgICAg
UXRQaXhtYXBXaWR0aEZpZWxkIHdpZHRoRmllbGQ7CkBAIC0xNzksNyArMTY3LDYgQEAgUXRQaXht
YXBSdW50aW1lT2JqZWN0SW1wOjpRdFBpeG1hcFJ1bnRpbQogCiBjb25zdCBDbGFzc0luZm8gUXRQ
aXhtYXBSdW50aW1lT2JqZWN0SW1wOjpzX2luZm8gPSB7ICJRdFBpeG1hcFJ1bnRpbWVPYmplY3Qi
LCAmUnVudGltZU9iamVjdEltcDo6c19pbmZvLCAwLCAwIH07CiAKLQogUXRQaXhtYXBDbGFzczo6
UXRQaXhtYXBDbGFzcygpCiB7CiB9CkBAIC0xOTMsOCArMTgwLDggQEAgQ2xhc3MqIFF0UGl4bWFw
SW5zdGFuY2U6OmdldENsYXNzKCkgY29ucwogSlNWYWx1ZSBRdFBpeG1hcEluc3RhbmNlOjppbnZv
a2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBNZXRob2RMaXN0JiBtZXRob2RzLCBjb25z
dCBBcmdMaXN0JiBhcmdzKQogewogICAgIGlmIChtZXRob2RzLnNpemUoKSA9PSAxKSB7Ci0gICAg
ICAgIFF0UGl4bWFwUnVudGltZU1ldGhvZCogbXRkID0gc3RhdGljX2Nhc3Q8UXRQaXhtYXBSdW50
aW1lTWV0aG9kKj4obWV0aG9kc1swXSk7ICAgICAgICAKLSAgICAgICAgcmV0dXJuIG10ZC0+aW52
b2tlKGV4ZWMsIGRhdGEsIHJvb3RPYmplY3QoKSwgdGhpcyk7CisgICAgICAgIFF0UGl4bWFwUnVu
dGltZU1ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8UXRQaXhtYXBSdW50aW1lTWV0aG9kKj4o
bWV0aG9kc1swXSk7CisgICAgICAgIHJldHVybiBtZXRob2QtPmludm9rZShleGVjLCB0aGlzLCBh
cmdzKTsKICAgICB9CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0yMDQsOCArMTkx
LDggQEAgTWV0aG9kTGlzdCBRdFBpeG1hcENsYXNzOjptZXRob2RzTmFtZWQoYwogICAgIE1ldGhv
ZExpc3QgbWV0aG9kczsKICAgICBpZiAoaWRlbnRpZmllciA9PSBRdFBpeG1hcFRvRGF0YVVybE1l
dGhvZDo6bmFtZSgpKQogICAgICAgICBtZXRob2RzLmFwcGVuZCgmcXRfcGl4bWFwX21ldGFEYXRh
LnRvRGF0YVVybE1ldGhvZCk7Ci0gICAgZWxzZSBpZiAoaWRlbnRpZmllciA9PSBRdFBpeG1hcENy
ZWF0ZUVsZW1lbnRNZXRob2Q6Om5hbWUoKSkKLSAgICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3Bp
eG1hcF9tZXRhRGF0YS5jcmVhdGVFbGVtZW50TWV0aG9kKTsKKyAgICBlbHNlIGlmIChpZGVudGlm
aWVyID09IFF0UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjpuYW1lKCkpCisgICAgICAgIG1l
dGhvZHMuYXBwZW5kKCZxdF9waXhtYXBfbWV0YURhdGEuYXNzaWduVG9FbGVtZW50TWV0aG9kKTsK
ICAgICBlbHNlIGlmIChpZGVudGlmaWVyID09IFF0UGl4bWFwVG9TdHJpbmdNZXRob2Q6Om5hbWUo
KSkKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9tZXRhRGF0YS50b1N0cmluZ01l
dGhvZCk7CiAgICAgcmV0dXJuIG1ldGhvZHM7CkBAIC0yMjMsNyArMjEwLDcgQEAgRmllbGQqIFF0
UGl4bWFwQ2xhc3M6OmZpZWxkTmFtZWQoY29uc3QgSQogdm9pZCBRdFBpeG1hcEluc3RhbmNlOjpn
ZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSpleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyKQog
ewogICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwVG9EYXRhVXJs
TWV0aG9kOjpuYW1lKCkpKSk7Ci0gICAgYXJyLmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmco
UXRQaXhtYXBDcmVhdGVFbGVtZW50TWV0aG9kOjpuYW1lKCkpKSk7CisgICAgYXJyLmFkZChJZGVu
dGlmaWVyKGV4ZWMsIFVTdHJpbmcoUXRQaXhtYXBBc3NpZ25Ub0VsZW1lbnRNZXRob2Q6Om5hbWUo
KSkpKTsKICAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgVVN0cmluZyhRdFBpeG1hcFRvU3Ry
aW5nTWV0aG9kOjpuYW1lKCkpKSk7CiAgICAgYXJyLmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJp
bmcoUXRQaXhtYXBXaWR0aEZpZWxkOjpuYW1lKCkpKSk7CiAgICAgYXJyLmFkZChJZGVudGlmaWVy
KGV4ZWMsIFVTdHJpbmcoUXRQaXhtYXBIZWlnaHRGaWVsZDo6bmFtZSgpKSkpOwpAQCAtMjM2LDE1
ICsyMjMsMTcgQEAgSlNWYWx1ZSBRdFBpeG1hcEluc3RhbmNlOjpkZWZhdWx0VmFsdWUoRQogICAg
ICAgICAgICAgICAgIChkYXRhLnR5cGUoKSA9PSBzdGF0aWNfY2FzdDxRVmFyaWFudDo6VHlwZT4o
cU1ldGFUeXBlSWQ8UUltYWdlPigpKSAmJiAhKGRhdGEudmFsdWU8UUltYWdlPigpKS5pc051bGwo
KSkKICAgICAgICAgICAgICAgICB8fCAoZGF0YS50eXBlKCkgPT0gc3RhdGljX2Nhc3Q8UVZhcmlh
bnQ6OlR5cGU+KHFNZXRhVHlwZUlkPFFQaXhtYXA+KCkpICYmICFkYXRhLnZhbHVlPFFQaXhtYXA+
KCkuaXNOdWxsKCkpKTsKICAgICB9CisKICAgICBpZiAocHR5cGUgPT0gUHJlZmVyU3RyaW5nKQog
ICAgICAgICByZXR1cm4gdmFsdWVPZihleGVjKTsKKwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogfQogCiBKU1ZhbHVlIFF0UGl4bWFwSW5zdGFuY2U6OnZhbHVlT2YoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAogewotICAgIGNvbnN0IFFTdHJpbmcgdG9TdHIgPSBRU3RyaW5nKCJbUXQgTmF0aXZl
IFBpeG1hcCAlMSwlMl0iKS5hcmcod2lkdGgoKSkuYXJnKGhlaWdodCgpKTsKLSAgICBVU3RyaW5n
IHVzdHJpbmcoKFVDaGFyKil0b1N0ci51dGYxNigpLCB0b1N0ci5sZW5ndGgoKSk7CisgICAgY29u
c3QgUVN0cmluZyBzdHJpbmdWYWx1ZSA9IFFTdHJpbmcoIltRdCBOYXRpdmUgUGl4bWFwICUxLCUy
XSIpLmFyZyh3aWR0aCgpKS5hcmcoaGVpZ2h0KCkpOworICAgIFVTdHJpbmcgdXN0cmluZygoVUNo
YXIqKXN0cmluZ1ZhbHVlLnV0ZjE2KCksIHN0cmluZ1ZhbHVlLmxlbmd0aCgpKTsKICAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgdXN0cmluZyk7CiB9CiAKQEAgLTI3NSw2MiArMjY0LDc4IEBAIFFQ
aXhtYXAgUXRQaXhtYXBJbnN0YW5jZTo6dG9QaXhtYXAoKQogewogICAgIGlmIChkYXRhLnR5cGUo
KSA9PSBzdGF0aWNfY2FzdDxRVmFyaWFudDo6VHlwZT4ocU1ldGFUeXBlSWQ8UVBpeG1hcD4oKSkp
CiAgICAgICAgIHJldHVybiBkYXRhLnZhbHVlPFFQaXhtYXA+KCk7CisKICAgICBpZiAoZGF0YS50
eXBlKCkgPT0gc3RhdGljX2Nhc3Q8UVZhcmlhbnQ6OlR5cGU+KHFNZXRhVHlwZUlkPFFJbWFnZT4o
KSkpIHsKLSAgICAgICAgY29uc3QgUVBpeG1hcCBweG0gPSBRUGl4bWFwOjpmcm9tSW1hZ2UoZGF0
YS52YWx1ZTxRSW1hZ2U+KCkpOwotICAgICAgICBkYXRhID0gUVZhcmlhbnQ6OmZyb21WYWx1ZTxR
UGl4bWFwPihweG0pOwotICAgICAgICByZXR1cm4gcHhtOworICAgICAgICBjb25zdCBRUGl4bWFw
IHBpeG1hcCA9IFFQaXhtYXA6OmZyb21JbWFnZShkYXRhLnZhbHVlPFFJbWFnZT4oKSk7CisgICAg
ICAgIGRhdGEgPSBRVmFyaWFudDo6ZnJvbVZhbHVlPFFQaXhtYXA+KHBpeG1hcCk7CisgICAgICAg
IHJldHVybiBwaXhtYXA7CiAgICAgfQotICAgIHJldHVybiBRUGl4bWFwKCk7CiAKKyAgICByZXR1
cm4gUVBpeG1hcCgpOwogfQogCiBRSW1hZ2UgUXRQaXhtYXBJbnN0YW5jZTo6dG9JbWFnZSgpCiB7
CiAgICAgaWYgKGRhdGEudHlwZSgpID09IHN0YXRpY19jYXN0PFFWYXJpYW50OjpUeXBlPihxTWV0
YVR5cGVJZDxRSW1hZ2U+KCkpKQogICAgICAgICByZXR1cm4gZGF0YS52YWx1ZTxRSW1hZ2U+KCk7
CisKICAgICBpZiAoZGF0YS50eXBlKCkgPT0gc3RhdGljX2Nhc3Q8UVZhcmlhbnQ6OlR5cGU+KHFN
ZXRhVHlwZUlkPFFQaXhtYXA+KCkpKSB7Ci0gICAgICAgIGNvbnN0IFFJbWFnZSBpbWcgPSBkYXRh
LnZhbHVlPFFQaXhtYXA+KCkudG9JbWFnZSgpOwotICAgICAgICBkYXRhID0gUVZhcmlhbnQ6OmZy
b21WYWx1ZTxRSW1hZ2U+KGltZyk7Ci0gICAgICAgIHJldHVybiBpbWc7CisgICAgICAgIGNvbnN0
IFFJbWFnZSBpbWFnZSA9IGRhdGEudmFsdWU8UVBpeG1hcD4oKS50b0ltYWdlKCk7CisgICAgICAg
IGRhdGEgPSBRVmFyaWFudDo6ZnJvbVZhbHVlPFFJbWFnZT4oaW1hZ2UpOworICAgICAgICByZXR1
cm4gaW1hZ2U7CiAgICAgfQorCiAgICAgcmV0dXJuIFFJbWFnZSgpOwogfQogCiBRVmFyaWFudCBR
dFBpeG1hcEluc3RhbmNlOjp2YXJpYW50RnJvbU9iamVjdChKU09iamVjdCogb2JqZWN0LCBRTWV0
YVR5cGU6OlR5cGUgaGludCkKIHsKLSAgICBpZiAoIW9iamVjdCkgeworICAgIGlmICghb2JqZWN0
KQorICAgICAgICBnb3RvIHJldHVybkVtcHR5VmFyaWFudDsKKworICAgIGlmIChvYmplY3QtPmlu
aGVyaXRzKCZKU0hUTUxJbWFnZUVsZW1lbnQ6OnNfaW5mbykpIHsKKyAgICAgICAgSlNIVE1MSW1h
Z2VFbGVtZW50KiBlbGVtZW50SlNXcmFwcGVyID0gc3RhdGljX2Nhc3Q8SlNIVE1MSW1hZ2VFbGVt
ZW50Kj4ob2JqZWN0KTsKKyAgICAgICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KGVsZW1lbnRKU1dyYXBwZXItPmltcGwoKSk7
CisKKyAgICAgICAgaWYgKCFpbWFnZUVsZW1lbnQpCisgICAgICAgICAgICBnb3RvIHJldHVybkVt
cHR5VmFyaWFudDsKKworICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCk7CisgICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCisgICAgICAg
ICAgICBnb3RvIHJldHVybkVtcHR5VmFyaWFudDsKKworICAgICAgICBJbWFnZSogaW1hZ2UgPSBj
YWNoZWRJbWFnZS0+aW1hZ2UoKTsKKyAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAgIGdv
dG8gcmV0dXJuRW1wdHlWYXJpYW50OworCisgICAgICAgIFFQaXhtYXAqIHBpeG1hcCA9IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBpZiAoIXBpeG1hcCkKKyAg
ICAgICAgICAgIGdvdG8gcmV0dXJuRW1wdHlWYXJpYW50OworCisgICAgICAgIHJldHVybiAoaGlu
dCA9PSBzdGF0aWNfY2FzdDxRTWV0YVR5cGU6OlR5cGU+KHFNZXRhVHlwZUlkPFFQaXhtYXA+KCkp
KQorICAgICAgICAgICAgICAgICAgPyBRVmFyaWFudDo6ZnJvbVZhbHVlPFFQaXhtYXA+KCpwaXht
YXApCisgICAgICAgICAgICAgICAgICA6IFFWYXJpYW50Ojpmcm9tVmFsdWU8UUltYWdlPihwaXht
YXAtPnRvSW1hZ2UoKSk7CisgICAgfQorCisgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoJlF0UGl4
bWFwUnVudGltZU9iamVjdEltcDo6c19pbmZvKSkgeworICAgICAgICBRdFBpeG1hcFJ1bnRpbWVP
YmplY3RJbXAqIGltcCA9IHN0YXRpY19jYXN0PFF0UGl4bWFwUnVudGltZU9iamVjdEltcCo+KG9i
amVjdCk7CisgICAgICAgIFF0UGl4bWFwSW5zdGFuY2UqIGluc3RhbmNlID0gc3RhdGljX2Nhc3Q8
UXRQaXhtYXBJbnN0YW5jZSo+KGltcC0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsKKyAgICAgICAg
aWYgKCFpbnN0YW5jZSkKKyAgICAgICAgICAgIGdvdG8gcmV0dXJuRW1wdHlWYXJpYW50OworCiAg
ICAgICAgIGlmIChoaW50ID09IHFNZXRhVHlwZUlkPFFQaXhtYXA+KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRUGl4bWFwPihRUGl4bWFwKCkpOworICAgICAgICAg
ICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWU8UVBpeG1hcD4oaW5zdGFuY2UtPnRvUGl4bWFw
KCkpOworCiAgICAgICAgIGlmIChoaW50ID09IHFNZXRhVHlwZUlkPFFJbWFnZT4oKSkKLSAgICAg
ICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFJbWFnZT4oUUltYWdlKCkpOwotICAg
IH0gZWxzZSBpZiAob2JqZWN0LT5pbmhlcml0cygmSlNIVE1MSW1hZ2VFbGVtZW50OjpzX2luZm8p
KSB7Ci0gICAgICAgIEpTSFRNTEltYWdlRWxlbWVudCogZWwgPSBzdGF0aWNfY2FzdDxKU0hUTUxJ
bWFnZUVsZW1lbnQqPihvYmplY3QpOwotICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4oZWwtPmltcGwoKSk7Ci0gICAg
ICAgIGlmIChpbWFnZUVsZW1lbnQpIHsKLSAgICAgICAgICAgIENhY2hlZEltYWdlKiBjSW1nID0g
aW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpOwotICAgICAgICAgICAgaWYgKGNJbWcpIHsKLSAg
ICAgICAgICAgICAgICBJbWFnZSogaW1nID0gY0ltZy0+aW1hZ2UoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoaW1nKSB7Ci0gICAgICAgICAgICAgICAgICAgIFFQaXhtYXAqIHB4bSA9IGltZy0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHB4bSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChoaW50ID09IHN0YXRpY19jYXN0PFFN
ZXRhVHlwZTo6VHlwZT4ocU1ldGFUeXBlSWQ8UVBpeG1hcD4oKSkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA/IFFWYXJpYW50Ojpmcm9tVmFsdWU8UVBpeG1hcD4oKnB4bSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogUVZhcmlhbnQ6OmZyb21WYWx1ZTxRSW1hZ2U+KHB4
bS0+dG9JbWFnZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAob2JqZWN0LT5pbmhlcml0
cygmUXRQaXhtYXBSdW50aW1lT2JqZWN0SW1wOjpzX2luZm8pKSB7Ci0gICAgICAgIFF0UGl4bWFw
UnVudGltZU9iamVjdEltcCogaW1wID0gc3RhdGljX2Nhc3Q8UXRQaXhtYXBSdW50aW1lT2JqZWN0
SW1wKj4ob2JqZWN0KTsKLSAgICAgICAgUXRQaXhtYXBJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19j
YXN0PFF0UGl4bWFwSW5zdGFuY2UqPihpbXAtPmdldEludGVybmFsSW5zdGFuY2UoKSk7Ci0gICAg
ICAgIGlmIChpbnN0KSB7Ci0gICAgICAgICAgICBpZiAoaGludCA9PSBxTWV0YVR5cGVJZDxRUGl4
bWFwID4oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRUGl4
bWFwPihpbnN0LT50b1BpeG1hcCgpKTsKLSAgICAgICAgICAgIGlmIChoaW50ID09IHFNZXRhVHlw
ZUlkPFFJbWFnZT4oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1
ZTxRSW1hZ2U+KGluc3QtPnRvSW1hZ2UoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBRVmFyaWFudDo6ZnJvbVZhbHVlPFFJbWFnZT4oaW5zdGFuY2UtPnRvSW1hZ2UoKSk7CiAgICAg
fQotICAgIHJldHVybiAwOworCityZXR1cm5FbXB0eVZhcmlhbnQ6CisgICAgaWYgKGhpbnQgPT0g
cU1ldGFUeXBlSWQ8UVBpeG1hcD4oKSkKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFs
dWU8UVBpeG1hcD4oUVBpeG1hcCgpKTsKKyAgICBpZiAoaGludCA9PSBxTWV0YVR5cGVJZDxRSW1h
Z2U+KCkpCisgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFJbWFnZT4oUUltYWdl
KCkpOworICAgIHJldHVybiBRVmFyaWFudCgpOwogfQogSlNPYmplY3QqIFF0UGl4bWFwSW5zdGFu
Y2U6OmNyZWF0ZVJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPFJvb3RP
YmplY3Q+IHJvb3QsIGNvbnN0IFFWYXJpYW50JiBkYXRhKQogewpJbmRleDogV2ViS2l0L3F0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDcy
OSkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMC0wMi0xMiAgTm9hbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBN
aW5vciBpbXByb3ZlbWVudCB0byBoeWJyaWQgUVBpeG1hcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ1MDcKKworICAgICAgICAqIHRlc3RzL2h5YnJp
ZFBpeG1hcC90ZXN0Lmh0bWw6IHVzZSBhc3NpZ25Ub0hUTUxJbWFnZUVsZW1lbnQgb24gYW4KKyAg
ICAgICAgZXhpc3RpbmcgZWxlbWVudCBpbnN0ZWFkIG9mIHRvSFRNTEltYWdlRWxlbWVudCB3aGlj
aCBjcmVhdGVzIGEgbmV3IG9uZQorCiAyMDEwLTAyLTEyICBEaWVnbyBHb256YWxleiAgPGRpZWdv
LmdvbnphbGV6QG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvcXQvdGVzdHMvaHlicmlkUGl4bWFwL3Rl
c3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvdGVzdHMvaHlicmlkUGl4bWFwL3Rlc3Qu
aHRtbAkocmV2aXNpb24gNTQ3MjgpCisrKyBXZWJLaXQvcXQvdGVzdHMvaHlicmlkUGl4bWFwL3Rl
c3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSwxMSArOSwxNyBAQAogICAgICAgICAgICAgICAg
IHZhciBvYmogPSBteVdpZGdldC5pbWFnZTsKICAgICAgICAgICAgICAgICB2YXIgcHhtID0gbXlX
aWRnZXQucGl4bWFwOwogCi0gICAgICAgICAgICAgICAgdmFyIGltZyA9IG9iai50b0hUTUxJbWFn
ZUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICB2YXIgaW1nID0gbmV3IEltYWdlOworICAgICAg
ICAgICAgICAgIG9iai5hc3NpZ25Ub0hUTUxJbWFnZUVsZW1lbnQoaW1nKTsKICAgICAgICAgICAg
ICAgICB2YXIgaW1nMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWcxIik7CiAgICAgICAg
ICAgICAgICAgdmFyIGltZzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nMiIpOworICAg
ICAgICAgICAgICAgIHZhciBpbWczID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZzMiKTsK
KyAgICAgICAgICAgICAgICB2YXIgaW1nNCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWc0
Iik7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWcpOwotICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocHhtLnRvSFRNTEltYWdlRWxl
bWVudCgpKTsKKyAgICAgICAgICAgICAgICBvYmouYXNzaWduVG9IVE1MSW1hZ2VFbGVtZW50KGlt
ZzMpOworICAgICAgICAgICAgICAgIHB4bS5hc3NpZ25Ub0hUTUxJbWFnZUVsZW1lbnQoaW1nNCk7
CisgICAgICAgICAgICAgICAgbXlXaWRnZXQuY29tcGFyZShweG0ud2lkdGgsIGltZzQud2lkdGgp
OworICAgICAgICAgICAgICAgIG15V2lkZ2V0LmNvbXBhcmUob2JqLndpZHRoLCBpbWczLndpZHRo
KTsKICAgICAgICAgICAgICAgICB2YXIgc2lnbmFsc0ZpcmVkID0gMDsKICAgICAgICAgICAgICAg
ICBteVdpZGdldC5jb21wYXJlKG9iai50b1N0cmluZygpLCJbUXQgTmF0aXZlIFBpeG1hcCAiK29i
ai53aWR0aCsiLCIrb2JqLmhlaWdodCsiXSIpOwogICAgICAgICAgICAgICAgIG15V2lkZ2V0LmNv
bXBhcmUoU3RyaW5nKHB4bSksIltRdCBOYXRpdmUgUGl4bWFwICIrcHhtLndpZHRoKyIsIitweG0u
aGVpZ2h0KyJdIik7CkBAIC01Myw1ICs1OSw3IEBACiAgICAgPGJvZHkgb25sb2FkPSJzdGFydFRl
c3QoKSI+CiAgICAgICAgIDxpbWcgaWQ9ImltZzEiIC8+CiAgICAgICAgIDxpbWcgaWQ9ImltZzIi
IC8+CisgICAgICAgIDxpbWcgaWQ9ImltZzMiIC8+CisgICAgICAgIDxpbWcgaWQ9ImltZzQiIC8+
CiAgICAgPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>